性能测试工具良莠不齐,免费的性能工具 Jmeter 是目前应用比较广泛的性能测试,但要很好的利用起来也不容易,毕竟是免费的产品。商用的测试工具有 LoadRunner(Micro Focus),kylinPET(奇林),CPTS(华为)、PTS(阿里)等。近些年国产的性能工具的也有了不小的进步,目前国内厂商性能性能测试工具多以开源压测引擎为基础进行包装,也有个别厂商坚持走自研的道路,不管如何,这些进步都难能可贵。
不同的性能测试工具都有它的优缺点,只要我们能很好的利用起来,也会给我们带来不小的收益。利用性能测试工具开展性能测试,最重要的一点是脚本录制及调试,它也是性能测试工具使用难点。下面我们讲解如何利 Jmeter 进行脚本录制。
url:http://59.110.158.28/Example/
线程数:表示运行时,启动的线程数,每个线程循环运行线程组内的http请求,每循环一次,相当于一个虚拟用户
循环次数:线程运行线程组内的HTTP请求的次数
Ramp-up时间(秒):启动指定线程数需要的时间。0表示 JMeter 将立即建立所有线程。
目标控制器:指定脚本存放的位置
分组:
1)不对样本分组”:所有请求全部罗列
2)在组间添加分隔:加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,无实际意义
3)每个组放入一个新的控制器:执行时按控制器给输出结果
4)只存储每个组的第一个样本”:对于一次url请求,实际很多次http请求的情况,这个选项很好用,因为我们常常是不关心后面的那些请求的。
5)HTML文件中获取所有内含的资源:勾选表示HTML文件中获取所有内涵的资源。
注意:设置完要注意保存
启动后有一个录制控制台
登录页面
登录后的页面加载
录制后生成的脚本
在线程组下面添加察看结果树和聚合报告查看回放的情况。
脚本调试是性能测试过程非常重要的步骤之一,笔者径常遇到,很多测试人员,测试一周多都是白测试,因为脚本自认为调试成功了,而往往事实并没有调试成功。下面我们来调试一下本次录制的脚本。
运行脚本,执行结果如下,看起来是所有的请求都运行成功,如果你也是这样认为,那也一样掉进了坑里。
对于大部分的性能测试工具,如:LR,Jmeter 等,如果 http 响应如果返回响应码是 20X-30X 则认为是正常,如果返回 40X-599 就认为是失败的。
下图所示,请求响应:用户登录失败,在跳转失败页面....
进一步检测响应头信息:响应码是 200,Jmeter 调试结果当作请求返回成功。
下面的 81 /Example/getNews,返回显示未登录,但结果察看树显示请求也是正常,也是同样的原因(错误码返回 200)
通过上面例子看,脚本调试脚本是多么的困难了。结果树请求都通过,并不代表脚本调试成功。
那么有没有什么办法来证明脚本真正的成功的呢?有的,可以通过添加检查点或直接查看请求返回结果。
一般来说需要检查每个页面的关键信息,你也可以直接查看关键 http 请求的返回信息来验证。
针对本文本案例样本处理三个地方才能让脚本真正的调试通过:验证码、JSESSIONID、ticket
1)验证码:可以通过添加边界提取器完成
2)sessionid 的处理:可以添加 HTTP Cookie 管理器,让 Jmeter 自动处理
3)ticket:正则表达式提取器。因为 JSESSIONID 的值到行尾,无法使用边界提取器处理。
任务执行:
执行结果如下所示:登录页加载时间最小 9.7 秒,最大 16.9 秒,测试时间与实际相差非常大(实际时间 2-3 秒不等),造成此原因的论述已经在《性能测试工具 Jmeter 你所不知道的内幕》中详细描述,此处不再赘述,有兴趣的可以仔细研读一下,