基于Jmeter的自动化测试实施方案设计
前言:
Jmeter是目前最流行的一种测试工具,基于此工具我们搭建了一整套的自动化方案,包括了脚本添加配置、本地配置和运行、服务器配置等内容,完成了自动化测试闭环,通过这种快捷简便高效的方式,希望可以解决自动化测试上手难的痛点。下面闲言少叙,我们直接切入实战:
一、准备自动化测试物料
1、开发运行工具Jmeter,(下载地址: http://jmeter.apache.org/download_jmeter.cgi)

2、开发环境为已发布ready;
3、测试脚本已准备ready;
4、脚本运行环境已准备(fat或者uat);
二、自动化测试通过标准
1、成功Status 返回200 ;
2、失败返回404、500等;
3、每个脚本专用断言;
三、自动化脚本存储
脚本全部存储在Gitlab仓库中,(脚本的存储规范请参考:GitLab Jmeter测试包通用设计1.0版)
项目根目录新建文件夹,前面文件夹名和项目名保持一致,后缀加“-test”,如下图文件夹:

四、自动化测试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、内容编码:UTF-8(如下图,此处根据实际情况设置为UTF-8)
d、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、在当前测试计划中,根据上述范例逐一添加本次需要运行的自动化脚本,添加完成后的效果如下所示:

2、运行当前测试计划的全部用例,然后用查看全部运行结果如下:

3、同样在结果树,可以查看全部失败用例的详细报文:

七、服务器配置和运行(Jenkins/TFS)
由于job最底层调度由Jenkins实现,本小节重点介绍如何配置job参数等内容。TFS方面只需要通过接口或者命令行的方式,直接调度Jenkins即可。
1、Job命名规范,定义在Jenkins中job的命名规范,如下图所示,以“JMETER”开头后面是服务名:

2、添加构建配置,如图所示,其中devops是基于Python编写的打包脚本,/sso-support-test是Jmx脚本文件地址,report_server是邮件服务,mail是报告接收人的邮箱地址:

3、构建触发器配置:如图所示,这里配置每两分钟去轮循检查服务器是否有更新:

4、源码管理:添加并选择Git仓库,然后配置Repo地址,最后选择分支dev(非强制)

八、服务器生产自动化报告
自动化报告目前支持两种形式,邮件和Html报告查看。
1、邮件方式报告查看。服务器端配置响应接收人员的邮件地址后,每次自动化运行结束,会自动发送邮件报告到指定关注人,如下图所示:

邮件Report中主要包含以下内容:
Summary栏目:包含所有请求的总结,总数,失败数,成功率,平均时间,最小时间,最大时间等。

Pages栏目:主要包含了单个请求的详情内容:

Failure Detail:主要是错误详情相关内容:

2、Html报告查看。Html内容展示目前和邮件基本保持一致不再展开详述,如下图所示:

基于Jmeter的自动化测试实施方案设计的更多相关文章
- 基于Jmeter和Testlink的自动化测试框架研究与实施
关于测试框架搭建的详细过程,会在另一篇文章中详细介绍:http://www.cnblogs.com/leeboke/p/6145977.html 摘 要 目前基于Jmeter的接口自动化测试框架,大多 ...
- 基于Jmeter+maven+Jenkins构建性能自动化测试平台
一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...
- 基于jmeter+ant实现的接口自动化测试
jmeter+ANT接口自动化测试框架 项目说明 本框架是一套基于jmeter+Ant+Excel+Python而设计的数据驱动接口自动化测试框架,jmeter 作为执行器,Ant 作为构建工具,进行 ...
- robotium从入门到放弃 三 基于apk的自动化测试
1.apk重签名 在做基于APK的自动化测试的过程中,需要确保的一点是,被测试的APK必须跟测试项目具有相同的签名,那怎么做才能确保两者拥有相同的签名呢?下面将给出具体的实现方法. 首先将被测 ...
- 基于jmeter,jenkins,ANT接口,性能测试框架
背景 公司计划推接口和性能测试,搭建这个性能测试框架框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能,接口测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的 ...
- Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...
- 基于Jmeter的thrift-RPC接口测试
根据需求,产品部分功能采用thrift-RPC协议进行接口的增.删.改.查,前期采用Junit对其进行测试,为了提高RPC接口测试的简洁化和后期的性能测试需求,打算通过Jmeter的java类测试实现 ...
- 基于jmeter的性能测试平台(二) 一个构想
之前基于jmeter搭好了分布式测试平台,但是感觉还是很粗糙,打算给它穿点衣服. 整个架构差不多就像下面这个图. (1)基于python django做一个web页面,友好地管理测试过程 (2)con ...
- 转:基于Jmeter的MQTT测试插件
基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...
随机推荐
- axios + mock.js模拟数据实现前后端分离开发的实例代码
首先就是必须安装axios和mock.js npm install axios npm install mockjs 1. 然后在文档src中新建一个mock.js文件,如图 2. 在main.js中 ...
- Appium安卓真机环境搭建
说明 步骤可能比较简洁,因为手头上有安卓测试机,所以需要配置虚拟机的童鞋请去虫师博客园,因为我也是从那儿学的,哈哈.点我飞到虫师那儿 但是如果你要搭建真机测试环境的话,本教程将是最简单实用的. 1. ...
- 使用simhash库来进行网页去重
首先感谢作者yanyiwu贡献的开源项目https://github.com/yanyiwu/simhash.在做项 目过程中,翻了一遍<这就是搜索引擎 核心技术详解>这本书的查重算法, ...
- Scheme change not implemented
1.错误描述 2.错误原因 由于在改变Java代码中的方法或运行代码出现,导致Tomcat编译的代码不能替换工作空间的代码,即不能及时同步,出现错误 3.解决办法 (1)关闭Tomcat,clean一 ...
- Error Code: 1068. Multiple primary key defined
1.错误描述 10:10:38 alter table user add num int(8) primary key first Error Code: 1068. Multiple primary ...
- 草料Chrome浏览器插件,让二维码更好用
安装插件草料chrome插件,是专为chrome核心的浏览器开发的一个二维码应用增强工具插件. 自动将地址栏链接生成二维码 以谷歌原生的chrome浏览器为例,插件安装成功后会在浏览器地址栏旁边出现一 ...
- vue全局配置----小白基础篇
今天学习vue全局配置.希望帮助我们去了解vue的全局配置,快速开发. Vue.config是vue的全局配置对象.包含Vue的所有全局属性: silent:boolean(默认值:false)--- ...
- Java并发编程-各种锁
安全性和活跃度通常相互牵制.我们使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁.类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁.Java应用 ...
- es6学习笔记--解构赋值
昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法. 概念: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构 ...
- Jmeter_从jdbc请求的响应中获取参数做关联
在之前的文章-参数关联中,留个一个小尾巴,这里补充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:从sql表中将需要取的数据查出来 2:我们需要把 ...