单元测试和压力测试是软件开发质量的保证(2)

发表于:2014-09-09来源:uml.org.cn作者:不详点击数: 标签:
这几天为了测试网站的负载极限,根据朋友的推荐先后使用了几个压力工具,上面的 Web CT/ Web Runner是其中之一, LoadRunner80我一看要装300大M就又打了退堂鼓

  这几天为了测试网站的负载极限,根据朋友的推荐先后使用了几个压力工具,上面的WebCT/WebRunner是其中之一, LoadRunner80我一看要装300大M就又打了退堂鼓,要知道我几年的机子一装就不用跑了。微软的WAS和Jmeter就成了试用的主要方式,这也是目前可以随便找到的轻易负载工具中比较完善的两种。WAS设置简单,运行结果也具备可重复性。不过呢,报告不直观,而且不能连续动态运行并报告;更糟的是,它没有验证请求是否正常的功能(或者是我不会用,没有找到),这样只是发出了请求,至于请求是不是完整执行还是实际上返回一个空文件,真是天知道。某种情况下,它也就是发出一大堆的request,让网页转一转而已。所以我对WAS的理解是重点不是看它本身的输出日志,而是着重于从被测试者本身在调高测试强度后是本身记录日志中检查是否有异常,以及达到极限状态下是否能够恢复上作出结果判断。

相比之下 Jmeter就好一点,这东西使用上也不难,相关的文章一看就基本上会用了。它有验证请求是否正常执行的功能,也能够通过持续请求观察响应变化和背离情况,可以比较容易地发现不同的服务器设置对性能带来的细微差别;就优化服务器来说,它比WAS强。不过Jmeter似乎有BUG,反正我试过几次要启动启动不了,要关闭关闭不了的情况。

  无论是使用WAS还是JMETER,都轻易把服务器会话计数打上了几千。但怪就怪在,如果使用我自已那套土装的代理服务器模拟Ddos攻击时,按请求频率,很快就会让目标靶机进入极限状态,甚至应用crash,必须重启。但用WAS/JMETER,无论如何调大负载,都只是响应变慢一点,靶机都是死不了;直到我自已的测试机死了,靶机不一会又生蹦活跳地活转过来。道理在那里,我也没有什么谱;估计与代理服务器的工作方式有关;我发现靶机方面的记录计数比我实际发出的线程请求要高出一两倍。

  无论如何,如果打算长期使用一个单元测试的工具测试Web应用负载的话,Jmeter应该是一个不错的选择;另备一个WAS也不算浪费。LoadRunner和其他动不动张口要钱的主儿,暂时就免了吧。

原文转自:http://www.uml.org.cn/Test/200604242.htm