基于行为驱动开发的单元测试的实现方法、装置和设备与流程

文档序号:31877014发布日期:2022-10-21 22:00阅读:74来源:国知局
基于行为驱动开发的单元测试的实现方法、装置和设备与流程

1.本技术涉及信息系统技术领域,具体涉及一种基于行为驱动开发的单元测试的实现方法、装置和设备。


背景技术:

2.单元测试是将一个程序员或者一个开发团队所编写的,一个完整的类、子程序或者小程序,从完整的系统中隔离出来进行测试。单元测试的目的在于判断某个特定场景下某个特定功能的行为是否符合预期。一般来说,单元测试的结构需要包含针对特定场景的数据准备、特定场景的执行步骤的以及最后预期的执行结果(断言)。
3.在编写单元测试案例的过程中,为了能够更好描述单元测试结构信息,一般有如下两种解决方案:
4.1.通过代码注释的方式,描述单元测试案例场景,以java语言为例,可为//或/**/;
5.2.通过单元测试工具内置的能力,描述单元测试案例场景,如junit 5内置的@displayname注解。
6.但是,现有的解决方案存在缺陷。
7.1.通过注解方式描述单元测试案例结构信息不够直观,数据准备、执行步骤、以及执行结果在代码中的位置是分散的,对应的注解也是分散的,且注解描述的质量依赖于编写单元测试案例的程序员素养。
8.2.通过单元测试工具内置的能力描述测试案例结构完备性不足,以@displayname注解为例,该注解只能用于类层面或方法层面,对于单元测试方法内部的执行步骤以及执行结果无法进行有效的描述。
9.3.无论是注解方式、还是单元测试工具内置的描述能力,都无法将针对单元测试结构的描述信息,体现到测试报告上,这不利于测试人员基于单元测试报告展开手工测试和探索性测试。


技术实现要素:

