CN112506783A - 一种测试方法、装置及存储介质 - Google Patents
一种测试方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112506783A CN112506783A CN202011465091.8A CN202011465091A CN112506783A CN 112506783 A CN112506783 A CN 112506783A CN 202011465091 A CN202011465091 A CN 202011465091A CN 112506783 A CN112506783 A CN 112506783A
- Authority
- CN
- China
- Prior art keywords
- test
- file
- function
- development
- interface
- 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 331
- 238000010998 test method Methods 0.000 title claims abstract description 7
- 230000006870 function Effects 0.000 claims abstract description 353
- 238000011161 development Methods 0.000 claims abstract description 174
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 11
- 230000006872 improvement Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000007787 solid Substances 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/3688—Test management for test execution, e.g. scheduling of test suites
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
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种测试方法、装置及存储介质。
背景技术
在互联网+环境的今天,越来越多的企业需要软件的支持,这给软件开发行业带来了巨大的活力,但是同时也对软件质量带来了更高的要求,一般的开发流程,从需求-设计-开发-测试-上线交付这样的过程。
为了提高软件的质量,减少软件上线后出现漏洞,通常在软件上线之前进行白盒测试。测试可以在软件开发的系统、集成和单元级别进行。白盒测试的基本目标之一是验证应用程序的工作流程。它涉及针对预期或期望的输出测试一系列预定义的输入,以便当特定输入未产生预期的输出时,发现程序的BUG。传统的白盒测试,需要人手工来编写测试用例函数。具体的,测试人员根据需求说明书,制定测试进度,依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例,输入测试用例,得到测试结果,对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。
然而,对于大多数软件行业,又由于项目进度比较紧张,往往无法做到接口级别的单元测试,而测试人员又由于对代码可能不是很熟悉,也很难去编写相关的白盒测试用例。
现有的白盒测试方法效率较低,对于前期代码的反复测试将占用大量的时间,由于时间紧张,在软件上线之前可能只是做了部分的白盒测试或者直接省略掉,这样很难对软件的质量有很高的保证。
发明内容
本说明书实施例的目的是提供一种测试方法、装置及存储介质,以自动生成测试用例,实现开发文件的自动测试,提高软件的测试效率。
为解决上述问题,本说明书实施例提供一种测试方法,所述方法包括:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
为解决上述问题,本说明书实施例还提供一种测试装置,所述装置包括:提取模块,用于对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;生成模块,用于基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取模块,用于获取各个接口函数的输入值和预期输出值;执行模块,用于以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;对比模块,用于将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
为解决上述问题,本说明书实施例还提供一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以实现:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
为解决上述问题,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中,可以对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。本说明书实施例提供的方法,读取开发过程中产生的开发文件,分析其接口的输入和输出,从而自动生成接口级别所需要的测试函数,实现开发文件的自动测试,提高软件的测试效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例一个场景示例的示意图;
图2为本说明书实施例一种测试方法的流程图;
图3为本说明书实施例一种电子设备的功能结构示意图;
图4为本说明书实施例一种测试装置的功能结构示意图。
具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
软件在开发完成后,通常会存在一些缺陷,如逻辑错误和不正确假设与一条程序被运行的可能性成反比;我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的情况下被执行;笔误是随机的。通过对软件进行白盒测试,可以发现软件代码中存在的错误。
白盒测试是软件测试方法的一种,软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:对程序模块的所有独立的执行路径至少测试一遍;对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍;在循环的边界和运行的界限内执行循环体;测试内部数据结构的有效性,等等。最彻底的白盒测试是覆盖程序中的每一条执行路径,但是程序中一般都有循环,路径数目很大,不可能测试每一条路径,所以只能希望用例能够覆盖代码的程度尽量高些。
白盒测试主要用在具有高可靠性要求的软件领域,例如:银行软件、军工软件、航天航空软件、工业控制软件等等。传统的白盒测试,需要人手工来编写测试用例函数。具体的,测试人员根据需求说明书,制定测试进度,依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例,输入测试用例,得到测试结果,对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。然而,对于大多数软件行业,又由于项目进度比较紧张,往往无法做到接口级别的单元测试,而测试人员又由于对代码可能不是很熟悉,也很难去编写相关的白盒测试用例。现有的白盒测试方法效率较低,由于时间紧张,在软件上线之前可能只是做了部分的白盒测试或者直接省略掉,这样很难对软件的质量有很高的保证。
考虑到如果通过脚本的方式自动生成白盒测试的测试用例,例如利用python来读取开发过程中产生的开发文件,分析其接口的输入和输出,从而自动生成接口级别所需要的测试函数,则有望解决现有技术中需要人手工编写测试用例函数导致的测试效率低的问题,提高测试效率,从而提升软件产品的质量。
本说明书实施例提供了一个场景示例,如图1所示,图1为本实施方式提供的一个场景示例的流程图。
在本场景示例中,可以利用python来读取开发过程中产生的开发文件,分析其接口的输入和输出,从而自动生成接口级别所需要的测试函数。
在本场景示例中,首先可以遍历开发文件夹。具体的,可以获取待测软件的开发文件夹路径,对待测软件的开发文件夹进行遍历,获得存储待测软件代码的开发文件。
在本场景示例中,软件在开发过程中会产生很多文件,例如csproj/vbproj等项目文件、sln解决方案文件、suo解决方案设置文件、user项目信息配置、cs/vb等源代码文件、resx等资源文件。这些文件存储在同一个文件夹中,这个文件夹即为该软件的开发文件夹。存储待测软件代码的cs/vb等源代码文件可以为本场景示例中的开发文件。通过对开发文件夹进行遍历,可以获得存储待测软件代码的开发文件。
在本场景示例中,可以针对每个文件生成对应的.test文件。具体的,可以对获得的每个存储待测软件代码的开发文件的接口函数进行分析,提取所述开发文件中的多个接口函数,生成该开发文件对应的.test文件。
在本场景示例中,可以基于编写所述待测试软件代码的计算机语言的函数特征,对所述开发文件中的待测软件代码进行语法分析和词法分析,提取所述开发文件中的多个接口函数,并生成该开发文件对应的.test文件。例如,对于通过C语言编写的待测试软件代码,c语音函数特征一般是标识符+函数名+“(”+函数参数+“)”+“{}”,根据语法分析和词法分析,可以提取函数名,把每个函数名前面加“test_”,例如函数int function(int a,intb){…},通过分析,提取函数function,并存为测试函数test_function(int a,int b),其他函数类似处理,把此开发文件中所有收集的测试函数单独存为.test文件。例如a.c文件,可以把a.c文件中所有函数提取出来,变成test_函数名形式,保存为a.test文件。
在本场景示例中,通过输入预先设置的输入值来执行开发文件对应的.test文件,基于执行后的返回值可以判断测试是否通过。具体的,可以根据开发人员或者测试人员对每个接口的预期输入运行相应的.test文件。
在本场景示例中,开发人员或者测试人员可以预先将各个接口函数的输入值和预期输出值关联存储至数据库中,以便于从数据库中获取.test文件中的测试函数对应的接口函数的输入值,调用所述.test文件中的测试函数,将所述测试函数对应的接口函数的输入值作为输入,执行所述测试函数,得到所述测试函数的返回值。具体的,各个接口函数与输入值和预期输出值进行关联存储的方式可以包括:通过数据表的方式关联存储接口函数与输入值和预期输出值,数据表的一列接口函数,另一列或两列存储输入值和预期输出值,具有对应关系的接口函数与输入值和预期输出值处于同一行。或者,可以将接口函数与输入值和预期输出值的索引关联存储。具体举例为数据库中预先存储有输入值和预期输出值集合,为输入值和预期输出值集合中的每个组输入值和预期输出值制定编号,该编号即为索引,通过该索引可以唯一确定对应的接口函数。将接口函数与输入值和预期输出值的索引关联存储,便可以唯一确定与接口函数相关联的输入值和预期输出值。当然,接口函数与输入值和预期输出值关联存储的方式不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。
在本场景示例中,可以根据开发人员或者测试人员对每个接口的预期输出进行比较。具体的,可以将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比。
在本场景示例中,可以将对比保存为.result文件。具体的,在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值一致的情况下,确定测试结果为该开发文件测试通过,生成测试通过的.result文件;在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值不一致的情况下,确定测试结果为该开发文件测试不通过,生成测试不通过的.result文件。
在本场景示例中,每生成一个.result文件后,可以判断开发文件夹是否遍历结束,若未遍历结束,则继续遍历所述开发文件夹,对得到的开发文件进行分析,提取所述开发文件中的多个接口函数,生成该开发文件对应的.test文件,并执行该.test文件,生成该开发文件对应的.result文件;若遍历结束,则可以对每个.result文件进行汇总,输出白盒测试报告。
本场景示例中,可以利用python来读取开发过程中产生的开发文件,针对每个开发文件生成对应的测试文件,从数据库中获取测试文件中的测试函数对应的接口函数的输入值,调用所述测试文件中的测试函数,将所述测试函数对应的接口函数的输入值作为输入,执行所述测试函数,得到所述测试函数的返回值,将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,得到开发文件的测试结果,最后汇总每个开发文件的白盒测试结果,生成报告输出。本场景示例,可以读取开发过程中产生的开发文件,分析其接口的输入和输出,从而自动生成接口级别所需要的测试函数,实现开发文件的自动测试,提高软件的测试效率。
请参阅图2。本说明书实施例还提供一种测试方法。在本说明书实施例中,执行所述测试方法的主体可以是具有逻辑运算功能的电子设备,所述电子设备可以是服务器。所述服务器可以是具有一定运算处理能力的电子设备。其可以具有网络通信单元、处理器和存储器等。当然,所述服务器并不限于上述具有一定实体的电子设备,其还可以为运行于上述电子设备中的软体。所述服务器还可以为分布式服务器,可以是具有多个处理器、存储器、网络通信模块等协同运作的系统。或者,服务器还可以为若干服务器形成的服务器集群。所述方法可以包括以下步骤。
S210:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数。
在一些实施例中,软件在开发过程中会产生很多文件,例如csproj/vbproj等项目文件、sln解决方案文件、suo解决方案设置文件、user项目信息配置、cs/vb等源代码文件、resx等资源文件。这些文件存储在同一个文件夹中,这个文件夹即为该软件的开发文件夹。存储待测软件代码的cs/vb等源代码文件可以为本说明书实施例中的开发文件。
在一些实施例中,所述开发文件根据以下方式获得:获取待测软件的开发文件夹;遍历所述开发文件夹,得到至少一个开发文件。具体的,服务器可以获取待测软件的开发文件夹路径,对待测软件的开发文件夹进行遍历,获得存储待测软件代码的开发文件。
在一些实施例中,服务器还可以可以采用其他方式获取所述开发文件。例如,用户可以直接向服务器发送所述开发文件,服务器可以进行接收;又如除去所述服务器以外的其它电子设备可以向服务器发送所述开发文件,服务器可以进行接收,在本说明书实施例中,对服务器采用何种方式获取开发文件。
在一些实施例中,服务器可以对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数。具体的,可以通过python对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数。
在一些实施例中,所述对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数包括:基于编写所述待测试软件代码的计算机语言的函数特征,对所述开发文件中的待测软件代码进行语法分析和词法分析,提取所述开发文件中的多个接口函数。所述编写所述待测试软件代码的计算机语言可以包括C语言、C++语言、Java语言等。例如,对于通过C语言编写的待测试软件代码,c语言函数特征一般是标识符+函数名+“(”+函数参数+“)”+“{}”,根据语法分析和词法分析,可以提取函数名,把每个函数名前面加“test_”,例如函数int function(int a,int b){…},通过分析,提取函数function,并存为测试函数test_function(int a,int b),其他函数类似处理,从而实现提取所述开发文件中的多个接口函数。
S220:基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数。
在一些实施例中,所述基于所述多个接口函数生成所述开发文件对应的测试文件包括:将各个接口函数准换为预设函数名的形式,得到各个接口函数对应的测试函数;将得到的测试函数保存为测试文件。例如,对于通过C语言编写的待测试软件代码,c语音函数特征一般是标识符+函数名+“(”+函数参数+“)”+“{}”,根据语法分析和词法分析,可以提取函数名,把每个函数名前面加“test_”,例如函数int function(int a,int b){…},通过分析,提取函数function,并存为测试函数test_function(int a,int b),其他函数类似处理,把此开发文件中所有收集的测试函数单独存为.test文件。例如a.c文件,可以把a.c文件中所有函数提取出来,变成test_函数名形式,保存为a.test文件。其中,保存的.test文件可以为所述测试文件。.test文件中的测试函数与接口函数具有一一对应的关系。
S230:获取各个接口函数的输入值和预期输出值。
在一些实施例中,若要通过测试文件对开发文件进行测试,还需要获取各个接口函数的输入值和预期输出值。开发人员或者测试人员可以预先将各个接口函数的输入值和预期输出值关联存储至数据库中,以便于获取各个接口函数的输入值和预期输出值,通过测试文件对开发文件进行测试。具体的,各个接口函数与输入值和预期输出值进行关联存储的方式可以包括:通过数据表的方式关联存储接口函数与输入值和预期输出值,数据表的一列接口函数,另一列或两列存储输入值和预期输出值,具有对应关系的接口函数与输入值和预期输出值处于同一行。或者,可以将接口函数与输入值和预期输出值的索引关联存储。具体举例为数据库中预先存储有输入值和预期输出值集合,为输入值和预期输出值集合中的每个组输入值和预期输出值制定编号,该编号即为索引,通过该索引可以唯一确定对应的接口函数。将接口函数与输入值和预期输出值的索引关联存储,便可以唯一确定与接口函数相关联的输入值和预期输出值。当然,接口函数与输入值和预期输出值关联存储的方式不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。
S240:以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值。
在一些实施例中,通过测试文件对开发文件进行测试可以包括以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值,以便于根据所述返回值确定测试结果。具体的,可以调用所述测试文件中的测试函数;将所述测试函数对应的接口函数的输入值作为输入,得到所述测试函数的返回值。
S250:将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
在一些实施例中,可以基于所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值的对比结果确定测试是否通过。
在一些实施例中,所述将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件包括:在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值一致的情况下,确定测试结果为所述开发文件测试通过;生成测试通过的测试结果文件。
在一些实施例中,所述将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件包括:在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值不一致的情况下,确定测试结果为所述开发文件测试不通过;生成测试不通过的测试结果文件。
在一些实施例中,若所述开发文件是服务器获取待测软件的开发文件夹路径,对待测软件的开发文件夹进行遍历获得的,则每生成一个测试结果文件后,可以判断开发文件夹是否遍历结束。在所述开发文件夹未遍历结束的情况下,可以继续遍历所述开发文件夹,对得到的开发文件进行分析,提取所述开发文件中的多个接口函数,并生成该开发文件对应的测试文件,并执行该测试文件,生成该开发文件对应的测试结果文件文件;在所述开发文件夹遍历结束的情况下,可以将各个开发文件的测试结果文件进行汇总,将汇总结果作为测试报告输出。
本说明书实施例提供的方法,可以对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。本说明书实施例提供的方法,读取开发过程中产生的开发文件,分析其接口的输入和输出,从而自动生成接口级别所需要的测试函数,实现开发文件的自动测试,提高软件的测试效率。
图3为本说明书实施例一种电子设备的功能结构示意图,所述电子设备可以包括存储器和处理器。
在一些实施例中,所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现测试方法的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据用户终端的使用所创建的数据。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(APPlication Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述处理器可以执行所述计算机指令实现以下步骤:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
在本说明书实施例中,该电子设备具体实现的功能和效果,可以与其它实施例对照解释,在此不再赘述。
图4为本说明书实施例一种测试装置的功能结构示意图,该装置具体可以包括以下的结构模块。
提取模块410,用于对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;
生成模块420,用于基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;
获取模块430,用于获取各个接口函数的输入值和预期输出值;
执行模块440,用于以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;
对比模块450,用于将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
本说明书实施例还提供了一种测试方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
在本说明书实施例中,上述存储介质包括但不限于随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(HardDisk Drive,HDD)或者存储卡(Memory Card)。所述存储器可用于存储所述计算机程序和/或模块,所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据用户终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器。在本说明书实施例中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例和设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
Claims (14)
1.一种测试方法,其特征在于,所述方法包括:
对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;
基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;
获取各个接口函数的输入值和预期输出值;
以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;
将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
2.根据权利要求1所述的方法,其特征在于,所述开发文件根据以下方式获得:
获取待测软件的开发文件夹;
遍历所述开发文件夹,得到至少一个开发文件。
3.根据权利要求2所述的方法,其特征在于,在所述开发文件夹未遍历结束的情况下,继续遍历所述开发文件夹,对得到的开发文件进行分析,提取所述开发文件中的多个接口函数。
4.根据权利要求2所述的方法,其特征在于,在所述开发文件夹遍历结束的情况下,将各个开发文件的测试结果文件进行汇总,将汇总结果作为测试报告输出。
5.根据权利要求1所述的方法,其特征在于,通过python对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数。
6.根据权利要求1所述的方法,其特征在于,所述对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数包括:
基于编写所述待测试软件代码的计算机语言的函数特征,对所述开发文件中的待测软件代码进行语法分析和词法分析,提取所述开发文件中的多个接口函数。
7.根据权利要求1所述的方法,其特征在于,所述基于所述多个接口函数生成所述开发文件对应的测试文件包括:
将各个接口函数准换为预设函数名的形式,得到各个接口函数对应的测试函数;
将得到的测试函数保存为测试文件。
8.根据权利要求1所述的方法,其特征在于,从预设的数据库中获取各个接口函数的输入值和预期输出值。
9.根据权利要求1所述的方法,其特征在于,所述以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值包括:
调用所述测试文件中的测试函数;
将所述测试函数对应的接口函数的输入值作为输入,得到所述测试函数的返回值。
10.根据权利要求1所述的方法,其特征在于,所述将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件包括:
在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值一致的情况下,确定测试结果为所述开发文件测试通过;
生成测试通过的测试结果文件。
11.根据权利要求1所述的方法,其特征在于,所述将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件包括:
在所述对比结果为所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值不一致的情况下,确定测试结果为所述开发文件测试不通过;
生成测试不通过的测试结果文件。
12.一种测试装置,其特征在于,所述装置包括:
提取模块,用于对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;
生成模块,用于基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;
获取模块,用于获取各个接口函数的输入值和预期输出值;
执行模块,用于以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;
对比模块,用于将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
13.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现:对存储待测软件代码的开发文件进行分析,提取所述开发文件中的多个接口函数;基于所述多个接口函数生成所述开发文件对应的测试文件;所述测试文件中包括与所述多个接口函数具有对应关系的测试函数;获取各个接口函数的输入值和预期输出值;以所述各个接口函数的输入值作为输入,执行所述测试文件,得到各个接口函数对应的测试函数的返回值;将所述测试函数的返回值与所述测试函数对应的接口函数的预期输出值进行对比,基于对比结果得到所述开发文件的测试结果文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465091.8A CN112506783A (zh) | 2020-12-14 | 2020-12-14 | 一种测试方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465091.8A CN112506783A (zh) | 2020-12-14 | 2020-12-14 | 一种测试方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112506783A true CN112506783A (zh) | 2021-03-16 |
Family
ID=74972598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011465091.8A Pending CN112506783A (zh) | 2020-12-14 | 2020-12-14 | 一种测试方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506783A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235759A (zh) * | 2013-05-15 | 2013-08-07 | 百度在线网络技术(北京)有限公司 | 测试用例生成方法和装置 |
CN107247665A (zh) * | 2017-05-18 | 2017-10-13 | 北京信安世纪科技有限公司 | 一种c接口函数的测试方法及系统 |
-
2020
- 2020-12-14 CN CN202011465091.8A patent/CN112506783A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235759A (zh) * | 2013-05-15 | 2013-08-07 | 百度在线网络技术(北京)有限公司 | 测试用例生成方法和装置 |
CN107247665A (zh) * | 2017-05-18 | 2017-10-13 | 北京信安世纪科技有限公司 | 一种c接口函数的测试方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797298B2 (en) | Automating identification of code snippets for library suggestion models | |
US11875148B2 (en) | Library model addition | |
US20200264870A1 (en) | Automating Generation of Library Suggestion Engine Models | |
CN110704304B (zh) | 一种应用程序测试方法、装置、存储介质和服务器 | |
CN111260336B (zh) | 基于规则引擎的业务核对方法、装置及设备 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN110990274A (zh) | 一种生成测试案例的数据处理方法、装置及系统 | |
CN113408254A (zh) | 一种页面表单信息填写方法、装置、设备和可读介质 | |
CN112181430A (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN108984223B (zh) | 一种程序调用解耦方法、装置、电子设备及存储介质 | |
CN116661758B (zh) | 一种优化日志框架配置的方法、装置、电子设备及介质 | |
CN117707983A (zh) | 测试用例代码生成方法及相关设备 | |
CN111459474B (zh) | 一种模板化的数据处理方法及装置 | |
CN117171030A (zh) | 软件运行环境检测方法、装置、设备及存储介质 | |
CN116483888A (zh) | 程序评估方法及装置、电子设备和计算机可读存储介质 | |
CN112506783A (zh) | 一种测试方法、装置及存储介质 | |
CN113722321A (zh) | 数据导出方法、装置和电子设备 | |
CN113656290A (zh) | 一种mock点自动识别方法、装置以及设备 | |
CN113419738A (zh) | 接口文档的生成方法、装置及接口管理设备 | |
CN112596781A (zh) | 一种业务执行以及业务配置方法及装置 | |
US20240370253A1 (en) | Automating generation of library suggestion engine models | |
CN118193358A (zh) | 单元测试方法、装置、电子设备及介质 | |
CN117215725A (zh) | 脚本生成方法、装置、电子设备及存储介质 | |
CN115879945A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210316 |