写点什么

质量保证的推荐实践

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

    阅读完需:约 7 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关注

评论

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

安畅迁移平台的云原生之路

雪雷

Kubernetes DevOps 云原生 CI/CD 迁移

央行数字货币:第三方支付产业新变量

CECBC

数字货币 DCEP 区块链技术

小师妹学JVM之:JIT中的PrintAssembly

程序那些事

JVM 小师妹 性能调优 JIT 签约计划第二季

Linux系统查询端口命令

打鱼小王子

《架构师训练营》第四周总结

CECBC带你一图看懂区块链

CECBC

CECBC 区块链技术 去中心化

架构师训练营作业 -Week4

wyzwlj

极客大学架构师训练营

ARTS-WEEK5

一周思进

ARTS 打卡计划

架构师训练营第四周学习总结

CATTY

系统架构感想

朱月俊

快来解锁Pepper机器人新技能,够酷Pepper就跟你回家!

阿甜

编程 开发者 App 开发 机器人

关于编码的一点“思考”

damnever

思考 抽象 分层架构 编码 Go 语言

原来使用Postman如此简单,API测试之Postman使用全指南

软测小生

接口 Postman 接口测试 API API测试

消息队列(三)如何保证消息不被重复消费?

奈何花开

Java MQ 消息队列

SQL运行内幕:从执行原理看调优的本质

帅旋

MySQL 数据库

MyBatis标签trim,你不会以为我是去空格的吧?

Java小咖秀

Java 面试 mybatis

围绕 Office 365 的那些 CLI

手艺人杨柳

Office 365

学习总结 - 第 4 周

饶军

重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

小傅哥

Java 设计模式 小傅哥 重构 备忘录模式

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?

朱月俊

架构师训练营 - 第四周命题作业

牛牛

极客大学架构师训练营 作业

第四周作业

技术小生

极客大学架构师训练营

区块链冷链食品追溯系统

CECBC

区块链技术 上链 溯源 浙冷链

《架构师训练营》第四周命题作业

谈反应式编程在服务端中的应用,数据库操作优化,提速 Upsert

newbe36524

C# MySQL 数据库 mongodb Reactive

GO语言泛型编程实践

老胡爱分享

泛型 Go 语言

架构师训练营 - 学习笔记 - 第四周

心在飞

极客大学架构师训练营

自由职业的前半年,我是如何度过的?

王磊

Java 程序员

一文带你学会 Blob(含 7 个使用场景)

Geek_z9ygea

Java 大前端 Web Blob

互联网系统常见问题以及解决方案

而立

极客大学架构师训练营

python中对字典与列表组合进行排序

开心太平洋

Python List 排序

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