CN113157572A - 一种测试案例生成方法、系统、电子设备及存储介质 - Google Patents

一种测试案例生成方法、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN113157572A
CN113157572A CN202110415951.5A CN202110415951A CN113157572A CN 113157572 A CN113157572 A CN 113157572A CN 202110415951 A CN202110415951 A CN 202110415951A CN 113157572 A CN113157572 A CN 113157572A
Authority
CN
China
Prior art keywords
test case
unit test
template
code
unit
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
CN202110415951.5A
Other languages
English (en)
Other versions
CN113157572B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110415951.5A priority Critical patent/CN113157572B/zh
Publication of CN113157572A publication Critical patent/CN113157572A/zh
Application granted granted Critical
Publication of CN113157572B publication Critical patent/CN113157572B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本公开提供了一种测试案例生成方法,可用于金融领域或其他领域,包括:根据单元测试用例模板生成多条单元测试用例;将每条单元测试用例解析为相应的单元测试案例;根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码;根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。本公开还提供了一种测试案例生成系统、电子设备及计算机可读存储介质。

Description

一种测试案例生成方法、系统、电子设备及存储介质
技术领域
本公开涉及计算机程序自动化测试领域,具体涉及一种测试案例生成方法、系统、电子设备及存储介质。
背景技术
UTDD(Unit Test Driven Development)单元测试驱动开发,是敏捷开发中的一项核心实践和技术,是一种方法论。思路及核心是通过测试来推进整个开发的进行,表现为测试代码优先于业务代码,先写单元测试代码,测试代码确定需要编写什么产品代码,由此帮助程序员来提升开发质量及效率。
UTDD测试驱动开发的工作流程主要包括以下几个步骤:
1、先写测试用例,从用户角度描述应用的新功能
2、基于测试用例编写单元测试代码
3、编写最少量的应用代码使上面编写的单元测试代码通过。
4、运行所有的测试,然后看到所有测试通过
5、对代码进行重构(包括功能测试代码及测试代码重构),抽取公用方法。
现有技术中用来生成单元测试案例的工具比较多,比如evosuite等,但此类工具生成单元测试案例的前提是开发已经实现好程序源码,工具基于程序源码进行单元测试案例生成。目前现有单元测试案例生成方式不适用UTDD测试驱动开发,UTDD测试驱动开发是需要先写测试案例代码,然后再开发程序源码。
发明内容
为解决上述现有技术中存在的技术问题,本公开提供了一种测试案例生成方法、系统、电子设备及存储介质,克服了现有技术对单元测试案例生成依赖程序源码的缺点,提供一种可以支持UTDD测试驱动开发的单元测试案例生成系统及方法。
本公开的第一个方面提供了一种测试案例生成方法,包括:根据单元测试用例模板生成多条单元测试用例;将每条单元测试用例解析为相应的单元测试案例;根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码;根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。
进一步地,该方法还包括:利用所述单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
进一步地,该方法还包括:根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。
进一步地,根据单元测试案例模板将每条语言代码生成单元测试案例代码文件包括:根据全局配置文件获取所述单元测试案例模板及各语言代码的保存路径,并读取各语言代码;根据所述单元测试案例模板将各语言代码生成单元测试案例代码文件。
进一步地,每条单元测试用例包括:用例名称、用例预置条件、执行的操作及检测断言。
进一步地,单元测试用例中每一行对应一条单元测试用例。
进一步地,每条单元测试用例解析为相应的单元测试案例包括:将单元测试用例中每一行对应的单元测试用例解析为一单元测试案例,并将所有行对应的单元测试用例解析为一个单元测试案例类。
进一步地,语言代码为Java语言代码或C++语言代码或C#语言代码或Python或IOS语言代码中的一种或多种。
本公开的第二个方面提供了一种测试案例生成系统,包括:单元测试用例生成模块,用于根据单元测试用例模板生成多条单元测试用例;用例解析模块,用于将每条单元测试用例解析为相应的单元测试案例;关键词解析模块,用于根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码;案例代码生成模块,用于根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。
进一步地,该系统还包括:程序测试模块,用于根据所述单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
进一步地,该系统还包括:模板定义模块,用于根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。
进一步地,案例代码生成模块用于根据单元测试案例模板对每条语言代码生成单元测试案例代码文件包括:根据全局配置文件获取所述单元测试案例模板及各语言代码保存路径,并读取各语言代码;根据所述单元测试案例模板对各语言代码生成单元测试案例代码文件。
本公开的第三个方面提供了一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现本公开的第一个方面提供的测试案例生成方法。
本公开的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开的第一个方面提供的测试案例生成方法。
本公开提供的一种测试案例生成方法、系统、电子设备及存储介质,克服了现有技术中现有的生成单元测试案例的工具都需要依赖开发程序的源码,不适用UTDD测试驱动开发的工作模式的缺点,基于本方法及系统可以在开发人员完成UTDD测试案例设计的同时即可生成单元测试案例代码,可以大幅度降低开发人员编写单元测试案例代码的成本,提高工作效率;另外,在UTDD测试驱动开发中应用本发明生成单元测试案例代码,有效保障软件产品质量。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的测试案例生成方法的应用场景;
图2示意性示出了根据本公开一实施例的测试案例生成方法的流程图;
图3示意性示出了根据本公开一实施例的生成单元测试案例代码文件的流程图;
图4示意性示出了根据本公开另一实施例的测试案例生成方法的流程图;
图5示意性示出了根据本公开再一实施例的测试案例生成方法的流程图;
图6示意性示出了根据本公开一实施例的测试案例生成系统的架构图;
图7示意性示出了根据本公开一实施例的测试案例生成系统的方框图;
图8示意性示出了根据本公开一实施例的案例代码生成模块的方框图;
图9示意性示出了根据本公开另一实施例的测试案例生成系统的方框图;
图10示意性示出了根据本公开一实施例的适于实现上文描述的方法的电子设备方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
本公开的实施例提供了一种测试案例生成方法和系统。基于本方法及系统可以在开发人员完成UTDD测试案例设计的同时即可生成单元测试案例代码,可以大幅度降低开发人员编写单元测试案例代码的成本,提高工作效率;另外,在UTDD测试驱动开发中应用本发明生成单元测试案例代码,有效保障软件产品质量。
图1示意性示出了根据本公开实施例的可以应用于测试案例生成方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、网络102和服务器103。网络102用以在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户(如开发人员)可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种通讯客户端应用,例如各软件编程系统、网页浏览器应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器103可以是提供各种服务的服务器,例如对用户利用终端设备101所按照的应用程序提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等进行分析处理,并将处理结果(例如根据用户请求获取测试案例文件、信息或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的测试案例生成方法一般可以由服务器103执行。相应地,本公开实施例所提供的测试案例生成系统一般可以部署于服务器103中。本公开实施例所提供的测试案例生成方法也可以由不同于服务器103且能够与终端设备101和/或服务器103通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于测试案例生成系统也可以设置于不同于服务器103且能够与终端设备101和/或服务器103通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的测试案例生成方法的流程图。
如图2所示,该测试案例生成方法包括:
在操作S201,根据单元测试用例模板生成多条单元测试用例。
本公开实施例中,单元测试(Unit Test)是指对软件中的最小可测试单元进行检查和验证,用于检验被测试代码的一个很小的、很明确的功能是否正确。单元测试用例是指检查程序的行为是否符合设计规格,程序的行为就是某种输入时会产生相应输出结果,因此通过单元测试用例应完成以下工作:设定输入数据、执行程序、验证输出是否符合预期。例如,实现某一程序系统的用户登录成功的测试用例可以为:Given:userName输入张三;When:调用登录方法;Then:验证弹出提示:请输入密码,案例名称为:verifyNoPasswordInput。其中,Given、When、Then为关键词,“张三”等为程序行为的输入值。需说明的是,该案例为一示例性的案例说明,并不构成本公开中测试用例的限定。
根据本公开的实施例,在根据单元测试用例模板生成多条单元测试用例之前,该方法还包括:根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。其中,根据实际需求而定,根据预置语法规则定义并生成的模板包括但不仅限于前面所述的单元测试用例模板、单元测试案例模板及关键字定义模板。
开发人员在UTDD测试驱动开发时,可基于单元测试用例模板来编写多条单元测试用例,例如:多条Xls单元测试用例,其中,每一条单元测试用例对应Xls单元测试用例中的每一行,即一份Xls单元测试用例包括多行单元测试用例。本公开实施例中,Xls单元测试用例是指以Xls电子表格形式展示的单元测试用例。
本公开的实施例中,开发人员可根据开发前的需求文档进行测试用例的编写,用来检测后续的程序功能是否实现,本发明对开发人员进行用例编写的方式不作限定。
具体地,单元测试用例的设计遵循单元测试设计原则。在单元测试用例模板中,其包含:案例名称、案例分类、关键词(Given、When、Then等)、案例示例等列信息,即至少包括用例名称、用例预置条件、执行的操作及检测断言。每条单元测试用例需至少包括声明输入数据和预期输出数据等。
本公开实施例中,单元测试用例设计原则满足以下特性:1)简单,只测试一个需求;2)符合Given(测试预设,初始状态或前置条件)、When(执行的操作)、Then(需要检测的断言)格式等;3)速度快;4)包含断言;5)可以重复执行。
关键字定义模板,用于在单元测试用例到单元测试案例代码转换过程中,将文本或者符号定义为关键字,即根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码。关键字定义模板包括但不仅限于关键词名称、定义及相应的解析后对应的代码等,如:关键词“Given#”表示“Given段代码注释”,其解析后对应的语言代码为“//Given”。
单元测试案例模板,用于在本公开实施例提供的方法进行用例解析及关键词解析后生成的语言代码,将生成的语言代码根据单元测试案例模板生成单元测试案例代码文件。该单元测试案例模板中定义单元测试案例代码编写格式、注释等信息。
在操作S202,将每条单元测试用例解析为相应的单元测试案例。
对开发人员编写的单元测试用例进行解析,将生成的多条单元测试用例中的每一条用例解析为一具体的单元测试案例,即在Xls单元测试用例是指将Xls中定义的每一行单元测试用例进行解析为具体的单元测试案例,该具体的单元测试案例包括:Given、When、Then等步骤。另外,同时将整个Xls中的单元测试用例解析为一个单元测试案例类,如:一个单元测试案例Java类等。
在本公开实施例中,生成单元测试案例则需要按照与对应的单元测试案例模板,声明输入数据和预期输出数据,后续执行程序代码,将实际执行结果(实际输出数据)与预期输出数据进行断言比较。即开发人员根据单元测试用例模板生成多条单元测试用例后,然后调用单元测试案例模板,即可基于该多条单元测试用例生成相应的单元测试案例。
在操作S203,根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码。
采用关键字定义模板对每条单元测试案例中的关键词进行解析,如在Xls单元测试用例中,Given列里的内容为:“a小于100”,其中“小于”为关键字定义模板里面定义的关键字,在进行xls单元测试用例转Java代码时会直接转换为:“a<100”,即变成Java语言可接受、可编译的文本或者符号,单元测试案例模板定义主要根据单元测试案例的写法,包括:案例方法名、案例方法体,案例方法体中包含Given、When、Then等操作步骤,这些不依赖于程序源码(指开发人员完成的程序代码)可以直接定义。需说明的是,上述仅是关键词解析说明的一个示例,并不构成本公开中关键词进行解析的适用性及解析方式的限定。
在操作S204,根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。
具体地,根据开发人员源代码的语言类型,并将解析出的关键词转换成相应的语言代码,该语言代码可以为Java语言代码或C++语言代码或C#语言代码或Python或IOS语言代码中的一种或多种,则对应生成的单元测试案例代码文件中的代码语言为Java语言代码或C++语言代码或C#语言代码或Python或IOS语言代码中的一种或多种。
其中,如上述的一张Xls单元测试用例中的所有单元测试用例转换成的语言代码可生成在一份单元测试案例代码文件中,该所有单元测试用例可以实现某一模块功能的所有测试用例或相同类功能的测试用例,本公开对一张Xls单元测试用例中的测试用例数量及实现的功能测试类型不做限定。
如图3所示,根据单元测试案例模板将每条语言代码生成单元测试案例代码文件包括:
在操作S301,根据全局配置文件获取该单元测试案例模板及各语言代码的保存路径,并读取各语言代码。
在操作S302,根据所该单元测试案例模板将各语言代码生成单元测试案例代码文件。
本公开实施例中,全局配置文件包括但不仅限于单元测试案例模板及各语言代码的保存路径,通过读取单元测试案例模板及各语言代码的保存路径,即可调用单元测试案例模板识别各语言代码并相应的生成各语言代码,如上述的Xls单元测试用例的多行单元测试用例所最后生成的各语言代码可生成于一份单元测试案例代码文件中,后续开发人员利用该单元测试案例代码文件即可自动测试其开发程序的各功能是否成功实现,起到驱动开发人员进行程序开发及测试的作用。
如图4所示,在根据单元测试案例模板将每条语言代码生成单元测试案例代码文件之后,该方法还包括:
S205,利用该单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
在前述实施例中生成的单元测试案例代码文件,开发人员可利用该单元测试案例代码文件对其开发的程序代码进行驱动测试,即自动化完成开发程序的功能测试,并生成相应的功能测试结果开发人员即可根据测试结果进行程序优化,以实现最终的程序开发。在完成单元测试案例代码文件生成的过程中,无需依赖程序源码进行案例代码文件的生成,大幅度降低了开发人员编写单元测试案例代码的成本,提高了开发效率。
图5示意性示出了根据本公开再一实施例的测试案例生成方法的流程图。图6示意性示出了根据本公开一实施例的测试案例生成方法的架构图。
如图5所示,该测试案例生成方法包括:
在操作S501,根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。其中,根据实际需求而定,根据预置语法规则定义并生成的模板包括但不仅限于前面所述的单元测试用例模板、单元测试案例模板及关键字定义模板,各模板包括内容及信息如上述内容所示,此处不再赘述。
在操作S502,根据该单元测试用例模板生成多条单元测试用例。
例如,开发人员在UTDD测试驱动开发时,可基于单元测试用例模板来编写多条单元测试用例,例如:多条Xls单元测试用例,其中,每一条单元测试用例对应Xls单元测试用例中的每一行,即一份Xls单元测试用例包括多行单元测试用例,该多条单元测试用例可以是对于某一功能模块的源程序需实现特定功能的测试用例。需说明的是,多条单元测试用例可以为除了Xls单元测试用例表示形式的其他形式,本公开对此不做限定。
在操作S503,将每条单元测试用例解析为相应的单元测试案例。
如上述的Xls单元测试用例解析,是指将Xls中定义的每一行单元测试用例进行解析为具体的单元测试案例,该具体的单元测试案例包括:Given、When、Then等步骤。
在操作S504,根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码。
例如,利用关键字定义模板对解析出的Given、When、Then关键字进行解析处理,如将上述用例中的“Given:userName输入张三”根据关键字定义模板将Given中“输入”关键词转换为Java中的“=”赋值符号,则Given关键词解析处理后转换为Java代码为:“userName=’张三’。
在操作S505,根据全局配置文件获取该单元测试案例模板及各语言代码保存路径,并读取各语言代码内容。
本公开提供的方法应用系统中,首先根据各模块程序及模板文件保存的路径,相应的生成全局配置文件。即在实现该方法步骤中会根据全局配置文件中各文件的保存路径,调取相应的所需要的文件进行代码文件生成。
在操作S506,根据单元测试案例模板对各语言代码生成单元测试案例代码文件。
利用单元测试案例模板对各语言代码生成单元测试案例代码文件,该单元测试案例代码文件可以包括多条单元测试用例转换为语言代码的文件,相当于一功能模块的所有测试案例代码或多个功能模块的所有测试案例代码等。
在操作S507,利用该单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
开发人员可利用该单元测试案例代码文件对其开发的程序代码进行驱动测试,即自动化完成开发程序的功能测试,并生成相应的功能测试结果开发人员即可根据测试结果进行程序优化,以实现最终的程序开发。
下面结合图6对本方法架构中各模板与各方法步骤对应的模块相互作用关系进行具体实施说明。
以生成手机银行登录案例代码生成为例,手机银行登录功能中包括:用户名、密码、验证码、登录按钮4个控件,则开发人员采用常规的测试驱动开发首先需先测试代码,然后再编写开发代码。使用本公开进行测试驱动开发时,开发人员先根据本系统100中的单元测试用例生成模块根据模板定义模块编写Xls单元测试用例,例如其中的一条测试用例为,验证只输入用户名时弹出正确提示:
案例名称为:verifyNoPasswordInput.
Given:userName输入张三;
When:调用登录方法;
Then:验证弹出提示:请输入密码;
编写完Xls单元测试用例后,单元测试用例生成模块生成对应的多条Xls单元测试用例,然后用例解析模块将该多条Xls单元测试用例解析为一条一条的单元测试案例,Xls中每一行为一条单元测试案例,分别解析出在Xls里定义的用例描述、Given、When、Then、案例名称等信息,再根据关键字定义模板对解析出的Given、When、Then关键字进行解析处理,如将上述用例中的“Given:userName输入张三”根据关键字定义模板将Given中“输入”关键词转换为Java中的“=”赋值符号,因此对Given关键词解析处理后转换为Java代码为:“userName=’张三’;”同理,对when及Then进行解析处理后转换为的Java代码为“When:“登录方法();”,Then:“assert(Toast.getMessage(),‘请输入密码’);”,关键词解析完成后,通过全局文件调取单元测试案例模板,并根据单元测试案例模板对每条语言代码生成单元测试案例代码文件。需说明的是,上述测试案例仅为示例性说明,并不构成本公开适用的测试用例、测试案例的限定。
基于本公开提供的方法生成单元测试案例代码文件之后,开发人员可利用该单元测试案例代码文件进行开发程序编程与测试,完成程序自动化测试。即,开发人员首先根据本公开实施例提供的方法进行测试案例设计,在案例设计完成后通过采取本公开实施例提供的方法实现案例代码,最后依据单元测试案例代码在进行程序功能的开发及实现,实现了无需依赖开发源码自动生成测试案例代码,达到测试驱动开发设计及测试的目的。
需说明的是,本公开实施例中,对最终生成的单元测试案例代码文件格式不作限定,其可以为可保存于存储设备上的任何格式的文件。
本公开提供的测试案例生成方法,克服了现有技术中生成单元测试案例的工具都需要依赖开发程序的源码,不适用UTDD测试驱动开发的工作模式的缺点,基于本系统可以在开发人员完成UTDD测试案例设计的同时即可生成单元测试案例代码,可以大幅度降低开发人员编写单元测试案例代码的成本,提高工作效率。另外,在UTDD测试驱动开发中应用本公开生成单元测试案例代码,有效保障软件产品质量。
图7示意性示出了根据本公开一实施例的测试案例生成系统的方框图。
如图7所示,该测试案例生成系统700包括:单元测试用例生成模块710、用例解析模块720、关键词解析模块730及案例代码生成模块740。
单元测试用例生成模块710,用于根据单元测试用例模板生成多条Xls单元测试用例,根据本公开的实施例,该单元测试用例生成模块710例如可以用于执行上文参考图2所描述的S201步骤,在此不再赘述。
用例解析模块720,用于将每条单元测试用例解析为相应的单元测试案例,根据本公开的实施例,该用例解析模块720例如可以用于执行上文参考图2所描述的S202步骤,在此不再赘述。
关键词解析模块730,用于根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码,根据本公开的实施例,该关键词解析模块730例如可以用于执行上文参考图2所描述的S203步骤,在此不再赘述。
案例代码生成模块740,用于根据单元测试案例模板将每条语言代码生成单元测试案例代码文件,根据本公开的实施例,该案例代码生成模块740例如可以用于执行上文参考图2所描述的S204步骤,在此不再赘述。
具体地,将单元测试用例可以为Xls单元测试用例,Xls单元测试用例中每一行对应的单元测试用例解析为一单元测试案例,并将整个Xls单元测试用例解析为一个单元测试案例类,如一个单元测试案例Java类等。
如图8所示,该案例代码生成模块740包括:配置文件读取子模块7401及代码生成子模块7402。
配置文件读取子模块7401,用于读取全局配置文件,并获取全局配置文件中单元测试案例模板及各语言代码保存路径,并读取各语言代码,根据本公开的实施例,该配置文件读取子模块7401例如可以用于执行上文参考图3所描述的S301步骤,在此不再赘述。
代码生成子模块7402,根据单元测试案例模板对各语言代码生成单元测试案例代码文件,根据本公开的实施例,该代码生成子模块7402例如可以用于执行上文参考图3所描述的S302步骤,在此不再赘述。
如图9所示,该测试案例生成系统700还包括:
程序测试模块750,用于根据该单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果,根据本公开的实施例,该程序测试模块750例如可以用于执行上文参考图4所描述的S205步骤,在此不再赘述。
模板定义模块760,用于根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板,根据本公开的实施例,该模板定义模块760例如可以用于执行上文参考图5所描述的S501步骤,在此不再赘述。
需说明的是,根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,单元测试用例生成模块710、用例解析模块720、关键词解析模块730及案例代码生成模块740、程序测试模块750及模板定义模块760中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,单元测试用例生成模块710、用例解析模块720、关键词解析模块730及案例代码生成模块740、程序测试模块750及模板定义模块760中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,单元测试用例生成模块710、用例解析模块720、关键词解析模块730及案例代码生成模块740、程序测试模块750及模板定义模块760中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开提供的一种测试案例生成系统及方法,可用于金融领域或其他领域,需说明的是,本公开提供的一种测试案例生成系统及方法可用于金融领域,例如金融领域中银行各业务系统的测试案例生成,也可用于除金融领域之外的任意领域,本公开提供的一种测试案例生成系统及方法的应用领域不作限定。
图10示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的方框图。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,本实施例中所描述的电子设备1000,包括:处理器901,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分808加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有系统1000操作所需的各种程序和数据。处理器1001、ROM1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM 1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。系统1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的测试案例生成方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。
需要说明的是,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时电可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (14)

