金融项目实战 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", "")

  • 发送邮件
相关推荐
DolphinDB智臾科技5 小时前
DolphinDB 走进香港中文大学(深圳)课堂,赋能金融课程实践
金融
源创力环形导轨5 小时前
环形导轨常见的应用领域有哪些?
人工智能·自动化·制造·环形导轨
优选资源分享5 小时前
zTasker v2.3.4:Windows 自动化任务工具
运维·自动化
梦想的旅途25 小时前
企业微信二次开发:如何优雅地实现外部群自动化管理?
自动化·企业微信·rpa
2501_941982055 小时前
企业微信 API 二次开发之外部群自动化管理
运维·自动化·企业微信
随风语6 小时前
ansible
运维·自动化·ansible
dzj20216 小时前
Unity的旁门左道用法(科学计算):用shader调用GPU做k线MA5的计算——DuckDB + Compute Shader
unity·金融·gpu·shader·量化·compute shader
杜子不疼.6 小时前
AI Agent 开发指南:LangChain + 工具调用,构建自动化任务流
人工智能·langchain·自动化
llilian_1616 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化
cver12319 小时前
足球视频检测数据集介绍-160张图片-智能体育转播 运动数据分析 自动化视频剪辑 裁判辅助系统 青训技术分析 虚拟现实体验
数据分析·自动化·音视频