本文共 6181 字,大约阅读时间需要 20 分钟。
本节书摘来自异步社区《LoadRunner 12七天速成宝典》一书中的第1章,第1.6节第一个性能测试案例,作者陈霁,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.6 第一个性能测试案例
云云:接着我们来做个简单的性能测试,测试50个用户在论坛上发帖,平均每个用户发帖的响应时间和对应的服务器资源占用率。恋恋:听起来好酷哦!
云云:首先需要搭建一个测试环境,这里使用新版的DiscuzX 1.5论坛作为案例(由于版本较旧,下载地址参考本书网盘),这里选择简体UTF-8版本。只下载了论坛还不够,这个论坛是基于PHP开发的,所以我们还需要配置一个简单的PHP+MySQL的平台,为了方便讲解,这里使用WAMP 2.2(Windows+Apache+MySQL+PHP)整合平台。双击安装包启动安装。
弹出版本说明,单击“Next”,如图1-39所示。
如果服务正常启动就会在通知区域中看到一个绿色的W图标,如图1-48所示。
单击“我同意”,如图1-52所示。
云云:嗯,我要先问你一个问题。在论坛上发一个帖子,用户需要做几步操作?
恋恋:一般是这几个步骤:
(1)登录。
(2)选择所要发帖的版块。
(3)单击新建主题。
(4)书写帖子正文,然后单击“确定”。
云云:那么接着我们来录制这个操作吧。在电脑桌面上打开“Virtual User Generator”,单击“开始”菜单中“File”下的“New Script and Solution”,新建脚本,如图1-57所示。
为了保证代码能够生成合理的脚本,确保回放的正确性,这里需要修改Recording中的录制模式。找到“HTML-based script”单击右侧的“HTML Advanced”,在弹出的选项中将默认的“A script describing user actions”修改为下面的“A script containing explicit URLs only”,如图1-61所示。
这个时候会看到有一个Recording工具条,并且一个IE 11会被启动,自动访问论坛,接着我们在这个论坛中进行发帖的操作,如图1-63所示。
设计中心提供了对脚本关联处理的支持,但是个人并不太推荐使用这样自动的体系,所以直接单击“Close”,如图1-67和图1-68所示。
回放完成后,你会在论坛上看到多了一个新的帖子,也就是说通过录制,我们得到了发帖用户的行为,这个行为用一个脚本来说明(虽然你看不懂怎么回事,但是这个在现在不关键),而回放这个脚本可以实现对前面行为操作的重复,那么可以基本认为该脚本录制是成功的。
恋恋:原来简单几步就能完成用户行为模拟了啊!
云云:你又骄傲了是吧!这个例子简单么,换一个系统你就不能简单地录制回放了,别翘尾巴!
恋恋:翘尾巴不是你的特长么,看我怎么把它压下去!
云云:Stop!接着来说怎么添加监控。监控其实包括两部分,一部分是我们需要的操作的响应时间,另外一部分是在这个操作下的资源利用率。先到脚本中找到发帖的操作。
恋恋:发帖应该是在最后吧,我来看看代码。是不是这一段呢?
恋恋(得意状):当初的HTML不是白学的,填写表单不就是个submit操作么,代码上面有Action和Method,这不就是表单处理么,而且还有好多个属性和一堆乱码,只有这段了。只是为什么是乱码但回放后帖子显示还是正常的中文啊?
云云:这个问题是编码的问题,英文的软件对中文的识别总归是不好的,这里先不和你纠结这个问题,我们是做性能测试不是做功能测试,哪怕回放是乱码也无所谓的。
恋恋:哦,也是,反正操作成功了,显示不正确也没有关系。
云云:接着我们需要知道发帖所需要消耗的时间,这里需要添加一个叫做事务的函数。把光标切到发帖函数的前面,单击工具栏上的“Start Transaction”或者组合键Ctrl+T,如图1-71所示。
同样在代码中添加了一句lr_end_transaction(“”,LR_AUTO”),这里需要和前面的事务名填写一样的内容,如图1-73所示。
云云:哎哟,不错哦。
恋恋:那是,也不看看我是谁。
云云:好了,我们完成了脚本的开发工作,接着我们要把这个脚本变成50个用户来运行,并且还要监控在这个负载下资源利用率的情况。
恋恋(期待的眼神)。
云云:打开菜单“Tools”,单击“Create Controller Scenario”创建一个新的场景,如图1-74所示。
弹出创建场景的窗口,我们这里把“Number of Vusers”值从1改为50,单击“OK”启动场景,如图1-75所示。
这里就是Controller场景界面了,接着将界面底部的标签切换到Run上,如图1-76所示。
这里输入“localhost”监控本机的Windows 资源信息(使用IP地址可能会被防火墙拦截),单击“OK”按钮,如图1-79所示。
云云:嗯,是这样的。完成了场景中的监控和50个人负载的设置后,就可以运行了,单击F5键等结果吧,这个要运行接近16分钟呢,坐了那么久起来活动活动吧,场景运行如图1-82所示。
**小结
了解如何使用Vugen录制脚本,回放确认脚本录制是否成功,掌握在脚本中添加事务函数及生成场景添加资源监控。**20分钟过去。云云:场景运行完成,我们可以来看结果并且生成性能测试报告了。
恋恋:等我再去吃个水果,晚饭后吃水果对身体好。
云云:场景执行完毕后,所有的用户会处在Stop状态,现在我们完成了50个用户在论坛上不停发帖的负载,接着我们来看看论坛上多了多少帖子,如图1-83所示。
云云:基本上这个是可行的,我已经承认你是女王了。
云云:最后我们要生成性能测试报告了,来对这次测试进行一个说明,单击“Results”菜单下的“Analyze Results”,调用Analysis对这次性能测试中的数据进行分析,如图1-85所示。
恋恋:我看不懂,都是数据怎么办。
云云:别急,抓住重点就行了。首先看我们关注的发帖的响应时间,在这个Summary里面显示了posttopic事务的Average时间是10.574秒,你觉得速度快吗?
恋恋:我觉得有些慢。
云云:通常我们使用2/5/8的原则来说明用户体验。即如果事务时间在2秒以内是很快,5秒以内是还不错,8秒以上用户就受不了了。
恋恋:那么现在就是说速度完全不行喽。
云云:这里先卖个小关子,这个时间并不是发帖操作的时间哦,不过你就先当整体看好了,以后谈时间细分的时候再给你详细介绍。
恋恋:那么我们知道时间是10秒多点,又怎么样呢?
云云:单击左边的“Average Transaction Response Time”,会出来一个图,这个图是随着时间的推移事务时间的变化规律,如图1-87所示。
注意,posttopic中的数据就是比较低的那根线,在这个图里面你可以看到负载的过程中响应时间是如何变化的。
恋恋:4分钟以前的时间都不长,4分钟以后的时间波动却很大。
云云:还算记得不错,用户运行的趋势是在场景中设置的,这里我们使用了系统的默认值而已。最后我们可以看一下资源情况图,这个图要手工添加。
在Graph上单击鼠标右键,在“Add New Item”下选择“Add New Graph”,如图1-89所示。
弹出的窗口中选择“Windows Resource”,单击“Open Graph”,如图1-90所示。
恋恋:这怎么看啊?
云云:你先别管,直接看Processer Time,是不是发现平均值是63.5%,最大值是100,说明CPU有一定的占用率。
恋恋:是不是就能说有CPU瓶颈了?
云云:CPU是常见瓶颈的一种,但是这里并不能完全说是CPU一定是导致响应时间慢的关键。接着我们编写一份性能测试报告,下面是模板,你照着填一下。
恋恋开始认真填写,最后生成了这样一份性能测试报告。
Discuz性能测试报告
目的:测试Discuz发帖的性能。
环境:
红太羊的笔记本
Windows 10操作系统+Wamp+Discusx 1.5
负载方式:用户逐渐增加,持续,然后下降的方式,如图1-92所示。
**小结
了解如何使用Analysis整合数据,通过对用户执行,平均响应时间和资源利用率3张图对系统性能进行简单分析,掌握最简单的性能测试报告编写方法。**云云:第一天就到这里吧,辛苦啦。恋恋:晚安。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。