写点什么

质量保证的推荐实践

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

    阅读完需:约 7 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关注

评论

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

二级域名解析怎么操作?需要注意哪些事项?

国科云

全球社交媒体监控的技术挑战与突破

沃观Wovision

社交媒体 舆情监控 沃观Wovision 舆情监测系统

JimuReport 积木报表 v2.1.2 版本发布,免费开源的可视化报表和大屏

JEECG低代码

数据可视化 报表 数据大屏 报表工具 仪表盘设计

自定义策略检查助力自动化推理技术普及

qife122

AWS IAM 策略验证

塞讯科技参编,信通院《面向LLM应用的可观测性能力要求》正式发布!

塞讯科技

可观测性 可观测性认证 可观测性平台

6 个替代飞书多维表格的开源无代码数据库工具

NocoBase

数据库 开源 零代码 表格 无代码

小模型如何击败大机构AI系统:Coral协议技术解析

qife122

人工智能 开源框架

LevelDB 多版本和压缩

数新网络官方账号

压测实战 | 高校选课系统压力测试实战教程

优测云服务平台

压测 高校

探索Parquet格式:实现高效数据存储与优化查询性能

星环科技

人工智能 技术 数据

区块链U卡APP的开发成本

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

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

腾讯提前批是真难

王中阳Go

程序员 面试

第七在线7大价值 助力品牌实现智能化供应链决策

第七在线

测试匠谈 | AI语音合成之大模型性能优化实践

优测云服务平台

测试 语音ai

龙蜥社区成立智算基础设施联盟 汇聚产业力量打造 AI 开源新基座

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区 龙蜥智算基础设施联盟

【新特性】 华为云ModelArts Versatile-AI原生应用引擎新增特性介绍(2025年7月发布)

华为云开发者联盟

MyEMS 开源能源管理系统:技术创新与实战价值解析

开源能源管理系统

开源 能源管理系统

华大北斗入选深圳品牌发展白皮书 领航者荣膺 "品牌功勋人物"

江湖老铁

CodeBuddy IDE 实用技巧上线,如何让你的 AI 更懂你

六月的雨在InfoQ

CodeBuddy首席试玩官 CodeBuddyIDE AIIDE

热更新技术范式跃迁:AI驱动下从效率工具到智能生态中枢的重构

xuyinyin

业务多变,流程难定?ManageEngine卓豪灵活工作流支持全场景自定义

ServiceDesk_Plus

25年南昌市等保测评机构地址一览表

行云管家

特斯拉、智元机器人、宇树科技三重催化,产业链上市公司齐飞!

机器人头条

科技 大模型 人形机器人 具身智能

京东商品评论API秘籍!轻松获取商品评论数据

tbapi

京东API 京东商品评论API 京东数据采集 京东数据分析

网易灵动如何通过工程机械智能化推动新质生产力发展|《浙里数说》访谈实录

网易伏羲

网易伏羲 网易灵动 工程机械智能化 无人挖掘机 无人装载机

技术赋能下的能源智慧管理:MyEMS 开源系统的架构创新与应用深化

开源能源管理系统

开源 能源管理系统

区块链Web3开发的费用

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

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

2022年最佳云计算认证:开启你的云端开发之路

qife122

云计算 AWS GCP

在线教育行业需要用到堡垒机吗?为什么?

行云管家

网络安全 在线教育 等保

全连接贝叶斯神经网络权重后验集中性研究

qife122

贝叶斯神经网络 后验集中

华为云入选Gartner®容器管理魔力象限领导者

华为云原生团队

云计算 容器 云原生

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