一种动态链接库的接口测试方法及系统与流程

文档序号:35499059发布日期:2023-09-20 03:53阅读:79来源:国知局
一种动态链接库的接口测试方法及系统与流程

本发明涉及测试,尤其涉及一种动态链接库的接口测试方法及系统。


背景技术:

1、动态链接库(dynamic link library或者dynamic-link library,缩写为 dll),windows中dll 多数情况下是带有 ".dll" 扩展名的文件;linux系统中常常是 ".so" 的文件;动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数,函数的可执行代码位于一个dll文件中,该 dll文件包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数;因此,一个动态链接库在投入运营前需要对其内部所提供的函数进行功能性测试,即需要对动态链接库的api接口进行功能性测试。

2、基于python语言对动态链接库提供的c语言函数进行测试,目前常用的测试方法是:先将动态链接库中的每个c语言接口函数都进行一对一的python封装,再编写对应的程序去测试该动态链接库,且针对每个动态链接库都需要重复封装、编写程序的步骤来进行测试,不同的动态链接库需要编写不同的程序一一对应;

3、但是,此类测试方法需要测试人员掌握对应的编程语言来编写代码进行封装、编写程序的步骤,对测试人员要求门槛较高,且需要重复封装、编写程序的步骤来测试不同的动态链接库,导致了此类接口测试方法代码编写、修改量大,测试效率低,测试成本高。


技术实现思路

1、本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

2、为此,本发明的第一个目的在于提出一种动态链接库的接口测试方法,预设转换函数集合,在测试时,利用确定的转换函数,对测试用例中的用例接口参数进行转换,转换后作为api接口的入参数据传入以执行测试用例,从而实现动态链接库中api接口的测试,进而降低对测试人员的编码能力要求以及接口测试的复杂度和测试成本,并有效提高测试效率。

3、本发明的第二个目的在于提出一种动态链接库的接口测试系统。

4、为达上述目的,本发明第一方面实施例提出了一种动态链接库的接口测试方法,包括:

5、读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;

6、针对每个测试用例执行如下操作:根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据;加载被测试的动态链接库;调用所述动态链接库中与所述测试用例中用例接口名称对应的api接口,并将所述测试输入数据作为所述api接口的入参数据传入;获取所述api接口对应的执行结果,并判断对应的api接口测试是否通过;利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。

7、在第一方面的一具体实施例中,在读取测试用例集之前,还执行:预先编写测试用例集;预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。

8、在第一方面的一具体实施例中,预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合时,执行:引用python ctypes库,将c语言中的基本数据类型转换成ctypes数据类型,并将相应转换关系封装为转换函数,得到转换函数集合;其中每种c语言基本数据类型对应一个转换函数。

9、在第一方面的一具体实施例中,根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;利用确定的转换函数,对测试用例中的用例接口参数进行转换,得到测试输入数据时,执行:通过读取测试用例中的用例接口参数,提取出每个用例接口参数的数据类型,其中用例接口参数的数据类型为c语言数据类型;采用python的反射机制,根据每个用例接口参数的数据类型种类,从所述转换函数集合中查找出对应的转换函数;利用对应的转换函数,将测试用例中相应用例接口参数的数据类型转换为ctypes数据类型,作为测试输入数据。

10、在第一方面的一具体实施例中,预先编写测试用例集时,执行:获取预置的excel表格模板,所述excel表格模板的第一行用来描述每个测试用例的属性名,包括用例接口名称、用例接口参数、是否使用系统断言、手动断言内容和断言期望值;获取被测试的动态链接库对应的接口文档,按照所述接口文档中定义的api接口名称来编写所述测试用例集中的用例接口名称,并按照所述接口文档中定义的api接口参数的数据类型,来编写所述测试用例集中的用例接口参数。

11、在第一方面的一具体实施例中,获取所述api接口对应的执行结果,并判断对应的api接口测试是否通过时,执行:基于测试用例数据中的断言和所述执行结果,判断所述api接口测试是否通过;其中,所述断言包括系统断言和手动断言;若所述api接口的执行结果与所述测试用例中的断言期望值相同,则判定为测试通过;若所述api接口的执行结果与所述测试用例中的断言期望值不同,则判定为测试不通过。

12、在第一方面的一具体实施例中,加载被测试的动态链接库时,执行:使用pythonctypes库中的cdll.loadlibrary函数加载linux系统中.so库,其中.so库为linux系统中使用c语言编写并已编译的.so文件;或者使用python ctypes库中的windll.loadlibrary函数加载windows系统中.dll库,其中.dll库为windows系统中使用c语言编写并已编译的.dll文件。

13、在第一方面的一具体实施例中,调用所述动态链接库中与所述测试用例中用例接口名称对应的api接口时,执行:从读取到的测试用例中提取出用例接口名称;采用python的反射机制在已加载的动态链接库中,查找出与提取出的用例接口名称对应的api接口并调用。

14、为达上述目的,本发明第二方面实施例提出了一种动态链接库的接口测试系统,其包括读取模块、转换函数确定模块、转换处理模块、加载模块、调用模块、结果判断模块和报告生成模块;所述读取模块,用于读取测试用例集,其中,每个测试用例集包括用例接口名称和用例接口参数;所述转换函数确定模块,用于根据每个用例接口参数的数据类型,确定与读取到的测试用例中用例接口参数对应的转换函数;所述转换处理模块,用于利用确定的转换函数,对测试用例数据中的用例接口参数进行转换,得到测试输入数据;所述加载模块,用于加载被测试的动态链接库;所述调用模块,用于调用所述动态链接库中与所述测试用例数据中用例接口名称对应的api接口,并将所述测试输入数据作为所述api接口的入参数据传入;所述结果判断模块,用于获取所述api接口对应的执行结果,并判断对应的api接口测试是否通过;所述报告生成模块,用于利用每个测试用例集对应的各执行结果和判断结果,生成所述测试用例集对应的测试报告。

15、在第二方面的一具体实施例中,所述动态链接库的接口测试系统还包括转换函数生成模块,其用于:预设基本数据类型的对应关系,并对所述对应关系进行封装,得到转换函数集合。

16、本发明的有益效果为:

17、本发明在测试时,针对每个测试用例,根据每个测试用例中的用例接口参数的数据类型调用对应的转换函数,将用例接口参数中的数据类型转换为测试系统能够处理的语言,然后调用与测试用例中的用例接口名称对应的api接口,并将数据类型转换后的用例接口参数作为api接口的入参数据传入,从而实现动态链接库的api接口测试,将代码编写、修改量降到最低,从而降低测试成本和对测试人员的编码能力要求,有效提高动态链接库的测试效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1