一种C接口函数的测试方法及系统与流程

文档序号:11323133阅读:491来源:国知局
一种C接口函数的测试方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种c接口函数的测试方法及系统。



背景技术:

随着计算机技术的不断发展,各个平台产品应运而生,在实际应用中,主要包括windox32、windox64、linux32、linux64、aix32和aix64等6个平台产品,为了保证平台产品的正常运行,提高用户体验,平台产品的测试就成为一个重要环节,其中,c接口函数测试是平台产品测试的重要组成部分。

现有技术中,通常采用人工测试方式对c接口函数进行测试,以保证c接口函数的可用性,这种人工测试c接口函数的方式,虽然在一定程度上能够实现对c接口函数的测试,但是,由于各个平台产品包含的c接口不尽相同,而且,为了满足使用需求,每个平台产品可能存在不同的版本,而每个版本的c接口函数的数目一般在70-80个不等,这就使得测试c接口函数的工作量较大,在此情况下,通过人工测试c接口函数,不仅耗费了大量的人力资源,而且测试效率和测试精度也比较低。



技术实现要素:

本发明实施例提供了一种接口函数的测试方法及系统,用以解决现有技术中的接口函数测试方法存在人力资源消耗量大,以及测试效率和测试精度较低的问题。

本发明实施例提供的具体技术方案如下:

一种c接口函数的测试方法,包括:

测试系统确定满足预设的测试条件的情况下,确定出待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

较佳的,从所有c接口函数中选取一个c接口函数作为当前c接口函数之后,获取当前c接口函数的各个参数之前,进一步包括:

测试系统判断预先建立的注册函数数据库中是否存在当前c接口函数的函数说明,并在确定注册函数数据库中存在当前c接口函数的函数说明的情况下,认定当前c接口函数已注册。

较佳的,测试系统获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,包括:

测试系统从预先建立的测试数据信息库中,获取当前c接口函数的各个参数,并分别为获得的各个参数分配存储空间;

测试系统将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

较佳的,测试系统分别为获得的各个参数分配存储空间,包括:

测试系统获取各个参数的参数类型,其中,各个参数的参数类型是按照预先配置的参数类型定义规则定义的;

测试系统按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。

较佳的,测试系统按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间,包括:

测试系统针对各个参数,若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

较佳的,还包括:测试系统若确定满足预设的空间释放条件,则释放为各个参数分配的存储空间。

较佳的,测试系统将获得的各个参数提供给当前c接口函数,包括:

测试系统从预先加载的包含所有c接口函数的函数入口地址的动态数据库中,获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将各个参数提供给当前c接口函数。

较佳的,进一步包括:测试系统确定所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

一种c接口函数的测试系统,包括:执行模块,其中,执行模块用于:

确定满足预设的测试条件的情况下,确定待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

较佳的,上述测试系统还包括:注册模块,其中,注册模块用于:

判断预先建立的注册函数数据库中是否存在当前c接口函数的函数说明,并在确定注册函数数据库中存在当前c接口函数的函数说明的情况下,认定当前c接口函数已注册。

较佳的,获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数时,执行模块具体用于:

从预先建立的测试数据信息库中,获取当前c接口函数的各个参数,并分别为获得的各个参数分配存储空间;

将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

较佳的,分别为获得的各个参数分配存储空间时,执行模块具体用于:

获取各个参数的参数类型,其中,各个参数的参数类型是按照预先配置的参数类型定义规则定义的;

按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。

较佳的,按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间时,执行模块具体用于:

针对各个参数,若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

较佳的,上述测试系统还包括:释放模块,其中,释放模块用于:若确定满足预设的空间释放条件,则释放为各个参数分配的存储空间。

较佳的,将获得的各个参数提供给当前c接口函数时,执行模块具体用于:

从预先加载的包含所有c接口函数的函数入口地址的动态数据库中,获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将各个参数提供给当前c接口函数。

较佳的,上述测试系统还包括:统计模块,其中,统计模块用于:

确定所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

一种电子设备,包括:存储器,以及至少一个处理器,其中,

存储器,用于存储上述至少一个处理器执行的程序指令;

上述至少一个处理器,用于调用所述存储器中存储的所述程序指令,按照获得的所述程序指令执行:确定满足预设的测试条件的情况下,确定出待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

较佳的,从所有c接口函数中选取一个c接口函数作为当前c接口函数之后,获取当前c接口函数的各个参数之前,上述程序指令进一步设置为:

