之前写过一篇文章4.2 录制第一个脚本,详细描述了jmeter录制的原理、录制HTTP协议的性能测试脚本的步骤。
但是就在今天,同学在录制HTTPS协议的性能测试脚本时遇到困难,向我求助,
下面我带大家用jmeter完成一个https协议的性能测试脚本的录制。
目录
1.启动jmeter
2.创建测试计划
命名测试计划:禅道
3.为测试计划添加线程组
线程取名:登录,并设置取样器出错时,停止测试;先暂时设置模拟用户数为1,
3.为线程组添加3个测试元件
缓存管理器、cookie管理器以及HTTP请求默认值。
1)在线程组上点击右键菜单Add-> Config Element-> HTTP Cache Manager添加缓存管理器。缓存管理器在整个测试中将帮助管理用户缓存;
2)在线程组上点击右键菜单Add-> Config Element-> HTTP Cookie Manager添加cookie管理器,它会在测试执行期间管理cookie。(也就是说jmeter要像真实用户使用浏览器访问网站时,浏览器会缓存和cookie管理一样,帮我们管理缓存和cookie)。
3)在线程组上点击右键菜单Add-> Config Element-> HTTP Request Default来添加http请求默认值,设置Server Name or Ip设置为你要录制脚本的域名或者ip。
4.为线程组添加逻辑控制器,用于容纳录制的脚本
逻辑控制器命名为“登录”
5.为测试计划添加HTTP测试脚本录制器
1.在测试计划上点击右键菜单 Add->Non Test Elements -> HTTP(S) Test Scripts Recorder,设置Target Logical Controller为简单控制器“登录 -> 登录” ,在Requests Filtering页签设置排除模式(URL Patterns to Exclude)为默认过滤器(点击 Add suggested Exclude)。
6.设置代理服务器
将浏览器的代理服务器指向HTTP测试脚本录制器,设置代理服务器为127.0.0.1,端口号为8888后,点击【保存】
7.启动脚本录制
3.在HTTP测试脚本录制器的右侧面板上点击start按钮,启动录制;
系统提示,如果要录制https的请求,需要将jmeter的证书安装到浏览器。(如果是普通的http协议则不需要)
8.为浏览器安装jemter的证书
在浏览器的设置中搜索“安全”,打开安全设置,在“管理证书”中将jmeter证书添加到“受信任”的根证书颁发机构
9.浏览器中完成操作将录制到jmeter脚本中
在浏览器中先打开禅道登录页面,然后进行录制.
在浏览器上操作完成整个登录
10 停止录制
在HTTP测试脚本录制器的右侧面板上点击【stop】按钮,停止录制;
11.取消代理设置
录制结束后,记得将代理服务器取消,否则浏览器后续无法正常使用。
取消代理和设置代理的方法步骤相同,在浏览器的设置中搜索“代理”,设置即可
12 添加监听器,执行脚本
.脚本已经录制好了,为测试计划添加一个查看结果树,运行一下脚本看看吧,奥,不错啊。结果正常。
但是细心的同学可能发现,登录其实是失败的。究其愿意是禅道对登录做了特殊处理,在第一个登录请求发出后,系统会返回一个随机值。然后登录页面会将随机值和密码进行加密后向服务器发送请求,结果正确才能登录,所以之前录制的脚本回放时无法登录。
有兴趣的同学可以在第一个登录请求下添加xpath提取器,将服务器返回的随机值提取出来,然后使用beanshel处理器将随机值和密码进行加密,计算得到要想服务器发送的
为什么我会知道这些,原因是我看了html页面源代码。看到了js脚本
限定于篇幅,xpath提取器、就不详细介绍了,点击链接查看
//*[@id="verifyRand"]/@value
beanshell处理器中添加如下代码
import org.apache.commons.codec.digest.DigestUtils;
String md51= DigestUtils.md5Hex("123456");
String md52 = DigestUtils.md5Hex(md51+vars.get("rand_xpath"));
vars.put("md5",md52);
log.info("444----------" + md52);
10.修改线程组的虚拟用户为10人,启动时间ramp-up为1s,添加监听器--聚合报告,执行后看看响应时间和错误率吧
聚合报告是常用的监听器,大家要会看结果,以下是一个聚合报告监听器的例子