首页 > 编程知识 正文

devops中的自动化测试(自动化测试技术有哪些)

时间:2023-05-04 00:12:22 阅读:104165 作者:2253

在软件开发和测试过程中,测试人员、开发人员和业务人员在沟通测试用例的功能点和覆盖率时,复杂的功能需求与晦涩难懂的测试用例脚本脱节,使得大家很难在测试功能点上达成一致,也很难统计测试覆盖率。如果有一种通用的语言来描述测试用例,让开发人员、测试人员和业务人员能够很好地理解测试的需求、步骤和目标,就可以最大限度地避免理解偏差带来的不一致,而暴躁瓜(全称行为驱动开发)技术就是解决这个问题的关键。

暴躁哈密瓜是行为驱动开发,是一种敏捷软件开发技术,是TDD(全称Test Driven Development)的扩展,用简单易懂的‘General Language’—— gerkin语法编写的结构化自然语言描述测试需求,并将语言转换为可执行测试。因为业务人员、开发人员和测试人员使用相同的‘语言’来描述相同的系统和所需的功能,所以可以最大程度地避免表达不一致带来的问题,理解也可以保持一致。使用通用语言,业务参与者,如客户,也可以与我们的业务人员和研发人员合作;d团队定义系统的行为,从而做出满足客户需求的设计。

暴躁瓜鼓励软件项目中开发人员、测试人员、业务人员和业务参与者之间的合作,让开发人员和测试人员尽可能了解产品经理或业务人员的功能需求,并在研发过程中及时反馈和演示软件功能的研发状态,以便产品经理或业务人员根据获得的产品研发信息及时调整软件产品的特性。暴躁的瓜有助于敏捷研发;团队专注于识别、理解和构建与业务目标相关的产品特性,并支持敏捷研发;团队确保所识别的产品特征能够被正确设计和实施。

介绍了一个基于暴躁瓜技术的测试案例,并结合流行的持续集成技术实现了一套自动化测试框架。该框架自动将脾气暴躁的哈密瓜编写的测试用例部署到持续集成系统中。当开发人员修改代码时,他们会自动触发执行配置好的暴躁哈密瓜测试用例,并获得可视化的执行结果,通过这些结果可以定位失败的测试用例。因为测试用例是之前介绍的‘通用语言’,开发人员可以清楚地了解失败的原因,并与测试人员进行有效的沟通,从而解决代码bug或修改不合适的测试用例。

接下来,我将从三个部分介绍这个自动化框架:

1)自动化测试框架概述

2)暴躁瓜测试用例详解

3)实践与应用

自动化测试框架综述

在本文的实现中,我们使用了Java版本的黄瓜和Serenity暴躁哈密瓜来实现暴躁哈密瓜测试用例,使用Git来管理开发代码和测试用例代码,使用了Jenkins Maven Docker等流行的持续集成框架来实现自动化测试过程。在介绍自动化框架的工作流程之前,让我们先熟悉一下这些概念:

黄瓜是一个开源的自动化测试工具,可以用通用语言描述测试用例,支持暴躁的哈密瓜。本质上是根据正则表达式匹配自然语言描述的测试用例步骤,然后依次执行相应的方法,达到测试的目的。

宁静暴躁瓜是一个开源工具,可以与CUCUCUUMER结合,实现测试用例执行结果的可视化显示和统计,方便用户分析测试结果和问题。

Jenkins是可持续集成框架的实现工具。

Docker是一个开源的应用程序容器引擎,可以将应用程序和依赖包打包到一个可移植的容器中,然后发布到部署的Linux或Windows服务器上。

Maven是一个项目管理工具软件,可以通过一小段描述信息来管理项目的构建、报告和文档。

整个框架的工作流程如下:当开发人员进行代码变更或者测试人员进行测试用例变更并提交给Git的待测分支时,Jenkins的Hook会识别变更,自动拉取最新的开发代码和测试用例代码,用Maven进行打包,并发送给Docker进行Docker Push和Docker Build。最后发布到部署好的应用服务器集群进行Docker Run,这样黄瓜实现的最新测试用例就可以在最新的开发代码上运行。执行后,Jenkins自动收集Serenity暴躁瓜的执行结果,并通过电子邮件发送给代码提交者,通知他执行结果。如果测试用例的所有执行结果都通过了,就把修改后的代码提交给Git的稳定分支;如果有失败的情况,提交的代码将被拒绝。