判断预先建立的注册函数数据库中是否存在当前c接口函数的函数说明,并在确定注册函数数据库中存在当前c接口函数的函数说明的情况下,认定当前c接口函数已注册。

较佳的,获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数时,上述程序指令设置为:

从预先建立的测试数据信息库中,获取当前c接口函数的各个参数,并分别为获得的各个参数分配存储空间;

将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

较佳的,分别为获得的各个参数分配存储空间时,上述程序指令设置为:

获取各个参数的参数类型,其中,各个参数的参数类型是按照预先配置的参数类型定义规则定义的;

按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。

较佳的,按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间时,上述程序指令设置为:

针对各个参数,若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

较佳的,上述程序指令还可以设置为:若确定满足预设的空间释放条件,则释放为各个参数分配的存储空间。

较佳的,将获得的各个参数提供给当前c接口函数时,上述程序指令设置为:

从预先加载的包含所有c接口函数的函数入口地址的动态数据库中,获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将各个参数提供给当前c接口函数。

较佳的,上述程序指令进一步设置为:确定所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

一种非易失性计算机存储介质,存储有计算机可执行指令,上述计算机可执行指令用于:在确定满足预设的测试条件的情况下,确定出待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

较佳的,从所有c接口函数中选取一个c接口函数作为当前c接口函数之后,获取当前c接口函数的各个参数之前,上述计算机可执行指令进一步用于:

判断预先建立的注册函数数据库中是否存在当前c接口函数的函数说明,并在确定注册函数数据库中存在当前c接口函数的函数说明的情况下,认定当前c接口函数已注册。

较佳的,获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数时,上述计算机可执行指令用于:

从预先建立的测试数据信息库中,获取当前c接口函数的各个参数,并分别为获得的各个参数分配存储空间;

将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

较佳的,分别为获得的各个参数分配存储空间时,上述计算机可执行指令用于:

获取各个参数的参数类型,其中,各个参数的参数类型是按照预先配置的参数类型定义规则定义的;

按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。

较佳的,按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间时,上述计算机可执行指令用于:

针对各个参数,若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

较佳的,上述计算机可执行指令还用于:若确定满足预设的空间释放条件,则释放为各个参数分配的存储空间。

较佳的,将获得的各个参数提供给当前c接口函数时,上述计算机可执行指令用于:

从预先加载的包含所有c接口函数的函数入口地址的动态数据库中,获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将各个参数提供给当前c接口函数。

较佳的,上述计算机可执行指令还用于:确定所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

本发明实施例的有益效果如下:

本发明实施例中,通过测试系统依次将待测试的各个c接口函数作为当前c接口函数进行测试,能够实现对测试产品包含的所有c接口函数的自动化测试,避免了人工测试带来的漏测、测试结果不准确等问题,还节省了人力资源,提高了测试效率。

附图说明

图1为本发明实施例一中c接口函数的测试方法的概况示意图;

图2a和图2b为本发明实施例二中c接口函数的测试方法的具体流程示意图;

图3为本发明实施例三中c接口函数的测试系统的功能结构示意图;

图4为本发明实施例四中用于执行c接口函数的测试方法的电子设备的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了解决现有技术中在对c接口函数进行测试时存在的人力资源消耗量大,以及测试效率和测试精度较低的问题,本发明实施例中,测试系统确定满足预设的测试条件的情况下,确定出待测试的所有c接口函数,针对每一个c接口函数,获取该c接口函数的各个参数,并将获得的各个参数提供给该c接口函数,获取到该c接口函数的返回值后,将获得的返回值与该c接口函数的预期值进行匹配,若匹配成功,则认定该c接口函数测试通过;若匹配失败,则认定该c接口函数测试不通过。通过上述自动化测试方式对各个c接口函数进行测试,不仅节省了人力资源,还提高了测试效率和测试精度。

下面通过具体实施例对本发明方案进行详细描述,当然,本发明并不限于以下实施例。

实施例一

参阅图1所示,本发明实施例一中,c接口函数的测试方法的流程如下:

步骤100:测试系统确定满足预设的测试条件的情况下,确定待测试的所有c接口函数,并循环执行以下操作(即循环执行步骤101-步骤104),直至所有c接口函数测试完毕为止。

在实际应用中,为了保证c接口函数测试的顺利进行,在执行步骤100之前,可以执行如下操作:

操作1:设置基本信息。

(1)运行属性设置,其中,运行属性表征该c接口函数是否需要测试,具体地,可以用“on”表示运行,用“off”表示不运行。

(2)绝对路径设置,具体包括:动态数据库的绝对路径(其中,该动态数据库包含所有c接口函数的函数入口地址),测试结果文件的存储绝对路径,等等。比如:测试结果文件的存储绝对路径设置为:f://debug//resultlog.txt;动态数据库的绝对路径设置为:f://debug//librenhangapi.dll。

操作2:自定义参数类型。

在具体实施时,可以根据不同的应用场景和使用需求,设置不同的参数类型定义规则,以实现参数类型的自定义。较佳的,参数类型定义规则可以是但不限于:将可直接输入c接口函数的一类参数定义为输入类型参数,将引用其他参数的一类参数定义为全局类型参数,将引用其它c接口函数的输出参数的一类参数定义为引用类型参数,将承载c接口函数的输出结果的参数定义为输出类型参数,等等。这样,即可自定义出四种参数类型,该四种参数类型分别为:输入类型、引用类型、全局类型和输出类型。利用上述参数类型定义规则,即可针对c接口函数的各个参数的参数类型进行自定义,即将c接口函数的各个参数均归类于上述四种参数类型。

操作3:建立注册函数数据库。

在具体实施时,该注册函数数据库可以以注册函数可扩展标记语言(extensiblemarkuplanguage,xml)文件的形式存在,较佳的,可以将测试产品的所有c接口函数的函数说明全部编写在该注册函数xml文件中,其中,一个c接口函数的函数说明可以包括但不限于该c接口函数的函数名称,形式参数名称,形式参数类型,以及函数返回类型等。通过配置该注册函数xml文件,即可实现对测试产品包含的所有c接口函数的注册,以便后续在测试过程中能够调用测试产品包含的各个c接口函数。

操作4:建立测试数据信息库。

在具体实施时,该测试数据信息库可以以测试数据xml文件的形式存在,较佳的,可以将测试过程中使用的所有测试信息全部编写在该测试数据xml文件中,具体包括两类测试信息,一类测试信息是c接口函数的函数名称;另一类测试信息是c接口函数的数据信息,即各个c接口函数的运行属性,各个c接口函数对应的各个参数的参数名称、按照配置的参数类型定义规则为各个参数定义的参数类型,各个c接口函数的输出空间预测值(其中,c接口函数输出空间预测值可以根据该c接口函数的各个参数占用空间之和的4/3来确定,也可以根据c接口函数定义的输出结果的实际占用空间来确定),各个c接口函数的预期值以及预期值与返回值的匹配方式,等等。通过配置该测试数据xml文件,后续在对测试产品包含的各个c接口函数进行测试的过程中,可以根据该测试数据xml文件获取c接口函数的测试信息。

进一步地,在完成上述操作后,测试系统在确定满足预设的测试条件的情况下,即可执行c接口函数的测试流程,具体地,测试系统可以在确定到达预设的测试周期的情况下,认定预设的测试条件,也可以在接收到接口函数测试指令的情况下,认定预设的测试条件,在此不作具体限定。较佳的,测试系统在确定满足预设的测试条件的情况下,确定待测试的所有c接口函数时,可以采用但不限于以下方式:

测试系统从预先配置的测试数据信息库(即测试数据xml文件)中获取测试信息,每获取到一条测试信息的情况下,若确定获得的测试信息是c接口函数的函数名称,则将获得的该函数名称加入至执行队列,若确定获得的测试信息是c接口函数的数据信息,则将获得的该数据信息加入至数据队列,直至测试数据信息库(即测试数据xml文件)中的所有测试信息获取完毕为止,从而获得了两个队列,一个是执行队列,一个是数据队列,这样,测试系统在确定满足预设的测试条件的情况下,即可根据执行队列中的各个c接口函数的函数名称,确定出待测试的所有c接口函数,后续在测试各个c接口函数的过程中,即可从数据队列中获取c接口函数的数据信息。进一步地,测试系统在确定出待测试的所有c接口函数之后,即可循环执行步骤101-步骤104。

步骤101:从所有c接口函数中选取一个c接口函数作为当前c接口函数。

在具体实施时,可以按照执行队列中的c接口函数的排列顺序依次选取一个c接口函数作为当前c接口函数。

