CN111209210A - 一种生成测试用例方法、装置、电子设备及存储介质 - Google Patents
一种生成测试用例方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111209210A CN111209210A CN202010046001.5A CN202010046001A CN111209210A CN 111209210 A CN111209210 A CN 111209210A CN 202010046001 A CN202010046001 A CN 202010046001A CN 111209210 A CN111209210 A CN 111209210A
- Authority
- CN
- China
- Prior art keywords
- code
- language
- test case
- instruction
- tested
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 138
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000006870 function Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 abstract description 22
- 238000010586 diagram Methods 0.000 description 11
- 238000011161 development Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000010979 ruby Substances 0.000 description 3
- 229910001750 ruby Inorganic materials 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
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)
- Stored Programmes (AREA)
Abstract
本申请提供一种生成测试用例方法、装置、电子设备及存储介质,该生成测试用例方法应用于电子设备,该方法可以包括:使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令;根据第一语言指令和第二语言指令生成测试用例。在上述的实现过程中,通过使用代码解析器解析待测代码,获得指令流,并根据包括第一语言指令和第二语言指令的指令流生成测试用例,有效地提高了获得测试用例的效率,改善了获得测试用例的效率比较低下的问题。
Description
技术领域
本申请涉及计算机数据处理的技术领域,具体而言,涉及一种生成测试用例方法、装置、电子设备及存储介质。
背景技术
前端(英语:front-end)和后端(英语:back-end),是指描述系统或者进程的通用词汇;通常前端的作用是输入信息和输出信息,而后端的作用是进行对输入信息进行处理,获得输出信息;具体例如:计算机程序的界面样式和视觉呈现均属于前端,而计算机程序的业务逻辑处理和微服务处理等均属于后端。
测试用例(test case),是指在软件工程中,测试者根据测试用例来确定应用软件或软件系统是否正确工作的说明文档,或者理解为确定软件程序或系统是否通过测试的方法叫做测试准则;也就是说,测试用例是为某个测试目标而编制的一组测试输入、执行条件以及预期结果,例如:测试某个程序路径或核实对特定需求的遵循性等。
在具体的Java Web项目实践中,使用JavaScript作为项目的前端开发语言,使用Java作为项目的后端开发语言,测试人员或者开发人员通过对比JavaScript代码片段实现的功能和Java代码片段实现的功能,并撰写JavaScript代码和该JavaScript代码对应的Java代码的测试用例,然后再由测试人员根据测试用例对Java Web项目进行功能测试。在具体的实践过程中发现,通过人工地撰写JavaScript代码和对应的Java代码的测试用例,获得测试用例的效率比较低下。
发明内容
本申请实施例的目的在于提供一种生成测试用例方法、装置、电子设备及存储介质,用于改善获得测试用例的效率比较低下的问题。
本申请实施例提供了一种生成测试用例方法,应用于电子设备,包括:使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令;根据第一语言指令和第二语言指令生成测试用例。在上述的实现过程中,通过使用代码解析器解析待测代码,获得指令流,并根据包括第一语言指令和第二语言指令的指令流生成测试用例,有效地提高了获得测试用例的效率。
可选地,在本申请实施例中,在使用代码解析器解析待测代码之前,还包括:接收终端设备发送的待测代码;在根据第一语言指令和第二语言指令生成测试用例之后,还包括:向终端设备发送测试用例。在上述的实现过程中,通过电子设备接收终端设备发送的待测代码,在根据待测代码确定测试用例之后,电子设备向所述终端设备发送所述测试用例,从而使终端设备更加容易地获得测试用例,即提高了终端设备获得测试用例的效率。
可选地,在本申请实施例中,待测代码包括:第一语言代码和第二语言代码;使用代码解析器解析待测代码,获得指令流,包括:解析第一语言代码,获得第一语言指令;根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码;解析第二语言代码,获得第二语言指令。在上述的实现过程中,通过解析第一语言代码,获得第一语言指令;根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码;解析第二语言代码,获得第二语言指令;从而有效地提高了指令流的速度。
可选地,在本申请实施例中,代码解析器包括:第一解析器和第二解析器;解析第一语言代码,包括:使用第一解析器解析第一语言代码;解析第二语言代码,包括:使用第二解析器解析第二语言代码,第一解析器的类型和第二解析器解析的类型是不同的。
在上述的实现过程中,通过使用第一解析器解析第一语言代码,以及使用第二解析器解析第二语言代码,从而有效地提高了指令流的速度。
可选地,在本申请实施例中,上述的第一语言指令为JavaScript指令,上述的第二语言指令为Java指令。
本申请实施例还提供了一种生成测试用例方法,应用于终端设备,包括:向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例;接收电子设备发送的测试用例。在上述的实现过程中,通过终端设备向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例;终端设备接收电子设备发送的测试用例;从而使终端设备更加容易地获得测试用例,即提高了终端设备获得测试用例的效率。
本申请实施例还提供了一种生成测试用例装置,应用于电子设备,包括:待测代码解析模块,用于使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令;测试用例生成模块,用于根据第一语言指令和第二语言指令生成测试用例。
可选地,在本申请实施例中,生成测试用例装置,还包括:待测代码接收模块,用于接收终端设备发送的待测代码;测试用例发送模块,用于向终端设备发送测试用例。
可选地,在本申请实施例中,待测代码包括:第一语言代码和第二语言代码;待测代码解析模块,包括:第一代码解析模块,用于解析第一语言代码,获得第一语言指令;代码功能确定模块,用于根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码;第二代码解析模块,用于解析第二语言代码,获得第二语言指令。
可选地,在本申请实施例中,代码解析器包括:第一解析器和第二解析器;生成测试用例装置,还包括:第三代码解析模块,用于使用第一解析器解析第一语言代码;使用第二解析器解析第二语言代码,第一解析器的类型和第二解析器解析的类型是不同的。
本申请实施例还提供了一种生成测试用例装置,应用于终端设备,包括:待测代码发送模块,用于向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例;测试用例接收模块,用于接收电子设备发送的测试用例。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上描述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上描述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的生成测试用例方法的流程示意图;
图2示出的本申请实施例提供的电子设备与终端设备交互的流程示意图;
图3示出的本申请实施例提供的终端设备接收到测试用例的示意图;
图4示出的本申请实施例提供的生成测试用例装置示意图;
图5示出的本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
在介绍本申请实施例提供的生成测试用例方法之前,先介绍本申请实施例所涉及的一些概念,本申请实施例所涉及的一些概念如下:
编程语言(programming language),是指用来定义计算机程序的形式语言;编程语言是一种被标准化的交流技巧,用来向计算机发出指令;编程语言也是一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动;常见的编程语言例如:C、C++、Java、BASIC、JavaScript、LISP、Shell、Perl、Ruby、Python和PHP等等。
超文本标记语言(HyperText Markup Language,HTML),是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。
JavaScript是一种直译式脚本语言,也是一种动态类型、弱类型、基于原型的用户终端脚本语言,内置支持类型;该语言的解释器或者解析器被称为JavaScript引擎,为浏览器的一部分,广泛用于用户终端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
解释器(interpreter),是一种能够把编程语言一行一行解释的运行程序;解释器像是一位中间人,每次运行程序时都要先转成另一种语言再作运行;解释器不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发;Java编程语言的风格十分接近C++语言;移除了C++中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。
Java虚拟机(Java Virtual Machine,JVM),是指一种能够运行Java字节码(bytecode)的虚拟机;Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
数据库(DataBase,DB),是指存储电子数据或者电子文件的集合,简而言之可视为电子化的文件柜,用户可以对文件中的数据运行新增、截取、更新、删除等操作;这里的数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。当然在具体的实施过程中,上述的服务器可以具体选择大型机或者小型机,这里的小型机是指采用精简指令集计算(ReducedInstruction Set Computing,RISC)、单字长定点指令平均执行速度(MillionInstructions Per Second,MIPS)等专用处理器,主要支持UNIX操作系统的封闭且专用的提供计算服务的设备;这里的大型机,又名大型主机,是指使用专用的处理器指令集、操作系统和应用软件来提供计算服务的设备。
需要说明的是,本申请实施例提供的生成测试用例方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者上述的服务器,设备终端例如:智能手机、个人电脑(personal computer,PC)、平板电脑、个人数字助理(personaldigital assistant,PDA)、移动上网设备(mobile Internet device,MID)、网络交换机或网络路由器等。
在介绍本申请实施例提供的生成测试用例方法之前,先介绍该生成测试用例方法适用的应用场景,这里的应用场景包括但不限于:使用该生成测试用例方法根据编程语言代码生成测试用例,或者部署在服务器上使用该生成测试用例方法向终端设备提供生成测试用例的服务等,这里的编程语言包括但不限于JavaScript和Java等语言。
请参见图1示出的本申请实施例提供的生成测试用例方法的流程示意图;该生成测试用例方法可以应用于电子设备,该方法可以包括如下步骤:
步骤S110:电子设备使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令。
代码解析器,是指对代码进行处理的解释软件或者编译软件,即通常意义上的对编程语言进行处理的解释器或者编译器;常见的代码解析器包括:JavaScript解释器和JVM等等,这里的JVM可以理解为Java字节码的执行引擎,JVM可以用于执行Java字节码。这里的代码解析器可以包括:第一解析器和第二解析器,第一解析器的类型和第二解析器解析的类型是不同的。在具体的实施过程中,这里的第一解析器可以为JavaScript解释器,第二解析器可以为JVM,当然这里的代码解析器还可以包括:LISP解释器、BASIC解释器、Ruby解释器、Python解释器和/或PHP解释器等等。
指令流,是指对待测代码进行解释或者编译后获得的指令集合;这里的指令流可以包括:第一语言指令和第二语言指令;其中,这里的第一语言指令可以为JavaScript指令,第二语言指令可以为Java指令;也就是说,这里的指令流可以包括一个或多个Java字节码,以及一个或多个JavaScript特定指令。
待测代码,是指使用至少一种编程语言编写的可以被解释或编译运行的代码;这里的至少一种编程语言包括但不限于:C、C++、Java、BASIC、JavaScript、LISP、Shell、Perl、Ruby、Python和PHP等语言,这里的待测代码包括:第一语言代码和第二语言代码,这里的语言代码可以包括:类、函数、过程、子过程或代码块;在具体的实践过程中,这里的第一语言代码可以为JavaScript代码,这里的第二语言代码可以为Java代码。
上述的待测代码的获得方式包括:待测代码的获得方式包括:第一种方式,获取预先存储的待测代码,从文件系统中获取待测代码,或者从数据库中获取待测代码;第二种方式,从其他终端设备接收获得待测代码;第三种方式,使用浏览器等软件获取互联网上的待测代码,或者使用其它应用程序访问互联网获得待测代码。上述的数据库可以是关系型数据库,这里的关系型数据库是指采用关系模型来组织数据的数据库,关系型数据库以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,常见的关系型数据库例如:Mysql、PostgreSQL、Oracle和SQLSever等。
上述的步骤S110的实施方式可以包括如下步骤:
步骤S111:电子设备解析第一语言代码,获得第一语言指令。
上述的电子设备解析第一语言代码,获得第一语言指令的实施方式例如:使用第一解析器解析第一语言代码,获得第一语言指令;具体例如:使用JavaScript解释器解析JavaScript代码,获得至少一个JavaScript指令。在具体的实践过程中,这里的JavaScript代码可以包括:HTML网页中的响应事件代码、对HTML网页进行渲染显示的代码和对文档对象模型(document object model,DOM)进行操作等等;这里的响应事件例如:点击事件、选择框被选择事件和文本框失去焦点事件等等;这里的DOM是指描述一个可扩展标记语言(eXtensible Markup Language,XML)文档解析结果的树型结构的内部数据模型;一个XML文档包括根节点、内部节点、叶子节点、备注节点等。在HTML网页中的DOM包括但不限于:Document、Events、Elements、Anchor、Area、Base、Body、Button、Form、Frame和Iframe等等。
步骤S112:电子设备根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码。
上述的步骤S112的实施方式例如:第一语言代码的实现功能为登录功能,那么可以在第二语言代码中找到登录功能的这部分代码,具体例如:前端JavaScript代码中实现了登录功能,那么从JavaScript代码中查找到功能为向后端Java代码提交登录数据的内容,可以根据这部分内容确定实现登录功能Java代码。这里JavaScript代码中的登录数据例如:登录地址、用户名和密码等等,那么可以根据这里的登录地址查找Java代码中与登录地址对应的代码,将第一语言代码的登录功能与登录地址对应的Java代码确定为第二语言代码。
步骤S113:电子设备解析第二语言代码,获得第二语言指令。
上述的电子设备解析第二语言代码,获得第二语言指令的实施方式例如:使用第二解析器解析第二语言代码,获得第二语言指令;具体例如:使用Java解释器解析Java代码,获得至少一个Java指令;这里的Java解释器可以是Java虚拟机。在上述的实现过程中,通过使用第一解析器解析第一语言代码,以及使用第二解析器解析第二语言代码,从而有效地提高了指令流的速度。
在上述的实现过程中,通过解析第一语言代码,获得第一语言指令;根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码;解析第二语言代码,获得第二语言指令;从而有效地提高了指令流的速度。
在步骤S110之后,执行步骤S120:电子设备根据第一语言指令和第二语言指令生成测试用例。
上述的电子设备根据第一语言指令和第二语言指令生成测试用例的实施方式可以包括如下步骤:
步骤S121:电子设备判断第一语言指令和/或第二语言指令是否满足预设条件。
预设条件,是指表征匹配预设关键字或者关键语句,这里以Java语言的指令为例说明,为了便于理解,这里举例均为英文单词,在具体的实践过程中,关键字或关键语句也可以是不定长度的Java字节码或者JavaScript特定指令,这些关键字例如:push、pop、out、sub、add、jump和and等等;可以理解的是,这些关键字或者关键语句可以根据具体实际情况进行设置。
上述的步骤S121的实施方式例如:第一语言指令为pop,且第二语言指令为push;若预设关键字为jump,那么第一语言指令和/或第二语言指令不满足预设条件;若预设关键字为pop或push,那么第一语言指令和/或第二语言指令满足预设条件。该步骤的实施方式又例如:第一语言指令和第二语言指令均为add,若预设关键字为pop,那么第一语言指令和/或第二语言指令不满足预设条件;若预设关键字为add,那么第一语言指令和/或第二语言指令满足预设条件。
上述的步骤S121的实施方式又例如:可以将指定添加为待测代码中的附加的特定指令或者作为变量、对象、类名称或其他实体名称的重写;具体例如:使用命名约定来进行指定“sym”开始,其中,也就是说,待测代码中的变量、对象、类名称或其他实体名称满足“sym”开头,则满足上述的预设条件。当然,在具体的实施过程中,这里的预设条件可以根据具体实际情况进行设置,例如:以“test”开头,或者以“test”结尾等等情况。
当然,在具体的实践过程中,还可以将上述的关键字或者关键语句存储在内存数据库中,以加快关键字或者关键语句的访问速度;这里的内存数据库是指基于随机存储记忆体(Random Access Memory,RAM)查找的数据集合,特点为读写速度快,因此也被称为缓存数据库,常见的内存数据库例如:Memcached和Redis等。
步骤S122:若第一语言指令和/或第二语言指令满足预设条件,则根据第一语言指令和/或第二语言指令生成测试用例。
上述的根据第一语言指令和/或第二语言指令生成测试用例的实施方式例如:预设关键字为pop,若第一语言指令为pop且第二语言指令为push,根据pop生成测试用例,具体例如:可以使用Eclipse的EvoSuite插件来根据pop对应的函数生成测试用例。这里的EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行;通过使用此自动测试工具能够在保证代码覆盖率的前提下极大地提高测试人员的开发效率。
在上述的实现过程中,通过使用代码解析器解析待测代码,获得指令流,并根据包括第一语言指令和第二语言指令的指令流生成测试用例,有效地提高了获得测试用例的效率。
请参见图2示出的本申请实施例提供的电子设备与终端设备交互的流程示意图;可选地,电子设备还可以为终端设备提供根据待测代码生成测试用例的服务,该生成测试用例方法还可以包括如下步骤:
步骤S210:终端设备向电子设备发送待测代码。
上述的步骤S210的实施方式例如:终端设备通过传输控制协议(TransmissionControl Protocol,TCP)向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例。这里的TCP协议又名网络通讯协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议;在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层;不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
步骤S220:电子设备接收终端设备发送的待测代码,并使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令。
其中,使用代码解析器解析待测代码,获得指令流的实施原理和实施方式与步骤S110的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S110的描述。
步骤S230:电子设备根据第一语言指令和第二语言指令生成测试用例,并向终端设备发送测试用例。
其中,该步骤的实施原理和实施方式与步骤S120的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S120的描述。
步骤S240:终端设备接收电子设备发送的测试用例。
请参见图3示出的本申请实施例提供的终端设备接收到测试用例的示意图;上述的步骤S240的实施方式例如:终端设备通过超文本传输协议(Hyper Text TransferProtocol,HTTP)接收电子设备发送的测试用例。这里的HTTP协议是一个简单的请求响应协议,HTTP协议通常运行在传输控制协议之上,HTTP协议指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
在上述的实现过程中,通过电子设备接收终端设备发送的待测代码,在根据待测代码确定测试用例之后,电子设备向终端设备发送测试用例,从而使终端设备更加容易地获得测试用例,即提高了终端设备获得测试用例的效率。
步骤S250:终端设备根据测试用例进行单元测试。
单元测试(Unit Testing),又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作;程序单元是应用的最小可测试部件;在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
上述的步骤S250的实施方式例如:终端设备根据测试用例使用单元测试框架进行单元测试,这里的单元测试框架例如:stubs、mock或fake等等;这里的单元测试框架通常是没有作为编译器包的第三方产品,通常在没有特定框架支持下,透过撰写在测试中的运行单元,并使用判定、异常处理、或其他控制流程机制来表示失败的用户代码(client code)运行单元测试是可行的。
在上述的实现过程中,通过终端设备向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例;终端设备接收电子设备发送的测试用例;从而使终端设备更加容易地获得测试用例,即提高了终端设备获得测试用例的效率。
请参见图4示出的本申请实施例提供的生成测试用例装置示意图;本申请实施例提供了一种生成测试用例装置400,应用于电子设备,包括:
待测代码解析模块410,用于使用代码解析器解析待测代码,获得指令流,指令流包括:第一语言指令和第二语言指令。
测试用例生成模块420,用于根据第一语言指令和第二语言指令生成测试用例。
可选地,在本申请实施例中,生成测试用例装置,还包括:
待测代码接收模块,用于接收终端设备发送的待测代码。
测试用例发送模块,用于向终端设备发送测试用例。
可选地,在本申请实施例中,待测代码包括:第一语言代码和第二语言代码;待测代码解析模块,包括:
第一代码解析模块,用于解析第一语言代码,获得第一语言指令。
代码功能确定模块,用于根据第一语言代码的实现功能确定与第一语言代码对应的第二语言代码。
第二代码解析模块,用于解析第二语言代码,获得第二语言指令。
可选地,在本申请实施例中,代码解析器包括:第一解析器和第二解析器;生成测试用例装置,还包括:
第三代码解析模块,用于使用第一解析器解析第一语言代码。
使用第二解析器解析第二语言代码,第一解析器的类型和第二解析器解析的类型是不同的。
可选地,在本申请实施例中,第一语言指令为JavaScript指令,第二语言指令为Java指令。
本申请实施例还提供了一种生成测试用例装置,应用于终端设备,包括:
待测代码发送模块,用于向电子设备发送待测代码,以使电子设备根据待测代码确定并发送测试用例。
测试用例接收模块,用于接收电子设备发送的测试用例。
应理解的是,该装置与上述的生成测试用例方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图5示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备500,包括:处理器510和存储器520,存储器520存储有处理器510可执行的机器可读指令,机器可读指令被处理器510执行时执行如上的方法。
本申请实施例还提供了一种存储介质530,该存储介质530上存储有计算机程序,该计算机程序被处理器510运行时执行如上的生成测试用例方法。
其中,存储介质530可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种生成测试用例方法,其特征在于,应用于电子设备,包括:
使用代码解析器解析待测代码,获得指令流,所述指令流包括:第一语言指令和第二语言指令;
根据所述第一语言指令和所述第二语言指令生成测试用例。
2.根据权利要求1所述的方法,其特征在于,在所述使用代码解析器解析待测代码之前,还包括:
接收终端设备发送的所述待测代码;
在所述根据所述第一语言指令和所述第二语言指令生成测试用例之后,还包括:
向所述终端设备发送所述测试用例。
3.根据权利要求1所述的方法,其特征在于,所述待测代码包括:第一语言代码和第二语言代码;所述使用代码解析器解析待测代码,获得指令流,包括:
解析所述第一语言代码,获得所述第一语言指令;
根据所述第一语言代码的实现功能确定与所述第一语言代码对应的第二语言代码;
解析所述第二语言代码,获得所述第二语言指令。
4.根据权利要求3所述的方法,其特征在于,所述代码解析器包括:第一解析器和第二解析器;所述解析所述第一语言代码,包括:
使用所述第一解析器解析所述第一语言代码;
所述解析所述第二语言代码,包括:
使用所述第二解析器解析所述第二语言代码,所述第一解析器的类型和所述第二解析器解析的类型是不同的。
5.根据权利要求1-4任一所述的方法,其特征在于,所述第一语言指令为JavaScript指令,所述第二语言指令为Java指令。
6.一种生成测试用例方法,其特征在于,应用于终端设备,包括:
向电子设备发送待测代码,以使所述电子设备根据所述待测代码确定并发送测试用例;
接收所述电子设备发送的所述测试用例。
7.一种生成测试用例装置,其特征在于,应用于电子设备,包括:
待测代码解析模块,用于使用代码解析器解析待测代码,获得指令流,所述指令流包括:第一语言指令和第二语言指令;
测试用例生成模块,用于根据所述第一语言指令和所述第二语言指令生成测试用例。
8.一种生成测试用例装置,其特征在于,应用于终端设备,包括:
待测代码发送模块,用于向电子设备发送待测代码,以使所述电子设备根据所述待测代码确定并发送测试用例;
测试用例接收模块,用于接收所述电子设备发送的所述测试用例。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至5任一所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010046001.5A CN111209210A (zh) | 2020-01-15 | 2020-01-15 | 一种生成测试用例方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010046001.5A CN111209210A (zh) | 2020-01-15 | 2020-01-15 | 一种生成测试用例方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111209210A true CN111209210A (zh) | 2020-05-29 |
Family
ID=70785237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010046001.5A Pending CN111209210A (zh) | 2020-01-15 | 2020-01-15 | 一种生成测试用例方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209210A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463634A (zh) * | 2020-12-11 | 2021-03-09 | 中国人民银行清算总中心 | 微服务架构下的软件测试方法及装置 |
CN113688046A (zh) * | 2021-08-26 | 2021-11-23 | 中国科学院上海高等研究院 | 用于处理器仿真验证的大规模用例生成方法 |
CN114625660A (zh) * | 2022-03-22 | 2022-06-14 | 阿里巴巴(中国)有限公司 | 调试方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102341718A (zh) * | 2009-03-04 | 2012-02-01 | 阿尔卡特朗讯 | 用于使用多个指令类型进行系统测试的方法与设备 |
EP2979176A1 (en) * | 2013-03-27 | 2016-02-03 | Netfective Technology Sa | Method for transforming first code instructions in a first programming language into second code instructions in a second programming language |
CN107678941A (zh) * | 2017-08-31 | 2018-02-09 | 深圳市小牛在线互联网信息咨询有限公司 | 应用程序测试的方法及装置、存储介质和计算机设备 |
CN108959056A (zh) * | 2017-05-17 | 2018-12-07 | 富士通株式会社 | 测试用例生成方法和测试用例生成装置 |
CN109739758A (zh) * | 2018-12-28 | 2019-05-10 | 广州云测信息技术有限公司 | 测试用例转换方法和装置 |
-
2020
- 2020-01-15 CN CN202010046001.5A patent/CN111209210A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102341718A (zh) * | 2009-03-04 | 2012-02-01 | 阿尔卡特朗讯 | 用于使用多个指令类型进行系统测试的方法与设备 |
EP2979176A1 (en) * | 2013-03-27 | 2016-02-03 | Netfective Technology Sa | Method for transforming first code instructions in a first programming language into second code instructions in a second programming language |
CN108959056A (zh) * | 2017-05-17 | 2018-12-07 | 富士通株式会社 | 测试用例生成方法和测试用例生成装置 |
CN107678941A (zh) * | 2017-08-31 | 2018-02-09 | 深圳市小牛在线互联网信息咨询有限公司 | 应用程序测试的方法及装置、存储介质和计算机设备 |
CN109739758A (zh) * | 2018-12-28 | 2019-05-10 | 广州云测信息技术有限公司 | 测试用例转换方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463634A (zh) * | 2020-12-11 | 2021-03-09 | 中国人民银行清算总中心 | 微服务架构下的软件测试方法及装置 |
CN112463634B (zh) * | 2020-12-11 | 2024-03-29 | 中国人民银行清算总中心 | 微服务架构下的软件测试方法及装置 |
CN113688046A (zh) * | 2021-08-26 | 2021-11-23 | 中国科学院上海高等研究院 | 用于处理器仿真验证的大规模用例生成方法 |
CN113688046B (zh) * | 2021-08-26 | 2023-08-25 | 中国科学院上海高等研究院 | 用于处理器仿真验证的大规模用例生成方法 |
CN114625660A (zh) * | 2022-03-22 | 2022-06-14 | 阿里巴巴(中国)有限公司 | 调试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108535B2 (en) | Web application test script generation to test software functionality | |
US11151018B2 (en) | Method and apparatus for testing a code file | |
US8543869B2 (en) | Method and system for reconstructing error response messages under web application environment | |
US11126930B2 (en) | Code completion for dynamically-typed programming languages using machine learning | |
US9529662B1 (en) | Dynamic rule-based automatic crash dump analyzer | |
US8423978B2 (en) | Configurable java server pages processing framework | |
US10628130B2 (en) | Code completion of custom classes with machine learning | |
CN111209210A (zh) | 一种生成测试用例方法、装置、电子设备及存储介质 | |
US20150301811A1 (en) | Method and apparatus for testing browser compatibility | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN114895908B (zh) | 基于Web应用表达式的实现方法及系统、设备和存储介质 | |
US9244982B2 (en) | Static analysis of PL/SQL objects and SQL queries | |
CN115470152B (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
US20190026090A1 (en) | Systems to remove object relational mappings from a software project | |
CN111078529A (zh) | 客户端写入模块测试方法、装置、电子设备 | |
Yang et al. | PyVerDetector: A Chrome Extension Detecting the Python Version of Stack Overflow Code Snippets | |
CN115525305A (zh) | 数据处理、应用启动方法、装置、计算机设备和存储介质 | |
CN117171052B (zh) | 一种基于xml语言的脚本测试方法、装置、设备及介质 | |
CN117667716A (zh) | 页面测试方法、装置及电子设备 | |
CN117950716A (zh) | 用于浏览器端的网页接口分析方法及装置 | |
CN118069103A (zh) | 多平台的软件开发工具包开发、测试方法及电子设备 | |
CN116320060A (zh) | 一种报文转换方法、装置、电子设备及存储介质 | |
CN117034298A (zh) | 一种xss漏洞检测方法、装置、电子设备及存储介质 | |
CN113778888A (zh) | 代码自动测试方法、系统、设备及存储介质 | |
CN117931219A (zh) | 前端项目实现方法、装置、电子设备和存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200529 |
|
WD01 | Invention patent application deemed withdrawn after publication |