探索式的软件测试执行 - 概要描述

课程描述:探索式的软件测试执行

假如你在某失窃现场,你作为刑侦人员,需要调查和研究现场的线索,最终识别犯罪嫌疑人,以及他是如何实施盗窃行为的。你可以采用的策略有如下两个方案:

1.  方案1:按照预先设计的指导文档,根据其中的步骤,以及预期结果分析犯罪现场,希望获得相关的信息,并找到犯罪嫌疑人;

2.  方案2:根据犯罪现场的实际情况,例如:现场留下的痕迹,比如脚印等,推测相关的信息。随着收集信息的增加,以及不断的推理和推断,不断分析其中的信息,逐步找到犯罪嫌疑人;

你会选择方案1还是方案2?对应到我们的测试过程,方案1对应的是脚本化测试,而方案2对应的是探索式测试。作为软件测试人员,我们同样经常面临这样的选择:什么是找出产品缺陷更有效的方式?脚本化测试还是探索式测试?或如何平衡两者以达到最佳的测试效率和有效性?

脚本化测试指的是传统意义上的包含完整测试生命周期的测试过程,它在测试早期通过学习和学习被测对象的各种文档,设计各种测试用例,并确定测试用例的输入和期望结果;然后根据测试用例步骤进行执行,比较测试结果和测试用例中定义的期望结果,以判断测试对象是否满足预先定义的的要求。因此,脚本化测试将更多更高认知水平和大量的工作量放在了测试设计阶段,而不是测试执行阶段。

随着被测对象越来越复杂和庞大,脚本化测试更多的会暴露其不足,单一的脚本化测试很难满足软件产品的质量要求。其面临的问题主要表现在:

1.  软件测试是基于被测对象上下文驱动的,即属于上下文驱动的测试(Context-DrivenTesting),测试会受到各种因素的影响,而穷尽测试是不可能的。脚本化测试将更高认知水平的工作放在测试设计阶段,其输出的测试用例规格说明是相对固定的,很难及时跟踪和更新各种环境因素的变化;

2.  被测对象的问题和缺陷来自各个方面,例如:程序状态、系统状态、系统的输入、配置、系统资源和运行环境等。脚本化测试将更多的关注点放在测试设计上面,而在测试过程的早期,测试人员就将这些不同来源的系统失效全部考虑进去是非常困难的;

3.  测试人员了解测试对象是一个逐渐熟悉的过程,脚本化设计的越早,对其中的风险了解的越少。因此,脚本化测试希望在早期就定义测试用例,考虑很难是全面的。即,你设计了什么,同时你已经遗漏了其他部分;

4.  早期设计测试用例,也存在各种不确定性和风险,例如:需求经常发生变更、不同开发人员会犯不同错误、测试环境和运行环境随着时间而发生变化,而这些都很难在测试早期的测试设计阶段明确定义的。

脚本化测试的早期设计测试用例,再执行测试用例,然后比较测试结果和预先定义的期望结果,以判断被测对象是否满足要求的思路,很难解决上述的问题。因此探索式测试应运而生。探索式测试的基本思路是:随着被测对象的不断进展和深入,测试人员设计和执行的内容应该是不断演化的测试用例,例如:不断设计和执行被测对象中功能和数据的不同输入的组合;不断发现测试对象中新的测试组合,从而拓宽和增加测试的覆盖率(被测对象中功能和输入的各种组合几乎是无穷的,脚本化测试中并不能预先全部定义)。

“探索式的软件测试执行”课程是基于探索式测试的理念,将更高认知水平的工作放在了测试执行阶段,更加强调测试人员的个人主观能动性和职责。在探索式测试过程中,将学习、设计、执行和结果分析作为并行且相互支持的测试活动,即探索式测试的4个测试活动在时间上是并行的并且相互反馈的,这和脚本化测试活动有比较明确的时间顺序存在差别。主要内容包括:

1.  结合案例分析,让测试人员深入了解脚本化测试和探索式测试的特点。掌握两者在过程、技术、工具和思维等方面的不同侧重点,以及探索式测试能够解决脚本化测试中存在的哪些问题;

2.  通过案例分析,让测试人员明白探索式的测试执行的基本过程,测试过程中测试人员需要关注的测度点有哪些,什么时候触发探索式的测试执行,测试执行的工具支持等;

3.  通过案例分析,训练测试人员的发散性测试思维。综合应用启发式的测试思维、问题驱动的测试思维和基于经验的测试思维等方式,为探索式的测试执行提供多种类型的输入和结果评估,构建探索式的测试执行的架构和指南;

4.  通过案例分析,实现探索式测试执行的动态调整和快速响应,并以发散性和批判性的测试思维方式进行需求变更的分析和回归测试的影响分析,实现测试设计与执行的快速迭代和持续探索;

5.  通过案例分析,分享探索式的测试执行中的各种工具支持,以及探索式测试执行的自动化策略。并根据具体的测试场景,优化平衡探索式测试和脚本化测试的优缺点;

“探索式的软件测试执行”课程强调探索式测试理念在测试实践中的落地,为测试人员提供探索式测试的操作思路。通过测试人员的训练,培养测试人员的发散性思维和测试执行中快速迭代的理念,逐步构建适合自身特点的探索式测试架构,实施探索式测试学习、设计、执行、评估和管理等活动所需的理念、技术、方法、工具和实践的支持。不断提升测试人员发现缺陷的有效性和效率,助推软件产品质量的提升和加快软件产品的发布。

猜你喜欢

转载自blog.csdn.net/Wenqiang_Zheng/article/details/25553983
今日推荐