如何选择测试工具
应用测试工具的目的
应用测试工具的目的很明确,一般而言,在测试过程中应用测试工具主要为了以下几个目的:
1. 提高软件测试效率和质量
2. 减少软件测试的开销,降低了软件开发的成本
3. 减少软件测试过程中的重复劳动
4. 实现软件测试自动化
5. 在软件测试中应用测试工具,可以发现正常测试中很难发现的缺陷(例如软件中的内存方面的
问题)
6. 应用软件测试工具,能较好地模拟软件的运行环境,对软件各方面性能作测试(如模拟生成成千上万的虚拟用户同时对软件作各种操作,以测试软件的性能),而这些人工测试往往难以做到
7. 应用测试管理工具,对测试流程、测试用例、测试人员及软件缺陷等进行有效的、标准化的管
理
测试工具的分类
目前,软件界中的测试工具已经有很多,有针对于软件开发过程中的某个环节,有贯穿整个软件开发过程的,也有成套系列化的。一般而言,我们将软件测试工具分为白盒测试工具、黑盒测试工具、测试管理工具几个大类。
1.白盒测试工具
白盒测试工具一般是针对代码进行测试,对软件的过程性细节做细致的检查, 它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。
(1). 静态测试工具
静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接、生成可执行文件,评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率,并根据某种质量模型评价代码的质量,生成系统的调用关系图等。
静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件、AutomatedQA
公司的AQtime等。
(2). 动态测试工具
动态测试工具与静态测试工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行、需要在相对真实环境下,从多角度观察程序运行时能体现的功能、逻辑、行为、结构等行为,以发现其中的错误现象。在动态测试工具,侧重于对软件功能的测试属于黑盒测试,而对软件内部逻辑结构,测试覆盖率的考虑则属于白盒测试。
动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify系列,
AutomatedQA公司的AQtime等。
5
2.黑盒测试工具
黑盒测试工具适用于黑盒测试的场合,又包括了功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。然而在目前的实际软件测试特别是软件的功能测试中,黑盒工具的应用还比较困难,对于一些行业性较强的软件项目,很难依靠一个测试工具完成测试工作,但当一个软件功能比较有规律或者是在回归测试中,那么测试工具往往比较容易实现自动化测试,同时对于复杂的软件项目可以先设计一系列的方案,再提交工具进行自动化测试。
黑盒测试工具的代表有Mercury Interactive 公司的WinRunner,Rational公司的
TeamTest、Robot,Compuware公司的QACenter,AutomatedQA公司的TestComplete等,另外,专用于性能测试的工具包括有Mercury Interactive公司的LoadRunner,Radview公司的WebLoad、Microsoft公司的WebStress,Compuware公司的QALoad等,AutomatedQA公司的TestComplete也可以进行性能测试。
3.测试管理工具
测试管理工具是一个可以为企业商业系统提供全面的测试功能的综合测试管理解决方案。它会控制你所有的测试工作来确保一个有组织的、规范文档化的和全面的测试。为了适应数以百计的用户,测试管理工具别具特色之处是它有一个中心数据储存库,在这里所有的用户可以共享并存取主要的信息——测试脚本、缺陷及报告书。测试管理工具把测试计划、测试执行和缺陷跟踪三者有机地结合在一起,同时为了更多的灵活性还采用了开放式测试结构(Open Test Architecture ——OTA). 通过测试管理工具使得测试过程更合理、统一,对软件测试过程实施高效的、标准化的管理。
测试管理工具的代表有Mercury Interactive 公司的TestDirect,Rational 公司的Test
Manager、Compureware公司的TrackRecord以及AutomatedQA公司的AQdevTeam等软件。
4.其他测试工具
除了上述的测试工具外,还有一些专用的测试工具,例如,针对数据库测试的TestBytes,对应用性能进行优化的EcoScope等工具。
分析评价测试工具的主要指标
面对如此多的测试工具,分析评价一个测试工具对选择和应用合适的软件测试是一个比较重要的问题,正因如此,我们想在从以下几个方面来分析评价一个测试工具:
1.功能
功能是我们最关注的内容,选择一个测试工具首先就是看它提供的功能。当然,这并不是说测试工具提供的功能越多就越好,在实际的选择过程中,适用才是根本。“钱要花在刀刃上”,为不需要的功能花费金钱并不是明智的行为。事实上,目前市面上同类的软件测试工具之间的基本功能都是大同小异,各种软件提供的功能也大致相同,只不过有不同的侧重点。例如,同为白盒测试工具的Logiscope和PRQA软件,他们提供的基本功能大致相同,只是编码规则的定制、采用的代码质量标准方面有不同。
2.价格
除了功能之外,价格就应该是最重要的因素之一了。在选择应用一个测试工具的时候,除了工 具的功能需要满足选用者的需求外,同时价格也须在其能承受的范围当中。其实,对测试工具 的分析评价主要目的之一就是为选择一个物美价廉、适合自己实际情况的的产品。
6
3.报表功能
测试工具生成的结果最终要由人进行解释,而且,查看最终报告的人员不一定对测试很熟悉,因此,测试工具能否生成结果报表,能够以什么形势提供报表是需要考虑的因素。
4.测试工具的集成能力
测试工具的引入是一个长期的过程,应该是伴随着测试过程改进而进行的一个持续的过程。因此,测试工具的集成能力也是必须考虑的因素,这里的集成包括两个方面的意思,首先,测试工具能否和开发工具进行良好的集成;其次,测试工具能够和其他测试工具进行良好的集成。
5.和操作系统及开发工具的兼容性
测试工具可否跨平台,是否适用于公司目前使用的操作系统平台、开发平台、使用的开发语言和开发工具等,这些问题也是在选择一个测试工具时必须考虑的问题。
6.测试工具的易用性
利用软件测试工具实现自动化测试要求软件测试人员对测试工具有全面深入的了解,只有很好地熟悉并灵活运用测试工具才能真正发挥测试工具的作用,因而测试工具的易用性对于软件测试人员对工具的掌握程度也很关键的。
7.测试工具的侧重点
相当一部分测试工具都有自己侧重点,如工具要求的编码规则、采用的代码质量标准、适用的测试对象、适用测试环境等,因而需要考虑测试工具侧重点是否能满足公司的实际需要。
8.测试工具的售后服务
引进应用软件测试工具是一个长期的过程,当工具引进之后,其开发的公司或单位能否提供良好的技术支持如培训测试人员、提供详尽的使用说明、实例,能否提供持续的升级改进等,是引进工具需要考虑的问题。
9.测试工具引入的目的是测试自动化,引入工具需要考虑工具引入的连续性和一致性
测试工具是测试自动化的一个重要步骤之一,在引入/选择测试工具时,必须考虑测试工具引入的连续性。也就是说,对测试工具的选择必须有一个全盘的考虑,分阶段、逐步的引入测试工具。
测试工具在测试过程中的应用
前面已经对测试工具的分类、测试工具的选择进行了一些描述,这里,我还想就测试工具在测试过程中的应用说一点自己的看法。对测试工具能够发挥的作用大家都已经了解并认可了,但是很多引入测试软件的公司并没有能够让测试软件发挥应有的作用,其主要原因我总结为三个方面:
a) 没有考虑到公司的实际情况,盲目引入测试工具
首先我们要明确一点,并不是每种测试工具都适合公司目前的实际情况。我见过一些公司怀着美好
的愿望花了不小的代价引入测试工具,半年一年以后,测试工具却成了摆设,成了引入者心头的痛。究其原因,就是没有能够考虑公司的现实情况,不切实际地期望测试工具能够改变公司的现状,从而导致了失败。
例如,如果一个公司所开发的软件属于工程性质的软件,在整个开发过程中需求和用户界面变
动较大,这种情况下就不适合引入黑盒测试软件,因为黑盒测试软件的基本原理是录制/回放,对于不停变化的需求和界面,可能修改和录制脚本的工作量还大过测试实施,运用测试工具不但不能减轻工作量,反而加重了测试人员的负担。
7
b) 没有形成一个良好的使用测试工具的环境
换句话说,就是没有能够形成一种机制让测试工具真正能够发挥作用。例如,白盒测试工具的一般
使用场合是在单元测试阶段,而单元测试是由开发人员完成,如果没有流程来规范开发人员的行为,在项目进度压力比较大的情况下,开发人员很可能就会有意识地不使用测试工具,来逃避问题。在这种情况下,就必须形成一种有约束力的机制来强制对测试工具的使用。
将测试工具的使用明确定义进公司的开发流程,我们认为是一种比较好的方式。我们目前的做
法是在开发流程中明确说明,在项目里程碑提交的文档中必须包括测试工具生成的报告,该报告中的数据是决定项目是否合格的依据。例如某公司,在提交集成测试时需要提交DevPartner工具生成的测试覆盖率报告、Logiscope生成的代码质量报告,并且要求单元测试的代码覆盖率必须达到80%以上,代码质量评价必须在Fair以上。
c) 没有进行有效的测试工具的培训
测试工具的使用者必须对测试工具非常了解,在这方面,有效的培训是必不可少的。测试工具的培
训是一个长期的过程,不是通过一两次讲课的形式就能达到良好的效果。而且,在实际的使用测试工具的过程中,测试工具的使用者可能还存在着这样那样的问题,这也需要有专人负责解决,否则的话,对于测试工具使用者的积极性是很大的打击。 8
如何选择测试工具
应用测试工具的目的
应用测试工具的目的很明确,一般而言,在测试过程中应用测试工具主要为了以下几个目的:
1. 提高软件测试效率和质量
2. 减少软件测试的开销,降低了软件开发的成本
3. 减少软件测试过程中的重复劳动
4. 实现软件测试自动化
5. 在软件测试中应用测试工具,可以发现正常测试中很难发现的缺陷(例如软件中的内存方面的
问题)
6. 应用软件测试工具,能较好地模拟软件的运行环境,对软件各方面性能作测试(如模拟生成成千上万的虚拟用户同时对软件作各种操作,以测试软件的性能),而这些人工测试往往难以做到
7. 应用测试管理工具,对测试流程、测试用例、测试人员及软件缺陷等进行有效的、标准化的管
理
测试工具的分类
目前,软件界中的测试工具已经有很多,有针对于软件开发过程中的某个环节,有贯穿整个软件开发过程的,也有成套系列化的。一般而言,我们将软件测试工具分为白盒测试工具、黑盒测试工具、测试管理工具几个大类。
1.白盒测试工具
白盒测试工具一般是针对代码进行测试,对软件的过程性细节做细致的检查, 它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。
(1). 静态测试工具
静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接、生成可执行文件,评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率,并根据某种质量模型评价代码的质量,生成系统的调用关系图等。
静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件、AutomatedQA
公司的AQtime等。
(2). 动态测试工具
动态测试工具与静态测试工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行、需要在相对真实环境下,从多角度观察程序运行时能体现的功能、逻辑、行为、结构等行为,以发现其中的错误现象。在动态测试工具,侧重于对软件功能的测试属于黑盒测试,而对软件内部逻辑结构,测试覆盖率的考虑则属于白盒测试。
动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify系列,
AutomatedQA公司的AQtime等。
5
2.黑盒测试工具
黑盒测试工具适用于黑盒测试的场合,又包括了功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。然而在目前的实际软件测试特别是软件的功能测试中,黑盒工具的应用还比较困难,对于一些行业性较强的软件项目,很难依靠一个测试工具完成测试工作,但当一个软件功能比较有规律或者是在回归测试中,那么测试工具往往比较容易实现自动化测试,同时对于复杂的软件项目可以先设计一系列的方案,再提交工具进行自动化测试。
黑盒测试工具的代表有Mercury Interactive 公司的WinRunner,Rational公司的
TeamTest、Robot,Compuware公司的QACenter,AutomatedQA公司的TestComplete等,另外,专用于性能测试的工具包括有Mercury Interactive公司的LoadRunner,Radview公司的WebLoad、Microsoft公司的WebStress,Compuware公司的QALoad等,AutomatedQA公司的TestComplete也可以进行性能测试。
3.测试管理工具
测试管理工具是一个可以为企业商业系统提供全面的测试功能的综合测试管理解决方案。它会控制你所有的测试工作来确保一个有组织的、规范文档化的和全面的测试。为了适应数以百计的用户,测试管理工具别具特色之处是它有一个中心数据储存库,在这里所有的用户可以共享并存取主要的信息——测试脚本、缺陷及报告书。测试管理工具把测试计划、测试执行和缺陷跟踪三者有机地结合在一起,同时为了更多的灵活性还采用了开放式测试结构(Open Test Architecture ——OTA). 通过测试管理工具使得测试过程更合理、统一,对软件测试过程实施高效的、标准化的管理。
测试管理工具的代表有Mercury Interactive 公司的TestDirect,Rational 公司的Test
Manager、Compureware公司的TrackRecord以及AutomatedQA公司的AQdevTeam等软件。
4.其他测试工具
除了上述的测试工具外,还有一些专用的测试工具,例如,针对数据库测试的TestBytes,对应用性能进行优化的EcoScope等工具。
分析评价测试工具的主要指标
面对如此多的测试工具,分析评价一个测试工具对选择和应用合适的软件测试是一个比较重要的问题,正因如此,我们想在从以下几个方面来分析评价一个测试工具:
1.功能
功能是我们最关注的内容,选择一个测试工具首先就是看它提供的功能。当然,这并不是说测试工具提供的功能越多就越好,在实际的选择过程中,适用才是根本。“钱要花在刀刃上”,为不需要的功能花费金钱并不是明智的行为。事实上,目前市面上同类的软件测试工具之间的基本功能都是大同小异,各种软件提供的功能也大致相同,只不过有不同的侧重点。例如,同为白盒测试工具的Logiscope和PRQA软件,他们提供的基本功能大致相同,只是编码规则的定制、采用的代码质量标准方面有不同。
2.价格
除了功能之外,价格就应该是最重要的因素之一了。在选择应用一个测试工具的时候,除了工 具的功能需要满足选用者的需求外,同时价格也须在其能承受的范围当中。其实,对测试工具 的分析评价主要目的之一就是为选择一个物美价廉、适合自己实际情况的的产品。
6
3.报表功能
测试工具生成的结果最终要由人进行解释,而且,查看最终报告的人员不一定对测试很熟悉,因此,测试工具能否生成结果报表,能够以什么形势提供报表是需要考虑的因素。
4.测试工具的集成能力
测试工具的引入是一个长期的过程,应该是伴随着测试过程改进而进行的一个持续的过程。因此,测试工具的集成能力也是必须考虑的因素,这里的集成包括两个方面的意思,首先,测试工具能否和开发工具进行良好的集成;其次,测试工具能够和其他测试工具进行良好的集成。
5.和操作系统及开发工具的兼容性
测试工具可否跨平台,是否适用于公司目前使用的操作系统平台、开发平台、使用的开发语言和开发工具等,这些问题也是在选择一个测试工具时必须考虑的问题。
6.测试工具的易用性
利用软件测试工具实现自动化测试要求软件测试人员对测试工具有全面深入的了解,只有很好地熟悉并灵活运用测试工具才能真正发挥测试工具的作用,因而测试工具的易用性对于软件测试人员对工具的掌握程度也很关键的。
7.测试工具的侧重点
相当一部分测试工具都有自己侧重点,如工具要求的编码规则、采用的代码质量标准、适用的测试对象、适用测试环境等,因而需要考虑测试工具侧重点是否能满足公司的实际需要。
8.测试工具的售后服务
引进应用软件测试工具是一个长期的过程,当工具引进之后,其开发的公司或单位能否提供良好的技术支持如培训测试人员、提供详尽的使用说明、实例,能否提供持续的升级改进等,是引进工具需要考虑的问题。
9.测试工具引入的目的是测试自动化,引入工具需要考虑工具引入的连续性和一致性
测试工具是测试自动化的一个重要步骤之一,在引入/选择测试工具时,必须考虑测试工具引入的连续性。也就是说,对测试工具的选择必须有一个全盘的考虑,分阶段、逐步的引入测试工具。
测试工具在测试过程中的应用
前面已经对测试工具的分类、测试工具的选择进行了一些描述,这里,我还想就测试工具在测试过程中的应用说一点自己的看法。对测试工具能够发挥的作用大家都已经了解并认可了,但是很多引入测试软件的公司并没有能够让测试软件发挥应有的作用,其主要原因我总结为三个方面:
a) 没有考虑到公司的实际情况,盲目引入测试工具
首先我们要明确一点,并不是每种测试工具都适合公司目前的实际情况。我见过一些公司怀着美好
的愿望花了不小的代价引入测试工具,半年一年以后,测试工具却成了摆设,成了引入者心头的痛。究其原因,就是没有能够考虑公司的现实情况,不切实际地期望测试工具能够改变公司的现状,从而导致了失败。
例如,如果一个公司所开发的软件属于工程性质的软件,在整个开发过程中需求和用户界面变
动较大,这种情况下就不适合引入黑盒测试软件,因为黑盒测试软件的基本原理是录制/回放,对于不停变化的需求和界面,可能修改和录制脚本的工作量还大过测试实施,运用测试工具不但不能减轻工作量,反而加重了测试人员的负担。
7
b) 没有形成一个良好的使用测试工具的环境
换句话说,就是没有能够形成一种机制让测试工具真正能够发挥作用。例如,白盒测试工具的一般
使用场合是在单元测试阶段,而单元测试是由开发人员完成,如果没有流程来规范开发人员的行为,在项目进度压力比较大的情况下,开发人员很可能就会有意识地不使用测试工具,来逃避问题。在这种情况下,就必须形成一种有约束力的机制来强制对测试工具的使用。
将测试工具的使用明确定义进公司的开发流程,我们认为是一种比较好的方式。我们目前的做
法是在开发流程中明确说明,在项目里程碑提交的文档中必须包括测试工具生成的报告,该报告中的数据是决定项目是否合格的依据。例如某公司,在提交集成测试时需要提交DevPartner工具生成的测试覆盖率报告、Logiscope生成的代码质量报告,并且要求单元测试的代码覆盖率必须达到80%以上,代码质量评价必须在Fair以上。
c) 没有进行有效的测试工具的培训
测试工具的使用者必须对测试工具非常了解,在这方面,有效的培训是必不可少的。测试工具的培
训是一个长期的过程,不是通过一两次讲课的形式就能达到良好的效果。而且,在实际的使用测试工具的过程中,测试工具的使用者可能还存在着这样那样的问题,这也需要有专人负责解决,否则的话,对于测试工具使用者的积极性是很大的打击。 8