1.一种测试案例生成方法,其特征在于,包括:
根据单元测试用例模板生成多条单元测试用例;
将每条单元测试用例解析为相应的单元测试案例;
根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码;
根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。
2.根据权利要求1所述的测试案例生成方法,其特征在于,该方法还包括:
利用所述单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
3.根据权利要求1所述的测试案例生成方法,其特征在于,该方法还包括:
根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。
4.根据权利要求1所述的测试案例生成方法,其特征在于,所述根据单元测试案例模板将每条语言代码生成单元测试案例代码文件包括:
根据全局配置文件获取所述单元测试案例模板及各语言代码的保存路径,并读取各语言代码;
根据所述单元测试案例模板将各语言代码生成单元测试案例代码文件。
5.根据权利要求1所述的测试案例生成方法,其特征在于,所述每条单元测试用例包括:用例名称、用例预置条件、执行的操作及检测断言。
6.根据权利要求1所述的测试案例生成方法,其特征在于,所述单元测试用例中每一行对应一条单元测试用例。
7.根据权利要求6所述的测试案例生成方法,其特征在于,所述将每条单元测试用例解析为相应的单元测试案例包括:
将单元测试用例中每一行对应的单元测试用例解析为一单元测试案例,并将所有行对应的单元测试用例解析为一个单元测试案例类。
8.根据权利要求1所述的测试案例生成方法,其特征在于,所述语言代码为Java语言代码或C++语言代码或C#语言代码或Python或IOS语言代码中的一种或多种。
9.一种测试案例生成系统,其特征在于,包括:
单元测试用例生成模块,用于根据单元测试用例模板生成多条单元测试用例;
用例解析模块,用于将每条单元测试用例解析为相应的单元测试案例;
关键词解析模块,用于根据关键字定义模板对每条单元测试案例中的关键词进行解析,并将解析出的关键词转换成相应的语言代码;
案例代码生成模块,用于根据单元测试案例模板将每条语言代码生成单元测试案例代码文件。
10.根据权利要求9所述的测试案例生成系统,其特征在于,该系统还包括:
程序测试模块,用于根据所述单元测试案例代码文件对开发程序进行驱动开发与测试,生成测试结果。
11.根据权利要求9所述的测试案例生成系统,其特征在于,该系统还包括:
模板定义模块,用于根据预置语法规则定义并生成单元测试用例模板、单元测试案例模板及关键字定义模板。
12.根据权利要求9所述的测试案例生成系统,其特征在于,所述案例代码生成模块用于根据单元测试案例模板对每条语言代码生成单元测试案例代码文件包括:
根据全局配置文件获取所述单元测试案例模板及各语言代码保存路径,并读取各语言代码;
根据所述单元测试案例模板对各语言代码生成单元测试案例代码文件。
13.一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至8中任一项所述的测试案例生成方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至8中任一项所述的测试案例生成方法。
CN202110415951.5A 2021-04-16 2021-04-16 一种测试案例生成方法、系统、电子设备及存储介质 Active CN113157572B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110415951.5A CN113157572B (zh) 2021-04-16 2021-04-16 一种测试案例生成方法、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110415951.5A CN113157572B (zh) 2021-04-16 2021-04-16 一种测试案例生成方法、系统、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113157572A true CN113157572A (zh) 2021-07-23
CN113157572B CN113157572B (zh) 2024-02-23

