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来进行持续构建接口 ...
随机推荐
- net 6 使用 加密sqlite
https://www.cnblogs.com/leon-ytparty/p/17156246.html 用加密sqlite 使用了 sqlciphone 1.在nuget中安装 (1)microso ...
- 手算神经网络BP传播算法
虽然说是手算,但是我还是会写一点 C# 代码,避免敲坏了计算器.我和大家保证,整个手算过程中,最终的计算结果只需要用到初高中知识.推导过程会用到部分高数的知识.我尽量将用到的知识点全列举出来,本文对学 ...
- 简易数字电压表+ADC0809+程序查询方式实现8路数据转换
1 实验现象(每间隔1s自动切换模拟信号采集通道,通过数码管显示测量的电压值) 2 硬件设计 3 程序设计 3.1 主函数 #include <REG52.H> #include &quo ...
- $\LaTeX{}$之实现标题自动换行
在进行\(\LaTeX{}\)学位论文排版时,可能会遇到论文标题过长,并且模板没有实现标题换行的功能.这种情况下标题会超出页边距导致页面布局丑陋,可以通过在cls文件里设置命令来实现自动换行. 具体命 ...
- webshell流量
菜刀.蚁剑.冰蝎.哥斯拉是常见的webshell管理工具. 在攻防演练中,了解其常见webshell管理工具的流量特征对防守方来说十分重要.常见的webshell也在不断发展以绕过安全设备waf的检测 ...
- 【CompletableFuture 核心操作全解】详细注释版
一.任务创建操作 1. runAsync() - 执行无返回值的异步任务 /** * 创建并执行无返回值的异步任务 * * @param runnable 要执行的任务逻辑(无返回值) * @retu ...
- JS中代码执行速度测试
console.time("timer");for (let index = 0; index < 100; index++) { } console.timeEnd(&qu ...
- PHP 快速集成 ChatGPT 用 AI 让你的应用更聪明
PHP 快速集成 ChatGPT 用 AI 让你的应用更聪明 AI 现在火得不行,ChatGPT 这些工具让我们开发者能很轻松地给应用加上智能功能.如果你在用 PHP,想让自己的项目也能"聊 ...
- AGC自动增益控制电路
前言 本文章作为笔记分享出来,原内容出自: [AGC自动增益控制电路原理] AGC十分适用于单片机的ADC信号采样,可以限制输入信号的幅度变化,使得当输入信号变化的时候,后面信号处理的部分是不受影响. ...
- 生成式创新的导航系统:悟空博弈框架下的AI范式演进
生发式创新的导航系统:悟空博弈框架下的AI范式演进 在人工智能驱动创新的浪潮中,我们正见证一场静默的范式转移.一边是基于海量数据与概率计算的传统AI路径,它展现了强大的联想与生成能力:另一边是初露锋芒 ...