软件开拓公司一贯在采取 DevOps,由于它有助于自动化和简化运用程序的开拓生命周期。不仅如此,DevOps 还通过方案、沟通、流程和工具,更好地折衷了开拓团队和运维团队,从而提高了项目的交付质量和速率。但是测试 DevOps 的最佳策略是什么呢?本文将谈论 DevOps 的基本观点、生命周期、最佳实践以及我们该当利用的工具。
软件开拓公司一贯在采取 DevOps,由于它有助于自动化和简化运用程序的开拓生命周期。不仅如此,DevOps 还通过方案、沟通、流程和工具,更好地折衷了开拓团队和运维团队,从而提高了项目的交付质量和速率。
随着 DevOps 的发展,企业要么利用敏捷+DevOps,要么只选择 DevOps 办法。

(敏捷是一个迭代过程,专注于协作、反馈和快速发布。)
但是,测试 DevOps 的最佳策略是什么呢?为了帮助大家,我们将谈论 DevOps 的基本观点、生命周期、最佳实践以及我们该当利用的工具。
什么是 DevOps?DevOps 是一套工具、文化理念和实践,通过自动化和集成开拓团队和运维团队之间的流程,提高了组织高速交付项目的能力。DevOps 强调跨团队的协作与沟通、团队授权和自动化。
在 DevOps 的方法论下,开拓团队和运维团队并不是相互伶仃的。这两个团队常日会合并为一个团队,开拓职员卖力运用的全体生命周期,从开拓到支配和运维。此外,DevOps 团队拥有广泛的技能,并不局限于运用程序的某个功能或特性。
阅读:DevOps实际上做了什么
有时,安全和质量担保团队会在全体运用程序开拓过程中与 DevOps 集成。在这种情形下,如果 DevOps 团队的重点是运用程序的安全性,那么它也被称为 DevSecOps。
与传统的手工实践不同,DevOps 团队利用技能栈和工具来自动化流程,从而可以自动、可靠、快速地构建运用程序。此外,DevOps 工具许可开拓职员独立实行一些须要其他团队帮忙的任务,如配置根本举动步伐或支配代码等任务。
DevOps 生命周期DevOps 生命周期是持续开拓生命周期中的一系列自动化流程。DevOps 生命周期采取迭代的办法,这便是实践者为什么会将其符号化为无限循环的缘故原由。这个无限循环代表了一种持续和协作策略,个中包括运用程序生命周期中每个阶段的技能栈和工具。
生命周期的左侧处理运用程序的开拓和测试,而右边则描述了支配和运维的循环。
让我们来概述一下 DevOps 的生命周期。
操持(Plans):DevOps团队在操持阶段确定业务需求并网络用户的反馈。为了最大化业务代价并供应预期结果,开拓职员还会在该阶段创建项目路线图。编码(Code):在这个阶段,通过利用诸如Git或GitHub之类的工具和插件来创建运用程序代码,并简化流程,最大限度地减少糟糕的编码实践和运用程序安全方面的毛病。构建(Build):在构建阶段,开拓职员利用 Gradle 或 Maven 等工具将代码提交到共享存储库。测试(Test):在测试阶段,将构建支配到测试环境中,这样就可以通过利用 Selenium、JUnit 等工具运行不同的测试(如安全性、用户接管度、集成、性能等)来确保运用程序的质量。发布(Release):当构建通过了测试,并准备好了支配莅临盆环境时,运维团队将会安排发布。支配(Deploy):在支配阶段,根本举动步伐即代码(Infrastructure-as-Code,IaC)利用不同的工具来构建和支配生产环境。运维(Operate):一旦终极用户可以访问该版本了,运维团队将利用 Ansible、Saltstack、CFEngine 或 Chef 等工具进行做事器配置和资源调配。监控(Monitor):顾名思义,在监控阶段,根据网络到的运用程序性能、用户行为等信息来对 DevOps 管道进行监控。通过环境监控,团队可以轻松地识别出影响生产力的瓶颈。从敏捷到 DevOps
纵然 DevOps 和敏捷测试之间存在细微的差异,利用敏捷的人可能会创造 DevOps 更熟习,并终极采取它。只管敏捷的原则在开拓和 QA 的迭代中得到了成功的运用,但在运维方面却没有那么成功。这便是 DevOps 的用武之地。
DevOps 现在已经用持续开拓取代了持续集成,在持续开拓中,团队在短周期内开拓运用程序,这样软件就可以随时自动可靠地发布。利用 CD,可以以很高的频率开拓、测试和发布软件运用程序。
由于 DevOps 中的流程和环境已标准化,因此持续开拓过程能使全体链条中的每个人都受益。由于 DevOps 中的所有流程都是自动化的,因此,开拓职员可以专注于设计和编码高质量的运用程序,而不是专注于构建、质量担保和运维流程。
阅读:Salesforce DevOps的上风和寻衅
利用持续开拓可以极大地缩短代码编写和支配莅临盆环境的韶光,最多可达 4 小时。
简而言之,DevOps 是一种敏捷的扩展,或者可以被称之为“类固醇上的敏捷”。
DevOps 测试的最佳实践DevOps 测试工程师须要重新思考软件的 QA 测试策略,以适应从开拓到运维的管道阶段。值得光彩的是,有一些 DevOps测试最佳实践可以被理解并能被用于任何运用程序的开拓中。阐明 DevOps 的每个测试最佳实践超出了本文的范围。以是我们总结了 DevOps 测试的每一个最佳实践,并不才面给出理解释。
1. DevOps 测试文化DevOps 的测试文化是有所不同的,由于跨职能团队成员共同承担了供应高质量运用程序的任务。质量检讨是管道阶段的一个主要方面,涉及所有的团队成员。此外,质量测试不能由一个完备不同的团队在管道的末端进行。因此,团队须要确定测试策略,以掌握全体运用程序开拓生命周期中测试活动的范围和数量。
阅读:在Kubernetes上运行有状态运用程序——最佳实践及用例
为了达到所哀求的结果,跨职能团队的每个成员都必须对测试及其结果卖力。
DevOps 测试文化应包括以下特色:
鼓励环绕测试和测试结果剖析进行协作,而不是测试职员和开拓职员在代码修复方面进行对抗。测试覆盖率和创建条款须要得到DevOps团队的赞许。领导者该当将测试视为项目开拓的计策部分,而不是将其视为可以降落的本钱。他们须要资金和韶光预算来为 DevOps 团队想要的开拓职员供应测试培训资源、框架、工具、管理并创建评估策略。开拓团队该当接管测试创建和结果剖析,而运维团队该当操持并实行跨功能测试。2. 持续的测试策略
传统的瀑布式测试方法是在开拓周期靠近尾声时由独立的 QA 团队对运用程序中大量的变动良行测试,这种方法无法与 DevOps 合营利用。
随着 DevOps 团队在持续交付管道的所有阶段都测试小的变动,敏捷方法与 DevOps 测试更加兼容了。
阅读:什么是定制软件开拓
虽然敏捷强调了持续测试的主要性以及将持续测试集成到软件工具中的必要性,但它没有定义将测试扩展到支配的方法。DevOps 所需的持续测试策略比瀑布式或敏捷式的更明确。持续测试策略必须要包括管道和支配所有阶段的集成测试。
3.端到真个测试集成DevOps 须要跨端到端管道阶段的水平测试集成,以及跨不同级别持续交付根本举动步伐的垂直集成。
下面列出了实现端到端测试集成的最佳实践:
在集成之前,利用私有实例对运用程序中的变动良行测试,以确保代码的变动不会毁坏分支。能做到这样的测试方法包括:静态代码剖析、单元测试、性能测试、回归、扫描和功能测试。在预集成测试阶段,该当创建自动化测试,以便在管道的后续测试阶段连续利用。为了验证预集成测试的测试结果,DevOps 团队该当在提交代码时对代码进行评估。在构建阶段,该当实行测试,以确定集成的构建是否符合验收标准。为了确保构建镜像的性能和功能符合评估标准,必须在代码测试过程中进行性能和功能测试。类似地,在回归、系统测试和交付等其他阶段,也须要进行一组测试,以确保代码和运用程序符合预期的评估标准。4. DevOps 测试根本举动步伐
正在测试的运用程序可以具有单体、三层、面向做事或微做事的架构。DevOps 测试实践强调在类似于生产环境的环境中进行测试的主要性,这可以确保一旦支配莅临盆环境中,测试就可以覆盖运用程序的所有配置。
为此,最佳实践是找到并将根本架构即代码(Iac)、动态根本举动步伐配置工具、云做事和测试即做事(test-as-a-service)包含进来,这些工具比专用根本举动步伐更具本钱效益和可行性,并且可以根据运行测试的须要轻松地建立并发布根本举动步伐配置。
5. DevOps 就绪测试工具持续交付测试工具必须供应对运用程序进行测试的能力,并供应能够验证测试结果所需的数据。你可以利用的一些工具,如功能测试工具、协议测试工具、API测试工具、单元测试工具、数据库仿照器、性能/负载测试工具和用户界面测试工具等。
测试工具可以是白盒工具、灰盒工具和黑盒工具。测试工具该当能够稠浊测试工具链和框架,以便用于 DevOps 就绪(DevOps-ready)工具。
这将在垂直或水平方向上增加按需伸缩的弹性,并能匹配事情负载的需求,以及通过持续交付管道测试运用程序变动的能力。可以通过 API 编排、伸缩、调用、掌握和监控 DevOps 就绪工具。资源、采取快速失落败的测试设计技能、测试框架配置,则加速测试结果的监控以及测试工具的配置。
6. 测试剖析如果对持续测试结果的剖析不能跟上测试的速率,不仅会增加要剖析的结果数量,而且还会导致无法节省韶光、造成大量混乱并忽略有代价的结果,从而减慢 CI/CT 周期。一些可用于匹配测试及其剖析速率的技能包括测试结果剖析器、仪表板或向框架中添加剖析工具。
7. 微做事和容器从测试的角度来看,在微做事架构中,须要验证每个做事与利用它的其他做事之间的左券。做事间的依赖性和微做事的独立性都该当经由很好的测试。
在网络上运行做事时,还须要验证可靠性和性能等考虑成分。如果微做事受到运用程序变动或干系依赖微做事组的影响,则须要对其进行回归测试。
容器供应了将测试资源打包到分外容器中的可能性,以实现方便性和不变性,以及测试变动所需的可伸缩性。
8. 数据库 DevOps 测试在持续交付的全体过程中,制订策略来测试和验证对数据库的任何变动或利用了数据库的运用程序是否按哀求实行是至关主要的。此外,必须有可以用于从生产环境中复制数据卷的工具,以确保在支配之前能在生产数据集上进行测试。
9. DevOps 安全测试通过制订 DevOps 安全测试策略,可以使运用程序更随意马虎摆脱漏洞、威胁和风险的影响。DevOps 团队可以在开拓周期中运用自动化工具和测试,最大限度地减少宕机韶光、漏洞和安全威胁。
10. 自动化测试为了肃清持续集成带来的风险,添加能够供应快速运用程序质量反馈的测试自动化是至关主要的。利用 CI 进行自动化测试许可团队测试新代码迭代,并能将缺点的可能性降至最低。
DevOps 测试工具在软件开拓生命周期中利用 DevOps 测试工具为开拓和运维团队供应了多项上风。它供应的一些好处包括代码质量改进、快速和持续的反馈,以及加速了有助于增加开拓、运维和测试团队的运用程序上市韶光。
下面是可以用于 DevOps 测试策略的不同测试工具列表。
单元测试工具通过单元测试,DevOps 团队可以单独检讨运用程序的源代码,以验证其功能。单元测试乃至可以在运用程序的初始开拓阶段进行。它依赖于仿照运用程序功能的测试用例。这些测试用例要么通过,要么失落败,并向用户供应结果,以便他们调试代码。
有些单元测试工具是专门为给定的编程措辞设计的。可以利用的工具有Mocha(用于 JavaScript)、 EMMA (用于 Java)、Typemock(用于.Net 和 C++)、Parasoft(用于 C 和 C++)和SimpleTest(用于 PHP)。
性能测试工具性能测试是在 DevOps 的后期阶段完成的,即在编写和集成代码时。根据项目的哀求,性能测试工具将对运用程序进行压力、负载、容量、卷和规复测试,以检讨运用程序的性能,以及它如何从非常中规复。
利用工具进行性能测试的目的是在向终极用户发布系统之前,检测崩溃源并修正系统以得到最高效率。可以用于性能测试的工具有ApacheJMeter、k6、Watir、Predator和TestComplete。
自动化测试工具自动化测试工具有助于自动运行测试、管理测试数据并利用测试结果来提高软件的质量。除了减少人为缺点外,自动化测试工具还可以支持可伸缩的评估。CI/CD 模型中的自动化工具基于事宜来触发测试。
DevOps 团队可以用于自动化测试的工具有TestProject、Leapwork、Selenium、Tosca和Testsigma。
持续测试工具持续测试是测试运用程序的过程,有助于在 DevOps 管道的每个阶段进行代码、功能和运用程序验证,以检测缺点并最大限度地缩短周转韶光。
DevOps 团队利用的一些连续测试工具示例包括:AppVerify、Appium、Docker、Bamboo和Jenkins。
总结DevOps 是为多种业务开拓运用程序的空想办理方案,由于它有充分的情由。然而,运用程序的成功和质量完备取决于 DevOps 团队为测试运用程序所制订的策略。
我们希望本文能够帮助你为当前或未来的项目制订 DevOps 测试策略。
原文链接:
https://www.decipherzone.com/blog-detail/devops-testing
理解更多软件开拓与干系领域知识,点击访问 InfoQ 官网:https://www.infoq.cn/,获取更多精彩内容!