将QA引入软件开发生命周期是工程师要遵循的最佳实践

译文
开发 前端 开发工具
为了满足业务需求,思想前卫的公司会将 QA 嵌入到 SDLC 中。这篇文章将带您了解应在每个开发阶段引入哪些 QA 活动。

作者丨Lena Yakimova

译者 | 朱钢

策划丨孙淑娟

【51CTO.com快译】为了满足业务需求,思想前卫的公司会将 QA 嵌入到 SDLC 中。这篇文章将带您了解应在每个开发阶段引入哪些 QA 活动。

几乎无可争辩的,速度和创新是产品高效交付的支柱,这有助于在当今市场上取得成功。凭借顺利引入新技术并更快地发布实用软件的能力,公司走上了从 COVID-19 大流行及其后果中恢复并调整到"下一个常态"的道路上。

为了自信地做到这一点并保证软件满足计划的业务需求,思想前卫的公司将 QA 引入到了软件开发生命周期(SDLC)中。

QA 是所有流程阶段不可或缺的一部分,它有助于避免在关键缺陷修复、提高软件可信度和安全性以及降低系统突然停机的风险方面产生不可预见的费用。除了改进功能外,QA 还会衡量在当前状态下将功能发布到生产环境中对业务的影响,从而提高客户忠诚度并促进整体销售。

那么,在每个开发阶段应该引入哪些 QA 活动呢?让我们仔细阅读本文中的答案。

SDLC 的 4 个阶段中必备的最佳实践

瀑布式、敏捷式、快速应用开发 (RAD)、螺旋模型... 根据方法和产品的特性,开发过程中不同阶段略有不同。但是,无论你的公司坚持哪种方法,在每个 SDLC 阶段进行测试都变得至关重要。

这是一个真实案例:几年前,三星召回了 250 万部 Note7 智能手机,导致损失数十亿美元。这都是因为软件缺陷——电池管理系统的瓶颈——负责监控和停止充电过程,导致过度充电和爆炸。

不幸的是,这种情况屡见不鲜。因此,为了最大限度地提高开发效率并减少因修复后期发现的缺陷而造成的财务和声誉损失,我建议在每个基本开发阶段考虑必要的 QA 活动。

一、需求收集

如果不了解目标受众、应用解决的问题、性能、安全性、合规性和许多其他标准,就不可能规划开发和测试工作。

考虑到修复缺陷的成本在每个阶段都呈指数级增长,QA 工程师需执行需求测试,以减少从一开始的返工,并发现 IT 解决方案业务逻辑中的错误、歧义或不一致。

在测试需求时,专家确认产品的功能、UI、必要的硬件和软件标准一致、清晰且无错误。这允许进一步创建无故障的测试计划、测试用例、用例、可追溯性矩阵和其他工件。

然而,测试只是成功的一半。测试文档的标志是其动态性质。在没有任何更新的情况下,它逐渐变得毫无价值,这些更新是由不断变化的需求、转移优先级或不断将新代码传送到生产环境造成的。因此,除了测试之外,QA 团队还必须及时更新测试文档,以消除任何流程故障。

二、分析与设计

基于上一阶段的结果,开发团队设计即将推出的应用程序的架构并创建其原型。

为确保产品取得商业上的成功,QA 团队首先进行原型测试,以根据客户反馈及早发现 SDLC 中的问题,并在开发开始之前引入必要的更改。通过专注于识别可能在以后导致系统故障的逻辑缺陷,工程师显著减少了额外软件创建过程所需的时间和财务工作。

特别关注原型的可用性测试。这只是提供引人入胜的设计的第一步,必须考虑一些限制,因为它们可能会影响现阶段的测试结果。例如,构思不佳的颜色阵列可能会在屏幕上缺乏直观的元素,从而使产品使用变得复杂。牢记它们有助于确定所需的测试并更好地掌握结果。

三、软件开发

让我们来看看软件测试活动是如何有助于交付无瑕疵的产品。例如,单元测试单独验证可以在系统中逻辑隔离的每个应用程序组件,以确保其行为符合设计方式。

通过适当的单元测试,开发人员可以自信的实现代码重构,使工作流程更加敏捷,并及早发现软件的问题,确保简化集成和调试过程,并大大降低修复缺陷的成本。

经过测试的单元现在形成了模块,这些模块反过来又创建了一个完整的系统。在单元测试之后,集成验证可帮助软件工程师确保由不同团队编写的这些系统组件之间彼此和谐地融合在一起。

敏捷和 DevOps 生态系统中的单元和集成测试通常可以自动化,以显著缩短测试时间、最大化测试覆盖率、多次重用相同的测试用例并避免人为因素。

当开发人员专注于执行单元和集成测试时,QA 团队会创建测试工具以确保高的软件质量并为发布准备功能。为了取得成功,这里有 10 种测试类型,根据产品细节和业务需求,这些类型可能会派上用场:

1、功能测试

从一开始,功能测试就确保不存在可能阻碍进一步测试的关键问题,并保证最近添加的功能已经完全实现,而不会影响产品的逻辑。

2、性能测试

通过服务器端性能测试,QA 工程师评估系统是否能够承受负载,发现其弱点,并提供详细的改进建议。这有助于降低软件 TCO 并建立有效的性能监控。

客户端性能 QA 会衡量 HTML 页面的加载和呈现时间,并找出影响客户体验(繁重的界面、长的响应时间、较差的整体性能)并阻碍与和品牌进行愉快互动的问题。

3、网络安全测试

