用户思考时间(Userthinktime),定时器,和代理服务器(proxyserver)
在负载测试中需要考虑的的一个重要要素是思考时间(thinktime),也就是在两次成功的访问请求之间的暂停时间。有多种情形挥发导致延迟的发生:用户需要时间阅读文字内容,或者填表,或者查找正确的链接等。未认真考虑思考时间经常会导致测试结果的失真。例如,估计数值不恰当,也就是被测系统可以支持的最多用户量(并发用户)看起来好像要少一些等。
Jmeter提供了一整套的计时器(timer)来模拟思考时间(thinktime),但是仍旧存在一个问题::如何确定适当的思考时间呢?幸运的是,JMeter提供了一个不错的答案:使用JMeterHTTP代理服务器(ProxyServer)元件。
代理服务器会记录在使用一个普通的浏览器(如FireFox或InternetExplorer)浏览一个web应用时的操作。另外,JMeter在记录操作的同时会建立一个测试计划(testplan)。这个功能能提供以下便利:
1.不必手工建立HTTP访问请求,尤其是当要设置一些令人乏味的参数时(然而,非英文的参数也许不能正常工作)。JMeter将会录制包括隐含字段(hiddenfields)在内的所有内容。
2.在生成的测试计划中,Jmeter会包含浏览器生成的所有的HTTP报头,如User-Agent(e.g. Mozilla/4。0),或AcceptLanguage(e.g. zh-tw,en-us;q=0.7,zh-cn;q=0.3)等。
3.JMeter会根据设置在录制操作的同时建立一些定时器,其延迟时间是完全根据真实的操作来设置的
现在让我们来看一下如何配置Jmeter的录制功能。在JMeter的控制台上,在工作台(WorkBench)元件上单击右键,然后选择”addtheHTTPProxyServer“。注意是在WorkBench上单击右键而不是在TestPlan上,因为现在是要为记录操作进行配置而不是要运行测试计划。HTTPProxyServer的实现原理就是通过配置浏览器的代理服务器而使所有的访问请求通过JMeter发送(,因而被Jmeter把访问过程录制下来)。
如图3所示,HTTP代理服务器(HTTPProxyServer)元件的一些参数必须被配置:
4.端口(port):代理服务器的监听端口
5.目标控制器(TargetController):是代理用于存储生成的数据的控制器,默认情况下,,JMeter将会在当前的测试计划中找一个记录用的控制器用于存储,此外也可以在下拉菜单中选择任意控制起来存储,通常默认值就可以了。
6.分组(Grouping):确定在测试计划中如何来为生成的元件分组。有多个选项,一般可以选择“只存储每个组的第一个样本”,否则,将会原样录制URLs,包括包含图像和JavaScripts脚本的页面。当然也可以尝试一下默认值“不对样本分组”("Donotgroupsamples"),来看一下JMeter建立的原版的测试计划。
7.包含模式(Patterns to Include)和排除模式(Patterns to Exclude):帮助过滤一些不需要的访问请求。
图3 JMeter代理服务器(Proxy Server)。