基于BDD技术去书写测试案例脱节的功能需求和覆盖率
发表时间:2023-10-26 07:05:41
文章来源:炫佑科技
浏览次数:130
菏泽炫佑科技
基于BDD技术去书写测试案例脱节的功能需求和覆盖率
BDD 是行为驱动的开发。 它是一种敏捷软件开发技术,是TDD(全称Test)的延伸,即测试驱动开发。 它使用简单易懂的“通用语言”——用语法编写的结构化自然语言来描述测试。 需求并将语言转换为可执行的测试。 由于业务人员、开发人员和测试人员使用相同的“语言”来描述相同的系统和所需的功能,因此可以*大程度地避免表达不一致带来的问题,实现理解上的一致性。 使用通用语言,客户等业务参与者也可以与我们的业务人员和研发团队一起定义系统的行为,从而做出满足客户需求的设计。
BDD鼓励软件项目中开发人员、测试人员、业务人员和业务参与者之间的协作,让开发人员和测试人员尽可能地了解产品经理或业务人员的功能需求,并在开发过程中提供及时的反馈和演示。软件功能状态可以让产品经理或业务人员根据获得的产品研发信息及时调整软件产品功能。 BDD帮助敏捷研发团队专注于识别、理解和构建与业务目标相关的产品特性,并让敏捷研发团队确保所识别的产品特性能够被正确地设计和实现。
本文介绍了一种基于BDD技术编写测试用例的框架,并与流行的持续集成技术相结合,实现自动化测试框架。 该框架自动将用BDD编写的测试用例部署到持续集成系统中。 当开发人员修改代码时,自动触发执行配置的BDD测试用例并获得可视化的执行结果。 通过结果可以找到失败的测试用例。 。 由于测试用例是之前介绍的“通用语言”,开发人员可以清楚地了解失败的原因,并与测试人员进行有效沟通,以解决代码错误或修改不适当的测试用例。
下面,我将从三个部分来介绍这个自动化框架:
1)自动化测试框架概述
2)BDD测试用例详解
3)实践与应用
自动化测试框架概述
在本文的实现中,我们使用Java版本的BDD来实现BDD测试用例,使用Git来管理开发代码和测试用例代码,并使用+Maven+等流行的持续集成框架来实现自动化测试流程。 在介绍自动化框架的工作流程之前基于BDD技术去书写测试案例脱节的功能需求和覆盖率,我们先来熟悉一下这些概念:
它是一个开源的自动化测试工具,可以用普通语言描述测试用例,并且支持BDD。 它本质上是根据正则表达式匹配自然语言描述的测试用例步骤,然后依次执行相应的方法,从而达到测试的目的。
BDD是一个开源工具,可以与BDD结合实现测试用例执行结果的可视化展示和统计,方便用户分析测试结果和问题。
它是实现可持续一体化框架的实施工具。
它是一个开源的应用程序容器引擎,可以将应用程序和依赖包打包到可移植的容器中,然后发布到已部署的Linux或服务器上。
Maven是一个项目管理工具软件,可以通过简短的信息描述来管理项目构建、报告和文档。
整个框架的工作流程是:当开发人员进行代码变更或者测试人员进行测试用例修改时,在Git中提交到待测试分支后,Hook识别出变更,并自动拉取*新的开发代码和测试用例代码。 用Maven打包,发送到网上进行Push和Build,*后发布到部署的应用服务器集群上进行Run,这样*新实现的测试用例就可以运行在*新的开发代码上。 执行完毕后,会自动收集BDD执行结果。 ,通过电子邮件发送给代码提交者,通知他执行结果。 如果所有测试用例的执行结果都通过,则修改后的代码将提交到Git的稳定分支; 如果有失败的测试用例,代码提交将被拒绝。
整个工作流程如图1所示:
图1 工作流程
BDD测试用例详解
如何结合BDD来实现测试用例并展示测试用例执行的结果? 如下图2所示:
1)首先,使用语法编写BDD测试用例。 测试用例按照测试功能点收集在不同的文件中。 每个测试用例都包含测试步骤,例如“Given”、“When”和“Then”。
2) 使用正则表达式映射步骤定义和编写测试用例步骤。 本文中的步骤定义是定义的Java函数,函数中存在测试步骤的具体实现。 执行测试用例时,对于文件中的每个测试用例()步骤,根据正则表达式匹配该步骤定义的函数,然后执行该函数中的内容,以达到测试的目的。
3)当测试执行完成后,BDD会收集执行结果,并以更好的界面直观地展示出来,方便用户统计结果和分析错误。
图2+工作原理
该文件用于描述一个可测试的功能点,其中包含若干个正向或反向测试用例()来测试这个功能点。 定义文件有以下三个规则:
一个文件包含单个函数的描述和描述。
文件的扩展名为 *..
每个文件包含多个文件,每个文件都有一些描述测试条件、过程和结果的步骤。 每个步骤都使用Given(如果)、When(过程)和Then(结果)句子来描述。
如下图3所示: 该文件用于验证今天是否是星期一,包含两个测试。 **个是反向场景,验证今天不是星期一,第二个是正向场景,验证今天是星期一。 每个测试用例都包含Given、When和Then步骤来描述先决条件、执行过程和测试结果。
图3 文件示例
除了文件之外,还需要与测试用例的 Give、When 和 Then 步骤相匹配的特定步骤定义。 如下图4所示:在每个步骤定义函数中添加正则表达式定义,例如在函数@Given("Today is (.*)#34;)中添加正则表达式定义,每个正则表达式以$符号.end.当测试用例()执行到Given Today is、Given Today is或其他与正则表达式匹配的步骤时,将调用该函数来实现测试步骤。
图4 步骤定义示例
当所有测试用例执行完毕后,BDD负责显示执行结果报告,如下图5所示:饼图会告诉你执行成功的次数、失败的次数、成功率和失败率等。还列出了每个文件的执行成功率和失败率。 对于失败,报告中还会列出具体的失败步骤和异常信息(本图中未列出)。
图5 执行结果示例
实践与应用
本文的自动化测试框架可以适配多种应用场景,例如:
功能测试:如上所述,当开发提交新的功能代码时,会自动触发执行BDD测试用例并返回结果。
回归测试:可以自定义一个作业(Job)定期进行回归测试并返回结果。
基于这个框架,我们还可以做一些可扩展的功能。 例如,本文开发了一个小工具,可以对文件中的所有测试用例进行关键字搜索,并根据已更改的不同代码块选择合适的执行,这大大提高了测试用例的效率。 提高测试效率自动化软件开发,准确定位测试问题。
总的来说,BDD是一种以通信为核心的敏捷软件开发方法。 通过测试人员、开发人员、业务人员和业务参与者之间不断的沟通,用双方都能理解的语言来定义和开发BDD。 具体来说,这些通过持续集成框架转换为自动化测试用例。 这种方法可以保证开发的产品更好地满足需求,缩短开发阶段后的测试周期,并确定完成后更高的开发效率。 然而,也有缺点。 在项目的早期阶段,会花费大量的时间来讨论每一个。
请关注并私信回复:“测试”将免费为您提供软件测试学习资料和完整的软件测试进阶路线图,并邀请您加入软件测试交流群!
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等