什么是持续测试?

1、 什么是持续测试?

持续测试是在软件开发生命周期 (SDLC) 的不同阶段整合自动反馈的过程,以支持在管理部署时提高速度和效率。

持续测试是 CI/CD(持续集成/持续交付)流程有效性背后的关键驱动因素,通过提高代码质量、避免代价高昂的瓶颈和加快 DevOps 流程,在加速 SDLC 时间线方面发挥着至关重要的作用。

开发实用的DevOps方法的基本原则之一是弥合快速软件交付和可靠用户体验之间的差距。然而,在每个软件开发阶段(即项目设计、编码、测试、部署和维护)手动获取反馈的传统方式导致组织资源的使用不足和无效,最终导致集成周期延长和产品更新延迟。

持续测试通过帮助 DevOps 团队“左移”来解决这些低效率问题,在 SDLC 的早期为他们提供有价值的反馈,同时自动化手动测试流程并最大限度地减少人为错误。

持续测试的工作原理是使用自动化工具在生产的所有阶段加载预定义的 QA 脚本。这些自动化脚本消除了在运行 QA 测试时定期进行人工干预的需要,并按顺序验证源代码效率,同时确保立即向相应的团队提供任何相关反馈。

如果自动化测试失败,开发团队会在开发的各个阶段收到通知,以便他们可以在源代码影响SDLC不同阶段的其他团队之前对源代码进行必要的调整。如果自动化测试通过检查,项目将自动传递到SDLC的下一阶段,使组织能够创建可持续的交付模型,最大限度地提高生产力并改善部门间协调。

2、 好处

将持续测试纳入 DevOps 流程可为成长型企业带来诸多好处,包括:

更高的效率和更高质量的部署

持续测试提供了一种自动化方法,用于在软件开发生命周期 (SDLC) 的每个阶段管理工作流之间的质量保证和质量互操作。通过将持续反馈循环集成到用户和单元测试模块中,开发人员可以获得所需的可操作见解,以便在部署代码之前提高代码的兼容性和性能。这种效率解决了多个 DevOps 团队成员之间的脱节问题,并支持加速软件交付计划。

分布式项目的快速错误发现和修复

当今的现代开发架构是多方面的和多层的。持续测试通过整合可扩展的自动化测试解决方案来帮助开发团队分解这些复杂性,该解决方案可显著改善错误发现和补救时间表。

改进的用户体验

高级持续测试方法可以模拟各种独特的用例和故障排除场景,并观察用户如何响应它们。从这些模拟中收集的见解使开发人员能够更早地消除用户界面中的低效率,并避免在部署物理产品后出现不必要的意外。

最小化或消除业务中断及其成本

特别是在大型互连系统中,应用程序仅一个模块中的错误就会产生连锁反应,从而导致不必要的停机时间,从而对生产力和底线产生负面影响。

例如,云提供商定期报告一端的故障,使整个区域瘫痪并导致持续数小时的中断。对于依赖高服务可用性的组织来说,这可能尤其具有破坏性。粒度级别的持续测试可识别在大型软件系统中可能不可见的错误,并有助于避免业务中断的成本。

3、 方法

持续测试涉及一系列测试,以确保系统可靠性、安全性、操作性能和可用性。测试类型包括以下内容:

  • 左移测试: 这种方法在软件开发生命周期 (SDLC) 的早期确定软件和系统测试的优先级,以帮助减少或防止将来出现重大调试问题。
  • 右移测试:这种方法优先考虑在SDLC接近尾声时进行测试,重点是改善用户体验、整体性能、容错能力和功能。
  • 冒烟测试:这些测试可以是手动的,也可以是自动的,为软件中的明显缺陷提供了初步的粗略筛选。虽然冒烟测试在结构上没有详细说明,但它们仍然为消除软件中的严重错误提供了快速而廉价的解决方案。
  • 单元测试:这些非常适合跨构建的小规模压力、负载、卷或内存泄漏检查,以识别早期开发阶段的降级。
  • 集成和消息传递测试:当软件模块相互协同工作时,这些测试会检查错误。持续测试可虚拟化缺失的依赖项,因此团队可以测试端到端流程和方案的整体性能。然后,在运行时编译和执行复合代码,以测试它们是否按预期执行。
  • 性能测试:测试应用软件本身的性能可能不会考虑最终生产环境中的硬件和中间件。需要集成系统测试来有效评估解决方案的整体性能。
  • 功能测试: 这种形式的测试检查用户体验是否符合预期,以及功能工作流是否在整个软件系统中根据需要执行。例如,供应链软件应该能够在库存可供运输时提醒卡车到达工厂。(相比之下,非功能测试侧重于性能,可用性,可靠性,响应时间,加载时间,可扩展性等,并衡量软件提供所需客户体验的准备情况。)
  • 回归测试: 此测试检查在任何从属软件中更正错误后,性能、功能或依赖关系是否有任何更改,并且系统是否像以前一样执行。
  • 用户验收测试:也称为应用程序测试或最终用户测试,这是当应用程序由某些目标用户子集在实际情况下进行测试时。Beta 测试是用户验收测试的一个示例。

4、 虚拟化和持续测试

由于以下特征,IT 系统和应用程序运行更大的错误风险:

  • 它们越来越多地与许多新兴技术(例如,云计算,物联网(IoT),软件定义网络,增强现实(AR)集成。
  • 它们越来越多地分布在多个区域,具有无缝互连的核心和边缘。智慧城市、自动驾驶汽车和智慧公用事业的应用是这种架构的受益者。

在这些情况下,持续测试的要求更高,因为开发不会在单个位置或公司中进行。第三方(包括远程团队)可能会提供系统的某些元素。该系统可以与应用程序编程接口(API)集成。每个开发团队在不同的IT环境中运行,包括旧版软件。每个团队的物理环境都不可能重现以进行持续测试。

幸运的是,连续测试可以虚拟化以创建一个测试环境,在该环境中,整个系统可以在单个界面中虚拟地再现。可以轻松地重新配置虚拟化环境,以测试不同的IT系统或已更改以纠正错误的IT系统。

5、 在 DevOps 中的角色

在 DevOps 环境中,持续测试在整个软件开发生命周期 (SDLC) 中自动执行,并与持续集成协同工作,以自动验证集成到应用程序中的任何新代码。

测试工具预加载了测试脚本,每当新代码集成到应用程序中时,这些脚本就会自动执行。通常,测试从集成测试开始,然后自动转到系统测试、回归测试和用户验收测试。

测试从每个应用程序模块生成数据馈送,并对馈送进行分析,以确保受新代码影响的所有模块按预期执行。如果测试失败,代码将返回开发团队进行更正;然后它被重新整合,测试周期重新开始。

一旦所有测试都通过,应用程序或项目就会进入SDLC的下一阶段,通常是持续交付

6、 框架支持

测试集需要一个持续的测试框架,以确保它们在应用程序中的模块、其连接器(或 API 和容器)、平台、其基础结构以及定义其需求的方案之间的一致性。

测试集可以是连续的(例如,回归测试遵循单元测试),也可以是并发的(例如,模块的新迭代伴随着具有相应依赖项测试的测试)。

持续测试框架为测试集提供了一个包装器,以便一致地应用它们并为自动化铺平道路。开发人员希望确保他们对模块采用的方法与应用于相关模块的方法没有不同。当模块发展时,对相互关联的软件进行一系列测试也是如此。

框架提供了一种标准方法来方便地修改脚本和函数以进行测试。当测试中的不一致被消除时,自动化将获得收益,否则它将产生一系列误导性的测试结果。

翻译自: What is Continuous Testing | IBM

本文由软件翻译完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值