CN111158656A - 基于因果树法的测试代码生成方法及装置 - Google Patents

基于因果树法的测试代码生成方法及装置 Download PDF

Info

Publication number
CN111158656A
CN111158656A CN201911417314.0A CN201911417314A CN111158656A CN 111158656 A CN111158656 A CN 111158656A CN 201911417314 A CN201911417314 A CN 201911417314A CN 111158656 A CN111158656 A CN 111158656A
Authority
CN
China
Prior art keywords
service
test
test case
tree
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911417314.0A
Other languages
English (en)
Other versions
CN111158656B (zh
Inventor
杜天文
王敏
陈智胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN201911417314.0A priority Critical patent/CN111158656B/zh
Publication of CN111158656A publication Critical patent/CN111158656A/zh
Application granted granted Critical
Publication of CN111158656B publication Critical patent/CN111158656B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于因果树法的测试代码生成方法及装置,该方法包括:获取业务模型的属性数据,其中,属性数据中包含:业务模型中一个或多个业务属性对象的取值范围;根据属性数据,生成可配置的思维导图;接收对思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。本发明基于思维导图,采用可视化方式生成测试案例的测试代码,减少了代码编写量,降低了测试门槛。

Description

基于因果树法的测试代码生成方法及装置
技术领域
本发明涉及软件开发测试领域,尤其涉及一种基于因果树法的测试代码生成方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
测试驱动开发(Test-Driven Development,TDD)的原理是在开发功能代码之前,先编写单元测试用例,由测试代码确定需要编写什么样的业务逻辑代码,即通过测试驱动整个软件开发的进度。
目前,现有的测试驱动开发中,是由开发人员直接编写代码(例如,编写junit测试代码)来实现测试用例,即测试用例是以代码形式存在的,这种代码形式的测试用例存在如下几点不足:①测试人员难以看懂代码形式的测试用例,也难以参与到测试用例的编写中,从而难以实现充分测试,甚至可能遗漏一些业务场景;②由于开发人员编写测试用例代码的时候,通常是依靠其自身经验来设计测试代码的,难以保证测试用例能够覆盖全部的业务逻辑;③人工编写测试代码,可能存在代码本身错误,而导致测试效率低下;④复杂的业务场景,可能导致测试用例的代码量很大,使得开发人员在测试代码编写上浪费大量的时间;⑤代码形式的测试用例,存在管理不便的缺点。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供一种基于因果树法的测试代码生成方法,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该方法包括:获取业务模型的属性数据,其中,属性数据中包含:业务模型中一个或多个业务属性对象的取值范围;根据属性数据,生成可配置的思维导图;接收对思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
本发明实施例还提供一种基于因果树法的测试代码生成装置,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该装置包括:模块分析模块,用于获取业务模型的属性数据,其中,属性数据中包含:业务模型中一个或多个业务属性对象的取值范围;可视化数据展示模块,用于根据属性数据,生成可配置的思维导图;约束值关系分析模块,用于接收对思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;测试代码生成模块,用于根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
本发明实施例还提供一种计算机设备,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于因果树法的测试代码生成方法。
本发明实施例还提供一种计算机可读存储介质,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该计算机可读存储介质存储有上述基于因果树法的测试代码生成方法的计算机程序。
本发明实施例中,通过对业务模型进行模块分析,在获取到包含业务模型中一个或多个业务属性对象的取值范围的属性数据后,根据获取到的属性数据,生成可配置的思维导图,然后接收对思维导图的配置指令,生成各个业务属性对象在不同业务场景下测试案例对应的因果树,最后根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
通过本发明实施例,通过思维导图展现业务模型中各个业务属性对象的取值,接收对思维导图的可视化配置指令,进而生成不同业务场景下测试案例的测试代码,大大减少了代码编码量,降低了单元测试的门槛,使得没有代码编写经验的测试人员可参与到单元测试中,多维度保证单元测试的测试案例质量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种基于因果树法的测试代码生成方法流程图;
图2为本发明实施例中提供的一种用于模块分析的业务属性对象展示界面示意图;
图3为本发明实施例中提供的一种生成思维导图的操作界面示意图;
图4为本发明实施例中提供的一种业务场景下测试案例对应的因果树示意图;
图5为本发明实施例中提供的一种生成测试案例代码的操作界面示意图;
图6为本发明实施例中提供的一种模块分析参数配置界面示意图;
图7为本发明实施例中提供的一种可选的将可视化测试因果树法生成的测试用例转换为Java测试代码的方法流程图;
图8为本发明实施例中提供的一种基于因果树法的测试代码生成装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
测试驱动开发是敏捷开发中的一个核心实践技术,也是一种设计方法论,其原理是在开发功能代码之前,先编写单元测试的测试案例代码,以确定需要编写什么产品代码。单元测试是指在代码编写过程中,对足够小代码的变动进行分析,先考虑这一小段代码中输入与输出的所有情况(预期),只针对编写的这一部分代码进行测试,直到代码通过所有案例测试为止。
目前,单元测试有以下几点受到约束:
①单元测试案例只有开发人员才能看懂。由于目前的单元测试案例,都是开发人员通过直接写JUNIT测试代码实现的,是以代码级别的形式体现的,测试人员并不能看懂直接用代码写的测试案例,更不可能参与到单元测试案例的编写中,这样可能就会导致案例测试的不充分,业务场景也可能会遗漏;
②测试覆盖率低,所有案例凭经验进行编写。由于是开发人员自己使用代码编写案例,只有开发人员才能看懂,其编写的案例都是依靠自己的经验去设计测试,这样对于开发测试经验不足、需求理解不够的人员就不可能保证测试案例的业务逻辑全覆盖;
③单元测试代码本身的误码。由于Junit测试代码是由开发人员人工手写的,可能会存在编写测试案例代码本身就有错误,在找问题的时候可能大部分精力都是在保证测试代码本身的正确,影响了测试效率;
④测试代码量大。如果涉及到的业务场景较多,那么编写测试案例的代码里量就会很大,往往编写测试案例的代码比产品代码会多好几倍,因此会花费大量的时间在编写测试代码上;
⑤对已有测试案例查询,便利性较差。对于只写在代码中的案例,在查询已有案例的时候,其必须要知道目前有哪些服务的案例以及一些关键字,才能勉强查询,对于熟悉测试代码的人员来说可能没有太大的难度,但是对于新来的成员想找案例的话就比较费时费劲,还需要询问熟悉的同事才能找到。
由上述内容可以看出,目前的单元测试,仅凭借开发人员通过自己的经验编写测试案例,存在业务逻辑没有全部覆盖的风险;且测试案例只能开发人员能够看懂,导致测试案例的复查具有局限性(测试人员或者业务专家都无法参与其中)。另外,编写测试代码本身的不规范也会导致测试案例的错误,同时测试代码的编码量往往是产品代码的好几倍,使得开发人员在编写测试代码时也会花费大量的时间。
为了解决上述问题,本发明实施例中提供了一种基于因果树法的测试代码生成方法,因果树法是以XMind思维导图的形式将业务模型中的各个业务属性对象进行逻辑可视化,适用于经验丰富、对需求理解透彻的人员,因此测试人员和开发人员都可以在此基础上编写测试案例。
图1为本发明实施例中提供的一种基于因果树法的测试代码生成方法流程图,如图1所示,该方法可以包括如下步骤:
S101,获取业务模型的属性数据,其中,属性数据中包含:业务模型中一个或多个业务属性对象的取值范围。
需要说明的是,业务模型是指以软件模型的方式描述业务所涉及的对象、要素,以及它们的属性、行为和彼此之间的关系。本发明实施例中业务模型是指对于有独立业务含义的领域,针对其属性、行为和领域内的关系以表格形式建模起来的模型。
需要注意的是,一个业务模型通常包含很多业务属性对象,本发明实施例通过上述S101获取的各个业务属性对象可以是具有一定业务关联关系的业务属性对象,以便生成这些业务属性对象在不同业务场景下的测试案例(测试用例),从而对这些业务属性对象在不同业务场景下构成的模块进行测试。
可选地,本发明实施例中上述S101在获取各个业务属性对象的取值范围的时候,可以由系统提供在线编辑表格,获取用户在线编辑的一个或多个业务属性对象,以及各个业务属性对象的取值范围;也可以由系统直接导入用户预先创建的包含一个或多个业务属性对象的取值范围的文档(例如,excel文档),来获取各个业务属性对象的取值范围。由此,上述S101可以通过但不限于如下两种方式来实现:
第一种可选的实施方式,获取预先配置的业务模型(业务模型包含:预先配置的各个业务属性对象的取值范围);采用模块分析的方式,对业务模型包含的各个业务属性对象进行分组;获取每个分组包含的一个或多个业务属性对象的取值范围。
第二种可选的实施方式,接收外部导入的模块分析文档,其中,模块分析文档中包含预先配置的业务模型中一个或多个业务属性对象的取值范围。
图2为本发明实施例中提供的一种用于模块分析的业务属性对象展示界面示意图,如图2所示,将业务模型中各个业务属性对象的取值范围以表格的形式展现。可选地,图2所示的各个业务属性对象的取值范围可以是用户预先在excel表格中编写,并导入到平台的,也可以是直接在平台页面中在线编辑与excel表格一样的模板内容,并保存到平台。
本发明实施例将业务服务下每个业务属性的所有可能的取值范围全部罗列出来,其正确值取值,错误值取值以及边界值取值都需要全部可视化在表格中展现。
进一步地,可以按照业务规则,将业务模型中各个业务属性对象进行分组,使得具有业务规则的业务属性对象分为一组,通过将业务模型的各个业务属性对象进行分组,能够将业务逻辑简单化,但不会丢失业务场景,方便编写测试案例,使可能的组合场景尽量简单,降低笛卡儿积的复杂度。
S102,根据属性数据,生成可配置的思维导图。
需要说明的是,本发明实施例在通过S101获取到包含业务模型中一个或多个业务属性对象的取值范围的属性数据之后,可以将获取到的属性数据采用思维导图的可视化展示方式展示出来,以便用户在可视化思维导图中对各个业务属性对象进行排列组合,以生成各个业务属性对象在不同业务场景下的约束值关系。作为一种可选的实施方式,上述S102中的思维导图可以是基于XMind工具绘制的树状图。
图3为本发明实施例中提供的一种生成思维导图的操作界面示意图,如图3所示,本发明实施例预先在平台内配置思维导图模板,使得用户可以一键生成包含各个业务属性对象在不同业务场景下的约束值关系的思维导图。
S103,接收对思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值。
具体地,上述S103可以通过如下步骤来实现:接收第一配置指令,其中,第一配置指令用于配置各个业务属性对象各个业务场景下的约束值关系;接收第二配置指令,其中,第二配置指令用于配置各个业务场景对应的观测项和预期值;根据每个业务场景下各个业务属性对象之间的约束值关系,以及每个业务场景对应的观测项和预期值,生成每个业务场景对应的因果树。需要说明的是,当用户通过第一配置指令在思维导图中配置各个业务属性对象各个业务场景下的约束值关系的时候,可以将各个业务属性对象按照不同的业务场景进行排列组合,组合的方式包括但不限于:笛卡尔积组合(用于分析正确值数据项的相互影响)、散列组合(用于分析错误值的预期报错),并以XMind的思维导图进行表达。在通过思维导图可视化配置不同业务场景下测试案例的因果树后,系统能够自动解析XMind格式的约束关系值分析文档并自动生成可执行的Java语言的Junit测试代码。
由于思维导图是以可视化的方式展示业务模型中的各个属性对象,使得用户能够在思维导图中对各个业务属性对象进行组合,对各个业务属性对象在不同业务场景下的约束值关系进行分析,降低了测试案例的编写门槛,既能够适用于开发人员,也能够适用于测试人员、业务需求方、业务专家等没有代码编写经验的人员。
需要注意的是,由于需要人为配置各个业务属性对象在各个业务场景下的约束值关系,因而,需要具有一定开发测试经验的人才能够实现业务逻辑的尽量全覆盖。
由于每个业务场景下,对于测试数据均应该得到对应的预期测试结果数据,因而,在思维导图中配置完成不同业务场景下各个属性对象之间的约束值关系后,还可以在思维导图中通过可视化方式配置不同业务场景对应的观测项和预期值,得到图4所示的测试案例对应的因果树,从而实现可视化编写测试案例的目的。在自动生成思维导图绘制的因果树后,系统能够将开发或者测试人员组合好的各个业务场景的因果树自动转换为工具平台中的测试案例,增强了测试逻辑的可视化效果,简洁优雅,便于走查,不需裁剪等价类案例。
需要注意的是,本发明实施例提供的测试案例代码生成方法中,对于观测项的管理,可支持语义转换功能,使得开发人员或测试人员能够使用业务领域内通用的语言配置不同业务场景对应的观测项。在对业务模型进行模块分析完成后,开发人员或测试人员可以将此业务模块观测的预期值及观测方法统一的维护到平台观测项模块,其形式相当于将观测方法以及预期值映射为所有用户都可以看懂的自然语言。如果在模块分析完成后将观测项维护进平台后,在思维导图中编写约束关系案例时就只需将所要观测的有自然语义标识的观测名称放置到对应的组合关系案例中。平台会自动根据观测项语义转换便可生成对应的Java断言程序语句。
S104,根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
需要说明的是,本发明实施例中每个因果树对应各个业务属性对象在一个业务场景下对应的约束值关系,以及不同约束值关系对应的预期测试结果数据,通过对用户配置的预期测试结果数据进行语义化处理(预先可以建立自然语言观测项与代码之间的关联关系),能够生成不同约束值关系对应的可视化测试案例,每个可视化测试案例对应一个业务场景。
对于每个可视化测试案例,以一个Java类,自动生成测试案例代码(Junit测试代码),一个测试案例对应该类下的一个类方法,以Java反射特性将准备的数据赋值给各个业务属性对象,并执行业务服务方法,最后以断言语句检验观测项中预期值的正确性。在编写产品代码的同时不断使用生成的测试案例代码(Junit测试代码)进行验证,直到所有平台产生的Junit代码都运行成功。
图5为本发明实施例中提供的一种生成测试案例代码的操作界面示意图,如图5所示,本发明实施例能够将基于因果树法生成的可视化测试案例一键转换为相应的测试代码。
需要注意的是,在将因果树中的各个业务属性对象之间的约束值关系、观测项和预期值转换为对应的测试案例的时候,需要对因果树中的内容进行解析,结合对业务模型的模块分析,生成一个能够转换为可执行的junit测试代码的测试案例,同时该测试案例又可以作为可视化案例使业务专家、测试人员以及开发人员都能看懂。测试案例的数据可模拟数据表存储、接口数据以及类属性并且通过不同的数据模拟生成对应的测试代码,使得平台能够读懂用户需要模拟什么样的数据进行测试。
由上可知,本发明实施例提供的基于因果树法的测试代码生成方法,通过对业务模型进行模块分析,在获取到包含业务模型中一个或多个业务属性对象的取值范围的属性数据后,根据获取到的属性数据,生成可配置的思维导图,然后接收对思维导图的配置指令,生成各个业务属性对象在不同业务场景下测试案例对应的因果树,最后根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
通过本发明实施例提供的基于因果树法的测试代码生成方法,通过思维导图展现业务模型中各个业务属性对象的取值,接收对思维导图的可视化配置指令,进而生成不同业务场景下测试案例的测试代码,大大减少了代码编码量,降低了单元测试的门槛,使得没有代码编写经验的测试人员可参与到单元测试中,多维度保证单元测试的测试案例质量。
在一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成方法还可以包括如下步骤:接收代码下载指令,其中,代码下载指令用于下载各个测试案例对应的测试代码。仍以图5为例,可以通过下载按钮,下载每个模块分析下各个测试案例的测试代码。
在一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成方法还可以包括如下步骤:接收参数配置指令,其中,参数配置指令用于配置各个业务属性对象的取值范围。通过对各个业务属性对象的取值范围进行配置,使得生成测试案例的各个业务属性对象具有复用的优点,以便快速、高效地生成更多的测试案例。
图6为本发明实施例中提供的一种模块分析参数配置界面示意图,如图6所示,业务模型模块分析分组后的各个业务属性对象是可以编辑修改的,对于修改部分可同时同步更新约束关系生成的测试案例内容。因此对于修改或者新增的内容不会影响旧案例的执行,使模块的复用以及重构更加方便。一个新的用户故事大多数情况会是增加一个行为,或者增加多个数据元素形成新的场景。而大多情况下,原来分析对应业务场景的业务模型分析和测试数据选用都是可复用的。平台提供了对原有业务模型添加数据元素的功能,同时也可在原有业务模型分析下添加新的行为(服务或方法)。这样就可使得新的故事可复用原有的业务模型分析(测试数据)和场景分析(测试数据组合、观测方法)的成果。只需要改变新故事对应的预期结果就能形成新故事的测试用例。
需要说明的是,采用本发明实施例提供的基于因果树法的测试代码生成方法,可以开发一个将可视化测试因果树法生成的测试用例转换为可执行测试代码的软件平台,该软件平台还可以以模块分析为父键表各个测试案例为子表的形式存储于平台数据库中,并将数据内容可视化的展现在平台浏览器中,方便用户浏览查看。优选地,该软件平台还可以提供高效的用例索引机制,根据产品、组件、约束值关系分组等多个分级维度查询业务模型的模块分析文档、场景分析文档,以及自动生成的测试案例可执行测试代码程序。
图7为本发明实施例中提供的一种可选的将可视化测试因果树法生成的测试用例转换为Java测试代码的方法流程图,如图7所示,以业务模型为基准,依据边界值法、等价类法或错误推算法的测试数据确定模块分析的测试模型,测试数据可以是由excel表格的形式上传至平台的数据,也可以是通过平台提供在线编辑页面新增的表格形式的数据。按照业务规则对业务模型中的各个业务属性对象进行分组,根据分组后的数据,在思维导图中接收用户采用不同组合策略对各个业务属性对象执行的排列组合操作,平台自动生成包含约束值关系的因果树,可选地,思维导图格式的因果树可通过平台下载。由因果树法所生成的约束值关系表自动转换为测试案例,所有案例都可在平台中维护和展现,且测试案例根据模块分析以及测试服务做了明确的归类,用户可以较为快速的定位到需要查看的测试案例位置。对于平台中的测试案例,所有案例都可以通过平台算法处理,生成可执行测试案例代码(即junit测试代码),并提供代码下载功能,用户可以将下载的测试代码直接拷贝到集成开发环境中运行。另外,对于平台中的所有数据都可以通过平台检索功能查询出来,提供多个分级维度的查询功能,可根据产品、业务服务、约束值关系分组等查询到业务模型分析文档、场景分析文档及自动生成的测试代码程序。
基于同一发明构思,本发明实施例中还提供了一种基于因果树法的测试代码生成装置,如下面的实施例所述。由于该装置实施例解决问题的原理与基于因果树法的测试代码生成方法相似,因此该装置实施例的实施可以参见方法的实施,重复之处不再赘述。
图8为本发明实施例中提供的一种基于因果树法的测试代码生成装置示意图,如图8所示,该装置包括:模块分析模块81、可视化数据展示模块82、约束值关系分析模块83和测试代码生成模块84。
其中,模块分析模块81,用于获取业务模型的属性数据,其中,属性数据中包含:业务模型中一个或多个业务属性对象的取值范围;可视化数据展示模块82,用于根据属性数据,生成可配置的思维导图;约束值关系分析模块83,用于接收对思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;测试代码生成模块84,用于根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
可选地,上述可视化数据展示模块82生成的思维导图可以是基于XMind工具绘制的树状图。
由上可知,本发明实施例提供的基于因果树法的测试代码生成装置,通过模块分析模块81对业务模型进行模块分析,获取包含业务模型中一个或多个业务属性对象的取值范围的属性数据;通过可视化数据展示模块82根据获取到的属性数据,生成可配置的思维导图;通过约束值关系分析模块83接收对思维导图的配置指令,生成各个业务属性对象在不同业务场景下测试案例对应的因果树,最后通过测试代码生成模块84根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
通过本发明实施例提供的基于因果树法的测试代码生成装置,通过思维导图展现业务模型中各个业务属性对象的取值,接收对思维导图的可视化配置指令,进而生成不同业务场景下测试案例的测试代码,大大减少了代码编码量,降低了单元测试的门槛,使得没有代码编写经验的测试人员可参与到单元测试中,多维度保证单元测试的测试案例质量。
在一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成装置中,上述约束值关系分析模块83可以具体用于接收第一配置指令,其中,第一配置指令用于配置各个业务属性对象各个业务场景下的约束值关系;接收第二配置指令,其中,第二配置指令用于配置各个业务场景对应的观测项和预期值;根据每个业务场景下各个业务属性对象之间的约束值关系,以及每个业务场景对应的观测项和预期值,生成每个业务场景对应的因果树。
一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成装置中,模块分析模块81可以用于获取预先配置的业务模型,其中,业务模型包含:预先配置的各个业务属性对象的取值范围;采用模块分析的方式,对业务模型包含的各个业务属性对象进行分组;获取每个分组包含的一个或多个业务属性对象的取值范围。
另一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成装置中,模块分析模块81可以用于接收外部导入的模块分析文档,其中,模块分析文档中包含预先配置的业务模型中一个或多个业务属性对象的取值范围。
在一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成装置还可以包括:参数配置模块85,用于接收参数配置指令,其中,参数配置指令用于配置各个业务属性对象的取值范围。
在一种可选的实施例中,本发明实施例提供的基于因果树法的测试代码生成装置还可以包括:代码下载模块86,用于接收代码下载指令,其中,代码下载指令用于下载各个测试案例对应的测试代码。
基于同一发明构思,本发明实施例还提供了一种计算机设备,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于因果树法的测试代码生成方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,用以解决现有的测试驱动开发中,代码形式的测试用例,存在可读性差、容易出错、管理不便,且测试效率低的技术问题,该计算机可读存储介质存储有上述基于因果树法的测试代码生成方法的计算机程序。
综上所述,本发明实施例提供了一种基于因果树法的测试代码生成方法、装置、计算机设备及计算机可读存储介质,支持用户基于思维导图可视化配置不同业务场景下测试案例的因果树,具有更好的可视化以及可读性,对于不会编写代码的用户(例如,业务专家、测试人员等)都可以看懂以前只有开发人员才能看懂的测试案例,而测试案例又可以转换生成可执行的测试代码,因此对于开发人员执行测试案例也提供了方便。本发明实施例能够提供通用语言的测试案例,使得业务专家、测试人员可以提早的接触单元测试,与开发人员一起进行单元测试复查以及编写,保证测试质量。需要注意的是,通过思维导图可视化展示业务模型的各个业务属性对象,使得用户可以直观地对各个业务属性对象进行排列组合,以尽可能多的覆盖不同的业务场景,尽可能保证所有的业务场景都能够测试到,在编写产品前就将风险降到最低,提早发现问题,减少之后修改缺陷带来的风险以及工作量。
需要说明的是,产品的业务代码主架构都是以业务模型为基准,而模块分析也是以业务模型为基准,因此模块分析中的业务属性以及业务服务行为都是与产品代码架构一一对应的,而约束值关系分析则是模块分析的模块分组分出来即是它的子集,因此在约束值关系分析下编写的测试案例其测试数据以及观测项的属性都在产品代码架构中,这样通过本发明提供的基于因果树法的测试代码生成方法及装置,能够将不同约束值关系的可视化测试案例,转换为可执行的代码级别的测试代码,使得不同角色人员在一起讨论测试案例及测试场景成为了可能,也给开发人员之后根据单元测试案例所编写的代码更有信心,为测试驱动开发提供了方便的生成测试代码的功能,同时减少开发人员的编写测试代码工作量。另外,本发明实施例通过全方位的检索功能,对于已测试的案例可以很方便的检索并展示出来。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于因果树法的测试代码生成方法,其特征在于,包括:
获取业务模型的属性数据,其中,所述属性数据中包含:所述业务模型中一个或多个业务属性对象的取值范围;
根据所述属性数据,生成可配置的思维导图;
接收对所述思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;
根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
2.如权利要求1所述的方法,其特征在于,所述思维导图为基于XMind工具绘制的树状图。
3.如权利要求2所述的方法,其特征在于,接收对所述思维导图的配置指令,生成一个或多个因果树,包括:
接收第一配置指令,其中,所述第一配置指令用于配置各个业务属性对象各个业务场景下的约束值关系;
接收第二配置指令,其中,所述第二配置指令用于配置各个业务场景对应的观测项和预期值;
根据每个业务场景下各个业务属性对象之间的约束值关系,以及每个业务场景对应的观测项和预期值,生成每个业务场景对应的因果树。
4.如权利要求1所述的方法,其特征在于,获取业务模型的属性数据,包括:
获取预先配置的业务模型,其中,所述业务模型包含:预先配置的各个业务属性对象的取值范围;
采用模块分析的方式,对所述业务模型包含的各个业务属性对象进行分组;
获取每个分组包含的一个或多个业务属性对象的取值范围。
5.如权利要求1所述的方法,其特征在于,获取业务模型的属性数据,包括:
接收外部导入的模块分析文档,其中,所述模块分析文档中包含预先配置的业务模型中一个或多个业务属性对象的取值范围。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收参数配置指令,其中,所述参数配置指令用于配置各个业务属性对象的取值范围。
7.如权利要求1所述的方法,其特征在于,在根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码之后,所述方法还包括:
接收代码下载指令,其中,所述代码下载指令用于下载各个测试案例对应的测试代码。
8.一种基于因果树法的测试代码生成装置,其特征在于,包括:
模块分析模块,用于获取业务模型的属性数据,其中,所述属性数据中包含:所述业务模型中一个或多个业务属性对象的取值范围;
可视化数据展示模块,用于根据所述属性数据,生成可配置的思维导图;
约束值关系分析模块,用于接收对所述思维导图的配置指令,生成一个或多个因果树,每个因果树对应各个业务属性对象在一个业务场景的测试案例,每个业务场景的测试案例包括:各个业务属性对象的约束值关系、观测项和预期值;
测试代码生成模块,用于根据每个因果树中各个业务属性对象的取值范围,以及每个因果树对应测试案例对应的约束值关系、观测项和预期值,生成每个测试案例对应的测试代码。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述基于因果树法的测试代码生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7任一项所述基于因果树法的测试代码生成方法的计算机程序。
CN201911417314.0A 2019-12-31 2019-12-31 基于因果树法的测试代码生成方法及装置 Active CN111158656B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911417314.0A CN111158656B (zh) 2019-12-31 2019-12-31 基于因果树法的测试代码生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911417314.0A CN111158656B (zh) 2019-12-31 2019-12-31 基于因果树法的测试代码生成方法及装置

Publications (2)

Publication Number Publication Date
CN111158656A true CN111158656A (zh) 2020-05-15
CN111158656B CN111158656B (zh) 2023-05-02

Family

ID=70560341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911417314.0A Active CN111158656B (zh) 2019-12-31 2019-12-31 基于因果树法的测试代码生成方法及装置

Country Status (1)

Country Link
CN (1) CN111158656B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699287A (zh) * 2020-12-28 2021-04-23 中国科学院南京地理与湖泊研究所 可配置的模型数据自动预处理与分发方法和系统
CN115131160A (zh) * 2022-08-30 2022-09-30 创智和宇信息技术股份有限公司 医保信息平台及其基于规划树配置医保政策的方法
CN115840715A (zh) * 2023-02-27 2023-03-24 北京徐工汉云技术有限公司 软件测试管理方法、装置和存储介质
CN117009249A (zh) * 2023-09-15 2023-11-07 天津赛象科技股份有限公司 自动生成接口用例和代码的测试方法、系统及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004107087A2 (en) * 2003-05-29 2004-12-09 Flextronics Design Limited Generating test cases
JP2010102624A (ja) * 2008-10-27 2010-05-06 Fujitsu Ltd テストケース生成プログラムとテストケース生成装置およびテストケース生成方法
US9268537B1 (en) * 2014-04-29 2016-02-23 The Mathworks, Inc. Automatic generation of domain-aware phase ordering for effective optimization of code for a model
CN105786509A (zh) * 2016-02-29 2016-07-20 浪潮软件集团有限公司 一种业务流程图形化展现方法
CN109388559A (zh) * 2018-09-17 2019-02-26 中国银行股份有限公司 可视化测试分析方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004107087A2 (en) * 2003-05-29 2004-12-09 Flextronics Design Limited Generating test cases
JP2010102624A (ja) * 2008-10-27 2010-05-06 Fujitsu Ltd テストケース生成プログラムとテストケース生成装置およびテストケース生成方法
US9268537B1 (en) * 2014-04-29 2016-02-23 The Mathworks, Inc. Automatic generation of domain-aware phase ordering for effective optimization of code for a model
CN105786509A (zh) * 2016-02-29 2016-07-20 浪潮软件集团有限公司 一种业务流程图形化展现方法
CN109388559A (zh) * 2018-09-17 2019-02-26 中国银行股份有限公司 可视化测试分析方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699287A (zh) * 2020-12-28 2021-04-23 中国科学院南京地理与湖泊研究所 可配置的模型数据自动预处理与分发方法和系统
CN112699287B (zh) * 2020-12-28 2024-02-20 中国科学院南京地理与湖泊研究所 可配置的模型数据自动预处理与分发方法和系统
CN115131160A (zh) * 2022-08-30 2022-09-30 创智和宇信息技术股份有限公司 医保信息平台及其基于规划树配置医保政策的方法
CN115840715A (zh) * 2023-02-27 2023-03-24 北京徐工汉云技术有限公司 软件测试管理方法、装置和存储介质
CN117009249A (zh) * 2023-09-15 2023-11-07 天津赛象科技股份有限公司 自动生成接口用例和代码的测试方法、系统及介质

Also Published As

Publication number Publication date
CN111158656B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN110764753B (zh) 一种业务逻辑代码生成方法、装置、设备及存储介质
CN111158656B (zh) 基于因果树法的测试代码生成方法及装置
US8225288B2 (en) Model-based testing using branches, decisions, and options
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
US10877874B2 (en) Systems and methods for modeling and generating test requirements for software applications
CN111832236B (zh) 一种芯片回归测试方法、系统、电子设备及存储介质
US20120116561A1 (en) Program testing apparatus, method of testing a program, and program testing program
CN106446412B (zh) 一种航空电子系统基于模型的测试方法
US20140214396A1 (en) Specification properties creation for a visual model of a system
EP1548581A2 (en) Methods, apparatus and programs for system development
CN111143228B (zh) 基于决策表法的测试代码生成方法及装置
CN107797805B (zh) 一种代码封装方法、装置及计算机可读存储介质
KR101352383B1 (ko) Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
Oluwagbemi et al. Automatic generation of test cases from activity diagrams for UML based testing (UBT)
Häser et al. An integrated tool environment for experimentation in domain specific language engineering
Elekes et al. Assessing the specification of modelling language semantics: a study on UML PSSM
CN113051262B (zh) 一种数据质检方法、装置、设备及存储介质
CN113672509A (zh) 自动化测试方法、装置、测试平台及存储介质
CN114647568A (zh) 自动化测试方法、装置、电子设备及可读存储介质
Tatale et al. A Survey on Test Case Generation using UML Diagrams and Feasibility Study to Generate Combinatorial Logic Oriented Test Cases.
Jakšić et al. Evaluating the usability of a visual feature modeling notation
CN109669868A (zh) 软件测试的方法及系统
Bicevskis et al. Data quality model-based testing of information systems
Mohacsi et al. AI-based enhancement of test models in an industrial model-based testing tool
Deuter et al. Measuring the software size of sliced V-model projects

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant