金融项目实战 04|JMeter实现自动化脚本接口测试及持续集成

目录

一、⾃动化测试理论

二、自动化脚本

1、添加断言

1️⃣注册、登录

2️⃣认证、充值、开户、投资

2、可重复执行:清除测试数据+脚本按指定顺序执行

1️⃣如何可以做到可重复执⾏?

2️⃣清除测试数据:连接数据库+setup线程组

①明确清除那些数据?

②这些数据在那个库、那个表?

③分析sql语句

④查询sql(确认sql语句是否正确)

⑤删除sql

⑥使用jmeter连接数据库,执行sql语句

⑦脚本按指定顺序执行

三、持续集成

1、持续集成理论

2、脚本管理:脚本上传到gitee

1️⃣方式一:pycharm

2️⃣方式二:命令行

3、配置


一、⾃动化测试理论

🔴什么是⾃动化测试?

  • 让程序或⼯具代替⼈为执⾏测试⽤例

🔴什么样的项⽬适合做⾃动化?

  • 1、项⽬周期⻓ --多⻓算⻓?(⾃⼰公司运营项⽬)
  • 2、需求稳定(更多指具体功能/模块)
  • 3、需要回归测试(电商、⾦融、部队、对外运营的项⽬)

🔴⾃动化测试⽤例覆盖率?

  • 上限:全部的功能⽤例执⾏⾃动化。-- 基本不可能。
    • 1、有些⽤例能去做,⽽不去做(配置功能,不常⽤)
    • 2、有些⽤例都不能做⾃动化(如:图⽚上的⽂字)
  • 公司:
    • 1、如果⾃动化⽤例只覆盖业务线,覆盖率10~20%
    • 2、好点的公司,⾃动化覆盖40%~60%

🔴 ⾃动化测试与功能测试区别--脚本执⾏层⾯?

  • 1、⾃动化脚本可重复执⾏
  • 2、功能脚本是靠⼈眼睛进⾏断⾔,⾃动化是靠⼯具或程序进⾏断⾔。

🔴⾃动化测试归属什么测试?

  • 归属:功能测试(原因:⾃动化测试使⽤的⽤例都是功能的⽤例)

🔴⾃动化测试实现⽅式?

  • 1、⼯具
  • 2、代码

🔴⾃动化测试分类

  • ui⾃动化(web、app、win32)
  • 接⼝⾃动化

二、自动化脚本

如何设置⾃动化脚本?

  • 1、使⽤程序或⼯具断⾔
  • 2、可重复运⾏

1、添加断言

只用到了断言中 响应断言 和响应代码两个功能,对响应体和响应代码进行断言。

1️⃣注册、登录

注册接口
登录接口,这里开发返回错别字,这里为了断言通过,只判断了部分字 提示:

1、图⽚验证码使⽤响应断⾔→断⾔状态码

2、其他全部使⽤响应断⾔判断响应体的描述信息,因为JSON断言会对结果的判断过于标准,健壮性差。

3、依赖接⼝不⽤断⾔,只需断⾔被测接⼝。(如:注册接口依赖图⽚验证码、短信验证码,只需要断⾔注册即可。)

2️⃣认证、充值、开户、投资

提示:

1、断⾔内容来源预期结果,预期结果⼀般情况与实际结果⼀致。⽂字偏差看⼤概意思是否⼀样,如果不 ⼀样,那就是缺陷。

2、看实际结果是否有明确提示错误原因和引导信息。如果有就通过,否则就是失败。

2、可重复执行:清除测试数据+脚本按指定顺序执行

1️⃣如何可以做到可重复执⾏?
  • 1、清除测试数据(已注册数据、造借款数据(因为投资业务执行需要已经有借款的信息))
  • 2、脚本按指定顺序执⾏
2️⃣清除测试数据:连接数据库+setup线程组
①明确清除那些数据?

1、删除已注册的⼿机号(因此注册过的手机再跑注册接口会报错)

2、造数据(因为投资业务依赖已经存在借款标)

提示:在⼯作中找开发确认涉及那些表。

②这些数据在那个库、那个表?

库:czbk_member

表:

mb_member(会员主表)

mb_member_info(会员信息表)

mb_member_login_log(会员登录⽇志)

mb_member_register_log(会员注册⽇志)

提示:以上表找开发获取。

③分析sql语句

1、mb_member、mb_member_register_log直接使⽤phone字段进⾏过滤删除

2、mb_member_info、mb_member_login_log必须配合mb_member表的id进⾏关联查询,再删除。

【总结】删除手机号,不仅要删除有phone字段的信息,还要删除其他有主键外键关联的表信息

