覆盖全异常字符的自动化API接口测试方法和系统与流程

文档序号:18939976发布日期:2019-10-23 01:04阅读:375来源:国知局
覆盖全异常字符的自动化API接口测试方法和系统与流程

本发明涉及一种接口测试技术,具体涉及覆盖全异常字符的自动化api接口测试方法和系统。



背景技术:

api(applicationprogramminginterface)即应用程序编程接口,目的是用来提供应用程序与开发人员基于软件得以访问软件或者系统的能力,使程序或系统去执行指定的命令,如:登录、查询、导出等指令。api接口测试是功能测试的一种,主要通过模拟上层应用或者系统上层调用api接口的应用场景,是对系统接口功能进行测试的一种手段,重点是接口与系统的数据交换、传递与管理控制过程。

当前传统的api接口测试方式(如数据驱动测试方式),需要测试人员通过人工准备逐条的测试数据,再通过手动或者自动化的方式进行测试执行,这种测试方式存在以下问题:

1.个别异常数据无法编写成测试用例进行测试输入,如:回车符(十六进制0d)、换行符(十六进制0a)、空字符(十六进制00),以及文本形式无法显示的字符(十六进制81至fe),这些字符在用例文本中会以“?”或者“□”或者乱码形式出现,执行用例时无法进行数据输入或者用例执行,而用例解读时无法知道测试数据的具体数值,但是这些异常数据可能会导致系统出错甚至崩溃。

2.测试过程中通常无法对异常数据进行完全覆盖。测试数据的编写通常由设计人员根据测试规范或者经验进行编写,如在登录账户时填写逗号(,)、引号(”)等,但是很多异常场景无法覆盖到,比如笔者曾经在测试过程中遇到过输入三个逗号才能引起系统异常的情况。这种异常测试靠人的思维进行穷举是非常困难的,但如果进行抽样测试又很难确保没有测试遗漏。

3.当前逐条用例编写的方式会占用相当多的工作量。当前接口测试也有很多自动化的测试方法,其主要体现在用例的执行与结果输出的自动化,但是用例的编写却需要用例编写人员逐条编写,占用较多的资源。



技术实现要素:

以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。

本发明的目的在于解决上述问题,提供了一种覆盖全异常字符的自动化api接口测试方法和系统,基于导入的api接口参数模板自动生成接口测试用例,且覆盖全部的异常字符,从而高效发现api与系统的接口缺陷,保证系统与软件质量。

本发明的技术方案为:本发明揭示了一种覆盖全异常字符的自动化api接口测试系统,包括管理模块、api参数管理模块、用例数据生成模块、系统配置模块、用例执行模块和结果比较报告生成模块,其中:

管理模块,用于对测试系统进行调度、运行与操作管理;

api参数管理模块,用于存储包含api接口参数的各个api参数模板,api参数模板中的数据是生成测试用例及预期结果的依据;

用例数据生成模块,用于依据api参数模板自动产生测试用例、测试数据以及对应的期望结果;

系统配置模块,用于配置测试用例运行的对应参数;

用例执行模块,依据测试数据对测试用例进行测试执行,对逐条用例的执行结果与预期结果进行自动比对,最终结果产生到结果比较报告生成模块的测试报告中;

结果比较报告生成模块,用于统计测试运行的结果,并将测试结果生成文本格式的测试报告供测试者查看。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,用例数据生成模块包括接口文件解析单元、参数选择单元、数据生成单元和日志单元,其中:

接口文件解析单元,用于从接口文件中读取待测接口的相关参数信息,并进行格式化;

参数选择单元,用于从命令行中或者配置文件中读传入的参数,然后检验合法性后将参数作为数据生成单元的入参;

数据生成单元,用于根据参数选择单元和接口文件解析单元的输出信息,来生成对应的测试数据;

日志单元,用于记录用例产生过程的日志。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,接口文件解析单元配置为扫描指定目录下是否存在接口文件;检查指定目录下的接口文件是否符预定义的格式规范;按照预定义的规范读取接口文件中的函数名、参数名、参数类型、参数标准值信息;将读取的参数信息转换为预定义的标准的数据结构。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,参数选择单元配置为从命令行或者配置文件中读取传入的参数,将待测接口的需要自动生成的参数标识出;检验传入参数的合法性,通过检验传入的参数,按照设定规则是否能够在接口解析文件单元生成的数据中找到,来校验传入参数的合法性;将通过合法性校验后的参数传出。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,数据生成单元配置为根据参数选择单元的输入信息,找到待测接口中对应参数的位置,并记录该参数的位置和类型;根据该参数的类型计算参数的长度,生成一个对应长度字节数组,然后按照ascii码排列组合填充到参数的字节数组中;按照规则穷举ascii生成对应的字节数组;将生成的字节数字替换对应待测接口中的参数的标准值。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,管理模块管理的对象包括但不限于测试的启动、测试api参数选择、测试数据生成、测试日志与结果查看。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,系统配置模块配置的参数包括但不限于接口测试接入系统的ip地址、连接端口。

根据本发明的覆盖全异常字符的自动化api接口测试系统的一实施例,系统还包括:

日志模块,用于产生两种日志,包括生成测试用例以及数据的日志、用例执行过程的日志。

本发明还揭示了一种在前述的覆盖全异常字符的自动化api接口测试系统上实现的方法,方法包括:

步骤1:通过管理模块导入或者修改api参数模板;

步骤2:启动测试用例生成,若测试用例生成成功则继续步骤3,若测试用例生成失败则通过查看日志信息修改api参数模板后返回步骤1重新导入;

步骤3:执行测试用例;

