上下文驱动测试(Context-Driven-Testing)

简介: 上下文驱动测试(Context-Driven-Testing)

640.png

前几天在和邰晓梅老师交流的时候,她提到了基于上下文驱动的测试理论,就去查找了一些相关的资料,发现有很多和自己的想法是相同的,不知道大家是否听说过这个理论呢?如果你听说过,可以直接跳过去,从第3点开始看。


01


什么是基于上下文驱动的测试(context-driven-testing)?它不是一种具体的测试方法,而是一类测试思维的体现,通常是指测试人员首先查看特定迭代的细节(产品特性、业务需求、相关干系人等)来选择他们的测试目标、技术和可交付成果(包括测试文档)。归根结底,上下文驱动的测试是要尽我们所能做到最好。我们不尝试应用“最佳实践”,而是接受非常不同的实践(甚至常见测试术语的不同定义)将在不同情况下发挥最佳效果。


02


Cem Kaner (《软件测试,经验与教训》的作者,建议有机会可以看看这本书,很有意思的) 基于自己的经验,针对上下文驱动的测试理念给出了7个原则:

       

       1. The value of any practice depends on its context.                2. There are good practices in context, but there are         no best practices.                3. People, working together, are the most important part of        any projects context.                4. Projects unfold over time in ways that are often         not predictable.                5. The product is a solution. If the problem isnt solved,        the product doesnt work.                6. Good software testing is a challenging intellectual process.                7. Only through judgment and skill, exercised cooperatively        throughout the entire project, are we able to do the right things         at the right times to effectively test our products.

相对比较好理解,就不做翻译啦,它倡导的是结合团队具体的信息与干系人关注的重点,不盲目引入“最佳”实践,而是关注项目的特定因素,给出当下最好的解决方案。不强制要求测试活动一定要遵循固定的流程或者公式。就个人而言,笔者还是很喜欢这个概念,因为测试实践经常被认为是僵化的和可模仿的。有人做了并且成功了,所以我也要做。在测试活动中,创造性思维、分析问题的能力和决策制定的变化空间还是很大的,需要我们去做更多的尝试。


03


面对不同的团队能力和业务形态,我们的测试策略需要做出动态调整。笔者最近在带制造域的产品测试,会明显地感觉到它与互联网的玩法是不一样的。 在一般情况下,对于跨系统的端到端接口,比较好的实践方式是引入接口自动化,根据业务场景准备好测试脚本和数据,然后定期去执行,验证接口的正确性。看起来好像很美好。但实际的情况是,制造行业的接口本身就相对稳定和标准,难点在于验证数据的有效性和业务逻辑的正确性。它不同于互联网项目,制造域里很多业务行为很难通过系统来判断。比如,在一堆的原材料中,系统其实是很难判断哪些材料是给空调的,哪些材料是给冰箱的,只能靠人为判断(当然,你也可以在系统中去维护这类数据,但是成本太高,光原材料,可能就可上千种,而且是动态变化的)。所以,单纯的接口测试很难在这样的团队中去落地,实际的业务价值也很有限。所以,我们的做法是让不同的业务人员经常跑跑,即可以熟悉系统,也可以验证接口,比写脚本要来得实际些。 另一个场景:有经验的测试同学肯定知道,在测试活动中,SIT验证优先于UAT验证,一定是在SIT环境中进行了充分的验证后,才能上UAT环境,让用户进行验证。哪能把问题留给用户呢。但是在制造域中,更提倡的反而是尽早地进行UAT验证,尽早让真实的一线业务人员卷进来参与验证。坐在办公室里的产品是很难理解在一线的工人是如何操作系统的,并不是他们不专业,或者没有充分的调研,而是不同工种所带来的天然视角上的不同。所以,这个时候,业务人员需要尽早地介入,从业务的角度去提出改进意见,更加有利于产品的上线和价值实现。而不是测试人员对着产品需求进行专业的测试,因为测试是测不出什么太大的问题,系统实现本身没有问题,但它就是与一线员工的操作习惯不符。你觉得哪个测试的价值更大?


04


Change Is The Only Constant ,永恒不变的,只有变化。最好不要试图改变的需求不断变化、测试计划永远无法完成的事实。把你的时间花在设计和执行测试上,而不要花在不断地更新测试计划上。这其实是很符合敏捷的思维。敏捷其实也是一种状态,一种心态。Being Agile远大于 Doing Agile。

 

