DevOps基础-5.4-持续交付:DevOps中QA的角色

       到目前为止,介绍已经涵盖了持续集成和持续交付,但现在你可能想知道,“有什么收获?” CI/CD一切听起来都不错,部署速度更快,工作量更少。这真是太好了吗?嗯,确实好像没有问题,但是当你转向持续交付时,你必须做出一些根本性的转变。一个值得特别关注的领域是测试。对于本节的测试,我们将介绍七种不同类型的测试,这些测试通常在持续交付中实施。

       1.让我们开始进行单元测试讨论。这些是在它支持的语言或框架的最低级别应该完成的测试。一般是由开发人员自己完成,原则上谁写的代码都要由单元测试,测试通过才能提交到远程仓库。

DevOps基础-5.4-持续交付:DevOps中QA的角色

        假设你有一个计算器应用程序。一个名为add的函数需要两个数字,它将它们加在一起。在单元测试中,我们会在代码库中编写一个测试来验证该功能,这些是单元测试的标志。通常,这是可用的最快测试,它使用假值来存储外部依赖关系,并且它很容易在开发人员的机器上运行。

        2.接下来是代码整洁。代码整洁是您的开发社区针对您正在使用的特定语言或框架的最佳实践的总和。主要是强调代码规范和约定,您还可以检查代码中的禁止函数。

       3.接下来是集成测试。它的技术测试类似于单元测试,但是在测试环境中运行的所有应用程序组件和依赖项都执行。

       4.接下来,我们将(TDD BDD ATDD)分成一类;测试驱动开发,行为驱动开发和验收测试驱动开发。现在,它们都是软件开发中的相关运动,侧重于从外向内进行测试。每个实施都略有不同。因此,即使我们将它们集中在同一类测试中,让我们简要介绍它们的含义。 TDD,测试驱动开发。这是一种开发实践,首先是在编写任何代码之前编写测试代码。 TDD的流程是您从作为测试编写的期望结果开始。然后编写代码以通过测试,然后调试,修改并重复。现在,这个流程鼓励高反馈,并且奖励是在编写应用程序时,还开发了全面的测试用例。行为驱动的开发也称为BDD,它鼓励开发人员与业务利益相关者合作,描述应用程序所需的业务功能,并在非常接近英语的DSL中表达测试用例步骤。例如,在我们的计算器应用程序中,它可能看起来像这样。鉴于我有一个计算器,当我给它添加两个数字时,它应该返回总和。接下来,我们有接受测试驱动的开发,ATDD。它建立在TDD和BDD的基础上,并参与从最终用户的角度查找场景。您使用这些用例的示例编写自动化测试,然后在开发代码时重复运行它们。好的,所以我们到目前为止所讨论的所有测试都相当快。但有时你会遇到速度较慢的测试,而且测试速度慢,这是不可忽视的,因为没有真正神奇的方法来加速它们。

       因此,如果我们开始向Pipeline添加一堆慢速测试,那么我们就会开始违反五分钟的咖啡规则。好吧,为了解决这个问题,我想使用三种策略。首先,在管道中使用非阻塞测试。其次,使用时间安排的测试,比如做一个夜间测试套件。第三,使用监控来完成一些测试目标。好的,让我们转到下一个。

       5.基础设施测试这是下一个测试类别,有时它可能是一个缓慢运行的测试。它涉及启动主机并运行配置管理代码,运行所有测试,然后全部关闭。

        6.另一个测试类别是性能测试。基本性能测试应该是您所做的一切的一部分。但是你也有一个专门的性能测试。您希望进行负载测试,压力测试,浸泡测试和并发测试。所有这些测试都非常适合放再夜间执行。它们通常是长时间运行的,它们消耗了大量资源。

        7.最后一类是安全测试。将此视为模拟攻击测试可能会有用到。我是名为Gauntlet的开源工具的开发人员。 Gauntlet允许您在测试来自外部的安全攻击时使用BDD语言。

       以上就是QA清单以及所有这些东西如何融合在一起。如果您希望能够设置持续的交付Pipeline,那么测试对于实现正确性至关重要。这是您可以信任的唯一方法,您所做的更改不会破坏系统并保持高速率运行。

       PS,我当前就是在一个DevOps项目中的QA,我们要写CI CD Pipeline脚本,用Groovy语言来写。把一个大型软件产品,从底层基础设施自动化测试,到环境配置,安装软件,启动服务,然后进行软件安装之后的验证测试。整个过程都是全部实现CI CD自动化,都用Jenkins Job并行或者串联完成。这个测试就算上面的基础设施测试。