使用DevOps流水线自动化用户验收测试

使用开源工具将您的验收测试流程引入CI/CD流水线。
190 位读者喜欢这篇文章。
Hand drawing out the word "code"

验收测试,也称为用户验收测试 (UAT),用于确定系统是否满足用户需求、业务需求和授权实体标准。每次在通过软件开发生命周期 (SDLC) 开发应用程序时进行新设计时,都会重复这些测试。在许多公司中,站点可靠性工程师 (SRE) 通过在 DevOps 计划中构建持续集成/持续开发 (CI/CD) 流水线来自动化验收测试。

创建用于云和本地基础设施的 CI/CD 流水线需要大量开源工具,因此您需要设计多个层,例如平台、框架和工具,以实现流水线的高效管理。

在本文中,我将带您了解一个集成自动化验收测试工具的 DevOps 场景。此示例将为您提供 DevOps 平台集成的完整图景。

构建 DevOps 平台

SRE 或开发人员多久构建一次应用程序并进行验收测试? 每天? 每周在多个环境中一次? 以前,您必须为每个项目重复安装、配置和管理这些环境——乏味但必要的任务。但是,在 Linux 容器中构建 DevOps 平台使这项日常工作从根本上变得更轻松、更快捷、更安全。

使用基于 Kubernetes 项目的 企业平台即服务 (PaaS) 解决方案是通过构建源代码、打包容器镜像以及在企业生产中运行容器来构建 DevOps 平台的最强大、最合适和最有效的方式。

要开始此示例,请使用 Minishift 在本地 OKD(为 Red Hat OpenShift 提供支持的 Kubernetes 社区发行版)上创建一个单节点集群。

$ brew cask install minishift
$ minishift start --vm-driver virtualbox
$ eval $(minishift oc-env) && eval $(minishift docker-env)
$ oc login $(minishift ip):8443 -u admin -p admin

部署 CI 框架

使用容器平台,选择流行的 CI 框架之一,例如 JenkinsTravis CITeamCityCircleCIBamboo,并使用 OpenShift TemplateOperatorHelm Charts 部署它。 Jenkins 是最古老、最流行的开源自动化服务器,用于为任何编程语言环境设置 CI。

通过 OpenShift Template 将容器化的 Jenkins master 服务器部署到 Minishift

$ oc project at-cicd --> Create an acceptance testing project
$ oc new-app jenkins-ephemeral --> Create a Jenkins Master Server

集成验收测试工具

验收标准主要侧重于图形用户界面 (GUI) 中的应用程序功能,也称为 UI/UX 要求。 在此步骤中,开发人员和 QA 团队必须花费大量时间根据用户需求手动验证整个测试用例。

Selenium 允许您使用 WebDriver 脚本在网页上自动化功能测试,这些脚本以交互方式执行测试用例,与测试人员手动执行的方式相同。 要将 Selenium 工具与 Jenkins 上的 DevOps 流水线集成,请创建一个 Jenkinsfile 来定义 CI/CD 流水线,其中包含构建、测试和晋升的多个步骤。

创建一个类似的 BuildConfig,其中包含多个阶段(源克隆、构建和编译、验收测试),并使用 Minishift 命令运行流水线资源。

$ oc create -f at-selenuim-pipeline.yaml --> Create a CI/CD pipeline with AT
$ oc start-build at-selenuim-pipeline --> Start the pipeline

##### Snippet of pipeline buildconfg yaml #####
kind: "BuildConfig"
apiVersion: "v1"
metadata:
  name: "at-selenuim-pipeline"
spec:
  strategy:
    jenkinsPipelineStrategy:
      jenkinsfile: |-
        pipeline {
            agent any
            def mvnHome = tool 'Maven'
            stages {
                stage ('gitclone') {
                    steps {
                        git branch: 'master', url: "Your Code in Git Url"
                    }
                }

                stage ('build') {
                    steps {
                        sh "${mvnHome}/bin/mvn compile"
                    }
                }

                stage ('attest') {
                    steps {
                        sh 'mvn clean test -Dwebdriver.type=remote -Dwebdriver.url=https://:4444/wd/hub -Dwebdriver.cap.browserName=chrome'
                    }
                }
            }
        }
        type: JenkinsPipeline

结论

这些实用的步骤为在您的 DevOps 平台中集成自动化验收测试工具以及加速您的团队和组织内的 CI/CD 能力创建了一条更短的路径。 您可以使用其他开源测试工具(如 JMeterMavenJUnit)进一步调整自动化流水线。

接下来阅读

6 大顶级持续集成工具

持续集成 (CI) 是敏捷软件开发设置不可或缺的一部分。 在一次又一次的冲刺中,团队努力在交付增量时“不破坏构建”……

标签
danieloh
技术营销, 开发者倡导者, CNCF 大使, 公众演说家, 已出版作者, Quarkus, 红帽运行时

2 条评论

尽管我很喜欢这篇文章,但我仍然纠结于验收测试和用户验收测试之间的区别 -> 我倾向于认为这是由不同的人做的非常不同的事情。 我自动化验收测试(基于验收标准),但不自动化用户验收测试,因为 /users/ 实际上必须确认并提供关于我们构建的内容是否是他们想要的反馈。

这非常有趣,Daniel。 谢谢你的分享。 Selenium 一直是我促进 CI/CD 流水线的首选工具。 我们一直在利用开源工具和云来利用众包测试的好处。 虽然,我曾就 devops 和众包测试是否应该结合在一起进行过一些辩论,但我仍然坚持这一点。 你怎么看? 众包测试在 DevOps 组织中是否有意义? https://www.cigniti.com/blog/crowdsourced-testing-devops/

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.