当然,这并不是说那些标准和流程不重要。不论是各类技术能力上的最佳实践,还是行业标准的认证成熟度,都有助于行业整体的规范化发展。但是具体的不同的行业,不同的团队,我们需要根据实际情况及业务特点,做出取舍,甚至创造出适合特定环境的测试方案和能力,因地制宜,因时制宜。


测试人,也需要有想象空间。


往期推荐:

在职场上拥有选择的权力

测试用例设计的故事

测试报告别踩坑

一个有趣的BUG

敏捷测试系列文章合集

相关文章
|
13天前
|
机器学习/深度学习 数据采集 人工智能
探索AI驱动的自动化测试新纪元###
本文旨在探讨人工智能如何革新软件测试领域,通过AI技术提升测试效率、精准度和覆盖范围。在智能算法的支持下,自动化测试不再局限于简单的脚本回放,而是能够模拟复杂场景、预测潜在缺陷,并实现自我学习与优化。我们正步入一个测试更加主动、灵活且高效的新时代,本文将深入剖析这一变革的核心驱动力及其对未来软件开发的影响。 ###
|
22天前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件自动化测试的未来:AI驱动的测试策略
【7月更文挑战第47天】 随着人工智能(AI)技术不断进步,其在软件测试领域的应用也日益广泛。本文将探讨如何整合AI技术与现有的自动化测试流程,提出一个面向未来的测试策略。文章重点分析了AI在测试用例生成、执行、结果分析和持续集成中的作用,同时预测了这种技术融合对测试工程师角色的影响,以及它如何提高软件测试的效率和准确性。
|
3月前
|
Java 测试技术
单元测试问题之想通过单元测试来驱动代码的设计与重构,如何实现
单元测试问题之想通过单元测试来驱动代码的设计与重构,如何实现
|
5月前
|
Web App开发 IDE Java
自动化测试谷歌浏览器和其驱动版本差不多却还是报错The chromedriver version (121.0.6167.184) detected in PATH at DPythonchromed
自动化测试谷歌浏览器和其驱动版本差不多却还是报错The chromedriver version (121.0.6167.184) detected in PATH at DPythonchromed
132 2
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的新篇章:AI驱动的测试自动化
【7月更文挑战第10天】随着人工智能技术的蓬勃发展,软件测试领域迎来了革命性的变革。本文将深入探讨AI技术如何重塑软件测试流程,提升测试效率和准确性。从AI在测试用例生成、缺陷预测、测试执行以及结果分析的应用出发,我们将揭示AI技术如何使测试更加智能化、精准化,并展望AI在软件测试领域的未来发展趋势。
47 0
|
5月前
|
机器学习/深度学习 人工智能 算法
探索软件测试的新时代:AI驱动的自动化
【6月更文挑战第4天】随着人工智能技术的不断进步,软件测试领域正经历着一场革命。本文将探讨AI如何改变传统的软件测试方法,提高测试效率和准确性,以及这一趋势对测试工程师未来技能要求的影响。
52 6
|
5月前
|
机器学习/深度学习 人工智能 安全
探索软件测试的新时代:AI驱动的测试自动化
本文深入探讨了人工智能(AI)如何革新软件测试领域,特别是测试自动化。随着AI技术的不断进步,它为测试自动化带来了前所未有的效率和准确性,从而极大地提高了软件开发的速度和质量。本文将详细介绍AI在软件测试中的应用,以及它如何帮助测试人员克服传统测试方法的局限性。
|
6月前
|
人工智能 自然语言处理 安全
构建未来:AI驱动的自适应网络安全防御系统提升软件测试效率:自动化与持续集成的实践之路
【5月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和企业持续运营的关键。传统的安全防御手段,如防火墙和入侵检测系统,面对日益复杂的网络攻击已显得力不从心。本文提出了一种基于人工智能(AI)技术的自适应网络安全防御系统,该系统能够实时分析网络流量,自动识别潜在威胁,并动态调整防御策略以应对未知攻击。通过深度学习算法和自然语言处理技术的结合,系统不仅能够提高检测速度和准确性,还能自主学习和适应新型攻击模式,从而显著提升网络安全防御的效率和智能化水平。 【5月更文挑战第30天】 在快速迭代的软件开发周期中,传统的手动测试方法已不再适应现代高效交付的要求。本文探讨了如