jmeter-jenkins自动化测试操作指南
Jmeter是目前最流行的一种测试工具,基于此工具我们搭建了一整套的自动化方案,包括了脚本添加配置、本地配置和运行、服务器配置等内容,完成了自动化测试闭环,通过这种快捷简便高效的方式,希望可以解决自动化测试上手难的痛点。同时利用上测试组的性能脚本,提高编写效率。
一、准备自动化测试物料
1、开发运行工具Jmeter,(下载地址:https://jmeter.apache.org/)
2、开发环境为已发布ready;
3、测试脚本已准备ready;
4、脚本运行环境已准备;
二、自动化测试通过标准
1、成功Status 返回200 ;
2、失败返回404、500等;
3、每个脚本专用断言;
三、自动化脚本存储
1、脚本全部存储在svn中,项目根目录新建文件夹,前面文件夹名和项目名保持一致,后缀加“jmeter-api-project”。
2、文件目录 data、result、script分别存放数据、测试结果、测试脚本。
四、自动化测试Script Rules
1、脚本命名为接口名
2、存储类型为后缀jmx的文件
3、线程数设置为1(冒烟测试无需多线程并发)
4、必须包含断言判断,状态检测设定为200
五、自动化测试Script Steps
1、添加线程组,脚本命名为接口名,点击存储 为后缀jmx的文件
2、将线程数设置为1,其他设置为默认
3、循环次数为不循环,调度器不设置,其他参数不设置

4、配置http协议选项:
a、添加http请求,线程组右键“添加”,选择 “Sampler”,再选择“HTTP请求”:

b、请求为post or get(如下图,此处根据实际情况设置为POST)
c、Request报文:填入Body Data(如下图,此处根据实际情况设置Request报文内容)

5、配置断言选项,线程组右键“添加”,选择“断言”,此处选择“响应断言”。注意可以根据实际情况选择其他断言类型:
a、添加响应断言,如下图所示;

b、选择响应字段为响应代码;
c、匹配规则选择;
d、测试模式填入200,如下图(此处为开发自定义返回码,请根据实际情况设置);

6、添加“HTTP信息头管理器” ,在测试计划点击右键“添加”菜单,选择“配置元件”,再选择“HTTP信息头管理器” (即为HTTP Header Manager),如下图:

可根据实际情况添加Content-Type等内容,例如此处value设置为:application/json,如下图范例:

7、添加“查看结果树”,在测试计划点击右键“添加”菜单,选择“监听器”,再选择“查看结果树”:

运行成功或失败,分别可以查看结果树详情,如下图所示,查看响应数据,可以看到response报文:

下图是一个运行失败结果的断言,断言失败的信息也会有详细说明:

8、添加"用表格查看结果",在测试计划点击右键“添加”菜单,选择“监听器”,选择“用表格查看结果”:

添加后每次测试计划运行结束,可以查看全部线程组的运行结果,如下图所示:

9、添加“聚合报告”,在测试计划点击右键“添加”菜单,选择“监听器”,选择“聚合报告”:
聚合报告主要用来收集本次测试计划运行的一些重要的性能指标数值,例如Average、90%Line等等,添加后每次测试计划运行结束可以查看到指标的有效数据,如下图范例:


六、本地执行
1、在当前测试计划中,根据上述范例逐一添加本次需要运行的自动化脚本
非UI执行
jmeter -n -t 2024.jmx -l report\01-result.jtl -e -o report
断言
状态码断言 必备
responseCode = prev.getResponseCode(); // 获取响应状态码
log.info("状态码:" + responseCode);
// 检查状态码是否为200
if (responseCode.equals("200")) {
AssertionResult.setFailure(false)
log.info("断言成功:");
} else {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("响应状态码非200")
return
}
}
响应内容断言
/**
* 解析数据 并校验返回结果
*/
import org.json.*; //导入org.json包
//获取响应数据
String response = prev.getResponseDataAsString();
log.info("响应体:" + response);
//解析json数据,精准获取json字段。校验单个接送字段。
JSONObject responseJson = new JSONObject(response); //转为JSON对象
int totalElements = responseJson.getInt("code");
log.info("响应code字段:" + totalElements);
if(totalElements != null ){
AssertionResult.setFailure(false)
log.info("断言成功:");
}
else{
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("响应code字段为空")
return
}
// 获取响应中的 success 字段的值
boolean success = responseJson.getBoolean("success");
// 打印响应中的 success 字段值
log.info("响应 success 字段:" + success);
// 根据 success 字段的值进行断言
if (success) {
// 断言成功
AssertionResult.setFailure(false);
log.info("断言成功:");
} else {
// 断言失败
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage("响应 success 字段断言失败:");
return;
}
jmeter-jenkins自动化测试操作指南的更多相关文章
- Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝
当前常用自动化测试工具 Web自动化测试工具:QTP .selenium等 性能自动化测试工具:loadrunner.jmeter等 接口自动化测试工具:SoapUI.postman等 手机自动化测试 ...
- Jmeter+jenkins接口性能测试平台实践整理(二)
本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encod ...
- Jmeter+jenkins接口性能测试平台实践整理(一)
最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+t ...
- Jenkins自动化测试
Jenkins自动化测试 一个持续集成的基本原则是构建应该是可验证的.你必须能够客观地确定一个特定的构建是否准备就绪构建过程的下一个阶段,最便捷的方式做到这一点是使用自动化测试.如果没有适当的自动化测 ...
- maven+jmeter+jenkins集成
马上要国庆了,最近比较忙,但是感觉忙的效率很一般,之前写过ant的集成,这两天研究了下maven,其中核心的插件便是jmeter-maven-plugin,要想了解更多的朋友,可以自行去官网wiki学 ...
- Jenkins 自动化测试
学习 Jenkins 自动化测试的系列文章 Robot Framework 概念 Robot Framework 安装 Pycharm + Robot Framework 环境搭建 Robot Fra ...
- ANT+JMETER+Jenkins 接口自动化
Linux环境下搭建:ANT+JMETER+Jenkins 接口自动化 一.准备环境: 1.下载 JDK1.8 JDK下载地址:https://www.oracle.com/java/technolo ...
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- ant+jmeter+jenkins接口自动化测试一
[Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...
- jenkins+ant+jmeter接口自动化测试(持续构建)
使用badboy录制脚本,到处到jmeter后进行接口自动化,后来想着 可不可以用自动化来跑脚本呢,不用jmeter的图形界面呢, 选择了ant来进行构建,最后想到了用Jenkins来进行持续构建接口 ...
随机推荐
- 【QML qmlRegisterType】qmlRegisterType 的功能以及用法
1.qmlRegisterType qmlRegisterType 是 Qt 提供的一个函数,用于将 C++ 类注册到 QML 环境中,使得这些类可以在 QML 文件中使用:< >内 ...
- UOS、Deepin安装了ibus 或fcitx之后个别应用无法输入中文
如果你安装的是ibus sudo vim /etc/profile 添加一下环境变量export GTK_IM_MODULE=ibusexport QT_IM_MODULE=ibusexport XM ...
- video.js在iframe中如何解决无法自动播放问题
问题 使用video.js播放视频,如果集成在iframe中,无法自动播放,如何解决呢?其实很简单,设置下 allow="autoplay" ,如下所示: <iframe s ...
- 【iOS】VR实践--GVR的简单使用
VR是个比较火的话题,在iOS中集成全景和VR播放功能,是非常值得考虑和去实践的.最近公司也准备在APP中集成VR功能.所以我也就了解了下VR功能的开发.目前有一些能帮助我们快速实现VR的项目,其中G ...
- 【GitHub每日速递】无需提示词!Nano Bananary香蕉超市:AI绘画玩法多到停不下来
原文:[GitHub每日速递]无需提示词!Nano Bananary香蕉超市:AI绘画玩法多到停不下来 AutoGPT来袭!搭建.部署.运行AI智能体全攻略揭秘 AutoGPT 是一个基于自主任务执行 ...
- Opensuse Leap 15.6 + P104显卡 安装Cuda环境
忠告 首先敬告各位,Opensuse leap对于Nvidia的驱动支持安装很不方便并且比较老旧,我个人还是建议切换到Debian系来做开发,会方便的多,企业使用Debian/Ubuntu,个人用户可 ...
- 鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
大家好,我是潘Sir,持续分享IT技术,帮你少走弯路.<鸿蒙应用开发从入门到项目实战>系列文章持续更新中,陆续更新AI+编程.企业级项目实战等原创内容.欢迎关注! ArkUI提供了丰富的系 ...
- 直播插件-hls.js
video标签是不能直接使用直播流的来播放的,需要使用hls转码过后才能播放 测试直播链接:https://live.cgtn.com/1000/prog_index.m3u8 hls.js是一个可以 ...
- 【MacBook】使用技巧
MacBook 使用技巧 使用技巧 开启终端FQ export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 a ...
- cannot convert parameter 1 from 'class A' to 'class A'
何志丹 出错代码: class A { public: A(){}; private: CStringArray x ; }; fun(A a) { } void CTest22Dlg::OnButt ...