Family

ID=76868299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110415951.5A Active CN113157572B (zh) 2021-04-16 2021-04-16 一种测试案例生成方法、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113157572B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117111916A (zh) * 2023-10-19 2023-11-24 天津赛象科技股份有限公司 基于ai和模块化框架的接口代码自动生成方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832229A (zh) * 2017-12-03 2018-03-23 中国直升机设计研究所 一种基于nlp的系统测试用例自动生成方法
CN110399294A (zh) * 2019-06-26 2019-11-01 平安科技(深圳)有限公司 测试用例生成方法、装置、计算机设备和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832229A (zh) * 2017-12-03 2018-03-23 中国直升机设计研究所 一种基于nlp的系统测试用例自动生成方法
CN110399294A (zh) * 2019-06-26 2019-11-01 平安科技(深圳)有限公司 测试用例生成方法、装置、计算机设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117111916A (zh) * 2023-10-19 2023-11-24 天津赛象科技股份有限公司 基于ai和模块化框架的接口代码自动生成方法及系统

Also Published As

Publication number Publication date
CN113157572B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
CN110018955B (zh) 通过转换手动测试用例来生成自动化测试脚本
US10742666B2 (en) System and method for static detection and categorization of information-flow downgraders
US10078510B1 (en) Late-stage software feature reduction tool for security and performance
CN113778848A (zh) 测试代码生成方法、装置、计算机系统及介质
US20160171371A1 (en) Adaptive Testing for Answers in a Question and Answer System
US20180275957A1 (en) Assistive technology for code generation using voice and virtual reality
CN109815147A (zh) 测试案例生成方法、装置、服务器和介质
US20170147474A1 (en) Software testing coverage
CN113157572B (zh) 一种测试案例生成方法、系统、电子设备及存储介质
US11934806B2 (en) Development system and method
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
CN112965916A (zh) 页面测试方法、页面测试装置、电子设备及可读存储介质
Gadwal et al. Comparative review of the literature of automated testing tools
CN111930629A (zh) 页面测试方法、装置、电子设备及存储介质
US10324822B1 (en) Data analytics in a software development cycle
CN115080433A (zh) 基于流量回放的测试方法及装置
CN114791885A (zh) 接口测试方法、装置、设备及介质
CN113885841A (zh) 脚本生成的方法、装置、电子设备和可读介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
US9697018B2 (en) Synthesizing inputs to preserve functionality
US12007883B2 (en) Automated method and system for finding vulnerabilities in a program using fuzzing
US11321225B2 (en) Reducing the memory load time for logic simulator by leveraging architecture simulator
EP4206967A1 (en) Automated method and system for finding vulnerabilities in a program using fuzzing
CN114064484A (zh) 接口测试方法、装置、电子设备及可读存储介质
KR20090033589A (ko) 커널 api 대화식 실행 장치 및 방법

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