写点什么

质量保证的推荐实践

  • 2013-10-16
  • 本文字数:2130 字

    阅读完需:约 7 分钟

质量保证是软件开发过程中必不可少的组成部分,资深工程师 Aya推荐了几种实践方法,认为可以有效地提高质量保证的效果。

Aya 认为在整个软件生命周期自始至终都要考虑软件质量:

对于将软件 QA 浓缩到所有开发任务完成后的测试阶段的方法,它们的问题在于:会给团队带来巨大成本并将整个项目置于高风险之中。在测试阶段,开发人员竭尽全力确保他们的代码具有极少的缺陷。然后测试人员努力揭示软件中每个可能的缺陷,而经理和客户希望他们拥有适合向市场发布的软件。

问题在于:为什么许多软件公司会坚持促使开发团队满足严格的最后期限,完成尽可能多的功能,却毫不关心代码质量有多差,因而忽视了注入代码内的大量缺陷,犯下架构错误,以及忽略文档?

仓促的开发可能会为团队节省片刻的时间,但是,如果有一些重大开发问题没有从一开始就考虑到,最终可能导致需要投入更多的时间。结果是浪费了大量团队资源来修复和重新设计代码,而不是将这些资源投入到更有用的事情上。软件团队人员内心里对整个始末一目了然,但面对着唠叨的客户、严格的销售团队,以及一些自我感觉编写了无缺陷的软件的开发人员,软件团队确实很难将 QA 撇在一边而只顾着完成代码。

对于如何提高质量保证的效果,Aya 推荐了几种实践方法,包括需求审核、代码审核和演练、基于会议的测试、基于风险的测试等。

Aya 认为,浪费资源来交付错误的功能确实很可怕。在开始每个新开发阶段之前审核软件需求,这样做能够最大限度地减少缺陷并满足客户的需求。在实现之前审核需求,这样做有助于考虑潜在的变化,克服在项目的整个寿命中可能发生的误解。团队必须与客户一起反复检查所有应实现的业务领域细节。需求审核也可以使用原型和领域模型来完成。当开发团队在开始实际实现之前完成这个小任务时,他们的项目或开发迭代会获得良好的开局。通过确保在实现之前所有利益相关者都达成共识,并且每位团队成员都意见一致,客户和管理人员可确信开发人员将在开发周期结束时交付正确的成果。

而“代码审核和演练”听起来像很简单,但代码审核是软件开发中最有效的实践之一。它对减少缺陷数量以及增强代码和软件设计的质量具有直接影响。这消除了在未来的版本中执行重大的代码重构和清理的需求。

依据项目需求和实现细节,团队可能认同简单的编码和设计原则。团队成员应共同遵守这些原则,而且只要开发一项新功能,一个或多个团队成员(除了作者)应审核新代码,并搜索所有编码或设计错误。

这种做法可在许多方面为团队带来帮助,包括提高代码质量和设计,最大限度地减少缺陷,并预防它们。另外,它还使得整个团队能够深入了解彼此的工作,轻松移交工作,并提高团队对不同软件组件和功能的认知。团队协作验证和证明代码的质量和设计的实现方法。它们从同事那里获得直接反馈。这么做可谓一举两得:代码质量增加了,团队的认知和项目责任也增加了。

第三个实践是“基于会议的测试”,表示将测试负载分解为会议,每个会议有一个任务(一种希望从测试会议获得的明确规定的结果)。每个会议有一个既定的时间范围(从 20 到 40 分钟),测试人员在执行测试会议期间不应中断。

这就像将测试人员放在一个测试房间一段时间,让测试人员专注于查找特定软件特性或功能的缺陷。在会议期间,测试由一组测试案例引导执行,测试人员也可以执行探索性测试。因此,基于会议的测试是正式测试方法与测试创新的一种组合,因为它提供了测试人员房间来进行探索和获得直觉思维,留出了时间和自由空间来发现不常见的缺陷,或者通过折腾软件来进一步了解它。

会议期间,测试人员应将软件的行为记录在案,获取快照,以及写下软件在特定输入和设置下的行为。会议结束时,将与团队领导或技术经理讨论会议脚本。从他们的讨论中,他们找出所认为的正常行为和不正常行为,然后基于讨论创建缺陷报告。

另一种则是“基于风险的测试”,因为在开发流程中进行了一些更改,开发团队通常拥有同一个软件的许多常用版本。一种重要的 QA 实践是在每个主要版本之后彻底测试软件。另一方面,在每个版本中都对整个软件运行全面的回归测试既耗时又很难实现。但是,仅测试更改的功能或笨拙地删减测试案例套件是不安全的。一段代码可能解决了一个缺陷,但也可能破坏了代码中的其他内容。

基于风险的测试方法采用了折中方式。它的基本理念是按降序对软件功能和失败模式排序,从最重要或风险最高到值得拥有的功能和简单的风险(一个类似工具是 FMEA:失败模式和影响分析)。如果测试人员在严格的时间限制下测试某个新版本时手头有这个列表,他就可以集中精力确保新引入的更改不会破坏其他任何内容。然后就可以轻松地确保更改不会破坏软件中的任何最重要的功能,因而不会发生任何最严重的风险。

在 11 月 1 日开幕的 QCon 全球企业开发大会(上海站),参与者将有机会聆听测试专题“大测大悟”讲师的经验分享:

大测大悟这个专题主要分享通过测试与质量为企业贡献价值的方法与实践。测试的重要性和价值,已经毋庸置疑,然而,怎样才能借助于测试与质量为企业贡献价值呢?敏捷、精益,移动、云计算,方方面面的变化都给测试与质量工作带来了极大的挑战,又该如何直面这些挑战呢?我们计划从不同行业、不同领域邀请实践者和思考者,为大家分享成功案例、需要注意的经验教训以及可改善产出的新奇方法。

2013-10-16 08:522316
用户头像

发布了 501 篇内容, 共 284.2 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

对话阿里云通义灵码技术负责人陈鑫:AI编程的现状与未来

阿里云云效

懒懒笔记 | 课代表带你梳理【RAG 课程 6&7:评测、召回优化与多路检索】

商汤万象开发者

AI LLM rag

雅菲奥朗带您一篇知晓 A2A(Agent2Agent)& A2A vs MCP

雅菲奥朗

A2A Agent2Agent Protocol

西藏具有资质等保测评机构汇总2025

行云管家

网络安全 等保 等保测评

区块链Web3系统的开发

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

对话阿里云通义灵码技术负责人陈鑫:AI编程的现状与未来

阿里巴巴云原生

通义灵码

2025 DataOps发展大会:数造科技再获殊荣,引领数据要素高质量供给

数造万象

人工智能 AI 数据 高质量 Data + AI

AI赋能零售智能配置:精准匹配产品、场景与时机

第七在线

Ascend的aclgraph(十)另外一种成图方式GeConcreteGraph

zjun

PyTorch Ascend aclgraph

什么是网站IPv6支持度?怎么检测?

防火墙后吃泡面

通过利益相关者管理提升财务规划的发展可持续性

智达方通

企业管理 财务管理 财务规划

Ascend的aclgraph(九)e2e执行aclgraph

zjun

PyTorch Ascend aclgraph

仓颉开发语言入门教程:搭建开发环境

幽蓝计划

小红书APP的全新鸿蒙NEXT端性能优化技术实践

JackJiang

网络编程 即时通讯 IM

HyperWorks基础培训教程:批处理网格划分

智造软件

Hypermesh hyperworks CAE仿真

工业全坚固三防笔记本电脑——FZ-40

极客天地

「哔哩哔哩」正式加入 Karmada 用户组!携手社区共建多集群生态

华为云原生团队

云计算 容器 云原生

从零实现模块级代码影响面分析方案|得物技术

得物技术

模块 代码影响范围

CST如何查看阵列天线的副相一致性

思茂信息

cst CST软件 CST Studio Suite

Web3 App开发的技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

【HarmonyOS 开发】虚拟机无法访问本地服务 Couldn‘t connect to server

Geek_4a16a4

鸿蒙 开发工具 HarmonyOS HarmonyOS NEXT 实践分享

用 CodeBuddy Craft 感受真正的 Vibe Coding

不惑

CodeBuddy首席试玩官

用 CodeBuddy 打造一张属于她的 520 刮刮乐,程序员的浪漫可以这么强大!

不惑

CodeBuddy首席试玩官

区块链 Web3 项目的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

AI技术在英语学习中的应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

设备维修,掌握“一巡、二看、三动手”,轻松解决设备故障

积木链小链

数字化 设备管理 生产管理 设备维修

CAD中图纸上测量的尺寸与实际不符是怎么回事?

在路上

cad cad看图 cad软件

确保高质量的音视频通话,如何最大化利用视频带宽

腾讯云音视频

实时音视频

StarRocks+Paimon落地阿里日志采集:万亿级实时数据秒级查询

阿里云大数据AI技术

人工智能 数据分析 StarRocks paimon #大数据

CAD看图王三维功能升级能解决哪些问题?

在路上

cad

Transforms预处理

测试人

人工智能

质量保证的推荐实践_最佳实践_崔康_InfoQ精选文章