2

DevOps冲击下的软件测试

 3 years ago
source link: http://soft.zhiding.cn/software_zone/2021/0105/3131692.shtml
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

DevOps冲击下的软件测试

【原创】   2021-01-08 09:00:00

关键字: 软件测试 DevOps

DevOps如何影响软件测试?其整体功能又该如何发展以适应这种新兴变化?

不同于传统的瀑布式开发,开发人员不再是“流水线上的工人”,DevOps更关注软件开发人员和操作人员之间的有效协作,我们可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集。 

在理想的DevOps周期中,遵循着这样步骤——开发人员编写代码,在QA环境中构建并部署二进制文件,执行测试用例,以稳定的集成流程将成果部署至生产环境当中。很明显,这种方法非常强调构建、部署与测试环节的自动化。使用持续集成(CI)工具,自动化测试工具已经成为DevOps周期中的一种规范性因素。

敏捷测试与DevOps测试之间仍存在着不少细微差异,但熟悉敏捷开发人员一般能够快速适应DevOps。事实上,敏捷原则主要体现在开发及QA迭代当中,但在运营领域则普及度不高。DevOps的核心,正是纠正这一差距。现在,DevOps不再单纯强调持续集成,而更多强调“持续开发”。在流程中,编写出的代码将被提交至版本控制系统,而后在生产环境中进行构建、部署、测试与安装,之后交付最终用户使用。

由于整个环境与流程严格遵循标准化要求,各环节中的每位参与者都将因此受益。链内各项操作都以自动化方式进行,利益相关方能够将精力集中在设计并编码高质量的可交付成果之上,彻底摆脱构建、运营与QA流程带来的负担。从编写代码、到提交代码、再到生产部署以供最终用户使用,整个周期被显著缩短到3到4个小时之内。

DevOps中的QA角色

在传统的软件测试中,QA人员会在指定环境中对已部署的build成果进行功能与回归测试,并投入几天时间持续测试,关注现有成果还有哪些问题。但这一切在DevOps当中都变得完全不同。比如,QA人员需要在DevOps周期内协同工作,保证所有测试用例全面实现自动化,并获得接近100%的代码覆盖率;他们需要保证环境标准化,实现环境与QA框架间的自动对接;所有预测试任务、清理、后测试任务等全部自动执行,与持续集成周期保持统一。

DevOps要求交付链内的各项功能实现高度协同。这也意味着链内各参与者的角色定位有所变化,或者说开始相互融合,这为开发人员赋予了一定的部署权限。部署工程师可以将测试用例添加至QA repo当中,QA工程师则负责提供自动化测试用例。总体而言,链内的每位参与者都将为交付成果的质量与及时性负责。

DevOps与测试自动化

为了实现这种强大的速度与敏捷性,最重要的就是实现测试流程的全面自动化,确保其能够在QA环境中完成部署并自动运行。为此,我们需要构建起专门的自动化测试工具与持续集成工具,建立一套成熟的自动化测试框架,借此快速编写出新的测试用例,具体来看有以下几点。

第一,为特定build挑选合适的测试用例;第二,测试执行在本质上应该遵循精益原则;第三,QA与开发人员需要当面交流,确定特定build中可能产生重要影响的具体因素,同时执行针对性测试与健壮性测试;第四,需要配置专门的代码分析与覆盖率工具,确保能够实现接近100%的代码覆盖率;第五,回归测试的结果将很快过时,必须熟悉持续测试这一全新理念;第六,需要明确指定与新功能相关的测试策略,将临时build交付给QA人员,QA人员创建测试脚本并在临时build上运行自动化测试,直到代码稳定性达到要求并足以部署至生产环境中为止;第七,所有测试环境必须实现标准化,且部署流程必须全面自动化;第八,使用多种自动化技术,确保QA人员能够在多种跨平台环境或浏览器内运行自动化测试;第九,并发执行测试以缩短存活时间,这又将反过来促进DevOps的成功实施;第十,为每轮测试运行设置退出标准,确保在将测试结果反馈给流程后,由其做出明确的通过或未通过决策;第十一,在生产环境中部署代码之前,需要报告并修复已发现的问题或严重bug,相关信息通过同一事件链进行传递。

除此以外,应用程序监控的工作也不容忽视。QA人员还应及早发现问题并主动报告,在生产环境上设置监控机制以便在bug引发实际故障之前将其识别出来,还可以设置专门的计数器,如响应时间、内存与CPU利用率等,为最终用户提供全面的洞察能力。举个例子,如果在各个build中,登录的平均响应时间逐渐增加,则后续build很可能因为响应时间过长而影响到最终用户的实际使用体验。

同样的,QA人员还可以在生产环境中定期执行部分现有高优先级测试用例,借此主动监控运行环境。此项策略可以捕捉到“偶发性”或者“无法重现”的bug,最终提升应用程序稳定性、增强最终用户满意度。最终,这些监控结果都能够以丰富的报告形式,如包括故障日志与屏幕截图等自动收集并发布。

结语

瀑布式流程让位于V-Model,V-Model又被敏捷化取代。软件开发理念就是这样一代代快速更迭。毫无疑问,DevOps代表着未来。这样一种持续改进周期,将让软件开发流程获得全面的动态特性。我们有必要接纳DevOps、理解DevOps并最终贯彻DevOps。以往的测试概念仍然有效,将这些宝贵的经验与自动化、特别是更高水平的自动化相结合,正是实现DevOps成功的核心前提。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK