之前翻译过一篇关于情景测试的文章link,因为现在我所在的项目的测试到了胶着阶段,因此又提及情景测试。所谓胶着,自是因为项目开发到了相对稳定阶段,测试也用很多种方式进了了几次了,如回归测试、全覆盖测试等等,现在进入了效果不明显的阶段。因为开发人员还在修bug,所以测试人员自是不能掉以轻心。但是,这个时候,测试人员效率不高,回归测试的具体执行不一定完全。那么,怎么调动测试人员的积极性,继续测试,又怎么能提高大家的测试效率,而不是一轮轮拿着测试用例浪费时间?
我想很多优秀的全局的测试方法可以在这个阶段使用。情景测试自是一个。每每谈及情景测试,就会觉得兴趣盎然,因为这个时候你可以跳出来,看看产品整体,完全从一个使用者的角度去看去想。虽然,测试人员时时都应该抱有全局观,但是在做任务的时候难免顾此失彼。想来,情景测试也可以在项目收尾的时候,让我们从整体上有个把握。
下面是我2008年5月曾第一次在组里推广的情景测试方法。情景的定义不是件容易的事情,如果定义的好,会达到很好的测试效果。不但可以找到一些遗漏的功能缺陷,也可提出些可用性方面的改善。以下提到的也许在现实角度不能完全实现,但是多数是可以受益的。这些方法理论是从很多英文资料翻译来的。原本把原文也贴了上来的,但是日志字数过多,被阻止发布。如果有人想要看英文资料,请留言,我会把它整理发到你的邮箱里。
理想的情景测试方法应该具备的一些特征
1)测试是基于一个用户如何使用程序的场景,其中包括使用人员是如何被鼓励参与到程序的使用当中的。
2)场景是具有激发性的。利益相关者可能会给开发人员压力去改变程序。但这些改变恰恰会使测试失败。
3)场景是可信的。它不仅仅可能发生在现实世界里,它还要使利益相关者相信像这样的事情会发生。
4)场景包含了程序的复杂使用或者一个复杂的环境或者一个负责的数据集。
5)测试结果容易被评估。这点是对所有的测试都意义重大,但是它对情景测试尤为重要,因为情景测试用例相对复杂。
为什么使用情景测试?
1)学习产品
2)把测试联系到归档的需求中来
3)为了实现想要的好处,使不足暴露出来
4)从专家的角度,探索使用程序
5)使一个缺陷报告更有说服力
6)把一些需求的问题提到表面,这些问题可能引发一些对曾经讨论过的需求的重新讨论(用新的数据)或者还没有被认同的未浮出水面的需求。
情景定义
设计情景测试像是需求分析,但又不是需求分析。他们依赖于相似的信息但是用法却大不相同。
1)需求分析人员试图促成关于要创建的系统的协定。测试人员是开拓一些不同意见去预见系统可能遇到的问题。
2)测试人员并不需要一定得到结论或者制定关于产品应该如何工作的建议。他的任务是曝露出一些可信的担心给产品利益相关人。
3)测试人员不必要做出产品设计的折中方案。他陈述这些折中方案的推论,尤其是那些意料之外或是相对期望的结果更严重的推论。
4)测试人员不必要尊重之前所达成的一致。(当心:坚持强调错误问题的测试人员将失去可信度)
5)情景测试的工作不需要穷尽,只是有用。