构建与崩塌之软件测试七大原则在研发流程实践中的思考

举报
一剑战八荒 发表于 2025/08/03 21:41:41 2025/08/03
【摘要】 测试人员不能只关注业务和技术层面,因为测试技术和缺陷发掘,只是测试的手段,而不是测试的目的。

软件测试七大原则

3.1      测试要展现缺陷,而不是证明软件没有问题 Testing shows presence of defects

测试的过程要尽可能的揭露更多的缺陷,而不是证明软件是ok的。这其实是一个心理学问题,因为人更倾向于事情朝着自己预期的方向发展。因此,当你抱着验证软件没有问题的心态去测试时,就容易把一些问题遗漏掉。


3.2      不可能执行穷尽测试 Exhaustive testing is impossible

很多情况下测试的组合是大量或者无穷的,所以要结合需求和实际资源,去设计最小用例覆盖需求,也就是我们通常说的进度把控。每个发布版本是有明确的发布时间路标的。因此我们需要在有限的时间内,基于版本发布的质量目标,通过覆盖完备的测试设计和合理的人员分工,让产品的质量满足目标。

3.3      测试活动应该尽早开始 Testing early

测试要从需求分析和特性设计阶段开始介入,而不是等待开发转测后再开始。在软件研发的流程中,问题发现的越早,解决的成本越低,对于版本发布的风险越小。因此,一定要把测试活动尽量往前排,例如能够帮助广覆盖且低人力投入的自动化测试用例,可以提前开发调试。尽可能早的暴露对版本发布有影响的问题。

3.4      缺陷存在群集效应(二八定律) Defect clustering

即80%的功能问题存在于20%的模块。尤其需要注意的是复杂度与设计耦合性高的模块。‌高复杂度模块(如核心算法、多接口交互组件)逻辑复杂性强,开发过程中更易引入隐蔽错误;同时模块间紧密耦合会导致局部缺陷扩散到依赖模块,形成缺陷密集区。例如ROACH工具中的细粒度备份和容灾,通常缺陷密度显著高于集群级备份和容灾功能模块。因为细粒度的备份,在获取对象定义及数据,以及保证数据一致性上需要更加复杂的机制实现。且细粒度备份对每一种数据库对象都需要单独分析处理,极容易受对象存储机制变更的影响。


3.5      杀虫剂悖论 Pesticide Paradox

随着问题的修复,同样的测试用例能够发现问题的能力会逐渐降低,就像虫子逐渐会对同一种杀虫剂产生免疫。因此,在实际测试活动中,尤其是集成测试和专项测试这种每日看护的自动化用例,相关测试责任人要时刻保持危机感。长时间没有变化的自动化看护,往往意味的对问题的持续漏测。所以,每个版本一定要根据新需求和现网问题RCA以及业界测试技术的发展,不断改进补充自动化用例和自动化的运行方式,才能持续挖掘产品的问题。


3.6      测试活动依赖测试内容 Testing is context dependent

简单地说,测试要在熟悉业务的基础上进行。因此,对于测试产品的了解程度越深入,我们在做测试设计时,才能更全面,更精准。除了测试技术的迭代,对于业务知识,尤其是数据库这种高度复杂的系统。一定要由点及面,由浅入深,建立自己系统化,结构化的业务知识体系。

3.7      没有错误的谬论 Absence of error - fallacy

无论执行多少用例,多长时间的测试,都不存在没有bug的软件。而我们测试的目的也不是让软件没有bug,而是在满足版本质量需求的情况下,修复不能接受的bug。所以大家经常被问到的这些问题,例如,版本发布前哪些问题单必解。哪些问题单可以遗留,版本受限发布。是否需要提供客户可接受的临时方案或者在未来哪个补丁彻底解决,等等都是围绕版本的质量目标来做决策的。


总结:

测试人员不能只关注业务和技术层面,因为测试技术和缺陷发掘,只是测试的手段,而不是测试的目的。在商业化的软件研发流程中,只有最终对用户有价值的产品,才是我们的目标产品!!!如果用业界另一种对测试人员的称呼“QA“——Quality Assurance,即质量保证。大家更容易明白,一切的测试活动,都是围绕基于测试活动产生的数据(测试用例覆盖,缺陷分布和解决情况),得出产品当前的质量状态(能力,规格约束),对比预期的质量目标(软件能力上的需求和隐形的用户需求如上线时间等),做出最终的版本决策(批量商用,受限商用,POC,延迟发布)。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。