Jmeter实现接口自动化

自动化测试理论知识

  • 什么是自动化测试?
让程序或工具代替人为执行测试用例
  • 什么样的项目适合做自动化?
1、项目周期长 --多长算长?(自己公司运营项目)
2、需求稳定(更多具体功能/模块)
3、需要回归测试(电商、金融、部队、对外运营的项目)
  • 自动化测试用例覆盖率?
上限:全部的功能用例执行自动化。--基本不可能。
1、有些用例能去做,而不去做(配置功能,不常用)
2、有些用例都不能做自动化(如:图片上的文字)
公司:
1、如果自动化用例只覆盖业务线,覆盖率10~20%
2、好点的公司,自动化覆盖40%~60%
  • 自动化测试与功能测试的区别?–脚本执行层面
1、自动化脚本可重复执行
2、功能脚本是靠人眼睛进行断言,自动化是靠工具或程序进行断言。
  • 自动化测试归属什么测试?
归属:功能测试(原因:自动化测试使用的用例都是功能的用例)
  • 自动化测试实现方式?
1、工具
2、代码
  • 自动化测试分类
1、ui自动化(web、app、win32)
2、接口自动化

自动化脚本

  • 如何设置自动化脚本
1、使用程序或工具断言
2、可重复运行

添加断言

  • 注册、登录

image-20240629154951244

提示:
   1、图片验证码使用响应断言->断言状态码
   2、其他全部使用响应断言
   3、依赖接口不用断言,只需断言被测接口。(如:注册依赖图片验证码、短信验证码,只需要断言注册即可)
  • 认证、充值、开户、投资

image-20240629155305067

提示:
1、断言内容来源预期结果,预期结果一般情况与实际结果一致。文字偏差大概看意思是否一样,
   如果不一样,那就是缺陷。
2、看实际结果是否有明确提示错误原因和引导信息。如果有就通过,否则就失败。

可重复执行

  • 如何可以做到可重复执行?
1、清除测试数据(已注册数据、造借款数据)
2、脚本按指定顺序执行
  • 清除测试数据

    • 明确清除哪些数据?
    1、删除已注册的手机号
    2、造数据(借款标)
    
    • 这些数据在哪个库、哪个表?
    库:czbk_member
    表:
    mb_member(会员主表)
    mb_member_info(信息表)
    mb_member_login_log(登录日志)
    mb_member_register_log(注册日志) 
    
    • 确定sql语句

    分析

    image-20240629161632910

    1、mb_member、mb_member_register_log直接使用phone字段进行过滤删除
    2、mb_member_info、mb_member_login_log必须配合mb_member表的id进行关联查询,在删除。
    

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

-- 一、确认表中是否有数据
# 1、查询确认语句 mb_member
select * from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、mb_member_info
select * from mb_member_info i INNER JOIN mb_member m on i.member_id=m.id
where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、mb_member_login_log
select * from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、mb_member_register_log
select * from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")

删除sql

-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、删除 mb_member
delete from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 4、删除 mb_member
delete from mb_member where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
  • 使用jmeter连接数据库、执行sql语句。
    • 添加数据库连接池并配置

image-20240629162940848

jdbc:mysql://121.43.169.97/czbk_member?allowMultiQueries=true
allowMultiQueries=true :开启批量执行sql语句
  • 添加jdbc请求执行sql语句

image-20240629163912799

注意:
1、每个sql语句结尾需要使用;
2、Query Type:选中Callable Statement
  • 脚本按指定顺序执行

image-20240629164254742

持续集成

持续集成理论

  • 什么是持续集成?

image-20240629165409292

通过一款工具(Jenkins)持续自动集成代码
  • CI工具最常用啥?
Jenkins
  • 通过Jenkins工具运行脚本的本质是啥?
运行脚本的命令
jmeter -n -t 脚本.jmx -l 结果.txt -e -o 目录
  • 持续集成所依赖的环境是啥?
1、jenkins环境:jdk jenkins.war
2、运行脚本的环境:newman、jmeter、jdk、python、pytest
  • 持续集成运行脚本的方式有哪些?–脚本在哪里放?
1、项目托管平台(github、gitree、gitlabe)
2、Jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调用命令去执行)

脚本管理

  • 通过工具上传托管平台

image-20240629195544722

  • 通过命令上传

image-20240629195824949

创建git仓库:

image-20240629195914903

配置

  • 执行脚本
配置:
1、源码管理(将脚本下载到jenkins服务器)
2、构建(在jenkins本地服务器执行脚本的命令)
1、执行删除报告目录和结果目录命令
mac/linux:rm -rf re*
windows: del result.txt rmdir /Q/S report
2、x:/xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t 02-auto_script.jmx -l
resut.txt -e -o report
  • 测试报告

image-20240629201436484

报告无内容或无样式:
jenkins 管理->执行命令
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
  • 发送邮件

image-20240629201702621

image-20240629201717327

相关推荐

  1. Jmeter进阶-接口自动化

    2024-07-09 18:06:05       16 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 18:06:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 18:06:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 18:06:05       58 阅读
  4. Python语言-面向对象

    2024-07-09 18:06:05       69 阅读

热门阅读

  1. Rust破界:前端革新与Vite重构的深度透视(中)

    2024-07-09 18:06:05       33 阅读
  2. uniapp中微信小程序——蓝牙连接并通信

    2024-07-09 18:06:05       31 阅读
  3. 被裁了(9年)

    2024-07-09 18:06:05       25 阅读
  4. 3D 可视化大数据

    2024-07-09 18:06:05       28 阅读
  5. 部署LVS-DR群集

    2024-07-09 18:06:05       26 阅读
  6. Vue项目使用mockjs模拟后端接口

    2024-07-09 18:06:05       23 阅读
  7. python的魔法方法

    2024-07-09 18:06:05       30 阅读
  8. virtualbox和docker的区别和优缺点以及如何选择

    2024-07-09 18:06:05       37 阅读