步骤102:获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值。

较佳的,为了确保能够调用当前c接口函数,在执行步骤102之前,测试系统可以先判断预先建立的注册函数数据库(即注册函数xml文件)中是否存在当前c接口函数的函数说明,具体的,可能存在以下两种情况:

第一种情况:注册函数数据库(即注册函数xml文件)中不存在当前c接口函数的函数说明。在此情况下,测试系统可以认定当前c接口函数未注册,无法调用当前c接口函数,此时,可以直接结束对当前c接口函数的测试,并从执行队列中选取下一个c接口函数作为当前c接口函数进行测试。

例如:假设执行队列为:c接口函数1、c接口函数2……c接口函数n。

测试系统从执行队列中选取c接口函数1作为当前c接口函数,若注册函数xml文件中不存在c接口函数1的函数说明,则认定c接口函数1未注册,此时,将无法调用c接口函数1,可以直接结束对c接口函数1的测试,并从执行队列中选取c接口函数2作为当前c接口函数进行测试。

第二种情况:注册函数数据库(即注册函数xml文件)中存在当前c接口函数的函数说明。在此情况下,测试系统可以认定当前c接口函数已注册,可以调用当前c接口函数。此时,可以继续获取当前c接口函数的各个参数,具体地,可以从根据测试数据信息库(即测试数据xml文件)获得的数据队列中,获取当前c接口函数的各个参数。

例如:假设执行队列为:c接口函数1、c接口函数2……c接口函数n。

测试系统从执行队列中选取c接口函数1作为当前c接口函数,若注册函数xml文件中存在c接口函数1的函数说明,则认定c接口函数1已注册,此时,可以从数据队列中,获取c接口函数1的各个参数。

进一步地,测试系统获取到当前c接口函数的各个参数后,在将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值时,可以采用但不限于以下方式:

首先,测试系统分别为获得的各个参数分配存储空间。较佳的,在分别为各个参数分配存储空间时,可以采用但不限于以下方式:测试系统获取各个参数的参数类型,并按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。具体地,测试系统可以针对各个参数分别执行以下操作,以便为各个参数分配存储空间:若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

然后,测试系统将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。较佳的,测试系统在将存储在各自对应的存储空间中的各个参数供给当前c接口函数时,可以采用但不限于以下方式:测试系统通过调用应用程序接口(applicationprogramminginterface,api),从预先加载的包含所有c接口函数的函数入口地址的动态数据库中(其中,动态数据库可以根据预先配置的动态数据库的绝对路径进行加载),获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

最后,获取当前c接口函数输出的返回值。

例如:假设当前c接口函数为c接口函数1,c接口函数1有3个参数,分别为参数1、参数2和参数3,其中,从数据队列中获得的参数1的参数类型为输入类型,参数2的参数类型为引用类型,参数3的参数类型为输出参数。

测试系统针对参数1(参数类型为输入类型),可根据参数类型与存储空间大小之间的关联关系,确定出参数1的存储空间大小为6byte后,为参数1分配6byte的存储空间1,并将参数1存储至6byte的存储空间1中。

测试系统针对参数2(参数类型为引用类型),可根据参数类型与存储空间大小之间的关联关系,确定出参数2的存储空间大小为12byte后,为参数2分配12byte的存储空间2,并将参数2存储至12byte的存储空间2中。

测试系统针对参数3(参数类型为输出类型),从数据队列中获取到c接口函数1的输出空间预测值为2048byte后,为参数3分配2048byte的存储空间3,并将参数3存储至2048byte的存储空间3中。其中,若数据队列中存在c接口函数1定义的输出结果的实际占用空间,则可直接将c接口函数1定义的输出结果的实际占用空间作为输出空间预测值;若数据队列中不存在c接口函数1定义的输出结果的实际占用空间,则可以将c接口函数1的各个参数占用空间之和的4/3作为输出空间预测值。

测试系统通过调用api,从动态数据库中获取c接口函数1的函数入口地址,并基于获得的c接口函数1的函数入口地址,将存储在存储空间1的参数1、存储在存储空间2的参数2和存储在存储空间3的参数3提供给c接口函数1,获取c接口函数1输出的返回值。

步骤103:将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过。

例如:假设c接口函数1的返回值为208,c接口函数1的预期值为208,此时,返回值208与预期值208一致,可以认定c接口函数1测试通过。