整个工作流程如下图1所示:

图1工作流程

暴躁瓜测试用例详解

黄瓜如何结合Serenity的暴躁瓜实现测试用例,并展示执行测试用例的结果?如下图2所示:

1)首先,黄瓜用小黄瓜语法写暴躁瓜的测试用例。测试用例根据测试功能点被分组到不同的特性文件中,每个测试用例包含诸如给定、何时和然后等测试步骤。

2)黄瓜

用正则表达式映射步骤定义和Gherkin书写的测试用例步骤。步骤定义在本文中是定义的Java函数,函数内有针对测试步骤具体的实现。当执行测试用例时,针对Feature文件中的每个测试用例(Scenario)的步骤,根据正则表达式匹配到步骤定义的函数,然后执行函数里的内容,达到测试的目的。

3)当测试执行完毕,Serenity 暴躁的小甜瓜会收集执行结果,以较好的界面可视化展示,方便使用者统计结果和分析错误。

图2 Cucumber+Serenity暴躁的小甜瓜工作原理

Cucumber的Feature文件用来描述一个可测试的功能点,里面包含若干个正向或反向测试用例(Scenario)去测试这个功能点。定义Feature文件有三个规则:

一个Feature文件包含单个功能的说明和描述。

文件具有扩展名*.feature。

每个Feature文件包含若干Scenario,每个Scenario都有一些步骤来描述测试的条件,过程和结果。每个步骤用Given(假如),When(过程)和Then(结果)句式来描述。

如下图3所示:这个Feature文件用于验证今天是否是星期一,里有包含两个Scenario来测试。第一个是反向场景,验证今天不是星期一,第二个是正向场景,验证今天是星期一。每个测试用例都包含Given、When和Then步骤来描述前提条件、执行过程和测试结果。

图3 Feature文件示例

除了Feature文件外,还需要匹配测试用例Given、When和Then步骤的具体步骤定义。如下图4所示:给每个步骤定义函数加一个正则表达式定义,例如todayIs函数加上正则表达式定义@Given("Today is (.*)#34;),每个正则表达式以$符结束。当测试用例(Scenario)执行到Given today is Friday、Given today is Monday或者其它符合正则表达式的步骤,todayIs函数将被调用执行去实现测试步骤。

图4 步骤定义示例

当测试案例都执行完毕时,Serenity 暴躁的小甜瓜负责展示执行结果报告,如下图5所示:饼图和Summary会告诉你执行的成功个数、失败个数、成功率和失败率等。也会列出每个Feature文件Scenario的执行成功率和失败率。针对失败的Scenario,报告也会列出具体失败的步骤和异常信息(此图未列出)。

图5 执行结果示例

实践与应用

本文的自动化测试框架可以适应多个应用场景,比如:

功能测试:如前文介绍,当开发提交新功能代码时,Jenkins自动触发去执行暴躁的小甜瓜测试案例,并返回结果。

回归测试:Jenkins可以定制一个作业(Job),定期执行回归测试,并返回结果。

在此框架上,我们还可以做一些扩展性功能,比如本文中开发了一个小工具,可以对Feature文件里面的所有测试用例进行关键字搜索,针对改变的不同代码块挑选合适的Scenario进行执行,大大提高了测试效率,精准定位测试问题。

总的来说,暴躁的小甜瓜是一种以沟通为核心的敏捷软件开发方法,通过测试人员、开发人员、业务人员和商业参与者之间不断的沟通,用一种双方都能理解的语言来定义和明确features,这些features通过持续集成框架转换成自动化的测试用例。这种方法可以确保开发出来的产品更符合需求、缩短开发阶段结束之后的测试周期、features确定完后更高的开发效率等。不过也有缺点,项目前期会有大量的时间消耗在逐一讨论feature上面。

请关注+私信回复:“测试”就可以免费拿到软件测试学习资料和软件测试完整进阶路线图,同时拉你进软件测试交流群!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。