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自动化测试操作指南的更多相关文章

  1. Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝

    当前常用自动化测试工具 Web自动化测试工具:QTP .selenium等 性能自动化测试工具:loadrunner.jmeter等 接口自动化测试工具:SoapUI.postman等 手机自动化测试 ...

  2. Jmeter+jenkins接口性能测试平台实践整理(二)

    本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encod ...

  3. Jmeter+jenkins接口性能测试平台实践整理(一)

    最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+t ...

  4. Jenkins自动化测试

    Jenkins自动化测试 一个持续集成的基本原则是构建应该是可验证的.你必须能够客观地确定一个特定的构建是否准备就绪构建过程的下一个阶段,最便捷的方式做到这一点是使用自动化测试.如果没有适当的自动化测 ...

  5. maven+jmeter+jenkins集成

    马上要国庆了,最近比较忙,但是感觉忙的效率很一般,之前写过ant的集成,这两天研究了下maven,其中核心的插件便是jmeter-maven-plugin,要想了解更多的朋友,可以自行去官网wiki学 ...

  6. Jenkins 自动化测试

    学习 Jenkins 自动化测试的系列文章 Robot Framework 概念 Robot Framework 安装 Pycharm + Robot Framework 环境搭建 Robot Fra ...

  7. ANT+JMETER+Jenkins 接口自动化

    Linux环境下搭建:ANT+JMETER+Jenkins 接口自动化 一.准备环境: 1.下载 JDK1.8 JDK下载地址:https://www.oracle.com/java/technolo ...

  8. ant +jmeter+jenkins接口自动化测试二

    [Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...

  9. ant+jmeter+jenkins接口自动化测试一

    [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...

  10. jenkins+ant+jmeter接口自动化测试(持续构建)

    使用badboy录制脚本,到处到jmeter后进行接口自动化,后来想着 可不可以用自动化来跑脚本呢,不用jmeter的图形界面呢, 选择了ant来进行构建,最后想到了用Jenkins来进行持续构建接口 ...

随机推荐

  1. Qt的核心剖析:信息隐藏

    如果你阅读了 Qt 的源代码,你会看到一堆奇奇怪怪的宏,例如 Q_D,Q_Q.我们的Qt源码之旅就从理解这些宏说起. 下面先看一个C++的例子. class Person { public: Pers ...

  2. MyBatis MyBatis简介(二)

    MyBatis简介 MyBatis是一个三层架构模式中数据访问层或持久层框架,它提供一种半自动的ORM实现,能够简化 JDBC 操作流程,帮助提升程序员的开发效率. MyBatis 本质是基于JDBC ...

  3. MongoDB 分片集群环境搭建

    分片集群部署 主机名 IP地址 规划 端口分配 node-01 192.168.229.21 副本集名称:shard1(1主2从1仲裁) 主:27017 从:27018:从:27019 仲:28017 ...

  4. unity post processing的应用

    PostProcessing是unity内置的后期效果增强组件,可以在极短的时间内得到各种常用特效的效果,对于编写Shader的苦手(比如在下)来说,确实是个天大的福音了.第一次接触PostProce ...

  5. 一款带有AI功能的markdown工具

    大家好,我是晓凡. 写在前面 关注晓凡的同学都知道,晓凡是一名程序员. 平常有空的时候会写写博客,将一些技术干货或者踩过的坑分享给大家. 和我一样写技术博客的小伙伴都知道,平常素材来源太杂: 脑子里突 ...

  6. 【光照】Unity中的[经验模型]

    [从UnityURP开始探索游戏渲染]专栏-直达 图形学第一定律:"看起来对就对" URP光照模型发展史 ‌2018年‌:URP首次发布(原LWRP),继承传统前向渲染的Blinn ...

  7. C语言结构体中的内存对齐

    C语言结构体内存对齐 在C语言编程中,结构体是一种非常重要的数据类型,它允许我们将不同类型的数据组合在一起.然而,当涉及到结构体在内存中的存储时,有一个关键的概念--内存对齐,这往往容易被忽视,但却对 ...

  8. 【转载】震惊 OI 界!SCCPC 2025 前一晚竟发生 67825 惨案!快快转发给你认识的 OIer,共同避免此类事件!

    [转载自 nkp] 前言的前言 如果有侵犯到他人的地方本文会立刻删除! 这是一篇恶搞文,非常虾头,不建议观看! 前言 67825 事件,众所不知,是一件极其猎奇的案件.案件涉及到的主人公是:马修10- ...

  9. Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障

    联系:手机/微信(+86 17813235971) QQ(107644445) 标题:Oracle Recovery Tools修复ORA-00742.ORA-600 ktbair2: illegal ...

  10. ORA-600 16703故障,客户找人恢复数据库,数据库被进一步恶意破坏—ORA-00704 ORA-00922---惜分飞

    有朋友找到我,数据库报ORA-600 16703错误,这个本来是一个比较常见的破坏故障(警告:互联网中有oracle介质被注入恶意程序导致-ORA-600 16703数据库启动报错如下: 修复tab$ ...