又如:假设c接口函数1的返回值为1027,c接口函数1的预期值为1024,此时,返回值1027与预期值1024不一致,可以认定c接口函数1测试不通过。

步骤104:确定当前c接口函数测试完毕。

值得说的是,测试系统在确定当前c接口函数测试完毕后,可以从执行队列中选取下一个c接口函数作为当前c接口函数进行测试,直至所有c接口函数测试完毕为止。较佳的,为了节省存储空间,测试系统在确定满足预设的空间释放条件的情况下,可以释放为各个参数分配的存储空间。具体地,测试系统可以在确定所有c接口函数测试完毕的情况下,认定满足预设的空间释放条件,此时,即可释放为各个参数分配的存储空间。

进一步地,为了能够获取测试产品包含的各个c接口函数的测试情况,测试系统可以在确定测试产品包含的所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。较佳的,该测试结果文件可以包括但不限于:基于测试通过的c接口函数的数目和函数名称生成的测试通过文件,以及基于测试不通过的c接口函数的数目和函数名称生成的测试不通过文件,等等。

实施例二

在实际应用中,测试系统在对测试产品包含的各个c接口函数进行测试的过程中,还可以针对不同情况下的c接口函数进行测试,以实现c接口函数的全方位测试,保证测试产品的可靠性。下面针对测试产品包含的各个c接口函数的全方位测试作进一步详细说明,参阅图2a和图2b所示,本发明实施例二中,c接口函数的测试方法的具体流程如下:

步骤200:设置基本信息,自定义参数类型,并在测试系统中配置注册函数xml文件和测试数据xml文件。

具体地,在设置基本信息时,主要包括以下三类基本信息:

(1)基本属性设置,包括但不限于:

a、功能属性设置,具体包括:测试产品包含的各个产品功能的产品功能名称,各个产品功能包含的c接口函数的数目以及各个c接口函数的函数名称(其中,一个c接口函数包含一个或多个测试用例),各个产品功能包含的测试用例的数目以及各个测试用例的测试用例名称,等等。

b、测试用例属性设置,具体包括:各个测试用例的测试用例名称,各个测试用例包含的测试情况的数目以及各个测试情况的测试情况名称,等等。

c、测试情况属性设置,具体包括:各个测试情况的测试情况名称,各个测试情况对应的c接口函数的函数名称、c接口函数的参数数目、返回类型和返回值,等等。

(2)运行属性设置,包括但不限于:

产品功能的运行属性,c接口函数的运行属性,测试用例的运行属性,测试情况的运行属性,等等。较佳的,可以用“on”表示运行,用“off”表示不运行。

(3)绝对路径设置,包括但不限于:

动态数据库的绝对路径(其中,该动态数据库包含所有c接口函数的函数入口地址),测试结果文件的存储绝对路径,等等。

具体地,在自定义参数类型时,将可直接输入c接口函数的一类参数定义为输入类型参数,将引用其它参数的一类参数定义为全局类型参数,将引用其它c接口函数的输出参数的一类参数定义为引用类型参数,将承载c接口函数的输出结果的参数定义为输出类型参数,等等。这样,即可自定义出四种参数类型,该四种参数类型分别为:输入类型、引用类型、全局类型和输出类型。

具体地,在配置注册函数xml文件时,可以将测试产品的所有c接口函数的函数说明全部配置在该注册函数xml文件中,其中,一个c接口函数的函数说明可以包括但不限于该c接口函数的函数名称,形式参数名称,形式参数类型,以及函数返回类型等。

具体地,在配置测试数据xml文件时,可以将测试过程中使用的所有测试信息全部配置在该测试数据xml文件中,具体包括两类测试信息,一类测试信息是名称信息,即测试产品包含的各个产品功能的功能名称,产品功能包含的各个c接口函数的函数名称,c接口函数对应的各个测试用例的测试用例名称,测试用例包含的各种测试情况的测试情况名称,等等;另一类测试信息是数据信息,包括:(1)各个产品功能的运行属性,各个c接口函数的运行属性,各个测试用例的运行属性,各种测试情况的运行属性;(2)各个c接口函数在不同测试情况下的各个参数,按照配置的参数类型定义规则为各个参数定义的参数类型;(3)各个c接口函数在不同测试情况下的输出空间预测值(其中,输出空间预测值可以根据该c接口函数的各个参数占用空间之和的4/3来确定,也可以根据该c接口函数定义的输出结果的实际占用空间来确定),预期结果,以及预期值与返回值的匹配方式,等等。

