一种准备接口测试数据的方法及系统的制作方法

文档序号:6440772阅读:951来源:国知局

专利名称::一种准备接口测试数据的方法及系统的制作方法
技术领域
:本申请涉及测试
技术领域
,特别是涉及一种准备接口测试数据的方法及系统。
背景技术
:接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。在接口测试中,执行测试用例时,可以应用SQL语句对数据库中的数据执行查询、更新等操作,此时需要从数据库中调用测试所需的数据,然后执行相应操作。由于系统经常在升级和维护,因此需要不断的执行同一测试用例来测试系统是否存在问题,执行测试用例执行过后,由于更新等操作会导致数据的变更,但是每次执行测试用例时都需要从数据库中调用原始数据。因此为了保证数据的唯一性,可以将预先将数据库中的原始数据保存到excel表中,再次执行测试用例前,可以使用把excel表中的原始数据还原到数据库中。具体操作时,首先需要预先获取测试用例中需要调用的数据,然后在数据库中手动输入SQL语句查询上述要调用的数据,并且手动将数据导出再存入excel表中。在这个过程中,由于数据库中的数据是手动输入语句来获得的,因此数据都是独立的,这就需要手动维护主从表之间的关联性。因为在存储数据时每一个数据库对应一张excel表,由于接口测试所需的数据可能分布在几个数据库中,因此接口测试可能需要用到多张excel表中的数据,此时需要确保各个excel表中数据是彼此关联的。在数据还原到数据库,执行测试用例是才不会出错。其次,由于要预先获取测试用例中需要调用的数据,因此要求操作人员对测试用例非常熟悉,才能准确的将数据库中需要调用的数据存入excel表中,才能确保从excel表还原到数据库中的数据是准确的。否则一旦接口测试数据不准确,测试用例就会报错,再执行调试、编写测试脚本就会加大工作量,并且会耗费较长的时间。并且,在接口测试中若SQL语句要执行某些操作时,原本在数据中可能存在与操作执行相冲突的数据,因此需要在测试脚本中手动添加删除操作语句,将多余的数据删除以确保测试脚本运行成功。由上述可知,准备接口测试数据的方法很繁琐,要大量的手动配置,耗费时间很长,严重影响了接口测试脚本的编写效率,并且错误率较高。
发明内容本申请提供一种准备接口测试数据的方法及系统,以解决接口测试数据存储中方法繁琐,耗时长并且错误率高的问题。为了解决上述问题,本申请公开了一种准备接口测试数据的方法,包括:首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并将所述数据和数据的相关配置信息保存到excel表格中;再次执行测试用例,将excel表格中的数据还原到数据库中;若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;再次执行测试用例,调用属性文件执行删除操作。相应的,本申请还公开了一种准备接口测试数据的系统,包括:监听并拦截模块,用于首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析并解析模块,用于分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;第一保存模块,用于若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并将所述数据和数据的相关配置信息保存到excel表格中;第一还原模块,用于再次执行测试用例,将excel表格中的数据还原到数据库中;第二保存模块,用于若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;第二还原模块,用于再次执行测试用例,调用属性文件执行删除操作。与现有技术相比,本申请包括以下优点:本申请所述的方法在首次执行测试用例时,可以监听并拦截测试用例中的SQL语句,并根据SQL语句的操作类型进行解析,可以解析成查询语句。查询并保存相关数据,且可以同时保存数据的相关配置信息到excel表格中,自动维护了各excel表格的关联性,无需手动输入SQL语句查找相关数据,无需手动维护excel表格的关联性。在执行用例中拦截SQL语句并保存数据,可以确保数据的准确性。并且,预先存储相关的删除语句到属性文件中,再次执行测试用例,无需手动配置删除语句,而是自动调用预先存储在属性文件中的删除语句,将可能与操作执行相冲突的数据清除,确保测试脚本运行成功。可以实现SQL语句的自动拦截,相关数据自动存储及配置,耗时短,效率高并且错误率低。图1是本申请实施例所述一种准备接口测试数据的方法流程图;图2是本申请优选实施例所述一种准备接口测试数据的方法流程图;图3是本申请实施例所述一种准备接口测试数据的系统结构图。具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。Itest是一种接口测试框架,它是以junit为整个测试的基础框架,采用dbunit为自动管理数据库的工具,封装了dbunit的测试数据相关的内容来完成数据的生成和校验。Itest以excel为数据载体通过POI加载数据,最后通过unitils的annotation机制把整个数据以及excel的输入输出过程透明化。它支持使用excel文件里的数据来对数据库做插入、对比、删除等逻辑操作。其中,POI是Java开源工具包,专用于解析和生成与microsoft0LE2相关的文件类型,如word、excel等。现有技术中,是手工准备接口测试数据,需要预先获取测试用例中需要调用的数据,然后在数据库中手动输入SQL语句查询上述要调用的数据,并且手动将数据导出再存入excel表中,数据准备方法很繁琐,要大量的手动配置,耗费时间很长。本申请提供了一种准备接口测试数据的方法,可以实现SQL语句的自动拦截,相关数据自动存储及配置,耗时短,效率高并且错误率低。参照图1,其给出了本申请实施例所述一种准备接口测试数据的方法流程图。步骤11,首次执行测试用例时,监听并拦截测试用例中的SQL语句;为了保存数据库中的原始数据,因此在首次执行测试用例时,可以监听测试用例中的SQL语句,当执行SQL语句时进行拦截操作。步骤12,分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;在拦截SQL语句后,可以分析SQL语句的操作类型,SQL语句的操作类型包括:查询(selsct)、删除(delete)、更新(update)和插入(insert)。·SQL语句的操作类型指SQL要执行的操作的类型,可以包括查询操作、删除操作、更新操作和插入操作。当所述操作类型为查询、删除和更新时,将所述SQL语句解析成查询语句,然后执行步骤13;例如,SQL语句要执行的操作是删除X,则将所述SQL语句解析成查询语句,查询X。具体实施中,对于查询类型的接口,例如,SQL语句形式为selectfieldl,field2fromtablewherecondition,可以将SQL语句解析成相应的查询语句,其形式如:select*fromtablewherecondition。同样的,对于删除类型的接口,SQL语句形式如:deletefromtablewherecondition;和更新类型的接口,SQL语句形式如:updatetablesetfield=Wherecondition。可以将SQL语句解析成相应的查询语句,其形式如:select*fromtablewherecondition。当所述操作类型为插入时,将所述SQL语句解析成删除语句,然后执行步骤14。例如,SQL语句的操作是在A和C之间插入B,因此会将SQL语句解析为删除语句,如删除A和C之间的B。对于插入类型的接口,SQL语句形式如:insertintotalbevalues(,,)wherecondition,可以将SQL语句直接解析成删除语句,其形式如:deletefromtablewherecondition。其中,所述查询类型的接口是指该接口实现对数据库中的数据进行查询操作;所述删除类型的接口是指该接口实现对数据库中的数据进行删除操作;所述更新类型的接口是指该接口实现对数据库中的数据进行更新操作;所述插入类型的接口是指该接口实现对数据库中的数据进行插入操作。若将所述SQL语句解析成查询语句,则:步骤13,则通过执行所述查询语句查找相关数据,自动将所述数据和数据的相关配置信息保存到excel表格中;若上述操作中将所述SQL语句解析成查询语句,则可以执行所述查询语句的查询操作,查找到相关的数据,自动将所述数据和数据的相关配置信息保存到excel表格中。步骤13后,再次执行测试用例时,执行步骤15。上例中SQL语句要执行的操作是删除X,则将所述SQL语句解析成查询语句,查询X。然后执行查询X的操作,查找X并将X和X的相关配置信息自动保存到相应的excel表格中。具体可以包括:步骤131,执行所述查询语句,查询相关数据的记录;上述步骤中,将SQL语句解析成形如:select*fromtablewherecondition的查询语句,然后可以执行所述查询语句的查询操作,查询数据库中是否有相关数据及数据的记录。当有记录返回时,执行步骤132;当无记录返回时,将所述SQL语句解析成删除语句,然后执行步骤14。例如,执行查询X的操作,查询数据库中是否有X,若有X则有X的记录,然后有记录返回;若无X则无X的记录,也就无记录返回。对于无记录返回的情况,会执行步骤14。例如,可以将返回记录数为O的情况,视为无记录返回。此处是具体实施中的一种方式,不应理解为是对本申请的限制。步骤132,在所述记录对应的数据库中,根据主键对记录进行去重处理;若有相关数据,则有数据记录,执行查询操作时会有记录返回,此时在所述记录对应的数据库中,根据主键对记录进行去重处理,是数据保持最原始的状态。这是因为,接口中对某一个表的查询可能会涉及到多次的调用,过程中间某些字段在被外部的接口调用的过程中,字段值会发生变更,而接口测试所需的数据必须确保最原始的状态,否则脚本断言就会失败。其中,断言是用于捕捉代码中做出的假设。步骤133,自动保存数据库中该记录的相关数据及数据的配置信息到cxcel表格中。将数据库中返回记录的数据以及数据的配置信息,保存到cxcel表格中。具体在保存数据的操作中,一个数据库的数据保存到一个excel表格,一个测试用例的数据保存在一个cxcel文件中。因为一个测试用例可能调用多个数据库中的数据,因此在测试用例的cxcel文件中可能含有多个cxcel表格。本申请在自动将数据保存到excel中时,会自动配置各个excel表的关联性。具体实施中,可以利用dbunit自带的功能,实现数据保存到excel表格中,因为拦截的是对数据库进行查询的SQL语句,数据库本身对数据的存取就能确保数据的完整性,因此不需要人为的进行干预,就可以动配置各个excel表的关联性。这是具体实施中的一种方式,此处不应理解为是对本申请的限制。若将所述SQL语句解析成删除语句,则:步骤14,保存所述删除语句到相应属性文件中;在上述步骤中,将SQL语句直接解析成形如:deletefromtablewherecondition的删除语句,将所述删除语句保存到相应的属性文件中,例如XML文件。在步骤14后,再次执行测试用例时,执行步骤16。上例中SQL语句的操作是在A和C之间插入B,因此会将SQL语句解析为删除语句,如删除A和C之间的B,将所述删除语句保存在相应的属性文件中。步骤15,自动将excel表格中的数据还原到数据库中。上述步骤中,在首次执行测试用例时,可以自动将数据及数据的配置信息保存在excel表格中。因此再次执行测试用例,然后可以excel表格中的数据还原到数据库中,确保数据库中用于接口测试的数据是原始数据。例如,首次执行测试用例时,SQL语句的操作是将A更新为A',因此会查询出A并存入excel表格中,然后执行更新操作使数据更新为k',则数据库中保存的数据变更为K'。再次执行测试用例时,可以将excel表格中的A还原到数据库中,即将A'替换成A,通过上述步骤可以确保数据库中用于接口测试的数据是原始数据。步骤16,自动调用属性文件执行删除操作。上述步骤中,在首次执行测试用例时,可以自动将删除语句保存到相应的属性文件中。因此再次执行测试用例,可以自动调用属性文件执行删除语句的相关删除操作,这是为了确保测试用例初始化时能优先把不相干的数据清理干净,将不相干的数据对最后测试用例运行结果的影响降为O。通过上述步骤可以确保数据库中用于接口测试的数据是原始数据例如,首次执行测试用例时,SQL语句的操作是在A和C之间插入B,因此会将SQL语句解析为删除语句,如删除A和C之间的B。然后执行插入操作,使数据库中的数据由A、C变更为A、B、C。再次执行测试用例时,可以调用属性文件中保存的删除语句执行删除操作,删除A和C之间的B,通过上述步骤可以确保数据库中用于接口测试的数据是原始数据。综上所述,本申请所述的方法在首次执行测试用例时,可以监听并拦截测试用例中的SQL语句,并根据SQL语句的操作类型进行解析,可以解析成查询语句。查询并保存相关数据,且可以同时保存数据的相关配置信息到excel表格中,自动维护了各excel表格的关联性,无需手动输入SQL语句查找相关数据,无需手动维护excel表格的关联性。在执行用例中拦截SQL语句并保存数据,可以确保数据的准确性。并且,预先存储相关的删除语句到属性文件中,再次执行测试用例,无需手动配置删除语句,而是自动调用预先存储在属性文件中的删除语句,将可能与操作执行相冲突的数据清除,确保测试脚本运行成功。可以实现SQL语句的自动拦截,相关数据自动存储及配置,耗时短,效率高并且错误率低。具体实施的过程中,一种优选的实施例是在根据主键对记录进行去重处理后,暂时将数据保存在内存中,在测试用例执行完毕后,再将数据保存excel中。优选的,监听并拦截测试用例中的SQL语句之前,还包括:接口通过数据驱动连接数据库,通过监听所述数据驱动获取接口与数据库的连接。在接口测试中,接口会通过数据驱动与数据库连接,在本申请中,实现了连接数据库的规范,从而拦截了所有的数据驱动。即要拦截测试用例中的SQL语句,需要监听数据库的所有连接,就可以在对数据库执行查询、更新等操作前进行拦截。因此通过监听所述数据驱动,获取接口与数据库的连接,就可以拦截到相应的SQL语句。进一步,根据被拦截SQL语句的操作类型,执行相应的查询、删除、更新或插入操作。上述操作中,保存了数据和数据相关配置信息,但是被拦截的SQL语句还没有执行,因此可以执行相应的SQL语句。被拦截的SQL语句执行结束后,若仍存在需要拦截的SQL语句,则继续执行SQL语句拦截操作,执行上述步骤11到步骤14的过程。否则结束操作,测试用例执行完毕。通常在一个测试用例中会包含很多的SQL语句,这些SQL语句可能会执行查询、更新、删除或插入操作,因此需要按照语句执行的顺序拦截相应的SQL语句,循环执行步骤11到步骤14的过程,直到没有需要被拦截的SQL语句为止。现有技术中,将数据手工从数据库中导出后,在保存到excel表格时,还得重新维护记录主键的唯一性。在本申请中通过excel准备数据,使用OITestDataSet标签进行数据的插入。为了防止数据在运行时与功能测试数据的冲突,设定单元测试的数据主键的规则,例如:数据主键采用11位编号,*2位项目编号+4位测试类编号+3位用例编号+2位数据编号。数据编号,在需要准备多条数据时递增即可。参照图2,给出了本申请优选实施例所述一种准备接口测试数据的方法流程图。首先监听接口对数据库的连接,再拦截SQL语句,并分析被拦截的SQL语句,若SQL语句是查询、删除或更新操作,则将所述SQL语句解析成查询语句;gSQL语句是插入操作,则将所述SQL语句解析成删除语句。然后执行查询操作,向数据库中查询相应的数据,若数据库中有记录返回,则切换到数据库,根据主键对记录结果进行去重处理,并将数据保存在内存中;若数据库中无记录返回,即返回记录数为0,则将SQL语句解析为删除语句,并将删除语句保存在内存中。执行被拦截SQL语句的查询、删除、更新或插入操作,判断是否拦截完毕(即是否没有要被拦截的SQL语句),若否,则返回拦截SQL语句的操作,继续执行拦截;若是,则执行测试用例完毕,将内存中保存的数据存入excel中,将删除语句保存在属性文件中,并详细记录数据库、表和字段等的详细信息。参照图3,其给出了本申请实施例所述一种准备接口测试数据的系统结构图。相应的本申请还提供了一种准备接口测试数据的系统,包括:监听连接模块10、监听并拦截模块11、分析并解析模块12、第一保存模块13、第二保存模块14、执行操作模块15、判断模块16、第一还原模块17和第二还原模块18,其中,监听连接模块10,用于接口通过数据驱动连接数据库,通过监听所述数据驱动获取接口与数据库的连接;监听并拦截模块11,用于首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析并解析模块12,用于分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;第一保存模块13,用于若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并自动将所述数据和数据的相关配置信息保存到excel表格中;第二保存模块14,用于若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;执行操作模块15,用于根据被拦截SQL语句的操作类型,执行相应的查询、删除、更新或插入操作;判断模块16,用于判断若仍存在需要拦截的SQL语句,则继续执行SQL语句拦截操作,否则结束操作;第一还原模块17,用于再次执行测试用例,自动将excel表格中的数据还原到数据库中;第二还原模块18,用于再次执行测试用例,自动调用属性文件执行删除操作。具体的,所述分析并解析模块12,包括:第一解析子模块121,用于当所述操作类型为查询、删除和更新时,将所述SQL语句解析成查询语句;第二解析子模块122,用于当所述操作类型为插入时,将所述SQL语句解析成删除语句。具体的,所述第一保存模块13,包括:查询子模块131,用于执行所述查询语句,查询相关数据的记录;去重处理子模块132,用于当有记录返回时,则在所述记录对应的数据库中,根据主键对记录进行去重处理;解析子模块,用于当无记录返回时,将所述SQL语句解析成删除语句并保存到相应的属性文件中。保存子模块134,用于自动保存数据库中该记录的相关数据及数据的配置信息到cxcel表格中。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。以上对本申请所提供的准备接口测试数据的方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。权利要求1.一种准备接口测试数据的方法,其特征在于,包括:首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析所述SQL语句的操作类型,并根据所述操作类型,解析所述SQL语句;若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并将所述数据和数据的相关配置信息保存到excel表格中;再次执行测试用例时,将excel表格中的数据还原到数据库中;若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;再次执行测试用例时,调用属性文件执行删除操作。2.根据权利要求1所述的方法,其特征在于,所述根据所述操作类型解析所述SQL语句,包括:当所述操作类型为查询、删除和更新时,将所述SQL语句解析成查询语句;当所述操作类型为插入时,将所述SQL语句解析成删除语句。3.根据权利要求2所述的方法,其特征在于,若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并将所述数据和数据的相关配置信息保存到excel表格中,包括:执行所述查询语句,查询相关数据的记录;当有记录返回时,则在所述记录对应的数据库中,根据主键对记录进行去重处理;保存数据库中该记录的相关数据及数据的配置信息到excel表格中。4.根据权利要求3所述的方法,其特征在于,还包括:当无记录返回时,将所述SQL语句解析成删除语句并保存到相应的属性文件中。5.根据权利要求2所述的方法,其特征在于,还包括:根据被拦截SQL语句的操作类型,执行相应的查询、删除、更新或插入操作。6.根据权利要求4所述的方法,其特征在于,还包括:若仍存在需要拦截的SQL语句,则继续执行SQL语句拦截操作。7.根据权利要求1至6中任一项所述的方法,其特征在于,监听并拦截测试用例中的SQL语句之前,还包括:接口通过数据驱动连接数据库,通过监听所述数据驱动获取接口与数据库的连接。8.—种准备接口测试数据的系统,其特征在于,包括:监听并拦截模块,用于首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析并解析模块,用于分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;第一保存模块,用于若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并将所述数据和数据的相关配置信息保存到excel表格中;第一还原模块,用于再次执行测试用例,将excel表格中的数据还原到数据库中;第二保存模块,用于若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;第二还原模块,用于再次执行测试用例,调用属性文件执行删除操作。9.根据权利要求8所述的系统,其特征在于,所述分析并解析模块,包括:第一解析子模块,用于当所述操作类型为查询、删除和更新时,将所述SQL语句解析成查询语句;第二解析子模块,用于当所述操作类型为插入时,将所述SQL语句解析成删除语句。10.根据权利要求8或9所述的系统,其特征在于,所述第一保存模块,包括:查询子模块,用于执行所述查询语句,查询相关数据的记录;去重处理子模块,用于当有记录返回时,则在所述记录对应的数据库中,根据主键对记录进行去重处理;保存子模块,用于保存数据库中该记录的相关数据及数据的配置信息到excel表格中。全文摘要本申请提供了一种准备接口测试数据的方法及系统,所述的方法包括首次执行测试用例时,监听并拦截测试用例中的SQL语句;分析所述SQL语句的操作类型,并根据所述操作类型解析所述SQL语句;若将所述SQL语句解析成查询语句,则通过执行所述查询语句查找相关数据,并自动将所述数据和数据的相关配置信息保存到excel表格中;再次执行测试用例,自动将excel表格中的数据还原到数据库中;若将所述SQL语句解析成删除语句,则保存所述删除语句到相应属性文件中;再次执行测试用例,自动调用属性文件执行删除操作。可以实现SQL语句的自动拦截,相关数据自动存储及配置,耗时短,效率高并且错误率低。文档编号G06F11/267GK103164312SQ201110410150公开日2013年6月19日申请日期2011年12月9日优先权日2011年12月9日发明者葛媛,金争争,盛雁,童建芬,李松源申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1