Jmeter + Badboy 进行脚本录制,对 Webtours 订票系统进行多用户并发测试
我们这里使用Loadrunner自在的Webtours订票系统,进行脚本录制。
第一步:录制脚本
1.打开Badboy,输入Webtours地址,然后访问,使用默认的用户名和密码完成一次购票流程!(这里我是把Webtours安装在了我的Windows本机上面的,所以显示启动了Webtous的服务!)
启动Webtours服务:
打开Badboy,输入地址,访问:(启动Badboy以后,会看到左上角默认recording状态,是默认开启脚本录制的,所以直接访问就好。左侧Script一栏就是我们要录制的脚本的结构)
然后,登录,完成一整个购票流程:(这里我就不一步步截图了,关于如何购票的可以百度,其实也不难!)
录制好以后,点击 停止按钮。停止脚本录制。
然后到处为Jmeter,也就是将我们录制好的脚本保存为.jmx文本格式
第二步:打开Jmeter
1.将保存好的脚本使用Jmeter打开(打开以后就是这个样子的)
2.我们先在Thread Group下面添加一个 察看结果树 和 聚合报告。(添加察看结果树方便我们查看每一个请求的响应结果,聚合报告是为了一会进行多用户并发测试的时候查看性能指标使用的。)
3.然后我们直接启动一下试一下,看一下整个脚本是否是通的。然后发现是通的,而且都正确。
4.这个时候我们需要模拟很多的用户。(我的这些用于做多用户并发测试的用户都是通过Webtours注册好的),首先需要确定一下,我们的用户名和密码是在哪一请求里面发出去的。
5. 找到以后我们会发现,除了用户名和密码,还需要验证userSession。那么我们就需要去找一下这个userSession是从哪个请求的相应里面取到的。我们去察看结果树中找一下对应的请求。
6. 找到对应的请求后,选中右击添加>>后置处理器>>正则表达式提取器,将提起Session的正则表达式填写进去。
7.之后我们在输入用户名和密码的请求中,将userSession的值更改为 变量名 ${userSession}
8. Session的问题解决了,然后我们需要解决用户的问题。将我们注册好的用户名和密码。前面是用户名,后面是密码。
9.在Thread Group右击 添加 >> 配置原件 >> CSV 数据文件设置。将文件名指定成为我们刚才保存好的文件(前提是已经注册好了的哈),变量名成按照图中的设置。还有分隔符,也就是用户文件中的逗号
10.完成以后,我们需要重新设置一下我们的登录请求的用户名和密码。都设置成为变量名 ${user} ${pwd},还有在确认订单的时候也是有用户名和密码的输入,我们也需要修改,如下图:
登录请求:
订单确认请求:
11.ok到了这一步,我们算是把购票测试脚本给处理完成,接下来运行看一下。
我们先运行一个线程,使用的用户就是我们用户文件里面的第一个用户了。发现是订票成功的,用户正是用户文件中的用户名,说明是可以的。
然后我们增加线程数,增加循环次数,目的是看一下我们本机的性能变化。
12.启动线程,看一下电脑性能的变化以及聚合报告的性能指标的信息。可以看到,在启动脚本以后,本机的CPU和内存都出现的明显的提高。说明压力来自Webtours服务。
这里也引申出一个如何进行分布式性能测试的问题,就是当前我的电脑需要承载着发送线程的任务,又因为Webtours服务安装在我的本机的缘故,同时还要承受着处理Webtours请求的任务。这就导致我预期想要给到服务器的压力没有达到预期。
正常的工作中,服务器和测试机肯定不是在一台机器上面的,但是当我们要进行的性能测试,线程数超出了测试机器所能输出的压力时,这个时候就要考虑分布式了,也就是多台设备同时给一台服务器施加压力,从而达到预期的压力。