步骤201:测试系统确定满足预设的测试条件的情况下,从预先配置的测试数据xml文件中获取测试信息,并基于获得的测试信息,获取执行队列和数据队列两个队列。

具体地,在基于获得的测试信息,生成执行队列和数据队列两个队列时,可以采用但不限于一下方式:每获取到一条测试信息的情况下,若获得的测试信息是名称信息,则将获得的该函名称信息加入至执行队列,若获得的测试信息是数据信息,则将获得的该数据信息加入至数据队列,直至测试数据xml文件中的所有测试信息获取完毕为止,从而获取到两个队列,即执行队列和数据队列。

步骤202:测试系统根据预先配置的动态数据库的绝对路径加载动态数据库,以便后续从加载的动态数据库中获取c接口函数的函数入口地址。

步骤203:测试系统将执行队列中的各个产品功能定义为testgroupi,其中,i=1,2,3,……,n。

步骤204:测试系统令i=1。

步骤205:测试系统从数据队列中获取testgroupi的运行属性,并根据testgroupi的运行属性,判断testgroupi是否需要测试,若是,则执行步骤207;若否,则执行步骤206。

步骤206:测试系统令i=i+1,返回步骤205。

步骤207:测试系统将testgroupi下的各个c接口函数定义为functionj,其中,j=1,2,3,……,m。

步骤208:测试系统令j=1。

步骤209:测试系统从数据队列中获取functionj的运行属性,并根据functionj的运行属性,判断functionj是否需要测试,若是,则执行步骤211;若否,则执行步骤210。

步骤210:测试系统令j=j+1,返回步骤209。

步骤211:测试系统判断注册函数xml文件中是否存在functionj的函数说明,若存在,则执行步骤213;若不存在,则执行步骤212。

步骤212:测试系统认定functionj未注册,返回步骤210。

步骤213:测试系统认定functionj已注册,并将functionj下的各种测试情况定义为testk,其中,k=1,2,3,……,l。

步骤214:测试系统令k=1。

步骤215:测试系统从数据队列中获取testk的运行属性,并根据testk的运行属性,判断testk是否需要测试,若是,则执行步骤217;若否,则执行步骤216。

步骤216:测试系统令k=k+1,返回步骤215。

步骤217:测试系统判断数据队列中是否存在functionj在测试情况testk下的各个参数,若存在,则执行步骤218;若不存在,则返回步骤216。

步骤218:测试系统从数据队列中获取functionj在测试情况testk下的各个参数,并确定各个参数的参数类型。

步骤219:测试系统针对获得的各个参数,按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间,并将各个参数存储至各自对应的存储空间中。

具体地,若参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

步骤220:测试系统通过测试产品的api,从预先加载的动态数据库中,获取functionj的函数入口地址,并基于functionj的函数入口地址,将存储在各自对应的存储空间中的各个参数提供给functionj。

步骤221:测试系统functionj输出返回值。

步骤222:测试系统获取functionj在测试情况testh下的预期值。

步骤223:测试系统将返回值与预期值进行匹配,基于匹配结果确定functionj对应的测试情况testk是否测试通过,并返回步骤220,直至functionj对应的所有测试情况testk测试完毕为止。

具体地,在基于匹配结果确定functionj对应的测试情况testk是否测试通过时,可以在确定匹配成功的情况下,认定functionj对应的测试情况testk测试通过,在确定匹配失败的情况下,认定functionj对应的测试情况testk测试不通过。

步骤224:测试系统确定functionj对应的所有测试情况testk测试完毕,并返回步骤210,直至testgroupi包含所有functionj测试完毕为止。

步骤225:测试系统确定testgroupi包含所有functionj测试完毕,并返回步骤206,直至测试产品包含的所有testgroupi测试完毕为止。

步骤226:测试系统确定测试产品包含的所有testgroupi测试完毕的情况下,释放为各个参数分配的存储空间。

步骤227:测试系统统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称。

步骤228:测试系统基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

实施例三

基于上述实施例,参阅图3所示,本发明实施例三中,c接口函数的测试系统,至少包括:执行模块300,其中,执行模块300用于:确定满足预设的测试条件的情况下,确定待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

较佳的,c接口函数的测试系统还包括:注册模块301,其中,注册模块301用于:

