Now you can know everything in the world, but the only way you're findin' out that one is by givin' it a shot.
你可以了解世间万物,但追根溯源的唯一途径便是亲身尝试。
电影《心灵捕手》
测试用例描述:
性能测试要求:5个用户循环2次。
用例名称 | 操作步骤 | 预期结果 | 备注 |
新建项目并设置团队时统计项目总工时 | 1、 进入项目视图,点击右侧的”添加项目“链接。 | 系统会自动计算这个项目总的可用工时。 | |
2、 出现项目添加的页面,添加一个新项目并保存 项目名称为: Test_Project_01 项目编号为: TP_01 项目时间为2016-01-01~2016-01-31 团队名称:TestTeam 关联产品:禅道管理系统 项目描述为:“测试组合模块之间的功能、性能” |
|||
3、 在保存后弹出的对话框中,选择“设置团队” | |||
4、 为该项目设置5个测试人员,不包括“管理员” |
这个测试用例仅仅是举例,实际测试设计工作中此类一般应用软件的类似功能是不涉及如此复杂的并发性能测试的,有兴趣的可以参考性能测试设计相关知识。
第一步: 创建测试计划
第二步: 创建线程组(调试过程中将用户数和循环次数均设置为1)
线程组说明:
域Ramp-Up Period:这个属性表示每个用户启动的迟延时间。例如,如果你输入Ramp-Up Period为5秒,JMeter将会在5秒结束前完成启动所有的用户。所以,如果你有五个用户并且Ramp-Up Period为五秒,那么开始用户的延迟就是1秒。(5个用户 / 5秒 = 1 用户每秒)。如果你设置其值为0,JMeter将会立即启动你所有的用户。
域Loop Count:这个属性表示你的测试的重复次数。如果你设置为1,JMeter将你的测试只运行一次。要让JMeter不断的运行,你要选择"永远"这个复选框。
第三步: 添加HTTP请求默认值
所有的HTTP请求都将发送到相同的Web服务器127.0.0.1。向这个域中输入这个域名,这是唯一一个需要我们去修改它的默认值的文本域,其它的文本域都保留它们的默认值。
注意: HTTP请求默认值元件并不告诉JMeter来发送HTTP请求,它仅仅定义这个HTTP请求所用的默认值。
第四步: 添加HTTP cookie
除非你的应用程序明确的不使用Cookies,几乎所有的网站应用程序都会使用cookie支持。要添加cookie支持,可以简单的在你的测试计划中给每一个线程组添加一 HTTP Cookie管理器。这样确保每个线程组有自己的cookies,但是共享跨越所有的HTTP请求对象。添加 HTTP Cookie管理器,简单地选择这个线程组,选择添加-->配置元件-->HTTP Cookie管理器,也可以从编辑菜单或通过右键点击来实现添加。
第五步: 添加设置HTTP代理服务器
第六步: 录制脚本
第七步: 回放脚本
以上5~7步如有清楚可以参考上一篇文章《使用JMeter录制脚本并调试》
第八步: 优化脚本(参数化关键字段)
1、明确哪些变量(字段)需要参数化
从回放结果中看到“项目名称”、“项目代号”重复了,导致回放失败,接下来就对这两个字段进行参数化
2、点击JMeter菜单栏的“选项”-“函数助手”,弹出函数助手设置框。
a. 选择一个功能:“_CSVRead”
b. CSV文件路径: 选择存放CSV文件的路径
c. CSV文件序列号: 从0开始
CSV文件格式如下, 参数的值之间使用逗号分隔,第1列"Test_Project_0X"对应上图中的序列号为0, 第2列为1。
d. 点击“生成”按钮,复制生成的字符串。
e. 找到对应的HTTP请求,用生成的字符串替换原HTTP请求中的值
3、1个用户循环1次,再次回放脚本并查看回放结果, 脚本回放通过。
第九步: 执行并发测试
设置线程组的用户数为5, 循环次数为2, 执行并发测试。
注意:
1. CSV文件中使用过的第一行的值,不能再被使用, 执行并发测试之前应该删除该行的值。
2. 5个用户循环2次,总共执行10次,参数值的数量需要满足10次测试使用。
第十步: 通过监听器查看测试结果。
summary report 摘要报告
摘要报告在测试中为每个不同命名的请求创建表行。这类似于聚合报表,但它使用的内存较少。
aggregate graph 聚合图
聚合图类似于聚合报表。主要的区别是聚合图提供了一个简单的方法来生成条形图,并保存为PNG文件的图形。
图形结果
图形结果监听器生成一个简单的图,绘制所有采样时间。沿着图的底部,当前样本(黑色),当前所有样品的平均值(蓝色),当前标准偏差(红色),当前吞吐量率(绿色)以毫秒为单位显示。
“吞吐量”表示服务器处理的请求/分钟的实际数目,包括实际测试事务和JMeter自己的内部处理时间。这个数字代表服务器每分种处理请求的真实值,可以增通过加线程数和/或减少延迟,以发现服务器的最大吞吐量。