QAOps是指通过使用DevOps思维方式来保持软件质量。DevOps指软件开发(Dev)和IT运维(Ops),并在开发和IT运营之间建立关系。 将DevOps引入业务实践的目的是改善两个业务部门之间的协作。
质量保证(QA)在交付高质量软件产品中扮演着重要角色。如果可以将软件开发和软件运营整合在一起,那么组织有可能将软件质量保证和软件运营整合为一种模式,这为DevOps带来了新的内容,称为QAOps框架。
QAOps框架简介
简而言之,QAOps旨在改善软件交付过程,在保障软件质量的前提下,使其更快、更稳定。从技术上讲,QAOps框架将质量检查流程,自动化和质量检查报告仪表板与软件开发生命周期(SDLC)流程集成在一起。QAOps接受了来自DevOps的持续测试(如CI / CD)的核心思想,并将孤立的团队召集在一起,共同进行工作流,并将其应用于QA流程。
QAOps的定义
虽然没有正式的QAOps定义,但是可以基于这两个原理来定义该技术。
- 引入QAOps框架的主要思想是将DevOps中的连续测试与持续集成(CI)/连续部署(CD)管道集成在一起,而不是无限期地执行软件测试。
- QAOps框架增强了QA工程师和开发人员之间的协作。因此,质量保证工程师必须与软件开发人员,运维人员以及CI / CD流程中涉及的每个人紧密合作。
QAOps框架的基本实践
QAOps解决了测试团队和质量保证团队之间最常见的纠纷。QAOps在组织的不同部门之间带来合作。QAOps利用以下高级测试实践将QAOps的概念付诸实践。
自动化测试
这是QAOps框架的主要支柱之一。自动化测试意味着在技术和工具的帮助下进行测试,无需花费太多人力。质量保证工程师必须在构建自动化框架之前详细研究产品并了解其中业务和技术方案。根据产品和实际开发的不同阶段,质量检查工程师可以决定哪些测试可以成功自动化,以帮助节省时间并以采取有效的方式测试功能。
自动化测试最明显的类型将是回归测试用例。测试工程师可以有效地用于构建自动化测试用例。同样,产品中常用的功能也应自动执行。
例如测试工程师还需要负责确保Web应用程序的浏览器兼容性。如何进行费时的手动跨浏览器测试是多么的困难。在数个浏览器和OS组合上一一测试一个Web应用程序或一个网页,可能会在发布过程中中消耗大量时间和人力。
更不用说,测试相同的数十种或数百种浏览器+操作系统组合一定会在一段时间后让测试工程师的工作变得单调乏味。如果每次迭代都要花全部时间在相同的测试脚本和组合上执行手动浏览器兼容性测试,那么编写探索性测试的难度大大增加。
这正是自动化跨浏览器测试可以施展拳脚他的地方。借助Selenium等开源框架,自动化测试可以帮助测试工程师按计划完成测试。但是,仍需要找出要自动化的测试用例,因为他无法自动化所有操作。
从头开始进行自动化测试将需要一个完整的计划和文档编制阶段。但是,一旦这一阶段结束,并且当测试工程师拥有了合适的测试套件以及正确的自动化跨浏览器测试工具,那么前进的道路将会非常顺畅和富有成效。
并行测试
作为QAOps框架的一部分,测试应快速运行(与交付并行)。放慢测试速度将直接影响交付过程。引入自动化测试肯定会加快测试过程,但不能仅仅以串行方式运行。为了克服此问题,对于测试工程师而言,一次性运行多个测试而不是一个接一个地运行是很比较重要的。
实现了自动化测试优于手动跨浏览器测试的好处,测试工程师提出了多个自动化测试脚本来覆盖其Web应用程序的不同模块。但是,出现了另一个他还没有准备好解决的问题!使用Selenium WebDriver自动化了测试方案,以实现浏览器兼容性。Selenium WebDriver一次只能执行一个测试用例,其他测试脚本必需排队等待。结果,由于串行执行测试脚本,测试周期仍然会有所延迟。
现在,Selenium已经可以实现了他的测试需求。利用Selenium的并行测试,使用Selenium Grid功能,测试工程师能够同时在不同浏览器上运行多个测试用例。这使他的整体测试执行时间减少了几倍,使测试效率以倍提升。
测试可扩展性
在Web应用程序上线之后,可能会收到用户的反馈,提出建议并考虑在即将到来的迭代中纳入新功能。在每个发行周期之后,应用程序将继续扩展,便随而来的就是扩展测试需求!对于从CI / CD管道提交的每个新构建,必须计算和验证新代码更改对已经运行的代码的连锁反应。因此,在基础架构投资方面,必需将可伸缩性测试保留。
可伸缩性测试还可以通过修改测试配置来帮助测试各种条件下的应用程序性能。测试结果显示了应用程序对不同负载的响应的情况。测试例程应该可以通过CI / CD管道进行扩展。有时,CI / CD管道会根据项目要求进展伸缩拓展。在这些时间内,测试还应该与CI / CD同步。可伸缩性测试可帮助质量检查工程师揭示与Web应用程序性能相关的挑战。
作为标准QAOps惯例,QA团队必须具有可伸缩的基础结构来执行测试并在需要时提高测试速度以保障软件发布质量。
将Dev&Ops&QA集成
实现QAOps框架的最终实践是使QA成为CI / CD流程的一部分。将开发和IT运维与QA集成的最简单方法之一是使开发人员编写测试用例,并让IT运维工程师通过QA团队协助来识别Web应用程序中潜在的BUG。这为开发人员和质量检查工程师提供了绝佳的机会,可以进行协作并清晰地了解完整的质量检查流程。这也不意味着QA工程师可以摆脱这些过程而保持闲置状态。不同利益相关者之间的这种协作只会使开发和测试的整个过程更加高效。
QAOps框架的生命周期
QAOps旨在通过CI / CD管道上的工具设置正确的平台,以确保测试和验证了新建的代码。设置测试平台的过程涉及三个主要步骤。质量保证下的过程对我们所有人来说都很熟悉,因为它们类似于自动化测试生命周期中涉及的主要步骤,以确保应用程序的稳定发布。
- QAOps流程包含三个独特的步骤:触发、执行和报告。
触发
QA测试的重要方面之一是:只要在CI / CD管道中对应用程序功能进行更改,就触发自动化测试的执行,单必需基于功能上的更改才能触发测试。否则,在测试应用程序不需要的区域(没有更改)时将浪费时间影响项目构建速度。测试数量越多,运行测试和输出结果的时间就越多。为了平衡这种情况,对于企业来说,将测试映射到要构建项目的功能很重要。
因此,应该精心设计触发步骤,并将其映射到自动化测试生命周期中。这是QAOps流程的第一步。
执行
QAOps流程的下一步是执行。触发步骤之后,将不同的功能执行不同的测试。如前所述,确保测试并行运行以节省时间并产生更快的结果很重要。要实现并行测试,请确保您拥有可以根据需要扩展和分配负载的基础架构。此外,请确保在DevOps环境中进行连续测试的可用性很高,以避免在QAOps生命周期内出现任何不必要的测试问题。
报告
触发并执行测试后,将启动生成报告。报告模块将显示测试结果。正确设计报告模块以使QAOps过程高效是很重要的。完善的报告模块设计应提供快速的摘要信息以及详细的信息。这将对任何查看报告的人都有帮助。此外,报告模块最好能够存储以前运行的测试的历史记录,以便各个涉众可以比较结果。
QAOps用武之地
尽管QAOps框架在自动化测试的帮助下功能更强大,但它并不排斥对应用程序执行手动测试的可能性。手动测试对于保障应用程序的详细信息非常有用,因为很多测试用例只能通过手动测试来实现。除跨浏览器测试以外的部分特定类型的测试,QAOps框架可能很少,几乎难有立锥之地。
功能探索性测试
此测试可确保在遇到意外情况时应用程序是否按预期运行。不会预先创建测试用例,因为这种类型的测试主要基于测试人员的“独立思维”。经验丰富的测试工程师重现了潜在的应用程序崩溃情况,并使用此技术发现了错误。
这是功能探索性测试的一些优点。
- 它是一种特殊的测试方法,旨在发现Web应用程序中的错误。
- 与脚本代码相比,测试人员更需要认知思维。
- 根据用户当前执行的操作来决定下一步的操作。
- 帮助测试人员深入研究应用程序的最小区域,并覆盖不同的边缘情况。
- 当必须测试关键应用程序并且团队中有经验丰富的测试人员时,可以在组织中使用功能性探索测试。对于新测试人员来说,这也是一条很好的学习曲线,因为他们可以从完全不同的角度看待应用程序。
使用QAOps,可以很好地建立QA和运营团队之间的协作。通过对操作有更好的了解,质量检查人员可以进一步深入进行野外探索性测试。
回归测试
当已经开发了软件并且想要发布具有新功能或对现有功能的增强的更新时,回归测试将发挥重要作用。此时,QAOps将有助于测试工程师查看新添加的信息是否对现有产品造成了任何故障。
在敏捷软件开发模型中,回归测试通常被视为一个过程,在现有过程中增加了额外的开销。QAOps可以很好地解决此问题,因为该过程非常容易且负担对于企业来说可以接受。
组织内使用QAOps
QAOps似乎与DevOps类似,但它不需要在工作场所进行彻底的变革。该框架有助于开发人员和测试人员相互协作,共同努力以更快地获得结果或在发布之前彻底测试应用程序的新部分并保障未修改部分的质量,从而保障软件发版的总体质量。
但是要做到这一点,将QAOps的价值传达给关键决策者和利益相关者(尤其是技术团队)非常重要。他们必须了解实施QAOps框架背后所可能产生的巨大价值。这样,它可以帮助组织的其他成员(开发人员,测试工程师,IT运维等)了解需求并相应地工作。要花时间让利益相关者相信这个新模式;但是,一旦成功,公司将就会从实施QAOps框架的过程中了解到QAOps模型的重要性。
QAOps可以称为DevOps中的连续测试吗?
在通用的DevOps方法中,开发人员和测试人员都扮演着至关重要的角色。QA的角色将开发团队和IT运维结合在一起。当我们谈论质量检查时,它不仅是简单的测试,还包括DevOps中的连续测试!具有在DevOps中进行连续测试的能力的组织可以使他们相互协作,以最快的速度交付最佳的应用程序,故而在DevOps方法中将QAOps称为“连续测试”就足够了。
让我们看看组织如何在DevOps中接受跨不同业务功能的连续测试。
- 应该配置一个持续集成环境(带有CI/CD),以便开发人员和测试人员对代码执行测试。
- 开发团队必须通过测试应用程序中内置的每个新功能来执行连续测试。他们必须测试应用程序的功能,性能,界面的易用性。
- 质量保证团队还必须开始测试新功能,以保持开发流程的正常进行。
- 由质量检查团队完成测试并给出测试通过的结果之后,IT运维团队必须执行应用程序的部署程序。
- 同样,在发布完成之后,IT运维团队应密切关注应用程序,以确保一切正常。他们必须监视应用程序的各个方面,以确保程序运行正常。
- 通过将持续测试流程集成到SDLC流程中,企业可以实现快速稳定产品交付。
总结
QAOps也可以称为DevOps中的连续测试,也可以理解其为“正确设计和实施”。这使软件团队有信心在不影响质量的前提下加快产品发版时间。
- 郑重声明:公众号“FunTester”首发,欢迎关注交流,禁止第三方转载。
技术类文章精选
- Linux性能监控软件netdata中文汉化版
- 性能测试框架第三版
- 图解HTTP脑图
- 性能测试中图形化输出测试数据
- 压测中测量异步写入接口的延迟
- 多种登录方式定量性能测试方案
- JMeter吞吐量误差分析
- 多项目登录互踢测试用例