判断预先建立的注册函数数据库中是否存在当前c接口函数的函数说明,并在确定注册函数数据库中存在当前c接口函数的函数说明的情况下,认定当前c接口函数已注册。

较佳的,获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数时,执行模块300具体用于:

从预先建立的测试数据信息库中,获取当前c接口函数的各个参数,并分别为获得的各个参数分配存储空间;

将各个参数存储至各自对应的存储空间中,并将存储在各自对应的存储空间中的各个参数提供给当前c接口函数。

较佳的,分别为获得的各个参数分配存储空间时,执行模块300具体用于:

获取各个参数的参数类型,其中,各个参数的参数类型是按照预先配置的参数类型定义规则定义的;

按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间。

较佳的,按照与参数类型相关联的存储空间分配方式,分别为各个参数分配相应的存储空间时,执行模块300具体用于:

针对各个参数,若参数的参数类型为输入类型、引用类型和全局类型中的任意一种,则基于预先建立的参数类型与存储空间大小之间的关联关系,确定参数的存储空间大小,并按照确定出的存储空间大小,为参数分配存储空间;若参数的参数类型为输出类型,则获取当前c接口函数的输出空间预测值,并按照获得的输出空间预测值,为参数分配存储空间。

较佳的,c接口函数的测试系统还包括:释放模块302,其中,释放模块302用于:若确定满足预设的空间释放条件,则释放为各个参数分配的存储空间。

较佳的,将获得的各个参数提供给当前c接口函数时,执行模块300具体用于:

从预先加载的包含所有c接口函数的函数入口地址的动态数据库中,获取当前c接口函数的函数入口地址,并基于获得的当前c接口函数的函数入口地址,将各个参数提供给当前c接口函数。

较佳的,c接口函数的测试系统还包括:统计模块303,其中,统计模块303用于:

确定所有c接口函数的测试完毕的情况下,统计测试通过的c接口函数的数目和函数名称,以及测试不通过的c接口函数的数目和函数名称,并基于测试通过的c接口函数的数目和函数名称以及测试不通过的c接口函数的数目和函数名称,生成测试结果文件。

实施例四

本发明实施例四提供了一种电子设备,该电子设备具体可以为但不限于桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personaldigitalassistant,pda)等。参阅图4所示,该电子设备可以包括存储器400、处理器401、输入设备402、输出设备403等,输入设备402可以包括但不限于键盘、鼠标、触摸屏等,输出设备403可以包括但不限于显示设备,例如:液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)等,其中,存储器400、处理器401、输入设备402和输出设备403可以通过总线或者其他方式连接,图4中以通过总线连接为例。

存储器400可以包括只读存储器(rom)和随机存储器(ram),存储器400可以向处理器401提供存储器400中存储的程序指令和数据,本发明实施例四中,存储器400用于存储c接口函数的测试方法的程序指令。

处理器401可调用存储器400存储的程序指令,并按照获得的程序指令执行:确定满足预设的测试条件的情况下,确定待测试的所有接口函数,并循环执行以下操作,直至所有接口函数测试完毕为止:

从所有c接口函数中选取一个c接口函数作为当前c接口函数;

获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;

将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;

确定当前c接口函数测试完毕。

实施例五

本发明实施例五提供了一种非易失性计算机存储介质,用于储存为上述电子设备所用的程序指令,其包含用于执行上述c接口函数的测试方法的程序。上述非易失性计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如:软盘、硬盘、磁带、磁光盘(mo)等),光学存储器(例如:cd、dvd、bd、hvd等),以及半导体存储器(例如:rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。

综上所述,本发明实施例中,测试系统确定满足预设的测试条件的情况下,确定出待测试的所有c接口函数,并循环执行以下操作,直至所有c接口函数测试完毕为止:从所有c接口函数中选取一个c接口函数作为当前c接口函数;获取当前c接口函数的各个参数,并将获得的各个参数提供给当前c接口函数,获取当前c接口函数的返回值;将返回值与当前c接口函数的预期值进行匹配,基于匹配结果确定当前c接口函数是否测试通过;确定当前c接口函数测试完毕。该方法通过测试系统依次将待测试的各个c接口函数作为当前c接口函数进行测试,能够实现对测试产品包含的所有c接口函数的自动化测试,避免了人工测试带来的漏测、测试结果不准确等问题,还节省了人力资源,提高了测试效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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