回归测试

  测试用例自动执行对回归测试很有帮助,但是对其他活动支持有限。为了更好地测试,测试者需要放宽测试自动化的视野,在测试全程合理地利用计算机的强大能力。

  如果自动化能促成测试使命的完成,利用自动化。评估利用自动化是否成功的标准,是看它多大程度上帮助测试人员完成自己的使命。(摘自《软件测试经验与教训》第5章"测试自动化")

  在探索式测试中,探索式测试自动化(exploratory test automation)是帮助测试人员完成探索式测试使命的开发与测试活动。Doug和Cem认为:

  探索式测试自动化是计算机辅助测试,它支持学习被测试软件质量的新信息。

  Exploratory test automation is computer-assisted testing that supports learning of new information about the quality of the software under test.

  分析他们的描述,可知探索式测试自动化的要点。

  探索式测试自动化强调计算机辅助(computer-assisted),而不是自动化测试(automated testing)。它的目标是人尽其才(自由发挥测试者的智能),物尽其用(充分利用计算机的性能)。

  探索式测试自动化的一个重要目标是学习。我在"探索式测试:探索是为了学习"中提到,软件测试是一个持续学习并实践的过程,而探索式测试支持更有效的学习和实践。测试自动化也应该坚持这一方向。

  学习的目的是获得新知。测试专家Rex Black 在《Pragmatic Software Testing》提到了一条测试设计原则,很有启发性:"你应该设计测试用例以便你能从每个测试用例中学习到一些你还不知道的东西。当你从测试中学到了什么时,你应该感到高兴".

  下图是一个探索式测试自动化的实例。它是我开发的测试工具,以图形化的方式来展示指定时间段中所有任务(Job)的耗时:横轴是时间轴,每一个矩形对应一个任务,矩形越宽说明任务耗时越长,相同颜色的矩形对应同一种任务。

  通过该工具,我可以立即理解被测试系统在产品环境或测试环境的工作负载。在特定时间窗口中,执行了哪些任务,哪些任务耗时长,哪些任务数目多,哪类任务在并发执行,哪类任务在串行执行,哪些时段系统繁忙,哪些时段系统空闲--这些信息界皆一目了然。虽然该工具不执行任何测试,但是它可以帮助我分析被测试系统,发掘可能的性能风险,为测试策略选择提供信息。