一般说来,选择自动化的功能测试工具无外乎要解决以下三个问题:
● 自动化的功能回归测试;
● 大批量数据驱动的软件测试;
● 整个软件测试生命周期的管理。
在选择自动化测试工具解决这些问题的过程中,人们主要关心的问题是使用自动化测试工具创建测试脚本的能力、工具的易用性、测试脚本的编程和扩展能力、测试脚本的参数化技术以及作为软件开发重要环节的测试工作和其它软件生命周期管理工具的集成能力。
三、软件测试工具的局限性
1、软件测试工具不能取代手工测试,手工测试可以比自动测试发现更多的缺陷
不可能也不要期望将所有测试活动或测试进行自动化。有些测试使用手工测试比自动测试要简单,下列情况就不适合自动化测试:
● 测试很少运行。如,一年只运行一次,在这种情况下就不适合自动化。
● 软件不稳定。如,软件版本更新后,由于用户界面和功能变化很大,造成修改相应的自动化测试的开销较大。
● 涉及物理交互的测试。如,在读卡机上划卡、断开某些设备的连接、开/关电源等。
并不是所有手工测试都应该自动化,当测试需要频繁运行时,才需要将测试自动化。当软件不稳定时,手工测试就可以很快地发现缺陷。
实际上,测试过程中80%以上的缺陷是手工测试发现的,仅有不到20% 的缺陷是自动测试发现的,而且这20%的发现要求测试人员合理地运用测试工具。
人工测试比测试工具优越的另一个方面是可以处理意外事件。如,网络连接中断等。
2、测试工具对期望结果的正确性依赖性极大
测试在首次运行时最有可能发现缺陷。如果测试已经运行并通过,再运行相同的测试发现新缺陷的可能性则小得多。除非测试正执行一段已修改过的代码或由于软件其他部分的修改影响到该代码,或者在不同的环境中运行。
但是,测试工具没有发现任何缺陷并不意味该软件没有缺陷。如果测试本身就有缺陷或者期望的输出不正确,则测试工具只能简单地判断实际结果和期望结果之间的区别。因此在自动化测试中,测试的最艰巨任务就变为验证期望输出的正确性。通常测试工具会很快地报告所有测试都通过,但实际上只是实际结果与期望结果相匹配。
3、测试自动化不能提高有效性
软件测试是从大量的测试用例中选择有限的测试用例,发现软件中的大部分缺陷的一种技术。好的测试用例具有4个特性:
① 有效性:检测软件质量的有效性,是否能发现缺陷,或至少可能发现缺陷;
② 可仿效性:同-N试用例是否能同时考察其他测试内容。可仿效的测试用例可以测试很多内容,因而减少测试用例的数量;
③ 经济性:测试用例的执行、分析和调试是否经济;
④ 可修改性:每次软件修改后,相应测试用例维护成本的高低。测试用例的维护成本越低,则可修改性越高,即通过较低的代价就可针对软件的变更实现测试用例的修改。
好的测试用例应该是可仿效的。可仿效的测试用例可以测试多项内容,因而减少了测试用例的数量,进而减少了测试开销。
无论是自动测试还是手工测试都不影响测试的有效性和仿效性。自动测试只对测试的经济性和修改性有影响。自动测试通常要比手工测试经济得多,但在执行第一次自动测试时,由于测试自动化开销较大,因此其经济性和修改性较低。随着自动化测试运行次数的提高,其经济性上的优势就显现出来。
自动化测试并不会比手工运行相同的测试更加有效,但自动化测试可以提高测试的效率。
自动测试的可维护性:当软件修改后,经常需要修改部分或全部测试,以便可以重新运行测试脚本;但是自动测试维护的成本要远远高于手工测试。
4、测试自动化可能会制约软件开发
由于测试工具自身也是软件,因此测试工具与其他软件的互操作性和兼容性,同样是一个值得关注的问题。如果软件在设计和实用时可测试性考虑得不够充分,也会给自动测试带来较大的难度。
5、测试工具本身不具有想象力
测试工具也是软件,只是按照指令执行。测试工具和测试者都可以按指令执行一组测试,但人可以用不同的方式完成相同的任务。