所谓的测试效率就是测试产出和测试时间之比,假设测试产出是一个定值,那要提高测试效率,就是要缩短测试时间。那要怎么才能减少测试时间呢?
1、不要做无效的测试
一般项目前期bug都是较多的而且极为不稳定的,如果有多个较严重的bug,可以拒绝继续测试。一方面继续测试也没有意义,因为阻塞测试地方会有很多,也无法测试全:另一方面即便继续测试出很多bug,也可能由于那些bug引起的,倒不如等这些修复之后再继续测试。
这样对于前期来说可以节约不少测试时间,把做无效测试的时间留出来想想如何优化测试顺序。
2、不要做重复的测试
要做到这点的前提是要对整个项目的架构,相互的之间的联系等等要十分了解,这样可以避免很多看似不同的测试点,但实际只是一个测试点,仅仅是外面包装的不同而已。
于是当这一个测试点有bug,那些其他看似不同的测试点其实也不用测试了,肯定也是有问题的,那提bug的时候可以列出核心问题所在,并将其他涉及的点列出来,等验证的时候再把那些点都在验证一遍。这样等于少做了很多测试,只是在验证的同时把测试再覆盖全。
3、不同测试版本的测试侧重点
对于测试来说肯定需要测试很多轮,每一个测试版本作为一个测试轮,但是不是需要每个版本都做完整的测试呢?答案肯定是否定的,不然测试岂不是要累死?
那应该怎么取舍和分配呢?这里提供一下思路:
第一轮:只测试大致功能,不需要细测,列出主要bug。
第二轮:验证第一轮bug,然后全面细测,列出所有能发现的bug。
第三轮——第x轮:验证上一轮的bug。
最后一轮:验证全部bug,并全面细测。
有人要问怎么才能判断是不是最后一轮?很简单,当所有发现的bug均关闭状态,这个时候就可以作为最后一轮来判断,而这一轮也是最重要的一轮,因为涉及到上线所以需要验证前x轮的所有bug,以避免bug修复完被bug再次覆盖的情况。
如果按照以上的思路,其实只是第二轮和最后一轮需要全面测试,这样对于测试轮数多的情况下又能节约很多测试时间。
4、优化测试顺序
以上3个都是基于bug多的情况下(而这是常态,没bug反而不是常态了),如果项目质量就是那么好,bug很少,那上面3个其实也省不了多少时间。所以最最关键的其实还是在于测试本身,如何通过优化测试顺序,来节约自己的测试时间呢?这里有一套反常规的理论,就是先测试异常情况,而不是先测试正常情况。
举个例子:
就拿注册功能来说,一般会分为3个步骤,注册,验证,登录,一般正常情况都是先测试正常注册,正常验证,正常登录,然后测试异常注册,异常验证,异常登录。但这样有一个缺点,会有重复无用的操作:
当完成正常测试后再测试异常之前,需要从登录状态退出,然后再点击注册入口进行注册。
当测试异常验证的时候,需要再次测试正常注册,不然就进入不了验证的步骤。
当测试异常登录的时候,又需要再次测试正常验证,不然就进入不了登录的步骤。就这3点也许大家觉得最多浪费几十秒的时间,但如果注册信息要填很多呢,如果验证邮件或者短信要延迟很久才收到呢,这样就是浪费了几分钟吧。如果有其中有bug,那可能要测试多次来定位问题,那就可能浪费了10分钟,而这仅仅是一个并不复杂的测试,如果涉及到更复杂的关联,可能会浪费更多的时间在于无效和重复的测试中