持续性测试是在软件开发生命周期不同阶段纳入反馈过程,主要用途是提高管理部署和效率。持续测试CI/CD流程取得成效的关键因素,通过提高代码质量、避免成本高和加快DevOps流程,在加快SDLC时间表中发挥关键作用。
持续测试也是开发实用的DevOps的原则之一。持续测试可以带来更高效率和高质量部署;可以更快速发现分布式项目的错误和及时修复;改善用户体验;减少业务中断的可能性降低与开发相关成本。如云服务器供应商经常出现一个端点故障,导致整个地区瘫痪,造成数小时中断,这对于依赖高服务的可用性组织而言,极具破坏性。精细化的持续测试可以识别软件系统中不可预见的错误能帮助避免业务中断情况发生。
持续测试包含左移测试、右移测试、冒烟测试、单元测试、集成和消息传递测试、性能测试、功能测试、回归测试、用户接受测试等内容。而随着信息技术系统和应用程序的不断发展,可能会出现更多风险。如信息技术系统和应用程序会与越来越多新技术集成,如云计算、物联网、软件定义网络、AR等、信息技术系统和应用程序越来越分散,可能分布多个区域,具有无缝互连的核心和边缘,智能汽车、自动驾驶汽车和智能公用事业应用程序等。
这些情况推动了持续测试的需求,开发不再是单个地点或者公司内进行,还需要第三方(远程团队)协作。系统可与应用程序编程接口API集成,每个开发团队在不同IT环境中运行,每个团队的实际环境都不可能重现,不能完成持续测试。
因此持续测试虚拟化出现了。可以创建一个测试环境,在单个界面虚拟复制整个系统,轻松重新配置虚拟化环境,可测试不同IT系统或为纠正错误而更改的系统。
测试集需一个持续测试框架,保证在每个应用程序中的模块、连接器(或API和容器)、平台、基础架构及定义其需求的场景保持一致。测试集可以是连续的(例如,单元测试后进行回归测试),也可以是并发的(例如,一个模块的新迭代伴随着一个测试和针对其依赖关系的相应测试)。
持续测试框架通过为测试集提供统一的包装器,确保了测试的一致性,并使其适用于自动化。开发者需要保证对不同模块的测试方法保持一致,以便于模块间的协调和演进。随着模块的发展,相关的测试也需要相应地更新。框架提供了标准化的方式来简化脚本和功能的修改。消除测试中的不一致性对于提高自动化的效率至关重要,否则会导致错误的测试结果。