④查询sql(确认sql语句是否正确)
⑤删除sql

delete没有直接后面跟from的原因:联合查询时要删除记录,需要指明要删除那张表的记录

⑥使用jmeter连接数据库,执行sql语句

性能测试04|JMeter:连接数据库、逻辑控制器、定时器-CSDN博客

首先,添加数据库连接池并配置。

jdbc:mysql://121.43.169.97/czbk_member?allowMultiQueries=true

allowMultiQueries=true:开启批量执⾏sql语句。(因为默认只执行一条sql语句)

然后,添加一个setup线程组,命名为"清除测试数据",在该线程组下添加 jdbc请求执⾏sql语句。
删除已注册的手机号 构造借款数据;
具体sql语句看: 金融项目实战 03|JMeter脚本实现手工接口测试-CSDN博客中二、4 注意:

1、因为要添加多条sql语句,所以每个sql语句结尾需要使⽤分号。如果一条则加不加分号都无所谓。

2、Query Type:选择Callable Statement

⑦脚本按指定顺序执行

【总结】到此,实现了批量运行该测试计划,无需为测试数据的一次性特性而每次改数据。

三、持续集成

1、持续集成理论

🔴什么持续集成?

  • 通过⼀款⼯具(jenkins)持续⾃动集成代码。

🔴持续集成(CI)⼯具最常⽤啥?

  • Jenkins

🔴通过jenkins⼯具运⾏脚本的本质什么?

  • 运⾏脚本的命令
  • jmeter -n -t 脚本.jmx -l 结果.txt -e -o ⽬录

🔴持续集成所依赖的环境是什么?

  • 1、jenkins环境:jdk、jenkin.war
  • 2、运⾏脚本本环境:newman 、jmeter、jkd、python、pytest,具体用哪个环境,要看写脚本用的什么工具或语言。

🔴持续集成运⾏脚本的⽅式有哪些?--脚本在哪⾥放?

  • 1、项⽬托管平台(github、gitee、gitlabe)
  • 2、jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调⽤命令去执⾏)

2、脚本管理:脚本上传到gitee

1️⃣方式一:pycharm
  • 通过pycharm⼯具以可视化方式将脚本上传托管平台gitee

首先新建空项目,把脚本文件.jmx上传到该项目中。

然后把该项目上传到gitee中。

(实现此步骤需要先配置好账号,可查询其他博客看详细步骤)

2️⃣方式二:命令行
  • 通过命令将jmeter脚本上传到gitee仓库

(建议看其他人写的详细博客)

3、配置

  • 执⾏脚本

配置:

1、源码管理(将脚本下载到jenkins服务器)

2、构建(在jenkins本地服务器执⾏脚本的命令)

①执⾏删除报告⽬录和结果⽬录命令 mac/linux:rm -rf re* windows: del result.txt rmdir /Q/S report

②x:/xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t 02-auto_script.jmx -l resut.txt -e -o report

  • 测试报告

报告⽆内容或⽆样式:

jenkins管理->执⾏命令

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

  • 发送邮件
相关推荐
小小测试开发2 小时前
提升WebUI自动化效率与性能:从脚本到架构的全链路优化指南
运维·架构·自动化
weixin_307779135 小时前
Jenkins中的Jakarta Activation API插件:功能、使用与最佳实践
运维·开发语言·ci/cd·自动化·jenkins
0思必得07 小时前
[Web自动化] HTML列表标签
运维·python·自动化·html·web自动化
Cherry的跨界思维8 小时前
19、自动化处理双核心:Java规则引擎与Python Selenium实战全解析
java·开发语言·python·自动化·办公自动化·python办公自动化·python办公
秋刀鱼 ..9 小时前
第十一届金融创新与经济发展国际学术会议
运维·人工智能·科技·金融·自动化
一水鉴天10 小时前
整体设计 定稿 备忘录仪表盘方案 之3 改造 为 “整体设计”的完整方案(初稿)之2 程序讨论和准备(豆包助手 )
人工智能·架构·自动化
Splashtop高性能远程控制软件10 小时前
索尼 Hawk-Eye(鹰眼)携手 Splashtop,远程技术赋能赛事运营革新
运维·网络·自动化·远程控制·远程桌面
黑客思维者10 小时前
Python自动化截图/录屏3大方案(PIL/mss/ffmpeg)深度拆解
python·ffmpeg·自动化·录屏
测试人社区—小叶子11 小时前
金融系统迁移测试:历时半年的完整实践复盘
运维·网络·人工智能·python·测试工具·金融
deardao11 小时前
【股票预测】用NLP预测金融趋势的随机时间序列模型
人工智能·自然语言处理·金融