您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

农行金融小店 DevOps 高效自动化测试实践

发表于:2020-07-26 作者:常会鑫 来源:高效运维

一、背景

随着移动应用快速和多样化的发展,人们对数字通信方式越发熟悉、依赖,数据正在主导新的营销策略,移动营销以其对即时需求的迅速了解、形式多样等优势逐步取代了传统营销。

我行的移动营销平台金融小店是通过为客户经理的主管客户定制专属的金融小店,上架并发布产品,由客户经理“带着”小店直接上门营销,业务的独特性及抢占市场份额的重要性,对项目组快速的需求响应和及时交付能力提出了较高要求。

实践情况

为提高响应速度及交付能力,项目组采用 DevOps(开发DEV、测试QA、运维OPS)模式对产品的研发过程进行统一管理。DevOps 作为一套完整的操作实践,能够使产品实现快速、可靠且安全的迭代。

项目团队作为业务、开发测试和运维职能一体化的整体,以产品交付为共同目标紧密协作,共同承担全生命周期的产品责任。现就 DevOps 实践过程中测试工作进行简要阐述。

1.测试管理

(1)测试分层策略贯穿整个 DevOps 流程,伴随在需求下达后的项目各阶段中。

①第一阶段是开发阶段,开发人员将代码开发完成后,通过Maven构建,依次进行单元测试(Junit)、代码合规检查(JTest)以及代码安全检查(Checkmarx)。如单元测试成功率未达100%、合规检查和安全检查未达标,则单元测试不通过,流水线终止,并将结果反馈给开发人员。

②第二阶段是功能测试阶段,程序成功部署到测试环境后会依次触发接口自动化、界面自动化、手工测试、非功能测试(性能测试、技术安全测试等)。

③第三阶段是对准生产环境的测试,主要是对系统最核心接口进行测试,起到验证性的作用。

合理的测试分层策略是保证测试质量的关键。由于UI自动化测试存在执行速度慢、维护成本高的缺点,通过测试分层将测试的重点向单元测试、接口测试转移,可以充分利用自动化测试的优点。传统项目流程中,测试工作大多在开发人员完成集成测试将程序部署到测试环境后开始进行的。Devops的实践过程中,我们将接口自动化测试案例的设计提前到开发完成该接口的时间,实现了测试左移。

自动化测试在 DevOps 测试过程中占核心地位。随着持续集成、部署质量和效率的不断提高,持续测试的开展越发重要,对于测试环境部署、测试数据管理、测试结果的查询等任务重复性高且需人工干预的工作,都要求通过实现自动化来提高效率及准确性。项目团队使用我行自主研发的自动化测试平台ATP(Automation Testing Platform),在ATP平台中实现自动化案例设计、执行、分析,同时在ATP数据资源池为自动化案例提供可靠、独立的测试数据。

度量方式

在 DevOps 的实践过程中,度量数据非常重要,它体现了项目从需求下达到投产运维全流程的健康程度。测试方面主要有测试用例执行率、测试用例执行通过率、平均测试用例缺陷发现数、测试自动化率、业务可用性用例自动化执行成功率、自动化测试用例失效误报率、自动化测试投入分布、ATP自动化测试效率、系统测试严重缺陷占比、系统测试缺陷修复率10个度量数据。

每个指标均通过量化分析对测试能力或质量等进行度量评估,如自动化用例失效误报率可以自动分析出误报原因,如网络不稳定、服务器宕机、测试数据失效、测试脚本执行失败等,将误报原因反馈给测试人员后,经过案例处理、精准定位和分析,完善测试环境和测试数据的稳定性,从而降低系统误报率。

应用效果

面对各类新技术、新架构、新开发模式大规模的研究和应用,测试工作长期面临着更高的质量要求和更短的时间挑战。移动营销项目组在采用 DevOps 流程后,通过项目团队的高效协作,实现了两周一迭代的产品研发效率,能更为及时地响应需求,实现产品快速发布;自动化的流程避免了人为失误的同时让缺陷更早地被发现和解决,保障了产品质量及可靠性;持续集成、持续交付打通产品全生命周期,实现资源利用最大化。

未来展望

在互联网高速发展的时代,面对更短的交付周期,更快的部署频率,测试人员必须转变思维,顺应时代的发展。在 DevOps 的实践过程中,存在机遇与挑战,接下来还有很多工作需要我们继续努力:一是继续完善自动化测试的场景,尽可能的使用自动化全面覆盖测试,减少人工干预;二是在ATP自动化测试平台接入性能测试的功能,将性能测试也纳入流水线中,实现性能自动化测试。