除了功能方面的测试外,我们还要测试那些"服务质量"。如效能测试、负载测试、压力测试。我们在本章前面讲到了这三种测试。在Stone项目中,以产品搜索为例,这三种测试的区别如下:
效能测试:在100个用户的情况下,产品搜索必须在3秒钟内返回结果。
负载测试:在2000个用户的情况下,产品搜索必须在5秒钟内返回结果。
压力测试:在高峰压力(4000个用户)持续48小时的情况下,产品搜索的返回时间必须保持稳定。系统不至于崩溃。
我们可以举一个现实生活中旅客乘坐列车的例子来做对比。
效能测试:在80%上座率的情况下,期望:列车按时到达,并且乘客享受到优质服务。乘务员不要太累。
负载测试:在100%上座率的情况下,期望:列车大部分按时到达,乘客享受到基本服务。乘务员的疲劳在可恢复范围内。
压力测试:在高峰压力是200%上座率,全国铁路系统增加20%的列车,持续15天的情况下,期望:列车能到站,乘客能活着下车,系统不至于崩溃。乘务员也能活着下车。
说一句题外话,飞机如何做压力测试?波音公司在早期是用沙袋或铅块压在飞机机翼上的不同部位,来模拟飞机在各种激烈运动中各个部位的受力,受力的上限一般是平常水平飞行受力的7倍。当然,现在的飞机设计公司都有一系列完备的模拟和测试工具(如风洞和计算机模拟工具等)。效能、负载、压力这些方面的测试会产生很多数据,这些数据最好保存在数据库中,以便于日后跟踪分析。这些数据将为以后做网站容量规划(CapacityPlanning,又称能力规划)提供重要的依据。在VSTS中,效能和压力测试都可以用"LoadTest"来实现,LoadTest牵涉到许多因素,因此我们需要按部就班地设置,如图 所示。

负载测试的一个核心概念是"场景",这与软件设计的场景有所区别,它主要包含负载测试的各种参数。
1.停顿时间(ThinkTime):在每次请求之间和一批测试之间的停顿。
2.负载模型(LoadPatter):模拟的用户量是恒定在一个数值的(如:总是30个用户),或者是分级进行的(如:开始是5个用户,每
分钟增加10用户,直到最高50个用户)。
3.测试混合模型(TestMix):此次负载测试要运行多少种测试,每种测试所占的比例是多少。
4.浏览器混合模型(BrowserMix):各种浏览器的选择及比例。
5.网络混合模型(NetworkMix):各种带宽的网络及比例。
设置好场景后,下一步要决定我们收集什么样的效能数据
(Performance Counter),这时,我们可以收集代理机器(Agent,模拟的服务请求从这里发出)和控制机器(Controller)的效能数据,更重要的是收集网络服务器的效能数据(如图 所示)。

这些效能数据会反映在负载测试中。最后一步是设置运行负载测试中的各种参数。图13-7是某次网络负载测试的运行结果。

网络应用的负载测试比较复杂,要下一番苦功才能掌握。一般来说,我们会将所有数据都保存到数据库中,以便将来做分析。至于这次测试的目标:确认网络服务器能否在规定时间内处理用户的请求,服务器上有没有出现错误。这两种数据都能立即得到。
1205

被折叠的 条评论
为什么被折叠?



