15.8运用测试工具
前面说了这么多理论和规定,我们看看实际工作如何进行。VSTS既然是一套软件工具,它一定有一些帮助测试人员的工具。Visual Studio 2005的众多套件中,有一款是:Visual Studio Team Edition for Software Tester。我们在这里也简单地介绍基本工具的使用。
15.8.1运用工具记录手工测试
不管多少人,多少文章描述了“测试自动化”及其前景,这些自动化的东西最初还是得有人“手动”地进行。下面的步骤演示了如何创建手工测试。
(1)在VSTS(有Team Edition For Tester 套件)中,新建一个项目,在Visual C# 或者其他类型中,选中Test。填入适当的项目名字和解决方案的名字,可以把它加入源码控制中。
我们会看到新的项目新建了不少文件(如图15-2所示)。其中有UnitTest1.cs,我们之前已经谈过。另一个文件是ManualTest1.mht。
图15-2创建新的测试项目
(2)打开ManualTest1.mht,你会看到它是模板(又一个模板),在这个文件中,你可以填入下面的内容:
a. 测试的标题(Test Title)——简明的标题。
b. 测试的详情(Test Details)——测什么。
c. 测试的对象(Test Target)——测试什么功能。
d. 测试的步骤(Test Steps)——提供详细的测试步骤和每一步期望的结果。
e. 修改的记录(Revision History)——对这一测试进行修改的历史记录。
九条:不就是这样一个简单的文件么,我自己不用写也可以记住。
阿亨:好记性不如烂笔头,当测试矩阵有上百个可能的设置,产品又日趋复杂的时候,我们需要把一些手工测试记下来。
15.8.2运用工具记录自动测试
对于网络程序,我们可以把对网页的访问像录音一样录下,以后测试的时候重新放录音带即可。
操作:鼠标右键选中测试项目,选择 Add | Web Test(如图15-3所示)。
图15-3新增加一个 Web Test
Internet Explorer 就会打开,同时Web Test Recorder 也会激活,测试人员就可以按照场景测试网站的各项功能进行测试,同时注意到Web Test Recorder 会记录每一个网页的地址,以及可能的参数。
测试人员可以进一步增强测试的内容(如图15-4所示):
图15-4进一步增加Web Test 的功能
其中值得提出来的是,测试人员可以选中 “Generate Code”,生成测试脚本,可以在脚本一级开发测试。
不同的测试可以以不同的次序结合起来运行,测试人员可以用“Ordered Test”来管理这样的测试集合。可以用和创建Web Test 类似的方法创建 Ordered Test。
15.8.3如何测试效能
除了功能方面的测试外,我们还要测试那些“服务质量”。如效能测试、负载测试、压力测试。我们在第7章中讲到了这三种测试的区别。在Stone 项目中,以产品搜索为例,这三种测试的区别如下:
效能测试:在100个用户的情况下,产品搜索必须在3秒钟内返回结果。
负载测试:在2 000 用户的情况下,产品搜索必须在8秒钟内返回结果。
压力测试:在高峰压力(4 000 用户)持续48小时的情况下,产品搜索的返回时间必须保持稳定。系统不至于崩溃。
我们可以举一个现实生活中旅客列车的例子:
效能测试:在80%上座率的情况下,期望:列车按时到达,并且乘客享受到优质服务。
负载测试:在100%上座率的情况下,期望:列车大部分按时到达,乘客享受到基本服务。
压力测试:在高峰压力是200%上座率,全国铁路系统增加20%列车,持续15天的情况下,期望:列车能到站,乘客能活着下车,系统不至于崩溃。
效能、负载、压力这些方面的测试会产生很多数据,这些数据最好保存在数据库中,以便于跟踪分析。这些数据为以后做网站容量规划(Capacity Planning,又称能力规划)提供重要的依据。
在VSTS中,效能和压力测试都可以用“Load Test”来实现,Load Test 牵涉到许多因素,因此我们需要按部就班地设置,如图15-5所示:
图15-5创建负载测试向导
负载测试的一个核心概念是“场景”,这和软件设计的场景有所区别,它主要包含负载测试的各种参数:
(1)停顿时间(Think Time):在每次请求之间和一批测试之间的停顿。
(2)负载模型(Load Pattern):模拟的用户量是恒定在一个数值(如:总是30 个用户),或者是分级进行(如:开始是5个用户,每分钟增加10个用户,直到最高50 个用户)。
(3)测试混合模型(Test Mix):此次负载测试要运行多少种测试,每种测试所占的比例是多少。
(4)浏览器混合模型(Browser Mix):各种浏览器的选择及比例。
(5)网络混合模型(Network Mix):各种带宽的网络及比例。
设置场景后,下一步要决定我们收集什么样的效能数据(Performance Counter),这时候,我们可以收集代理机器(Agent,模拟的服务请求从这里发出)和控制机器(Controller)的效能数据,更重要的是收集网络服务器的效能数据(如图15-6所示)。
图15-6收集效能数据
这些效能数据会反映在负载测试中。
最后一步是设置运行负载测试中的各种参数。
图15-7是一个网络负载测试运行的结果图:
图15-7负载测试运行结果
九条:数据太多了,我看这个表有点头晕,比打麻将要看的数据多多了。
阿亨:的确,网络应用的负载测试是一个复杂的领域,我们要下一番苦功把它掌握。一般把所有数据都保持到数据库中,以便将来做分析。但是我们还是要明确测试的目标:看看网络服务器能否在规定时间内处理用户的请求,服务器上有没有出现错误。这两种数据都能够马上得到。