测试管理012:结对测试 - 不错的测试实践
由于项目测试中测试平台资源的不足,因此在测试过程中引入了一些结对测试(Pair Testing)的尝试,通过2个月左右的实践,最终的效果还不错。因此,本文简单来谈谈结对测试的实践。
不管是开发人员还是测试人员,都应该有属于他们角色的创造性。开发人员创造软件产品,而测试人员可以创造性的发现缺陷,每个角色都可以按照自己的方式前行。开发人员可以结对编程,我们测试人员可以进行结对测试。
那么,什么是结对测试呢?不同的人对它的理解会有所不同的。我们定义的结对测试是两个测试人员坐在一起(根据需要,他们可以共用一套环境,也可以用不同的环境平台)。其中,一个测试人员主要负责测试操作,而另一个主要负责记录测试结果、测试场景讨论和问题讨论等。但是需要注意的是,结对测试的两位成员是平等的,在测试过程中他们需要对测试提出自己的想法、思路和问题,避免某位成员只是一个记录员的角色。因此,结对测试中两个人共同努力对整个测试会话作出贡献很重要。
我们在实践结对测试过程中,是以文档化的测试用例为基础,但又不拘泥于测试用例,鼓励在整个过程中运用更多的探索性测试。文档化的测试用例与探索性测试的有效结合,可以更好的满足脚本化的覆盖率要求,同时可以更加主动性创造性的发现更多的缺陷。同时,由于大家工作经验、教育经历、看问题的角度、思维方式的差异等,都会帮助不同测试人员在测试同一个对象的时候,取长补短、优势互补,更好的发现缺陷。下面是结对测试的步骤:
- 选择一个合适的结对测试伙伴;
- 选择和建立合适的结对测试环境;
- 计划测试的时间跨度,定义测试范围、测试关注点、测试目标、测试的输出等,类似于探索性测试中的测试章程;
- 执行结对测试的会话:一人主导,另一个辅助。注意的是测试过程中需要不断进行测试场景、测试问题等的讨论。
- 评估结对测试的结果:评估发现的问题、结对测试的效率和有效性评估、未解决的问题、下次会话的计划等;
通过2个月的结对测试实践,我们发现不仅较好的解决了测试资源不足的问题,同时在其他方面也获得了不少的优点:
- 缺陷交流与共享,在提交缺陷之前得到了其他测试人员的评审;
- 帮助测试人员熟悉更多的业务:知识、技能与经验的共享;
- 更好的培养新人;
- 提高效率和有效性,避免测试疲劳;
- 有利于测试工作量的合理分配;
- 更好的资源共享,减少资源方面的压力和成本;
- 更好的风险应对:有更多的测试人员熟悉更多的测试对象功能;
结对测试过程中需要注意的是:并不要求测试团队内每个人都要参与结对测试,结对测试中自愿原则很重要。另外,在结对测试之前,结对伙伴之间测试范围、测试关注点的定义也很重要,尽量避免在测试过程中思路过于偏离定义的测试内容。
作为例子:我们在进行测试对象的数据备份/恢复功能过程中,通过讨论和实践,不仅得到了更加详细的测试点,它们可以作为将来测试的重要输入与参考。同时,结对测试过程中也发现了一些重要的问题(部分列表):
- 在数据备份过程中,切断被测对象与FTP服务器之间的通信,导致系统一直处于数据备份未完成状态;
- 在数据恢复过程中,切断被测对象与FTP服务器之间的通信,导致系统一直处于数据恢复未完成状态;
- 在数据备份/恢复过程中,测试对象控制模块进行主备倒换,将导致会话无法重新连接到FTP服务器;
- 破坏已经备份的数据结构,并将该数据恢复到被测对象中,导致系统无法运行,也无法切换到原来工作正常的模式;