自动化测试在DevOps体系中的应用初探
2017-12-27肖婵婵
肖婵婵
自动化测试在DevOps体系中的应用初探
肖婵婵
(中国移动(深圳)有限公司,广东 深圳 518048)
为了实现DevOps流水中持续集成测试的实现,通过分析在线计费的业务场景,研究并采用基于Robot Framework测试框架,在该框架下实现了自动化测试在DevOps体系中的成功实践应用,覆盖实时交易接口、清结算接口、WEB UI页面三个方面的自动化测试,从测试方法、测试应用、实践效果等多个方面探索和验证了该实践的可行性及优势。
DevOps 自动化测试 Robot Framework WEB UI
1 引言
随着软件迭代发布的频率越来越高,传统的瀑布型模式已经不能满足快速交付的需求。2009年左右DevOps应运而生,DevOps(Development和Operations的组合)是软件开发和交付的过程,强调产品管理、软件开发和专业运营人员之间的沟通与协作。通过自动化和监控软件开发、测试,部署基础架构变更的过程,建立一种快速、频繁且可靠地开发、测试、发布软件的文化和环境。简单地说,就是打破开发、测试、运维之间的壁垒,实现开发运维的一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。通过编排DevOps工具链过程,打造标准化、可重复和高度自动化流水目标。但是一味追求开发、部署、升级、扩展、维护、测试、监测、安全和策略管理等全面的自动化可能导致自动化泛滥。自动化部署Chef或Puppet脚本库的无序增长、自动化测试脚本随着项目增多呈现急剧膨胀、IT资源浪费等都是自动化泛滥导致的恶果,可通过集中审查和调整进行管控以规避此类问题。在这个过程中,自动化测试作为测试部分,是实现DevOps的重要一环。自动化测试主要用于持续的自动化回归测试,是稳定、快速交付版本质量的重要保障。DevOps体系流程如图1所示:
图1 DevOps体系流程
目前,自动化测试在DevOps中的实践应用一直是探究热点,是促进DevOps落地的重要抓手。在DevOps中持续测试(CT)是对持续集成(CI)进行及时验证的手段,是实现有效的持续交付(CD)的必备环节。自动化测试能够保证开发的代码质量尽快得到反馈,尽早发现代码中潜在的问题并及时进行修复,并且尽可能避免人为失误且保证整个DevOps流程的高效、可重复。自动化测试的应用类型包括WEB UI自动化测试、接口自动化测试、移动端自动化测试、云平台自动化测试等,针对不同的应用类型,采取不同的测试策略和方法。
本文在分析和探讨已存在的自动化测试工具基础上,通过应用分析和实践探索,结合业务应用场景,实现了将测试框架Robot Framework成功应用于符合业务特点的实时消息接口、清结算接口、WEB UI页面自动化测试。首先通过自动化测试工具分析与选项,选定了采用的测试框架。其次,针对业务自身特点,给出了采用Robot Framework测试框架实现自动化测试的详细过程。然后,从实时交易接口、清结算接口、WEB UI页面自动化测试以及与DevOps体系流程的集成四个方面进行了分析。最后,对基于Robot Framework测试框架的自动化测试实践应用效果进行了分析,从经济效益、降低风险和品牌效应三个方面验证了基于Robot Framework测试框架的自动化测试方法的有效性和优越性。
2 自动化测试设计
2.1 工具分析与选型
通过头脑风暴搜索业内主流的自动化测试工具Java+Selenium、QTP、Robot Framework,从易用性、经济成本、可扩展性、适用性、报表出具多个维度进行分析比对(如表1所示),并进行了实际试用,最终选定Robot Framework测试框架作为自动化测试开展的工具,并攻克难点完成框架的搭建,完成雏形的验证。
从表1的分析比对可以看出,Robot Framework测试框架具有易于使用、开源和扩展性良好、适用性全面、报表详细等优势,能够切合自动化测试对工具的需求。鉴于此,选定Robot Framework测试框架作为最终的选择。
表1 业内主流自动化测试工具比对
2.2 自动化测试实践流程
整个自动化测试实现过程包括前期的环境准备、需求分析、测试框架规划与搭建、案例脚本编写、测试执行、执行结果通报及脚本维护共计7项关键活动,具体如图2所示:
图2 自动化测试实践流程
(1)环境准备
在开展自动化测试之前,环境准备是不可或缺的前提条件,包括自动化测试开发的环境和被测系统的测试环境。针对自动化测试开发环境,主要是环境机器资源的申请、对环境的配置,使其符合开发要求。针对被测系统的测试环境,直接借用验收测试的测试环境,主要是访问网络策略的开通申请与验证。
(2)需求分析
对于各个业务的自动化测试需求,根据业务内容和场景、提供的测试案例进行需求分析,完成自动化测试功能点的提取分析,输出测试框架的规划,为后续框架搭建和关键字的开发做铺垫。
(3)测试框架搭建
根据需求分析阶段提取的自动化测试功能点提取分析结果,完成符合业务场景要求的功能关键字的开发,完成自动化测试框架的搭建。
(4)案例脚本编写
在搭建的测试框架下,依据测试案例的场景和测试步骤,组装各个功能关键字,实现符合业务场景的正常和异常场景的测试案例脚本编写和调试,完成各个测试案例的开发。
(5)自动化测试执行
将完成开发的自动化测试案例交付给验收测试人员进行回归测试执行,支持全量回归和增量回归。
(6)执行结果通报
验收测试人员完成每轮回归测试之后,通报回归测试结果(包括测试报告和测试日志)给相关干系人,失败问题提交问题单给自动化测试人员进行协助定位与解决。
(7)脚本维护
自动化脚本完成开发后需进行持续维护,主要体现在需求变更和脚本优化。对于需求变更的情况,需要针对发布的变更信息及时完成脚本的变更。对于脚本优化,主要是脚本性能、健壮性、异常情况的优化。
2.3 应用场景选择分析
在线计费项目作为提升全网计费类业务支撑水平及能力的重点建设项目,被纳入DevOps体系建设中作为试点DevOps项目,以促进DevOps框架体系落地,确保DevOps体系的建设质量。在DevOps框架体系流程的测试环节中,在线计费涉及的测试模块包括实时交易消息接口、清结算文件类接口、管控台。应用的业务类型包括:
(1)实时交易消息接口:实时扣费、实时扣费撤销、用户投诉退费、交易状态查询、签到签退共计5个接口。
(2)清结算文件类接口:包括对账、核减、日结算和月结算共计4个接口。
(3)WEB UI页面管控台:业务展示、业务控制、报表出具共计3个模块。
对于以上测试场景的选择,主要从自动化测试的必要性、DevOps体系应用、可扩展性进行分析:
伏立康唑是一种对念珠菌属、曲霉菌属以及其它丝状真菌表现出优异的体内外抗菌活性的三唑类抗真菌药物[1]。作为其口服制剂,伏立康唑片因高效低毒的优点备受临床青睐,广泛用于治疗敏感菌所致的感染以及免疫功能低下患者中进行性的、可能威胁生命的感染[2]。某院肾脏科患者因大多长期应用糖皮质激素和免疫抑制剂而普遍使用伏立康唑片,但目前并无该药在肾脏病患者中使用的相关“指南”。故笔者对该院肾脏科一时间段使用伏立康唑片的出院病历进行处方点评,旨在提高该药物应用的合理性。
(1)自动化测试必要性分析
整个项目的测试接口共计9个,测试案例多达371个,平均每个案例的字段检测点222.5个,数据库表字段检测点90.5个,每个迭代版本的回归测试工作量繁重,对人力和时间成本提出了更高的要求。
(2)DevOps体系应用分析
DevOps项目实现频繁且可靠地进行交付,自动化测试是确保无差错发布的关键因素。特别是在有限的人力成本下短时间内完成持续的全量回归测试,手工测试已无法满足DevOps体系的要求。测试高度的自动化能够让回归测试变得轻松,快速响应版本交付质量。
(3)全网可拓展性分析
作为某运营商,全网数据运营系统涉及基于HTTP+XML格式的联机交易、基于新一代DCC协议的实时计费类业务、基于FTP协议传输的文件类业务,在全网应用业务范围广。本文自动化测试实践场景均覆盖到三类业务模块,在全网存在很大的可扩展空间。
随着信息化、互联网、移动化、云计算的不断发展,全网WEB应用平台建设需求越来越多,WEB UI自动化测试需求也相应会不断增加,该自动化测试方法和策略也具备较高的可借鉴性。
2.4 自动化测试应用分析
(1)实时交易接口应用
实时消息接口应用主要是对实时交易类型业务中的消息报文的测试,报文格式包括XML格式和DCC协议的CCR和CCA消息格式。
主要的操作包括各类消息报文的组装和生成,报文的发送,报文内容获取,报文解析,报文字段校验,数据库入库记录的获取与校验,日志内容的获取与校验等。
脚本整体的框架如图3所示:
图3 实时交易自动化测试脚本框架
(2)清结算接口应用
清结算接口应用主要是对话单文件处理进行测试,文件类型包括普通文件、gz压缩格式文件。
主要的操作包括各类测试文件的构造与生成,文件的上传与下载,文件存在性校验,文件内容获取与校验,数据库入库记录获取与校验,日志文件内容获取与校验,服务进程的启停,配置文件修改等。
脚本整体的框架如图4所示:
图4 清结算自动化测试脚本框架
(3)WEB UI页面应用
WEB UI页面应用主要是对在线计费管控台应用的测试,主要是实现对页面各个元素和控件的定位、操作与校验,以判断是否符合预期要求。
脚本整体的框架如图5所示:
图5 管控台自动化测试脚本结构
2.5 集成DevOps流程
将如上所述的自动化测试应用于DevOps流程中,主要通过Robot Framework测试框架与jenkins的集成实现在DevOps体系中的实践应用。
以清结算接口测试的构建进行示例说明,构建结果分别如图6、图7、图8所示。
构建结果报告整体展示了本次测试构建的执行结果,包括构建的总案例数、失败案例数、通过案例数、通过百分比及趋势图。
控制台输出打印了本次构建过程的详细过程日志信息以及每个案例的执行结果。
图6 构建结果报告
图7 控制台输出
图8 Robot Results输出
Robot Results输出信息包括本次构建案例总数、失败案例数、失败案例详细信息、测试成功与失败趋势图、构建执行时间趋势图、所有测试套件执行结果汇总。
3 实践效果分析
通过将基于Robot Framework框架的自动化测试应用于DevOps中,节省了测试人员的人力和时间成本,提升了回归测试效率,能够快速反馈代码问题,促进缺陷的及时修复,保障开发版本质量,促使DevOps的流程更加高效。
自动化测试在DevOps体系的应用实践效果主要体现在经济效益、风险降低和品牌效应三个方面。
(1)经济效益
通过自动化测试,实时交易接口单个案例平均执行耗时由原来的9.5分钟下降为45秒,减少了92%的时间;清结算接口单个案例平均执行耗时由原来的11分钟下降为2分钟,减少了81%的时间。分别如图9和图10所示。
图9 实时交易单个案例平均测试时间比对图
图10 清结算单个案例平均测试时间比对图
图11 是DevOps流程中执行全量测试耗时比对图,可以看出,在DevOps流程中在线计费项目实时交易执行全量233个案例的测试耗时提升效率达12倍,清结算执行全量138个案例的测试耗时提升效率达5.5倍。相应版本质量反馈速度分别提升12倍和5.5倍,助力项目交付频率的提升。
图11 DevOps流程中执行全量测试耗时比对图
(2)风险降低
自动化测试应用于DevOps流程中能够有效降低缺陷遗漏风险,主要体现在其测试的可重复性和质量可见性。
自动化测试能够将测试流程和校验点固化,确保构建测试的可重复,能够有效避免人为出错率。
质量可见性指快速的自动化测试能够及时收集测试过程数据,有利于缺陷的定位与排查,有较充分的数据支持,减少质量假定,增加项目健康状况的可见性。
(3)品牌效应
◆拓展与开发合作更多新项目或者新业务的DevOps流程实践,促进流程的落地。
◆助力验收测试人员多项业务的回归测试。
◆在整个部门内开展多次自动化测试的实践经验分享活动,推广应用范围。
4 结束语
本文在探究基于Robot Framework测试框架的自动化测试基础上,通过分析现有业务场景和自动化测试需求,实现了基于Robot Framework测试框架的消息接口、清结算接口和WEB UI页面自动化测试实践应用,并成功将该实践成果应用于DevOps体系的应用中。通过实践,验证了该实践应用方法的可行性和优势性,并根据实践效果,从经济效益、风险降低和品牌效应三个方面分别进行了总结分析。
本文的不足之处主要是对安全方面的测试有所欠缺,主要包括两方面,首先是对采用的Robot Framework框架和集成工具jenkins缺少充分的安全性扫描和测试;其次本文只涉及集成功能测试,对于该自动化测试的应用涉及的安全问题方面测试(例如网络安全、信息安全测试等)未纳入到持续集成和应用交付过程中,这将作为后续开展研究的目标。
[1] John Fer guson Smart. jenkins权威指南[M]. 北京: 电子工业出版社, 2016.
[2] 齐涛. R obot Framework自动化测试修炼宝典[M]. 北京:电子工业出版社, 2015.
[3] 亨布尔,法利. 持续交付:发布可靠软件的系统方法[M]. 北京: 人民邮电出版社, 2011.
[4] 侯勇,张海林. 自动化测试中的关键字驱动脚本技术[J].电子科技, 2006(2): 51-54.
[5] 接卉,兰雨晴,骆沛. 一种关键字驱动的自动化测试框架[J]. 计算机应用研究, 2009,26(3): 927-929.
[6] 冯玉才,唐艳,周淳. 关键字驱动自动化测试的原理和实现[J]. 计算机应用, 2004,24(8): 140-142.
[7] 朱菊,王志坚,杨雪. 基于数据驱动的软件自动化测试框架[J]. 计算机技术与发展, 2006,16(5): 68-70.
[8] 张少博,罗省贤. 自动化测试脚本运行控制方法研究[J].电子测试, 2008(6): 19-23.
[9] 冯振华,高菊,曾红卫. Web应用自动化测试的研究[J]. 计算机工程与设计, 2010,31(1): 175-178.
[10] 刘晓丹,武君胜,刘博. 基于数据驱动的自动化测试平台设计[J]. 科学技术与工程, 2008,8(3): 779-782.★
The Application of Automated Testing in the DevOps System
XIAO Chanchan
(China Mobile (Shenzhen) Limited, Shenzhen 518048, China)
In order to realize the continuous integration testing in the pipeline of DevOps, the business scenario of the online billing was analyzed and the testing framework of Robot Framework was adopted based on which the practical application of the automated testing in the DevOps system was successfully implemented. The real-time transaction interface, clear settlement interface and WEB UI page were covered. From aspects of testing methods, testing applications and practice effect, the feasibility and advantage of the practice were explored and validated.
DevOps automated testing Robot Framework WEB UI
10.3969/j.issn.1006-1010.2017.22.015
TP311
A
1006-1010(2017)22-0077-07
肖婵婵. 自动化测试在DevOps体系中的应用初探[J]. 移动通信, 2017,41(22): 77-83.
2017-09-10
刘妙 liumiao@mbcom.cn
肖婵婵:软件测试工程师,硕士毕业于南京邮电大学,现任职于中国移动(深圳)有限公司,主要从事功能自动化测试的相关工作,主要研究方向为自动化测试在DevOps体系中的应用。