基于 OWASP 方法的手动和自动漏洞评估可发现安全漏洞,并确保对用户敏感数据的高度保护。通过将最佳安全措施尽早注入 SDLC,公司可以最大限度地降低恶意入侵者执行攻击的风险并挽救其声誉。

4、自动化测试

由于快速质量是敏捷方法和高效产品交付的基石,因此采用自动化测试是更快地构建、测试和交付高质量软件的方法。

为了实现这些目标,QA 工程师定义了自动化和工具包的范围、实施所需的框架、配置环境、准备测试数据并开发脚本,分析测试结果,同时提供对自动化测试的全面支持和监控。

5、跨浏览器测试

确定应用程序是否可以在不同的浏览器中无缝运行,这有助于提供引人入胜的用户体验并扩大目标受众。为此,QA 工程师分析不同地域的浏览器使用情况统计信息,选择最受欢迎的变体,并执行测试以确保软件操作的一致性。

6、跨平台测试

兼容软件的操作系统越多,公司可以吸引的客户就越多。因此 QA 供应商会执行测试以发现操作系统级性能、UI 不一致和特定于平台的故障,并确保软件在最低系统要求下按设计运行。

7、移动应用测试

根据 Statista 的数据,到 2023 年移动应用程序带来的全球利润将超过 9350 亿美元。随着全球下载量的增加,市场上的激烈竞争迫使公司更多地考虑其质量并引入 QA。为了提高结果的效率和准确性,提供商会在真实设备上进行测试。

8、无障碍测试

正如世卫组织所述,有超过 10 亿人(占世界人口的 15%)患有特定的身体或认知障碍,因此设计适合所有社会群体的软件成为首要目标。通过验证其是否符合 WCAG 2.1 或 AODA 等国际标准,公司可以照顾目标受众并扩大其客户群。

9、本地化测试

在满足特定国家 / 地区的语言、文化和区域要求方面,针对国际市场的软件首当其冲。为了定制产品,使其被目标受众视为符合他们需求的独特解决方案,QA 工程师专注于:


  • 当地法规(例如,遵守数据隐私法)
  • 文化方面(例如,避免冒犯性符号或不适当的颜色)
  • 用户体验(例如,日期、地址和货币的布局)
  • 视觉材料(例如,必须符合文化期望)
  • 脚本(例如,从内容到 UI 的所有方面都按照既定的语言规则显示)

10、可用性测试

通过评估用户适应应用程序设计和执行不同任务的难易程度,QA 工程师可以发现他们在原型设计过程中可能忽略的缺陷,以确保用户使用过程尽可能透明、直观和简单。

四、部署和维护

在期待已久的发布之前,必须进行用户验收测试,以确保软件可以投入生产,满足所有用户需求和业务需求,并且保证遗漏任何缺陷的可能性是最低的。

一旦达到 UAT 推出标准,团队就会发布功能。通常每家公司都会设定自己的指标,例如成功完成测试的数量或已识别的不同严重性问题的百分比。

一旦发布结束,新功能即将推出,这意味着每次将代码更改交付到生产环境时,QA 团队都必须执行回归测试,以确保修改后的软件部分不会影响现有功能。

通过分析潜在的风险区域并执行多轮(最多三轮)回归测试以及中间缺陷验证,QA 工程师可以提高软件质量并稳定改进软件应用程序。

使用 QA 构建可靠的 IT 产品

为了提供吸引目标受众的引人入胜的软件解决方案,公司可以将 QA 注入到整个软件开发生命周期,而不是在开发完成后完成任务,使 QA 工程师超负荷工作。

因此,公司在整个核心 SDLC 阶段坚持的基本质量保证实践应包括:


  • 规划期间的需求测试
  • 设计过程中的原型以及可用性验证
  • 测试文档的创建和全面性测试,以在开发阶段提高产品质量
  • 在部署和发布后的支持阶段进行 UAT 和回归测试

当 QA 应用于复杂环境时,这些工作可以帮助组织降低运营费用,因为它们能够及早发现软件问题,从而将修复成本降至最低并提高开发速度,并且从一开始就进行彻底的测试,因此返工的可能性很小。

译者介绍

朱钢,51CTO社区编辑,2019年CSDN博客专家20强,2020年腾讯云+社区优秀作者,10年一线开发经验,曾参与猎头服务网站架构设计,企业智能客服以及大型电子政务系统开发,主导某大型央企内部防泄密和电子文档安全监控系统的建设,目前在BIM头部企业从事招投标软件开发。

原文链接:https://dzone.com/articles/qa-to-support-software-development-life-cycle-best

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2010-06-24 16:18:13

2022-05-20 10:41:22

SDLC开发模型

2009-08-12 18:39:01

软件开发的生命周期

2010-07-06 15:30:12

RationalJazz

2021-12-14 09:00:00

IT开发运营

2015-06-02 13:31:55

PaaS云应用程序软件开发

2011-11-24 21:25:23

ibmdw

2022-04-25 08:00:00

工具开发技术团队

2022-09-03 08:06:44

测试开发DevOps

2010-07-06 14:31:39

RationalJazz

2023-06-09 19:01:03

软件开发

2013-07-24 10:11:50

软件工程师

2022-04-19 07:20:24

软件开发安全生命周期SSDLC应用安全

2012-07-13 14:09:47

测试工程师软件测试

2023-10-07 00:05:07

2009-05-26 17:38:43

IEEECSDA认证CSDA

2013-07-29 05:11:38

iOS开发iOS开发学习类的'生命周期'

2021-07-20 09:00:00

开发软件债务

2015-07-08 16:28:23

weak生命周期

2013-08-16 09:45:33

点赞
收藏

51CTO技术栈公众号