步骤4:测试用例执行完毕后自动生成测试报告,测试过程结束。

本发明对比现有技术有如下的有益效果:本发明的方法通过导入api接口参数模板,用例编写模块根据参数模板自动产出测试用例、测试数据以及期望结果,用例传递给测试执行模块,由测试执行模块进行自动化执行并判断用例是否执行通过,最终产出测试报告。

附图说明

在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。

图1示出了本发明的覆盖全异常字符的自动化api接口测试系统的一实施例的整体架构示意图。

图2示出了本发明的系统中的用例数据生成模块的示意图。

图3示出了本发明的基于系统的覆盖全异常字符的自动化api接口测试方法的实施例的流程图。

具体实施方式

以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。

图1示出了本发明的覆盖全异常字符的自动化api接口测试系统的一实施例的整体架构。请参见图1,本实施例的系统包括:管理模块、api参数管理模块、用例数据生成模块、日志模块、系统配置模块、用例执行模块和结果比较报告生成模块。

上述模块中,管理模块分别与api参数管理模块、用例数据生成模块、日志模块、系统配置模块之间进行数据传输。用例数据生成模块分别与管理模块、api参数管理模块、日志模块、用例执行模块之间进行数据传输。用例执行模块分别与用例数据生成模块、系统配置模块、日志模块、结果比较报告生成模块之间进行数据传输。结果比较报告生成模块和日志模块之间进行数据传输。

管理模块用于对测试系统进行调度、运行与操作管理,管理的具体内容包括但不限于测试的启动、测试api参数选择、测试数据生成、测试日志与结果查看。

api参数管理模块用于存储api接口参数的各个api参数模板,依据参数模板中的数据生成测试用例以及预期结果。

用例数据生成模块用于依据api参数模板的数据通过算法,自动产生测试用例、测试数据以及对应的期望结果。

对于数据通过算法,其实现如下。

判断输入字段是单个字符还是字符串,根据字符或是字符串的情况分别进行处理。

如果输入字段为单个字符(如char类型),则将该字符依据二进制0-255遍历,每个二进制值为一条用例,该字段总共为256条用例。

如果输入字段为字符串(如char[7]),则将字符分为偶序列(char[0]、char[2]…)与奇序列(char[1]、char[3]…),所有偶序列与奇序列的字符相同,均依据二进制0-255进行遍历,然后互相组合形成测试用例,该字段总共会生成65536条用例。

单个api在生成用例时其他字段均采用模板中的默认值,而只有被测试字段采用以上算法生成,最终一个api的测试用例总数为所有字段用例数量的总和。

进一步的,如图2所示,用例数据生成模块包括接口文件解析单元、参数选择单元、数据生成单元和日志单元。

这些单元中,接口文件解析单元和参数选择单元之间进行数据传输,数据生成单元分别与接口文件解析单元、参数选择单元和日志单元之间进行数据传输。

接口文件解析单元用于从接口文件中读取待测接口的相关参数信息,并进行格式化。接口文件解析单元的具体处理为:扫描指定目录下是否存在接口文件(通常是csv格式文件);检查指定目录下的接口文件是否符预定义的格式规范;按照预定义的规范读取接口文件中的函数名、参数名、参数类型、参数标准值信息;将读取的参数信息转换为预定义的标准的数据结构。

参数选择单元用于从命令行中或者配置文件中读传入的参数,然后检验合法性后,将参数作为数据生成单元的入参。参数选择单元的具体处理如下:从命令行或者配置文件中读取传入的参数,来标识待测接口的哪个参数或者哪几个参数需要自动生成;检验传入参数的合法性,通过检验传入的参数,按照某种规则是否能够在接口解析文件单元生成的数据中找到,来校验传入参数的合法性;将通过合法性校验后的参数传出。

数据生成单元用于根据参数选择单元和接口文件解析单元的输出信息,来生成对应的测试数据。数据生成单元的具体处理如下:根据参数选择单元的输入信息,找到待测接口中对应参数的位置,并记录该参数的位置和类型;根据该参数的类型,计算参数的长度,生成一个对应长度字节数组,然后按照ascii码排列组合填充到参数的字节数组中;按照规则穷举ascii生成对应的字节数组;将生成的字节数字替换对应待测接口中的参数的标准值。

日志单元用于记录用例产生过程的日志。

日志模块用于产生两种日志,这两种日志包括生成测试用例以及数据的日志、用例执行过程的日志。

系统配置模块用于配置测试用例运行的对应参数,参数包括但不限于接口测试接入系统的ip地址、连接端口。

用例执行模块依据测试数据对测试用例进行测试执行,对逐条用例的执行结果与预期结果进行自动比对,运行日志记录到日志模块,最终结果产生到结果比较报告生成模块的测试报告中。

结果比较报告生成模块用于统计测试运行的结果,并将测试结果生成文本格式的测试报告供测试者查看。

图3示出了本发明的基于系统的覆盖全异常字符的自动化api接口测试方法的实施例的流程。请参见图3,基于前述的系统实施例,下述内容是覆盖全异常字符的自动化api接口测试方法的具体实施步骤。

步骤s1:通过管理模块导入或者修改api参数模板。

步骤s2:启动测试用例生成。若测试用例生成成功,则继续步骤s3,若测试用例生成失败,则通过查看日志信息修改api参数模板后返回步骤s1重新导入。

步骤s3:执行测试用例。

步骤s4:测试用例执行完毕后自动生成测试报告,测试过程结束。

尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。

本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。

结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心协作的一个或多个微处理器、或任何其他此类配置。

结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。

在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。

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