7.2 关于自动化测试工具
目前,软件测试自动化的研究领域主要集中在软件测试流程的自动化管理以及动态测试的自动化(如单元测试、功能测试以及性能测试方面)。在这两个领域,与手工测试相比,软件测试自动化有以下优势:
(1)自动化测试可以提高软件测试的效率,使软件测试工程师更加专注于新的测试模块的建立和开发,从而提高软件测试覆盖率。
(2)自动化测试更便于软件测试资产的数字化管理,使得软件测试资产在整个软件测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其重要。
(3)软件测试流程自动化管理可以使机构的测试活动更加过程化,这很符合CMMI过程改进的思想。
(4)投资回报率高。根据OppenheimerFunds的调查,在2001年前后的三年中,全球范围由于采用了软件测试自动化手段实现的投资回报率高达1500%。
注:本节论述的自动化测试主要指动态测试的自动化,不考虑软件测试流程的自动化管理。
7.2.1 自动化测试工具本身也是软件,也要重视工具本身的质量
自动化测试工具也是通过编写代码实现的,所以肯定也存在缺陷或不符合软件测试需求的地方。在工作中经常会发生如下情形:当自动化测试工具显示出某个测试用例的测试结果没有通过,然后开发工程师对相应部分的开发代码进行排查,同时测试工程师配合开发工程师也对测试工具相应的测试代码进行排查,最后发现没通过的原因是在测试代码上,而并非在产品代码上,即测试代码本身出现了错误。为了提高测试代码的质量,通常采用以下两种方法:
(1)书写测试代码前,先对相应的测试用例进行严格的评审工作。
(2)当测试代码书写完毕,对测试代码以走读的方式进行严格的检查。
由于测试代码相对于产品代码简单,所以走读检查比较容易实施。虽然对测试用例评审与对测试代码走读都很费时间和精力,但这是控制测试代码质量的最好办法。对测试用例的评审、对测试代码的走读最好由专门的负责人员安排专门的场所(如会议室)进行,如有可能,最好请相关人员,如软件测试工程师、开发工程师、需求人员、市场销售人员参加,以便更有效地达到评审或走读的效果。
7.2.2 自动化测试工具要随用户的需求变化而变化
百度百科中提到,“自动化测试的前提条件之一是软件需求变动不频繁”。但是,现实情况是用户的需求经常变化。而“拥抱变化”是敏捷开发提倡的一个理念,所以,使用自动化工具进行软件测试时,需要注意:当用户的需求发生变更时,开发要及时调整产品代码,与此同时,测试工程师也应该及时对测试代码进行调整。
7.2.3 不是所有的功能都可以作自动化测试
在软件测试界一直以来有一句非常经典的话:“自动化测试永远代替不了手工测试”。
使用自动化测试工具的同行都会感受到自动化测试工具给工作带来的便利,但是并不是所有的功能都可以通过自动化测试方式来实现,如James Whittaker在他的《探索式软件测试》(参见参考文献【4】)一书中提到的超模软件测试(其实就是一种用户体验性测试),由于这种类型的软件测试没有统一的标准,且具有一定的主观性,所以不适合用自动化方式来进行测试。
7.2.4 探索式软件测试也可由自动化测试来实现
“探索式软件测试”是软件测试专家CemKaner博士于1983年提出,由于符合快速提交的理论,且随着近年来敏捷开发的出现,探索式软件测试也被重新提出。但是,许多人可能存在一种误解,认为探索式软件测试只能通过手工测试的方法实现,而不能采用自动化测试。然而,就像James Whittaker在《探索式软件测试》一书中提到的“强迫症软件测试法”,由于这种方法具有典型的机械重复性,所以最好采用自动化工具来实现,这样可以节省很多精力,还可以带来很好的效果。
7.2.5 是否需要采用自动化测试,需要考虑测试的效率
自动化测试虽好,但它也具有一定的局限性。如果采用现有的自动化测试工具,那么学习、熟悉、了解这些自动化测试工具要花费一定的时间和精力。如果自己开发自动化测试工具,开发的过程更要花费相当的时间和人力。所以,对于一些需求还不稳定,需求变化很频繁或者对特定客户订制的一些很容易用手工测试来进行的小的功能,就不需要用自动化测试方式了。
顾翔凡言:
不是好的工作会给你带来好的心情,而是好的心情会给你带来好的工作。