10.本技术提供一种基于行为驱动开发的单元测试的实现方法、装置和设备,用于解决现有方案无法直观、完备地描述单元测试案例结构信息的问题。
11.第一方面,本技术提供一种基于行为驱动开发的单元测试的实现方法,包括:获取针对单元测试案例标注的结构信息;其中,针对基于用户故事创建的测试类用第一注解标注;针对用户故事中的某一个场景创建的测试方法用第二注解标注;与场景对应的测试方案使用第三注解标注,以便用来为测试方法内置参数,提供测试数据输入;实例化的用户故事场景的验收条件使用scene类的内置方法描述;基于所标注的结构信息,执行单元测试案例,并在执行完成后生成测试报告。
12.在一些可选的实施方式中,所述第一注解采用@story,所述第二注解采用@
scenario,所述第三注解采用@scenariosource和@scenariojsonsource。
13.在一些可选的实施方式中,所述scene类的内置方法包括given()、when()和then()。
14.在一些可选的实施方式中,所述生成测试报告包括:如果验收通过,生成用户场景验收通过测试报告;如果验收不通过,生成用户场景验收不通过测试报告。
15.第二方面,本技术提供一种基于行为驱动开发的单元测试的实现装置,包括:获取模块,被配置成获取针对单元测试案例标注的结构信息;其中,针对基于用户故事创建的测试类用第一注解标注;针对用户故事中的某一个场景创建的测试方法用第二注解标注;与场景对应的测试方案使用第三注解标注,以便用来为测试方法内置参数,提供测试数据输入;实例化的用户故事场景的验收条件使用scene类的内置方法描述;执行模块,被配置成基于所标注的结构信息,执行单元测试案例;验收模块,被配置成在单元测试案例执行完成后生成测试报告。
16.在一些可选的实施方式中,所述第一注解采用@story,所述第二注解采用@scenario,所述第三注解采用@scenariosource和@scenariojsonsource。
17.在一些可选的实施方式中,所述scene类的内置方法包括given()、when()和then()。
18.在一些可选的实施方式中,所述验收模块,进一步被配置成:如果验收通过,生成用户场景验收通过测试报告;如果验收不通过,生成用户场景验收不通过测试报告。
19.第三方面,本技术提供一种计算机设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面所述的基于行为驱动开发的单元测试的实现方法。
20.第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被一个或多个处理器执行时实现如第一方面所述的基于行为驱动开发的单元测试的实现方法。
21.为了解决现有方案无法直观、完备地描述单元测试案例结构信息的问题,本技术提出了一种基于行为驱动开发的单元测试的实现方法、装置和设备及存储介质。本技术对于单元测试案例的结构信息,结合使用注解进行标注和使用scene类的内置方法进行描述,能够直观、完备地描述单元测试案例的结构信息,最终在软件开发流程节点中承上启下,能够起到敏捷和精益实践的效果。
22.与现有方案对比,本技术的优点及其原因描述如下:
23.1.将行为驱动开发技术中关键的“用户故事”、“场景”实现为类层面注解@story、方法测名注解@scenario,将实例化的用户故事验收条件“假如”、“当”、“那么”实现为单元测试代码层面基于函数式编程(functional programming)的given、when、then阶段,能够直观完备地描述数据装备、执行步骤、以及执行结果这些单元测试案例结构;
24.2.@story、@scenario注解以及given、when、then阶段的信息输入来源于梳理的用户故事,能够直观、精准、完备地描述业务目标和软件需求,单元测试案例执行后可生成关于@story、@scenario注解以及given、when、then阶段的相关预置信息,测试报告起到了产品说明文档的作用,能够有效指导测试人员进行手工测试和探索性测试。
25.3.本技术方案对上能够承接软件需求分析人员产出的用户故事场景,对下能够指
导测试人员进行手工测试和探索性测试,从而让单元测试起到敏捷和精益实践的效果。
附图说明
26.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显。附图仅用于示出具体实施方式的目的,而并不认为是对本技术的限制。在附图中:
27.图1是根据本技术的基于行为驱动开发的单元测试的实现方法的一个实施例的流程图;
28.图2是本技术的一个实施例对单元测试案例的结构信息进行标注的过程以及验收过程的流程图;
29.图3是本技术的一个实施例应用的几种注解的原理及用法的示意图;
30.图4是本技术的一个实施例单元测试代码的核心类的实现原理的示意图;
31.图5是根据本技术的基于行为驱动开发的单元测试的实现装置的一个实施例的结构示意图;
32.图6是根据本技术的计算机设备的一个实施例的硬件组成结构示意图。
具体实施方式
33.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
34.请参考图1,图1是根据本技术的基于行为驱动开发的单元测试的实现方法的一个实施例的流程图。该方法可以由计算机设备如服务器实施。
35.如图1所示,本技术的基于行为驱动开发的单元测试的实现方法可包括以下步骤:
36.步骤11、获取针对单元测试案例标注的结构信息。
37.其中,针对基于用户故事创建的测试类用第一注解标注;针对用户故事中的某一个场景创建的测试方法用第二注解标注;与场景对应的测试方案使用第三注解标注,以便用来为测试方法内置参数,提供测试数据输入;实例化的用户故事场景的验收条件使用scene(场景)类的内置方法描述。
38.这里,值得说明的是,注解是java在jdk5时候引入的一种新特性、一种注释机制。注解(也可以称为元数据)为在代码中添加信息提供了一种形式化的方法,使得在代码中任一时刻可以非常方便的使用这些数据。注解类型定义了一种新的特殊接口类型,在接口关键期interface之前加@符号,即用@interface即可区分注解与普通接口声明。java语言中的类、方法、变量、参数和包等都可以被标注。目前大部分框架都可以通过使用注解简化代码提高编码效率。
39.java语言中,scene就是内容的基础类,所有的node(节点)都要装到scene里面去。所以scene就是一个分界线,跟os(operating system,操作系统)相关的,放在stage(舞台)里面。跟用户内容相关的,都在scene里面。
40.步骤12、基于所标注的结构信息,执行单元测试案例,并在执行完成后生成测试报告。
41.这里,生成的测试报告与步骤11中使用的注解以及scene类的内置方法相关。
42.其中,如果验收通过,生成用户场景验收通过测试报告;如果验收不通过,生成用户场景验收不通过测试报告。
43.参考图2,在一些可选的实施方式中,步骤11中对单元测试案例的结构信息进行标注的过程可以可包括如下子步骤:
44.步骤111、基于用户故事创建测试类,用第一注解标注;这里,第一注解例如可以采用@story注解;
45.步骤112、针对用户故事中的某一个场景创建测试方法,用第二注解标注;这里,第二注解例如可以采用@scenario注解;
46.步骤113、使用第三注解标注与场景对应的测试方案,用来为测试方法内置参数,提供测试数据输入;这里,第三注解例如可以采用@scenariosource和@scenariojsonsource;
47.步骤114、使用scene类的内置方法描述实例化的用户故事场景的验收条件;这里,例如可以使用scene类的内置方法中的given()、when()和then()。
48.参考图3,示出了本技术应用的几种注解的原理及用法。
49.其中,@story、@scenario注解基于junit 5的扩展点机制,实现输出测试报告、解析自定义参数的能力,@scenariosource,@scenariojsonsource注解基于junit 5的自定义参数源机制,实现基于类、json的参数数据源注入。各注解的详细用法如图3所示。
50.参考图4,示出了本技术行为驱动开发风格单元测试代码的实现原理。
51.本技术中,利用java 8@functionalinterface特性,实现了行为驱动开发风格的单元测试代码,given、when、then阶段fluent风格的代码主要依赖于phase类及其子类,利用了装饰器设计模式。方案核心类图如图4所示。
52.以上,为了解决现有方案无法直观、完备地描述单元测试案例结构信息的问题,本技术提出了一种基于行为驱动开发的单元测试的实现方法、装置和设备及存储介质。本技术对于单元测试案例的结构信息,结合使用注解进行标注和使用scene类的内置方法进行描述,能够直观、完备地描述单元测试案例的结构信息,最终在软件开发流程节点中承上启下,能够起到敏捷和精益实践的效果。
53.与现有方案对比,本技术的优点及其原因描述如下:
54.1.将行为驱动开发技术中关键的“用户故事”、“场景”实现为类层面注解@story、方法测名注解@scenario,将实例化的用户故事验收条件“假如”、“当”、“那么”实现为单元测试代码层面基于函数式编程(functional programming)的given、when、then阶段,能够直观完备地描述数据装备、执行步骤、以及执行结果这些单元测试案例结构;
55.2.@story、@scenario注解以及given、when、then阶段的信息输入来源于梳理的用户故事,能够直观、精准、完备地描述业务目标和软件需求,单元测试案例执行后可生成关于@story、@scenario注解以及given、when、then阶段的相关预置信息,测试报告起到了产品说明文档的作用,能够有效指导测试人员进行手工测试和探索性测试。
56.3.本技术方案对上能够承接软件需求分析人员产出的用户故事场景,对下能够指导测试人员进行手工测试和探索性测试,从而让单元测试起到敏捷和精益实践的效果。
57.本技术技术方案可以用于财富销售平台及数字化运营平台建设迭代过程中的单元测试案列编写。受限于业务诉求迭代较快,整个研发节奏敏捷化程度较高,为了保证研发
交付质量,单元测试案例的编写就成了研发质量控制必不可少的一环。基于上述方案,可以在单元测试环节,让敏捷研发团队尽可能理解产品经理或业务人员的产品需求,并在软件研发过程中及时反馈和传递研发交付是否符合产品特性。实现了直观、完备地描述单元测试案例结构信息,对上承接软件需求分析人员产出的用户故事场景,对下能够指导测试人员进行手工测试和探索性测试,保证了财富销售平台及数字化运营平台的质量。
58.参考图5,图5是根据本技术的基于行为驱动开发的单元测试的实现装置的一个实施例的结构示意图。
59.如图5所示,本技术的基于行为驱动开发的单元测试的实现装置500可包括:
60.获取模块51,被配置成获取针对单元测试案例标注的结构信息;其中,针对基于用户故事创建的测试类用第一注解标注;针对用户故事中的某一个场景创建的测试方法用第二注解标注;与场景对应的测试方案使用第三注解标注,以便用来为测试方法内置参数,提供测试数据输入;实例化的用户故事场景的验收条件使用scene类的内置方法描述;
61.执行模块52,被配置成基于所标注的结构信息,执行单元测试案例;
62.验收模块53,被配置成在单元测试案例执行完成后生成测试报告。
63.在一些可选的实施方式中,第一注解采用@story,第二注解采用@scenario,第三注解采用@scenariosource和@scenariojsonsource。
64.在一些可选的实施方式中,scene类的内置方法包括given()、when()和then()。
65.在一些可选的实施方式中,验收模块53,进一步被配置成:如果验收通过,生成用户场景验收通过测试报告;如果验收不通过,生成用户场景验收不通过测试报告。
66.需要说明的是,本实施例装置中各个模块的实现细节和技术效果可以参考本技术中其它实施例的说明,在此不再赘述。该装置的每个模块中的实现方案具有多样性,只要能达到模块的目的即可,实际部署中不受限于具体的实施方案。
67.参考图6,图6是根据本技术的用于实现服务器的计算机设备的一个实施例的结构示意图。如图6所示,本技术的计算机设备600可包括:
68.一个或多个处理器601;
69.存储器602,其上存储有一个或多个程序603;
70.处理器601和存储器602等组件可通过总线系统604耦合在一起;总线系统604用于实现这些组件之间的连接通信;
71.当一个或多个程序603被一个或多个处理器601执行时,使得一个或多个处理器601实现如上文方法实施例中所公开的基于行为驱动开发的单元测试的实现方法。
72.其中,总线系统604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线。存储器602可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。处理器601可能是具有信号处理能力的集成电路芯片,可以是通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
73.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被一个或多个处理器执行时实现如上文方法实施例中所公开的基于行为驱动开发的单元测试的实现方法。
74.本技术是参照根据本技术实施例的方法、设备(系统)和计算机程序产品的流程图
和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
75.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
76.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
77.应理解,本技术中术语“系统”和“网络”在本文中常被可互换使用。本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本技术中字符“/”,一般表示前后关联对象是一种“或”的关系。
78.以上所述,仅为本技术的较佳实施例,并非用于限定本技术的保护范围,凡在本技术的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1