熟悉软件测试理论的都知道,在软件测试领域有软件测试七大原则(可参见ISTQB测试基础大纲)
- 测试显示缺陷的存在,但不能证明系统不存在缺陷
- 穷尽测试是不可能的,应设定及时终止的条件
- 测试应该尽早进行
- 缺陷具备群集特性
- 测试的杀虫剂悖论
- 测试活动依赖于测试背景
- 测试存在二八原则(原第七原则是无错谬论,较有争议)
但这七条原则已经提出近二十年了,随着现代软件研发思想和流程的发展变化,原有的一些经验和原则可能发生变化。Alan Page和Brent Jensen提出了现代软件测试的新七大原则,Melissa Eaden则对此做了进一步的阐释。本文在此转译,供同业参考
现代测试目标声明
加速可交付质量的达成(Accelerate the Achievement of Shippable Quality)
现代测试原则是从敏捷测试自然发展而来,通过这七项原则,测试人员将从传统的质量负责人向质量大使身份转换(提升交付质量、提供价值并传播质量文化)
1. 以推进业务为先
在敏捷团队中,测试人员常被视作成本中心。但优秀的测试意识
对产品特性来说是产生价值而不是产生成本。现代测试者对团队来说是价值提供者。价值更多是指能带来商业价值或者守护产品底线。现代测试者总是能从客户角度思考产品并以数据驱动行为。他们热衷提升效率并期望加速产品的发布并尽快为客户提供价值。
2. 为团队提速,通过精益思想和约束理论等模型来帮助识别、优化以及从系统中移除瓶颈。
测试人员将较少执行测试,而更多地去推进质量。开发人员自身将更多地来执行测试。测试人员会向开发人员传输测试方法和思路以更多地实施好单元测试,模块功能测试。测试人员将更多关注在系统整体集成和其他复杂的测试上。通过结对而非独立工作能让团队在编码阶段就发现更多问题而加快质量信心的建立
3. 是团队持续提升的生力军。更多是帮助团队优化、融合来走向成功,而不是充当安全防护网来捕获错误
通过将基础测试工作过度到由开发人员来执行,测试人员承担教练和引导测试成果的工作,会提升整个团队的质量。测试人员不再被认为是最后的质量防线,而是从产品推出和客户满意上从最开始就发挥作用
4. 深刻关切团队的质量文化,教练并引导团队顺畅地过度到成熟地质量文化团队
对于建立成熟的质量文化来说,打造社区比将测试人员割裂开来工作更加重要。通过合作、创新,社区成员会一起为产品提升进行讨论并建立共同意识。在社区中分享知识、实践,鼓励互助而非遇到问题独自钻牛角尖。
5. 相信只有客户才能够判断或评估产品质量
引入客户意见在现代测试实践中非常之重要。无论是收集客户反馈或是直接、间接地从客户处得到分析数据。这对于任何一个以服务客户,坚守质量原则的团队或公司来说,都是最直接用于判断产品未来是否符合客户预期的途径。
6. 广泛使用各种数据来深入理解客户使用场景并据此来减少产品预设及实际业务表现的差异
现代测试中各类数据是关键。没有数据,就无法估测客户在做什么、关心什么。长期来说,没有人使用的功能或并不想使用的功能提供不了任何价值。获取有效数据非常重要。理解和分析收集到的数据,并平衡收集数据和使用数据的重要性。数据可以创建一个持续的、预测的信息反馈环,从而缩小产品假设和实际业务之间的差距并让团队确定行动方向。
7. 把测试的方法和能力扩展到整个团队,并认同团队会逐渐减少或取消专职的测试专家存在
以后测试人员应该都转做开发么?并不是,把工作聚焦在具体任务上,更多地去利用工具或者学习技能去更好地帮助业务成长而不是转变成开发技能。成长为专业的多面手,引导质量文化,积极学习并拥抱变化
结语以上主要是转述原作者的解读,从我的观感来说,是比较贴合软件研发发展要求的,也是当下软件测试发展的趋势。但是现状和理想的差距还很大,完全按这个思路来推进实际软件测试还比较困难。对于测试这个岗位上的个体来说,可以早些跳出岗位的圈子,更多从测试职能上看测试工作,更多从质量角度发展和产品共同成长的能力而非局限在低价值的功能检测和验证上。
另外关于基础功能测试执行交给开发人员来做是有道理的,开发人员执行测试有其先天优势,首先他熟悉代码,而且如果测试思想尽早输入,在开发层面上就可以避免大量的无谓验证工作。比如:测试人员后期介入,设计的很多异常场景,可能在开发过程中通过一个exception捕获就可以处理,从成本和效果上,前期的测试思想输入比后期再做大量无谓设计、执行更加高效。