Web前端测试与集成:Jasmine/Selenium/Protractor/Jenkins的最佳实践
上QQ阅读APP看书,第一时间看更新

1.3 传统手工测试的局限性

软件测试是在规定的条件下对程序进行操作,以发现程序中的错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试的目的是希望以最小的代价尽可能多地找出软件中潜在的错误和缺陷。

首先,测试人员会针对开发人员开发的功能写出测试用例,例如表单应该填入的数据,页面单击顺序,以及最后页面期待的显示效果。然后,测试人员会按照用例一步步进行手工检验,如果发现页面行为异常,例如无法打开页面或生成的数据不正确,则会在企业缺陷管理系统中提交缺陷记录,供开发人员进行修正。在开发过程中,如果有新版本编译出来,测试人员需要根据测试用例重新测试,确认是否有新缺陷,或者老缺陷是否已经得到了修正。

长久以来,这种传统的手工测试模式在各大公司广泛应用,并已被证明其能够行之有效地保证产品质量。但伴随着互联网技术的发展,这种传统的测试模式已经显示出越来越多的瓶颈。

1.重复性工作,测试质量低

现在的互联网产品开发讲究的是短平快,小步快走,短则两三天,长则一个星期就会发布新版本。在这短短的时间里,测试人员需要把新版本部署到测试环境,更新数据库,然后对所有测试用例进行手工验证。这个过程时间紧迫,工作量大,而且具有很高的机械性和重复性。当测试人员长期工作在重复性的验证事务上时,往往会因为思维惯性而忽略新出现的问题,最后导致不仅测试人员自身缺乏工作热情,而且测试质量更难以保证。

2.测试效率低

手工测试天生就决定了它的执行效率很低。测试人员需要根据测试用例逐行逐句阅读,然后在页面上一步步填写表单,再单击按钮提交。这是一个非常烦琐的过程。而遇到复杂的业务流程更是涉及方方面面,作者甚至见过一个多小时都无法完成的测试案例。到了开发后期,可能每天或者每两天就要发布一个版本进行测试。如果一个软件系统的功能点有几千甚至上万个,手工测试将特别耗时和烦琐,不仅消耗了大量的人力,还可能影响到产品的如期发布。

3.无法保证覆盖代码全路径

是否有良好的测试覆盖是考核测试成熟度的重要指标,其核心思想是对相同的业务逻辑提供多组甚至几十组输入,全面覆盖到业务中的绝大多数路径,重点考察软件的边界行为。比如某个页面输入框的字符个数在开发中被限制为256个字符,但测试人员很可能漏掉这样的极端输入情况。由于手工测试效率很低,不要说进行几十组数据的测试,就是几组可能都难以实施。另外,有些软件缺陷需要在大量数据或者大量并发用户的情况下才会暴露,很难通过手工测试保证代码的全路径覆盖。

4.无法有效兼顾多浏览器、多平台

Web前端的测试环境复杂,兼容性要求高,特别是要同时兼顾多种操作系统,包括Windows、Mac OS和Linux,以及不同的浏览器,包括IE、Edge、Chrome、Firefox等,如果还考虑各个操作系统和浏览器的不同版本,排列组合之后将会是个通过手工测试无法企及的数字。很难想象有哪个公司能够持续投入巨大的人力成本完成如此庞大的手工测试工程。