情景驱动的测试方法是Cem Kaner和James Bach提出来的,指出了软件开发的复杂性以及不可预测性,因此在这情景下,测试人员需要积极发挥主观能动性,而不是墨守成规的遵守一些通用的规定和流程。总之,这是一种为以人为本的测试方法论,强调主观能动性,而不是固定的流程和方法。
情景驱动测试(Context-Driven School)的7个基本原则(http://www.context-driven-testing.com/)
1)任何实践的价值都依赖于情景(Context)
2)好的实践只作用在特定的情景下,没有通用的最佳实践
3)在任何项目的环境下,共同协作的人是最重要的部分
4)项目的进展常常是不可预测的
5)软件产品实际上是一个解决方案。如果问题没有被解决,产品也不可能工作
6)好的软件测试是一个非常挑战性,需要智力的过程
7)只有经历过项目整个过程,通过决策力和技能,我们才能在正确的时间做正确的事情来测试我们的产品
举个例子,考虑2个项目
1)个飞行控制软件,“正确行为”意味着高技术含量和数学科学。它必须服从FAA(联邦航空局)的规定。做或者不做任何事情在20年内都可能成为法律诉讼的证据。开发人员共同营造着一种谨慎,精确,可重复性和反复检查每个人工作的工作氛围。
2)另外一个项目是开发一个用于互联网上的字处理软件,“正确的行为”是引导微软Word的大量用户使用这款软件。没有航空法规的约束,但需要考虑软件发布时间:从现在起20个月,项目结束时,它可能成功,可能失败。开发人员不可能依照第一个项目的工作风格,因为这种风格将不利于项目的开展。
情景驱动的测试人员总是尽力选择自己的方式来测试不同软件,而不是总是应用所谓的“最佳实践”,不同的环境下,选择的实践活动总是不一样的。
情景驱动的测试方法与敏捷测试(Agile Testing)对比:
1) 敏捷测试强调单元测试的重要性,情景驱动的测试方法却强调在不同的环境下选择不同测试方法,包括如果开发人员的单元测试用例很多或则很少情况下。
2) 敏捷开发强调迭代的软件开发周期,情景驱动的测试方法却适合不同类型的软件开发周期,当然,它不是很适合瀑布型模式。
情景驱动的测试方法与探索式测试(Exploratory Testing)方法对比:
1)探索式测试来源于手工测试方法,主要强调测试人员学习软件的过程。情景驱动的测试方法覆盖更多的内容。
2) 探索式测试是和脚本化测试(Scripted Testing)相对的,适用于时间紧,少文档的环境下。
我喜欢软件测试,喜欢复杂的软件测试,喜欢主动的进行测试,这正是情景驱动测试方法所适用的。