转载【如何选择测试工具】

2010-11-01  李颜颜 

一:软件测试的目的

  软件测试是在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。

  软件测试的范围应包括软件形成过程的文档,数据以及程序,而不仅仅是对程序的测试。

  软件产品的质量包括以下内容

  为了最大程度地保证软件产品的质量,我们需要在软件开发的每个阶段都进行相应的测试。

  可以看出,完整的软件测试贯穿了软件产品的整个生命周期。

  二: 测试工具的基本概念

  为了更好地选择适合团队的测试工具,读者有必要了解测试工具的一些基本概念。

  使用测试工具的目的是为了更加快速,有效地对软件进行测试,提高软件产品的质量。

  A.测试工具具有以下优点:

  1、提高测试质量,避免人为因素。

  2、提高测试效率,减轻重复的人力。

  3、提高测试覆盖率,通过录制回放和数据驱动来测试功能,可以分析测试深度。

  4、可执行某些手工测试难以完成的测试任务,如压力测试,负载测试等。

  5、更好地重现软件缺陷,同一个自动化测试脚本执行的测试结果具有一致性。

  6、更好地利用资源,可以在周末或晚上时间自动执行测试。

  B.测试工具适用的范围:

  1、需要反复进行的测试工作

  2、负载压力测试。C.以下情况不适合使用测试工具

  1、周期短的项目。此时花费大量时间准备的测试脚本将无法得到重复利用。

  2、业务规则复杂的项目。此时投入的测试准备时间远大于手工测试的时间。

  3、依靠人体观感才能完成的测试。例如界面的布局,操作的易用性。

  4、涉及物理交互的测试。例如刷卡机的测试。

  D.此外,对测试工具不应抱有不正确的期望,例如:

  1、“自动化测试可以完成一切测试工作”。

  这是绝对不可能的。目前没有任何一种测试工具(在可以预见的将来也不会有)能够完全替代手工测试。自动化测试仅仅是对手工测试的补充。

  2、“测试工具能使工作量大幅度降低”。

  事实正好相反,首次将测试工具引入团队的时候,测试工作将变得更为艰巨,团队也将增加更多的工作量。只有合理地使用测试工具,且有一定的技术积累后,测试工作量才会逐步下降。

  3、“测试工具能够实现百分之百的测试覆盖率”。

  在有限的资源下,即使使用测试工具也无法达到100%的测试覆盖率。

  4、“自动化测试工具容易使用”。

  由于捕获操作是否正确以及测试脚本的编辑是否合理都会影响测试结果,因此,掌握自动化测试技能需要更多的培训和实践。

  5、“自动化测试能发现大量的新缺陷”。

  事实上,发现新缺陷的任务通常是由手工测试来完成的。自动化测试主要用于发现已有的老缺陷。

  三:选择适合团队的测试工具。

  现在读者已经了解了测试工具的基本概念。接下来可以开始结合自身情况选择一款(或几款)适合团队的测试工具。

  自动化测试工具的分类

  1、负载压力测试工具: 通过模拟成百上千个用户并发执行业务操作,来完成对应用程序的测试。主要用于度量应用系统的可扩展性和性能,并通过实时性能监测来确认和查找问题。代表性软件如LoadRunner。

  2、功能测试工具:通过自动录制,检测和回放用户的应用操作,将被测系统的输出记录通预先设定的标准结果进行自动比较,以检测应用程序是否能够达到预期功能并正常运行。此类工具可以大大减少黑盒测试的工作量,并能很好地进行回归测试。代表性软件如TestPartner,QTP。

  3、单元测试工具:通过自动执行应用程序的函数,过程或完成某个特定功能的程序块,将程序运行结果通预先设置的标准结果自动进行比较,以检测函数,过程或功能是否达到预期结果。与功能测试工具的最大不同之处在于此类工具属于白盒测试工具,且通常由开发人员自行完成。代表性软件如NUnit。

  4、代码质量测试工具:根据预订定义的语法规则对代码进行扫描,找出不符合编码规范的地方。代表性软件如FxCop。

  5、测试管理工具:用于对测试需求,测试计划,测试用例,测试实施进行管理,将测试过程流水化,让不同人员可以通过工具实时交换相关信息,实现全过程的自动化管理。代表性软件如TestDirector。

  选用工具时需要考虑以下问题

  1、功能:事实上目前市场上同类测试软件的基本功能大致相同,只是侧重点有所不同。因此,除了基本功能外,我们还可以通过以下几方面来进行考量。

  1.1、报表功能:能否提供清晰的测试结果报表。

  1.2、集成功能:能否和开发工具进行良好的集成。

  1.3、兼容性:与团队目前采用的开发平台是否兼容。

  2、价格:从价格昂贵的商用测试软件,到完全免费的开源测试软件,有很大的选择余地。

  当然商用软件的品质通常更有保证。

  3、长期考虑:应保证今后测试工具与团队开发工作能够具备连续性和一致性。例如应考虑软件升级带来的影响。

  四:VSTS 测试工具简介

  微软首次在开发工具中集成测试功能是在VSTS2005中实现的。随着VSTS2008,VSTS2010的发布,VSTS测试工具也不断进行着功能的升级和改善。伴随着新版VSTS2010的发布,VSTS测试工具也推出了第三个版本。这个版本的最大变化是新增了TestManager,这意味着测试人员只需使用VSTS测试工具,就可以完成以前需要使用不同测试工具才能完成的功能。

  VSTS测试工具的优点

  1、大而全:一套VSTS测试工具就包括原本需要使用不同测试工具才能完成的所有功能。包括单元测试,负载测试,功能测试,测试管理等。

  2、与开发工具无缝集成。

  3、与.Net开发平台完全兼容。

  4、无需学习新的脚本语言,可以直接用VB,C#编写测试脚本。

  VSTS测试工具的不足(目前已发现的)

  1、对JavaScript编写的程序支持不佳,这意味着在ExtJS框架下编写的某些程序将无法进行完整的测试。

  2、将VSTS作为测试工具的用户不多(尤其是国内)。这意味着相关技术资料会比较少。

  3、Test Manger需要安装TFS后才能使用。但Test Manager非必用件,可以不装。

  接下来,我们一起看一下VSTS测试工具的各种应用。

  A、Unit Test:

  在开发工具中选中要测试的函数,过程或功能,单击鼠标右键选择“Create Unit Test”。系统将自动生成一个单元测试框架。手工修改参数的初始值,修改Expected(期望结果),设置Assert(断言,用于比较期望结果与实际结果)。这样就完成了一个单元测试的脚本。

  执行测试脚本,测试工具将自动运行被测试的函数,过程或功能,并自动给相关参数赋值,并根据预先设置的断言,判断程序是否通过测试。 (请参考视频Unit Test.wmv)

  VSTS的单元测试功能是目前dot Net平台上最好的单元测试工具。在这种直接面向源代码的白盒测试工具中,其他产品很难达到原厂商所能达到的高度。

  这里顺带提一下Nunit,在VSTS2005推出之前,这是dot Net平台上最好的单元测试工具。而当微软开始在开发工具中集成单元测试功能后,Nunit实际上已经没有太多的使用价值了。

  B、Database Unit Test:

  此功能仅VSTS2010版本支持。可用于对任何类型的数据库对象进行测试。不同的数据库对象适用于不同的测试条件。

  C、Web Test:

  Web Test属于功能测试,采用录制回放的方式来模拟用户的实际操作。当用户点击浏览器中的对象时,测试工具会用VB或C#生成一个测试脚本,这个脚本记录了用户的操作过程。然后测试工具就可以回放刚才的操作过程。用户也可以手工生成或编辑这个脚本。用户还可以在测试脚本中对输入参数或输出结果增加校验条件,以检验程序是否实现预期功能。(请参考视频Web Test.wmv)

  附带说明:目前最流行的Web测试软件是Mercury出品的QTP。

  D、Coded UI Test

  此功能仅VSTS2010版本支持。

  Coded UI Test属于功能测试,同样采用录制回放的方式来模拟用户的实际操作。与Web Test的差别在于:1)Coded UI Test支持C/S和B/S两种模式的应用程序,而Web Test仅支持B/S模式;2)Coded UI Test是通过记录鼠标,键盘在屏幕上的运动轨迹来录制用户的操作过程,而Web Test不记录运动轨迹。

  附带说明:QTP也可以支持C/S模式的应用程序,但需要额外购买插件。E、Load Test

  Load Test属于负载测试,当被测系统运行时,脚本生成器会自动获取客户端和服务器的通讯信息并转换成测试工具能够识别的脚本(可以直接使用Web Test生成的脚本),测试控制台将模拟多用户同时执行这个脚本对服务器进行并发访问。同时,控制台还可以通过被测服务器上开启的远程RPC服务,获取相关的资源使用信息(CPU,内存,带宽),最后可以收集测试数据。

  负载测试是自动化测试工具最有价值的部分,传统的手工测试很难达到和工具同样的效果。以下用更多的篇幅来介绍一下负载测试的流程和要点。

  负载测试的原则:

  1、脚本越小越好,尽量做到一个功能对应一个脚本,这样能够获得更精确的测试数据。

  2、只选择所需要的操作进行录制,例如查询操作过程中,选择查询条件的页面可以不录制。

  负载测试的操作步骤:

  1、确定被测系统与客户端通信时使用的协议类型,例如B/S模式适用的Http协议。

  2、创建测试脚本,通过测试工具的脚本录制工具将客户端和服务器的交互信息自动转换为所需的脚本代码,也可以自行编辑脚本以满足实际需要。

  3、将测试数据参数化,可以通过绑定存储大量测试数据的数据表,以数据驱动的模式来提供测试数据,从而更好地模拟真实应用场景。

  4、设定虚拟用户数量上下限,可以设置为波动的数量以模拟真实应用场景。

  5、执行测试,测试工具会自动记录测试结果,包括事务处理的响应时间,服务器的资源占用情况等。

  6、分析结果,通过收集的数据从客户端,服务器,网络三方面来分析应用程序的性能,从而定位系统存在的主要问题,为系统改进做准备。

  (请参考视频Load Test.wmv)

  附带说明:目前最流行的Web测试软件是Mercury出品的Load Runner。

  F、Ordered Test

  可以按照指定的顺序组合运行已经创建的一系列测试。

  G、Generic Test

  不使用以上测试框架模板,自行手工编辑测试方案。

  H、Test Manager

  Test Manager是一个测试管理工具,用于管理测试需求,测试计划,测试用例,测试实施,测试结果。此组件仅VSTS2010版本支持,且额外需要Team Foundation Server的支持。

  随着测试需求越来越多,测试用例数量越来越大,一个好的测试管理工具必不可少。

  附带说明:测试管理工具需要与测试工具相配套,才能完全执行所有的管理功能。这意味着Test Manager是VSTS测试管理工具的最佳选择。而对应QTP和Load Runner的测试管理工具则是Mercury自行出品的Test Director。

  对VSTS测试工具的介绍告一段落,以下是几点参考建议:

  1、VSTS测试功能是随开发工具免费附带的额外功能,就如同Windows操作系统自带的画图,录音机,媒体播放器等程序一样,可以完成一些基本的应用,但不应抱着过高的期望。(否则其他专业测试软件还卖得动吗?)另请注意某些功能仅VSTS2010才提供支持。

  2、如果团队要实施单元测试,那么VSTS单元测试功能是最佳选择。此功能随每一版本的开发工具同步升级,无论兼容性和易用性都是最好的。Coded UI Test功能也值得尝试,而Web Test和Load Test功能则较为一般。

  3、VSTS Test Suite开发团队本身的建议是:如果你使用dot Net作为开发工具,又没有测试工具的预算,那么在这种情况下建议使用VSTS Test。

  4、VSTS Test包括了所有测试功能,因此可以先试用VSTS Test的相关功能,然后再决定是否有必要使用更专业的商用测试软件。

362°/3625 人阅读/0 条评论 发表评论

登录 后发表评论