不同于传统的瀑布式开发。开发人员不再是“流水线上的工人”。DevOps更注重软件开发人员和运维人员之间的有效协作。我们可以把DevOps看作是开发、技术运维和质量保证(QA)的交集。在理想的DevOps周期中,遵循以下步骤-开发人员编写代码,在QA环境中构建和部署二进制文件,执行测试用例,并在稳定的集成过程中将结果部署到生产环境。显然,这种方法非常重视构建、部署和测试自动化。借助持续集成(CI)工具,自动化测试工具已成为DevOps周期中的规范因素。敏捷测试和DevOps测试之间还是有很多细微差别的,但是熟悉敏捷的开发者一般都能很快适应DevOps。事实上,敏捷原则主要体现在开发和QA迭代中,但在运维领域应用并不广泛。DevOps的核心是纠正这一差距。现在,DevOps不再单纯强调持续集成,而是更加强调“持续开发”。在此过程中,将编写好的代码提交给版本控制系统,然后在生产环境中构建、部署、测试和安装,然后交付给最终用户。由于整个环境和流程严格遵循标准化要求,每个环节的每个参与者都将从中受益。链上的所有操作都以自动化的方式进行,利益相关者可以专注于设计和编码高质量的交付物,完全摆脱构建、运营和QA过程带来的负担。从编写代码,到提交代码,再到最终用户的生产部署,整个周期大幅缩短至3-4小时以内。DevOps中的QA角色在传统的软件测试中,QA人员会在指定的环境中对部署的构建结果进行功能和回归测试,并花几天时间进行持续测试,重点关注现有结果的任何问题。但是这一切在DevOps中变得完全不同。例如,QA人员需要在DevOps周期内协同工作,以确保所有测试用例完全自动化并获得接近100%的代码覆盖率;需要保证环境的标准化,实现环境与QA框架的自动对接;所有的前测任务、清理、后测任务等都是自动执行的,与持续集成周期一致。DevOps需要交付链中各种功能之间的高度协作。这也意味着链上参与者的角色发生了变化,或者开始相互融合,从而赋予了开发者一定的部署权。部署工程师可以将测试用例添加到QArepo,QA工程师负责提供自动化测试用例。总体而言,链中的每个参与者都将对可交付成果的质量和及时性负责。DevOps和测试自动化为了实现这种强大的速度和敏捷性,最重要的是将测试过程完全自动化,以确保它可以在QA环境中自动部署和运行。为此,我们需要构建专门的自动化测试工具和持续集成工具,建立成熟的自动化测试框架,快速编写新的测试用例。具体有以下几点。首先,为特定构建选择合适的测试用例;第二,测试执行本质上应该遵循精益原则;第三,QA和开发人员需要面对面沟通,确定在特定构建中可能产生重要影响的具体因素,同时执行针对性测试和健壮性测试;第四,需要配置专门的代码分析和覆盖工具,保证接近100%的代码覆盖;第五,回归测试的结果很快就会过时,你必须熟悉持续测试。一个新概念;第六,需要明确新功能相关的测试策略,将临时构建交付给QA人员,QA人员创建测试脚本并在临时构建上运行自动化测试,直到代码稳定性满足要求,足以部署到到生产环境;第七,所有测试环境必须标准化,部署过程必须完全自动化;第八,使用多种自动化技术,确保QA人员可以在多种跨平台环境或浏览器中运行自动化测试;九、并行执行测试,缩短生存时间,进而促进DevOps的成功实施;第十,为每一轮测试运行设置退出标准,确保测试结果反馈到流程后,做出明确的通过或失败的决定;十一、在代码部署到生产环境之前,发现的问题或严重bug需要上报修复,相关信息通过相同的事件链传递。除了测试,应用监控的工作也不容忽视。QA人员也应及早发现问题并主动报告,并在生产环境中建立监控机制,在错误导致实际故障之前发现错误。他们还可以设置特殊的计数器,例如响应时间、内存和CPU使用率等。用户提供全面的见解。例如,如果登录的平均响应时间在每次构建中逐渐增加,则后续构建很可能会因响应时间过长而影响最终用户的实际体验。同样,QA人员也可以在生产环境中定期执行一些已有的高优先级测试用例,主动监控运行环境。这种策略可以捕获“零星的”或“不可重现的”错误,最终提高应用程序的稳定性并增强最终用户的满意度。最后,这些监控结果可以自动收集并以丰富的报表形式发布,包括故障日志和截图。总结瀑布流程让位于V模型,V模型被敏捷所取代。软件开发的概念代代相传,变化如此之快。毫无疑问,DevOps代表着未来。这样一个持续的改进周期将使软件开发过程具有完全动态的特征。我们有必要去接受DevOps,理解DevOps,最终实现DevOps。过去的测试理念仍然有效,将这些宝贵的经验教训与自动化相结合,尤其是更高水平的自动化,是实现DevOps成功的核心前提。
