CN116775458A - 一种动态链接库的接口测试方法及*** - Google Patents
一种动态链接库的接口测试方法及*** Download PDFInfo
- Publication number
- CN116775458A CN116775458A CN202310536178.7A CN202310536178A CN116775458A CN 116775458 A CN116775458 A CN 116775458A CN 202310536178 A CN202310536178 A CN 202310536178A CN 116775458 A CN116775458 A CN 116775458A
- Authority
- CN
- China
- Prior art keywords
- interface
- test
- case
- dynamic link
- test case
- 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 293
- 238000006243 chemical reaction Methods 0.000 claims abstract description 91
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000010998 test method Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 88
- 238000004806 packaging method and process Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000000605 extraction Methods 0.000 description 9
- 239000011800 void material Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011990 functional testing Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- XSQUKJJJFZCRTK-NJFSPNSNSA-N UREA C 14 Chemical compound N[14C](N)=O XSQUKJJJFZCRTK-NJFSPNSNSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种动态链接库的接口测试方法及***,所述方法包括:针对每个测试用例执行如下操作:根据每个用例接口参数的数据类型,确定与用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据;加载被测试的动态链接库;调用动态链接库中与测试用例中用例接口名称对应的API接口,并将测试输入数据作为API接口的入参数据传入;获取API接口对应的执行结果,并判断对应的API接口测试是否通过;利用每个测试用例集对应的各执行结果和判断结果,生成测试用例集对应的测试报告,因此本发明能够降低对测试人员的编码能力要求,从而降低接口测试的复杂度和测试成本,提高测试效率。
Description
技术领域
本发明涉及测试技术领域,尤其涉及一种动态链接库的接口测试方法及***。
背景技术
动态链接库(Dynamic Link Library或者Dynamic-link Library,缩写为 DLL),Windows中DLL 多数情况下是带有 ".dll" 扩展名的文件;Linux***中常常是 ".so" 的文件;动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数,函数的可执行代码位于一个DLL文件中,该 DLL文件包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数;因此,一个动态链接库在投入运营前需要对其内部所提供的函数进行功能性测试,即需要对动态链接库的API接口进行功能性测试。
基于Python语言对动态链接库提供的C语言函数进行测试,目前常用的测试方法是:先将动态链接库中的每个C语言接口函数都进行一对一的Python封装,再编写对应的程序去测试该动态链接库,且针对每个动态链接库都需要重复封装、编写程序的步骤来进行测试,不同的动态链接库需要编写不同的程序一一对应;
但是,此类测试方法需要测试人员掌握对应的编程语言来编写代码进行封装、编写程序的步骤,对测试人员要求门槛较高,且需要重复封装、编写程序的步骤来测试不同的动态链接库,导致了此类接口测试方法代码编写、修改量大,测试效率低,测试成本高。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种动态链接库的接口测试方法,预设转换函数集合,在测试时,利用确定的转换函数,对测试用例中的用例接口参数进行转换,转换后作为API接口的入参数据传入以执行测试用例,从而实现动态链接库中API接口的测试,进而降低对测试人员的编码能力要求以及接口测试的复杂度和测试成本,并有效提高测试效率。
本发明的第二个目的在于提出一种动态链接库的接口测试***。
为达上述目的,本发明第一方面实施例提出了一种动态链接库的接口测试方法,包括:
读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;
针对每个测试用例执行如下操作:根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据;加载被测试的动态链接库;调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
在第一方面的一具体实施例中,在读取测试用例集之前,还执行:预先编写测试用例集;预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
在第一方面的一具体实施例中,预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合时,执行:引用Python ctypes库,将C语言中的基本数据类型转换成ctypes数据类型,并将相应转换关系封装为转换函数,得到转换函数集合;其中每种C语言基本数据类型对应一个转换函数。
在第一方面的一具体实施例中,根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据时,执行:通过读取测试用例中的用例接口参数,提取出每个用例接口参数的数据类型,其中用例接口参数的数据类型为C语言数据类型;采用Python的反射机制,根据每个用例接口参数的数据类型种类,从所述转换函数集合中查找出对应的转换函数;利用对应的转换函数,将测试用例中相应用例接口参数的数据类型转换为ctypes数据类型,作为测试输入数据。
在第一方面的一具体实施例中,预先编写测试用例集时,执行:获取预置的excel表格模板,所述excel表格模板的第一行用来描述每个测试用例的属性名,包括用例接口名称、用例接口参数、是否使用***断言、手动断言内容和断言期望值;获取被测试的动态链接库对应的接口文档,按照所述接口文档中定义的API接口名称来编写所述测试用例集中的用例接口名称,并按照所述接口文档中定义的API接口参数的数据类型,来编写所述测试用例集中的用例接口参数。
在第一方面的一具体实施例中,获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过时,执行:基于测试用例数据中的断言和所述执行结果,判断所述API接口测试是否通过;其中,所述断言包括***断言和手动断言;若所述API接口的执行结果与所述测试用例中的断言期望值相同,则判定为测试通过;若所述API接口的执行结果与所述测试用例中的断言期望值不同,则判定为测试不通过。
在第一方面的一具体实施例中,加载被测试的动态链接库时,执行:使用Pythonctypes库中的cdll.LoadLibrary函数加载Linux***中.so库,其中.so库为Linux***中使用C语言编写并已编译的.so文件;或者使用Python ctypes库中的windll.LoadLibrary函数加载Windows***中.dll库,其中.dll库为Windows***中使用C语言编写并已编译的.dll文件。
在第一方面的一具体实施例中,调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口时,执行:从读取到的测试用例中提取出用例接口名称;采用Python的反射机制在已加载的动态链接库中,查找出与提取出的用例接口名称对应的API接口并调用。
为达上述目的,本发明第二方面实施例提出了一种动态链接库的接口测试***,其包括读取模块、转换函数确定模块、转换处理模块、加载模块、调用模块、结果判断模块和报告生成模块;所述读取模块,用于读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;所述转换函数确定模块,用于根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;所述转换处理模块,用于利用确定的转换函数,对测试用例数据中的用例接口参数进行转换,得到测试输入数据;所述加载模块,用于加载被测试的动态链接库;所述调用模块,用于调用所述动态链接库中与所述测试用例数据中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;所述结果判断模块,用于获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;所述报告生成模块,用于利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
在第二方面的一具体实施例中,所述动态链接库的接口测试***还包括转换函数生成模块,其用于:预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
本发明的有益效果为:
本发明在测试时,针对每个测试用例,根据每个测试用例中的用例接口参数的数据类型调用对应的转换函数,将用例接口参数中的数据类型转换为测试***能够处理的语言,然后调用与测试用例中的用例接口名称对应的API接口,并将数据类型转换后的用例接口参数作为API接口的入参数据传入,从而实现动态链接库的API接口测试,将代码编写、修改量降到最低,从而降低测试成本和对测试人员的编码能力要求,有效提高动态链接库的测试效率。
附图说明
图1为本发明实施例1的一种动态链接库的接口测试方法的时序图;
图2为本发明实施例2的一种动态链接库的接口测试***的方框示意图;
图3为本发明实施例2的另一种动态链接库的接口测试***的方框示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
实施例1
下面结合附图描述本发明实施例的动态链接库的接口测试方法。
如图1所示,所述动态链接库的接口测试方法包括以下步骤:
读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;
针对每个测试用例执行如下操作:
根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;
利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据;
加载被测试的动态链接库;
调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;
获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;
利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
具体地,执行测试***中xxx\main\run.py开始测试。
需要说明的是,逐条读取测试用例集中的用例接口来执行测试用例集的测试过程,是先执行一个API接口的测试,获得并判断该API接口的执行结果后,根据测试用例集中的定义,决定是否进行参数提取以执行下一个API接口的测试,循环往复,直到整个测试用例集中的API接口都测试结束,生成该测试用例集的测试报告。
在一些实施例中,在读取测试用例集之前,还执行:
预先编写测试用例集;一个测试用例集包括一条或多条测试用例,一条测试用例包括一个或多个用例接口,每个用例接口均包括用例接口名称、用例接口参数;
预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
需要说明的是,所述对应关系指的是,从一种编程语言的基本数据类型转换成另一种编程语言的基本数据类型的关系。
本发明的动态链接库的接口测试方法,通过编写测试用例集,预先对基本数据类型转换关系进行封装得到转换函数集合,读取测试用例集时调用对应的转换函数,快速且准确地将用例接口参数中的数据类型转换为动态链接库的API接口可识别的数据类型,接着调用动态链接库中与用例接口名称对应的API接口,并将转换后的用例接口参数作为API接口的入参数据传入,来执行对动态链接库中的API接口测试,从而简化动态链接库的接口测试流程;
测试人员仅需依据动态链接库对应的接口文档在excel中编写测试用例集,维护及更新转换函数集合,就能实现动态链接库的接口测试,将代码编写、修改量降到最低,从而降低测试成本和对测试人员的编码能力要求,提高测试效率。
在一些实施例中,预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合时,执行:
引用Python ctypes库,将C语言中的基本数据类型转换成ctypes数据类型,并将相应转换关系封装为转换函数,得到转换函数集合;其中每种C语言基本数据类型对应一个转换函数。
需要说明的是,C语言中的基本数据类型具体包括char、char *、unsigned char、unsigned char *、unsigned char **、int、int *、unsigned int、unsigned int *、long、unsigned long、unsigned long *、void*、void **;
C语言数据类型与ctypes数据类型之间的对应关系,示例如下:
可以理解,根据上述表中C语言基本数据类型与ctypes数据类型之间的对应关系,将每种C语言基本数据类型转换成对应的ctypes数据类型,并将其转换关系编写为转换函数,得到与各种基本数据类型的转换关系对应的转换函数集合,为后续读取测试用例时调用对应的转换函数,将用例接口参数的数据类型进行转换作基础,也为后续测试程序能够调用动态链接库进行测试作基础。
具体的,所述转换函数由Python语言编写,所述转换函数的函数名包含相应的ctypes数据类型;
例如,将C语言中的void ()数据类型转换为ctypes数据类型的c_void_p数据类型的转换函数的代码如下:
def viod(value):
//////
对应C语言中的基本数据类型void*返回c_viod_p
//////
return c_viod_p(int(value))。
在一些实施例中,根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据时,执行:
通过读取测试用例中的用例接口参数,提取出每个用例接口参数的数据类型,其中用例接口参数的数据类型为C语言数据类型;
需要说明的是,按照测试***定义的规则采用excel编写的测试用例,因此对于用例接口参数的书写方法,是基于C语言数据类型采用特殊书写规则进行书写,使测试***在读取用例接口参数时,能够分辨出用例接口参数的数据类型和参数值;例如,测试用例中具有以下定义:
APIname=SDF_GetPrivateKeyAccessRight,uiKeyIndex=unsigned_int(8)测试***读取时,会将APIName对应的等号后面内容SDF_GetPrivateKeyAccessRight作为用例接口名称,将uiKeyIndex作为用例接口参数的参数名称,并将uiKeyIndex对应的等号后面内容中unsigned_int作为用例接口参数的数据类型,括号中的8作为用例接口参数的值。
采用Python的反射机制,根据每个用例接口参数的数据类型种类,从所述转换函数集合中查找出对应的转换函数;
需要说明的是,每个用例接口参数的数据类型种类是指该用例接口参数的数据类型为基本数据类型中的哪一种,例如为char、short、int、void *中的哪一种。
利用对应的转换函数,将测试用例中相应用例接口参数的数据类型转换为ctypes数据类型,作为测试输入数据;
具体地,使用Python hasattr查找出与用例接口参数的数据类型对应的转换函数,并使用Python getattr调用该转换函数,对用例接口参数的数据类型进行转换;例如,用例接口的入参是phDeviceHandle=void(),进行数据类型转换处理后为[{'param_name': 'phDeviceHandle','param_value': c_void_p(None)}],其中param_name为用例接口参数名称,param_value为用例接口参数的数据类型(ctypes数据类型)。
需要说明的是,将测试用例中相应用例接口参数的数据类型(C语言数据类型)转换为ctypes数据类型,作为测试输入数据时,需要使用ctypes模块加载动态链接库,才能将ctypes数据类型的用例接口参数作为动态链接库中被测试的API接口的入参数据传入。
在一些实施例中,预先编写测试用例集时,执行:
获取预置的excel表格模板,所述excel表格模板的第一行用来描述每个测试用例的属性名,包括用例接口名称、用例接口参数、是否使用***断言、手动断言内容和断言期望值;
上述excel表格模板的第一行还用来描述每个测试用例的测试用例名称、测试用例描述、是否执行默认前置和后置和参数提取;
按照所述excel表格模板,在excel中以每个测试用例的属性名形成列,并以一行对应一个用例接口、一个已合并单元格对应一个测试用例的方式编写测试用例集;其中,一个已合并单元格包括一行或多行,一个测试用例集包括一个或多个已合并单元格;
获取被测试的动态链接库对应的接口文档,按照所述接口文档中定义的API接口名称来编写所述测试用例集中的用例接口名称,并按照所述接口文档中定义的API接口参数的数据类型,来编写所述测试用例集中的用例接口参数。
需要说明的是,编写测试用例集中的用例接口参数时,需要在接口文档中查找出用例接口参数对应的API接口参数,并以对应API接口参数的数据类型+具体数据的形式编写用例接口参数。
根据接口文档中定义的API接口名称,来编写测试用例集中的用例接口名称,使所述用例接口数据中的用例接口名称与待测试动态链接库对应的API接口名称相对应,为后续根据用例接口名称调用对应的API接口作基础;
根据用例接口参数接口文档中定义的API接口参数的数据类型,来编写用例接口参数的数据类型,使用例接口参数与待测试动态链接库对应的API接口参数相对应,为后续将数据类型转换后的用例接口参数作为API接口的入参数据传入作基础。
需要说明的是,测试人员需要将编写的测试用例集保存在测试***的xxx/resFile/data/test_case目录下;执行前置和后置有两种方式:在处理每个测试用例前后执行一次;或者,在处理每个测试用例集前后执行一次;
前置和后置测试步骤的配置项包括测试用例名称、测试用例描述、用例接口名称、用例接口参数、参数提取、是否使用***断言、手动断言内容和断言期望值。
具体的,所述excel表格模板的内容的说明如下:
测试用例名称:用户定义的当前测试用例/场景的名称;
测试用例描述:描述当前测试用例的说明性信息;
是否执行:用于标记当测试用例自动加载执行时,是否执行当前测试用例;
是否执行默认前置和后置:用于标记当前测试用例执行时,是否执行前置与后置测试步骤中的内容;
用例接口名称:对应待测试的用例接口名称;
用例接口参数:对应待测试的用例接口所要传递的入参,入参包括参数名称与参数值,参数名称需要与动态链接库对应的接口文档中要求的参数名称相同;参数值由参数类型和参数具体的值组成,并且由测试自行决定,例如,接口文档中要求待测试的用例接口入参为“void ** deviceHandle”,当测试人员编写测试用例时,可输入deviceHandle= **_void(),当测试***读取excel数据时,会自动对此种特殊书写规则的数据进行处理;
参数提取:对应需要提取的参数内容,测试用例集进行参数提取的方式包括直接通过用例接口参数名称进行提取;和/或,使用jsonpath提取器进行参数提取;
参数提取的对象包括用例接口参数中的入参;例如,需要提取入参“void **deviceHandle”中的“deviceHandle”,提取后的参数名为“test_handle”,参数提取需要书写为test_handle=${deviceHandle},当测试***读取excel中数据时,会自动对此种特殊书写规则的数据进行处理;参数提取的对象还包括API接口执行测试后得到的响应参数(执行结果),例如,需要提取API接口响应参数内容中的message,提取后的参数名为“msg”,参数提取需要书写为msg=$.mesage,当测试***读取excel数据时,会自动对此种特殊书写规则的数据进行处理;
断言:测试用例的断言内容,用于判断测试用例执行的结果是否通过;
断言包括***断言和手动断言,断言的具体步骤,例如断言API接口响应参数中的“message”是否为“success”,需要对该API接口响应参数进行参数提取,然后在断言部分书写为${msg}=success,当测试***读取excel数据时,会自动对此种特殊书写规则的数据进行处理。
在一些实施例中,读取测试用例集时,执行:
获取以excel格式存储在Python的xlrd库中的测试用例集,按行从所述测试用例集中读取测试用例;
再将已合并单元格中的一行或多行测试用例处理成一条测试用例数据,一个已合并单元格对应一条测试用例数据。
具体地,将测试输入数据作为所述API接口的入参数据传入时,使用Pythonpytest框架中的@pytest.mark.parametrize函数,按顺序传入了待测试的API接口。
在一些实施例中,获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过时,执行:
基于测试用例数据中的断言和所述执行结果,判断所述API接口测试是否通过;其中,所述断言包括***断言和手动断言;
若所述API接口的执行结果与所述测试用例中的断言期望值相同,则判定为测试通过;
若所述API接口的执行结果与所述测试用例中的断言期望值不同,则判定为测试不通过。
需要说明的是,API接口的执行结果是指动态链接库中API接口被测试后返回的响应数据内容,断言期望值是指测试***读取到的测试用例中的测试期望结果数据。
所述断言包括***断言和手动断言,当测试***读取测试用例中的“是否使用***断言”数据时,若为Y,则调用断言并判断被测试API接口的返回code是否为0,若为0则通过,若非0则不通过;当测试***读取测试用例中的“手动断言内容”,比较“=”两边内容值是否相等,若相等则通过,若不相等则不通过。
在一些实施例中,加载被测试的动态链接库时,执行:
使用Python ctypes库中的cdll.LoadLibrary函数加载Linux***中.so库,其中.so库为Linux***中使用C语言编写并已编译的.so文件;或者
使用Python ctypes库中的windll.LoadLibrary函数加载Windows***中.dll库,其中.dll库为Windows***中使用C语言编写并已编译的.dll文件。
需要说明的是,被测试的动态链接库文件需要测试人员将其保存在测试***的xxx/resFile/data/external/C目录下;
加载原理是将要被测试的动态链接库地址传入cdll.LoadLibrary或windll.LoadLibrary函数;
测试***包含操作***判断模块,能够根据当前操作***,自动选择加载对应拓展名的动态链接库文件。
做项目测试时,由于一个项目包括一个或多个动态链接库,所以一个项目测试需要测试一个或多个动态链接库;当需要测试一个动态链接库时,本实施例公开的动态链接库的测试方法仅需要测试人员根据动态链接库对应的接口文档在excel中编写一个测试用例集,预先对基本数据类型的对应关系进行封装,以及加载被测试的动态链接库,就能使测试人员凭借测试***完成该动态链接库中API接口的测试;当需要测试多个动态链接库时,在上述测试单个动态链接库的前提下,仅需根据新的动态链接库对应的接口文档,在excel中修改测试用例集,并加载新的动态链接库,就能够使测试人员凭借测试***完成该动态链接库中API接口的测试,将代码编写、修改量降到极低,从而降低了测试成本与对测试人员的编码能力要求,提高了测试效率。
在一些实施例中,调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口时,执行:
从读取到的测试用例中提取出用例接口名称;
采用Python的反射机制在已加载的动态链接库中,查找出与提取出的用例接口名称对应的API接口并调用。
需要说明的是,使用Python hasattr在已加载的动态链接库中,查找出与提取出的用例接口名称对应的API接口,使用Python getattr调用API接口,并将测试输入数据作为API接口入参数据依次传入。
实施例2
在实施例1的基础上,本实施例给出了一种动态链接库的接口测试***的具体实施方式。
如图2所示,所述动态链接库的接口测试***包括读取模块、转换函数确定模块、转换处理模块、加载模块、调用模块、结果判断模块和报告生成模块;
所述读取模块,用于读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;
所述转换函数确定模块,用于根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;
所述转换处理模块,用于利用确定的转换函数,对测试用例数据中的用例接口参数进行转换,得到测试输入数据;
所述加载模块,用于加载被测试的动态链接库;
所述调用模块,用于调用所述动态链接库中与所述测试用例数据中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;
所述结果判断模块,用于获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;
所述报告生成模块,用于利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
如附图3所示,在一些实施例中,所述动态链接库的接口测试***还包括转换函数生成模块,其用于:
预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
本发明的动态链接库的接口测试***主要通过转换函数生成模块预先封装各基本数据类型对应的数据类型转换函数,使用读取模块逐条读取测试用例,并在读取时使用转换处理模块调用对应的转换函数对用例接口参数的数据类型进行转换,使用调用模块将转换后的用例接口参数作为API接口的入参数据传入以执行测试用例,对于本***的开发与维护者,仅需要维护转换函数生成模块,所有数据类型转换均覆盖后,则没有更多的开发与维护内容;对于本***的使用者,即测试人员,不需要掌握编程语言,按照本***的使用说明与测试用例编写规则进行测试用例的编写即可。
Claims (10)
1.一种动态链接库的接口测试方法,其特征在于,包括:
读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;
针对每个测试用例执行如下操作:
根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;
利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据;
加载被测试的动态链接库;
调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;
获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;
利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
2.根据权利要求1所述的动态链接库的接口测试方法,其特征在于,在读取测试用例集之前,还执行:
预先编写测试用例集;
预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
3.根据权利要求2所述的动态链接库的接口测试方法,其特征在于,预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合时,执行:
引用Python ctypes库,将C语言中的基本数据类型转换成ctypes数据类型,并将相应转换关系封装为转换函数,得到转换函数集合;其中每种C语言基本数据类型对应一个转换函数。
4.根据权利要求3所述的动态链接库的接口测试方法,其特征在于,根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据时,执行:
通过读取测试用例中的用例接口参数,提取出每个用例接口参数的数据类型,其中用例接口参数的数据类型为C语言数据类型;
采用Python的反射机制,根据每个用例接口参数的数据类型种类,从所述转换函数集合中查找出对应的转换函数;
利用对应的转换函数,将测试用例中相应用例接口参数的数据类型转换为ctypes数据类型,作为测试输入数据。
5.根据权利要求2所述的动态链接库的接口测试方法,其特征在于,预先编写测试用例集时,执行:
获取预置的excel表格模板,所述excel表格模板的第一行用来描述每个测试用例的属性名,包括用例接口名称、用例接口参数、是否使用***断言、手动断言内容和断言期望值;
获取被测试的动态链接库对应的接口文档,按照所述接口文档中定义的API接口名称来编写所述测试用例集中的用例接口名称,并按照所述接口文档中定义的API接口参数的数据类型,来编写所述测试用例集中的用例接口参数。
6.根据权利要求5所述的动态链接库的接口测试方法,其特征在于,获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过时,执行:
基于测试用例数据中的断言和所述执行结果,判断所述API接口测试是否通过;其中,所述断言包括***断言和手动断言;
若所述API接口的执行结果与所述测试用例中的断言期望值相同,则判定为测试通过;
若所述API接口的执行结果与所述测试用例中的断言期望值不同,则判定为测试不通过。
7.根据权利要求1所述的动态链接库的接口测试方法,其特征在于,加载被测试的动态链接库时,执行:
使用Python ctypes库中的cdll.LoadLibrary函数加载Linux***中.so库,其中.so库为Linux***中使用C语言编写并已编译的.so文件;或者
使用Python ctypes库中的windll.LoadLibrary函数加载Windows***中.dll库,其中.dll库为Windows***中使用C语言编写并已编译的.dll文件。
8.根据权利要求1所述的动态链接库的接口测试方法,其特征在于,调用所述动态链接库中与所述测试用例中用例接口名称对应的API接口时,执行:
从读取到的测试用例中提取出用例接口名称;
采用Python的反射机制在已加载的动态链接库中,查找出与提取出的用例接口名称对应的API接口并调用。
9.一种动态链接库的接口测试***,其特征在于,包括读取模块、转换函数确定模块、转换处理模块、加载模块、调用模块、结果判断模块和报告生成模块;
所述读取模块,用于读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;
所述转换函数确定模块,用于根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;
所述转换处理模块,用于利用确定的转换函数,对测试用例数据中的用例接口参数进行转换,得到测试输入数据;
所述加载模块,用于加载被测试的动态链接库;
所述调用模块,用于调用所述动态链接库中与所述测试用例数据中用例接口名称对应的API接口,并将所述测试输入数据作为所述API接口的入参数据传入;
所述结果判断模块,用于获取所述API接口对应的执行结果,并判断对应的API接口测试是否通过;
所述报告生成模块,用于利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。
10.根据权利要求9所述的动态链接库的接口测试***,其特征在于,还包括转换函数生成模块,其用于:
预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310536178.7A CN116775458A (zh) | 2023-05-12 | 2023-05-12 | 一种动态链接库的接口测试方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310536178.7A CN116775458A (zh) | 2023-05-12 | 2023-05-12 | 一种动态链接库的接口测试方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775458A true CN116775458A (zh) | 2023-09-19 |
Family
ID=87995301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310536178.7A Pending CN116775458A (zh) | 2023-05-12 | 2023-05-12 | 一种动态链接库的接口测试方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775458A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785723A (zh) * | 2024-02-27 | 2024-03-29 | 四川互慧软件有限公司 | 动态接口参数关联方法、装置及电子设备 |
-
2023
- 2023-05-12 CN CN202310536178.7A patent/CN116775458A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785723A (zh) * | 2024-02-27 | 2024-03-29 | 四川互慧软件有限公司 | 动态接口参数关联方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399130A (zh) | 自动生成测试案例的方法、装置、设备及可读存储介质 | |
CN110632499B (zh) | 基于测试对象的测试向量生成方法及存储介质 | |
CN111597110B (zh) | 页面测试方法、装置、电子设备及存储介质 | |
CN110716870A (zh) | 服务的自动化测试方法及装置 | |
CN111367524B (zh) | 枚举类型设计方法及装置 | |
CN116775458A (zh) | 一种动态链接库的接口测试方法及*** | |
CN112181854B (zh) | 一种生成流程自动化脚本的方法、装置、设备及存储介质 | |
CN109240923B (zh) | 接口测试脚本的生成方法及计算机可读存储介质 | |
CN115033434B (zh) | 一种内核性能理论值计算方法、装置及存储介质 | |
CN113535581B (zh) | 测试脚本生成方法、装置、设备及计算机可读存储介质 | |
CN115658460A (zh) | 一种基于云端与车机端接口的自动化性能测试方法及*** | |
CN114661615A (zh) | 一种fpga软件测试方法和设备 | |
CN115495362A (zh) | 生成测试代码的方法、装置、存储介质及计算机设备 | |
CN114579141A (zh) | require框架转化为VUE框架的方法及装置 | |
CN113254027A (zh) | 一种半导体设备控制程序转换方法、***、设备和存储介质 | |
CN112231222A (zh) | 一种面向对象通信协议的自动化测试方法及*** | |
CN112069062A (zh) | 一种软件测试bug模块编辑生成的方法及装置 | |
CN112612712B (zh) | 一种基于扩展脚本的软件断点调试方法、装置 | |
CN117724988B (zh) | 一种基于Testing Library的UI组件库测试方法、存储介质及电子设备 | |
CN114090454B (zh) | 一种接口自动化测试方法、装置、设备及存储介质 | |
CN111506354B (zh) | 一种提高脚本的加载效率的方法及终端 | |
CN113297068A (zh) | 基于Tessy的输入输出批处理成固定模板的方法及其存储介质 | |
CN116362675A (zh) | 一种面向数学建模培训的自动化批阅***及方法 | |
CN114721665A (zh) | 一种网页代码生成方法、装置、电子设备及存储介质 | |
CN115905027A (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 |