一种测试方法和测试系统的制作方法

xiaoxiao2020-10-23  13

一种测试方法和测试系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别地涉及一种测试方法和测试系统。
【背景技术】
[0002]传统的接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。目前的实现主要是由开发人员或白盒测试工程师,自己编写程序去调用或者利用一些工具去执行接口测试。这种方式对需要测试人员的编程水平要求比较高,并且没有一个好的工具能够对所有的接口类型进行支持,例如:主流的工具像SOAPn只支持soap的和REST协议的接口。所以在接口测试过程中,往往需要自己编写程序来测试接口。存在一个成本的问题。
[0003]传统的自动化测试通常是使用人工或者自动手段来运行或测试某个系统,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。自动化测试分Π(用户界面)的自动化测试(通过操作鼠标和键盘模拟人的行为,达到自动测试)。和接口的自动化测试(通过编写接口调用代码或者接口测试工具测试接口),在此过程中,为了节省人力、时间或硬件资源,提高测试效率。
[0004]目前在许多情况下,传统的自动化测试、接口测试因种种原因变得困难,以下举例说明。
[0005]例如,随着应用系统的复杂度的提高,依赖外围的接口很多,测试环境不够独立。实现手工和自动化Π测试很困难。比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败.导致自动化结果经常出错,无法进行自动化Π测试和接口测试,也困挠着手工测试的开展。
[0006]又如,被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理,比如开发过程中service层的代码中,包含对Dao层的调用,但是,DAO层代码尚未实现。手工测试,自动化UI测试,接口测试都无法进行。
[0007]再如,被测的接口较难模拟或者构造比较复杂,无法进行手工,接口和自动化Π测试。例如银行支付的接口异常条件有很多,但是模拟这种异常条件很复杂或者无法模拟,或者有些支付接口是真实的接口,不能直接进行调用或测试。但是业务测试必须依赖此类接口和程序才能实现一个完整的流程。手工测试,自动化Π测试,接口测试都无法进行。
[0008]再如,自动化UI测试和接口测试依赖很稳定的测试环境,搭建一套完整的自动化测试环境很困难。跨部门合作的时候,当前项目组大部分接口都是调用别的项目组的接口,程序的控制不在自己组内,在其它组更新环境或者修改接口基础数据的时候,经常会出现接口不可用的情况,或者依赖这个接口的测试数据被别的项目组的人改了,手工测试,自动化UI测试,接口测试都无法进行或者进行的非常困难。
[0009]总体而言,在被测系统的外部系统的数据因种种原因不可用的情况下,手工测试,自动化UI测试,接口测试都无法进行。

【发明内容】

[0010]有鉴于此,本发明提供一种测试方法和测试系统,能够使被测系统在其外部系统的数据不可用的情况下仍进行测试。
[0011]为实现上述目的,根据本发明的一个方面,提供了一种测试方法。
[0012]本发明的测试方法包括:步骤A:获取被测系统的指定外围接口的传入参数,并调用模拟方法,所述模拟方法的方法名与所述外围接口的对应于所述被测系统的方法的方法名相同;步骤B:根据所述模拟方法,调用公共方法并将所述传入参数作为该公共方法的传入参数,所述公共方法用于从数据库中获取预先配置的该传入参数对应的返回值;步骤C:输出所述返回值。
[0013]可选地,在所述步骤A中,运行接口测试脚本以获取所述传入参数;并且所述步骤A中还包括:运行自动化接口测试脚本或自动化测试脚本。
[0014]可选地,所述步骤A之前,还包括:将所述外围接口的多个传入参数及其对应的返回值保存在数据库中;所述步骤C之后,还包括:再次执行步骤A,其中获取的传入参数为所述多个传入参数中的未获取过的传入参数。
[0015]根据本发明的另一方面,提供了一种测试系统。
[0016]本发明的测试系统包括:第一调用模块,用于获取被测系统的指定接口的外围接口的传入参数,并调用模拟方法,所述模拟方法的方法名与所述外围接口的对应于所述被测系统的方法的方法名相同;第二调用模块,用于根据所述模拟方法,调用公共方法并将所述传入参数作为该公共方法的传入参数,所述公共方法用于从数据库中获取预先配置的该传入参数对应的返回值;输出模块,用于输出所述返回值。
[0017]可选地,所述第一调用模块还用于运行接口测试脚本以获取所述传入参数,并且在同一次测试中运行自动化用户界面测试脚本。
[0018]可选地,还包括保存模块和控制模块,其中:所述保存模块用于将所述外围接口的多个传入参数及其对应的返回值保存在数据库中;所述控制模块用于在所述输出模块输出所述返回值之后触发所述第一调用模块;所述第一调用模块还用于从所述数据库中获取未获取过的传入参数。
[0019]可选地,还包括记录模块,用于记录所述外围接口所属的外部系统是否可用;所述第一调用模块还用于在所述外部系统可用的情况下,调用所述外围接口的对应于所述被测系统的方法;以及在所述外部系统不可用的情况下,调用所述模拟方法。
[0020]根据本发明的技术方案,根据被测系统的外围接口的说明文档实现模拟接口,在该模拟接口的实现类的方法中查询预先配置好的数据库,该数据库中保存有外围接口的传入参数和对应的返回值,这样采用模拟接口代替实际的外围接口,从而将被测系统与外部系统解耦,测试时不依赖于外部系统的数据是否可用,使被测系统在其外部系统的数据不可用的情况下仍进行测试。
【附图说明】
[0021]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0022]图1是根据本发明实施例的测试方法的示意图;
[0023]图2是根据本发明实施例的测试系统的模块的示意图。
【具体实施方式】
[0024]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0025]对于一个被测系统,其有一个或多个用于与外部系统进行数据交换的外围接口,其中有些外围接口在外部系统中维护,从而被测系统的一些测试数据也在外部系统中维护,这些数据有可能处于不可用的状态。因此为了保证本系统测试的可靠性,需要解除对这些外部系统的数据的依赖。本实施例中,根据外围接口的说明文档,将外围接口的所有在测试过程中输入的参数,和该输入参数对应的返回值,存储到数据库中。并且实现模拟接口的实现类,在外部系统数据不可用时代替外围接口。模拟接口的方法为模拟方法,该模拟方法的方法名与外围接口的对应于被测系统的方法的方法名相同(外部系统通过一个接口与多个系统关联,该接口实现类对应于该多个系统有不同的方法),这样如果外部系统数据可用,则按该方法名调用的是外围接口的对应于所述被测系统的方法,反之则调用的是模拟方法。这样无需修改被测系统的代码。模拟方法在被调用时,根据该模拟方法,进一步调用一个用来查询数据库的方法,在此将其称作公共方法,这样,传入外围接口的传入参数后,调用模拟方法就可以从数据库中得到该传入参数的返回值。因为每个外围接口都有可能需要一个模拟接口来代替,所以对于数据库需要多次进行类似的查询,这样将查询操作以一个公共方法来实现,有助于简化模拟方法的代码编写和维护。
[0026]在系统测试前的发布环节中,采用Maven工具或JAVA命令将各个模拟接口的实现类打一个jar包,将此包放入被测的应用程序环境目录下,并设置配置文件中的接口实现类的地址。因为外部系统的数据可用性往往是不确定的,在其可用时,仍直接使用;不可用时,即采用本实施例的方案,采用上述的数据库中的返回值。所以在发布接口时,需根据外部系统的数 据是否可用,将接口实现类的地址设置为系统将来实际使用的接口实现类的地址或者设置为模拟接口的实现类的地址。
[0027]在接口测试时,启动被测系统的应用程序,运行接口测试脚本,其中对于需要用到的外部系统的数据,在该外部系统数据不可用时,根据图1所示的流程处理,图1是根据本发明实施例的测试方法的示意图。
[0028]步骤Sll:获取被测接口的传入参数。运行测试脚本时读取传入参数,这些传入参数都是上述数据库中的传入参数。
[0029]步骤S12:调用模拟方法。
[0030]步骤S13:调用公共方法。公共方法是在调用并执行模拟方法时,根据模拟方法中的指令进行调用。此时公共方法的传入参数为步骤Sll中获取的传入参数。在执行该公共方法时,即从数据库中查询传入参数对应的返回值。
[0031]步骤S14:输出步骤S13中得到的返回值。该返回值作为参数,被接口测试脚本的其他指令使用,从而得以完成测试。
[0032]在有些情况下对于被测系统,需要先后采用多组传入参数进行测试,所以在步骤S14之后,可以再次返回步骤S11,并获取新的即之前未获取过的传入参数,以及执行步骤S12至步骤S14。
[0033]步骤Sll中可以通过运行接口测试脚本以获取被测接口的传入参数,此时还可以运行自动化接口测试脚本以进行自动化测试。因为按照上述流程,使依赖于外部系统的数据的接口所需数据已经可以通过调用公共方法从数据库中获得,从而使被测系统与外部系统解耦,使自动化测试过程中需要的数据都可得到,从而顺利完成自动化测试。
[0034]图2是根据本发明实施例的测试系统的模块的示意图。如图2所示,在现有的测试系统的基础上,测试系统20还包括第一调用模块21、第二调用模块22、以及输出模块23。
[0035]第一调用模块21用于获取被测系统的指定接口的外围接口的传入参数,并调用模拟方法;第二调用模块22用于根据模拟方法,调用公共方法并将传入参数作为该公共方法的传入参数;输出模块23用于输出该返回值。
[0036]第一调用模块21还可用于运行接口测试脚本以获取被测接口的传入参数,并且在同一次测试中运行自动化用户界面测试脚本。
[0037]测试系统20还可包括保存模块和控制模块(图中未示出),其中:保存模块用于将被测接口的多个传入参数及其对应的返回值保存在数据库中;控制模块用于在输出模块23输出返回值之后触述第一调用模块21 ;这样,第一调用模块21还可用于从数据库中获取未获取过的传入参数。
[0038]测试系统20还可包括记录模块(图中未示出),可采用配置文件来实现,用于记录被测接口的外部系统是否可用;这样第一调用模块21还可用于在外部系统可用的情况下,按照指定的方法名称调用外部系统的接口的方法;以及在外部系统不可用的情况下,按照指定的方法名称调用被测接口的方法。即优先使用实际的外部系统数据,只有当外部系统数据不可用时再采用数据库中配置的数据。
[0039]根据本发明实施例的技术方案,根据被测系统的外围接口的说明文档实现模拟接口,在该模拟接口的实现类的方法中查询预先配置好的数据库,该数据库中保存有外围接口的传入参数和对应的返回值,这样采用模拟接口代替实际的外围接口,从而将被测系统与外部系统解耦,测试时不依赖于外部系统的数据是否可用,使被测系统在其外部系统的数据不可用的情况下仍进行测试。
[0040]以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
[0041 ] 因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
[0042]还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
[0043]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【主权项】
1.一种测试方法,其特征在于,包括: 步骤A:获取被测系统的指定外围接口的传入参数,并调用模拟方法,所述模拟方法的方法名与所述外围接口的对应于所述被测系统的方法的方法名相同; 步骤B:根据所述模拟方法,调用公共方法并将所述传入参数作为该公共方法的传入参数,所述公共方法用于从数据库中获取预先配置的该传入参数对应的返回值; 步骤C:输出所述返回值。2.根据权利要求1所述的方法,其特征在于, 在所述步骤A中,运行接口测试脚本以获取所述传入参数; 并且所述步骤A中还包括:运行自动化接口测试脚本或自动化测试脚本。3.根据权利要求1或2所述的方法,其特征在于, 所述步骤A之前,还包括:将所述外围接口的多个传入参数及其对应的返回值保存在数据库中; 所述步骤C之后,还包括:再次执行步骤A,其中获取的传入参数为所述多个传入参数中的未获取过的传入参数。4.一种测试系统,其特征在于,包括:第一调用模块,用于获取被测系统的指定接口的外围接口的传入参数,并调用模拟方法,所述模拟方法的方法名与所述外围接口的对应于所述被测系统的方法的方法名相同;第二调用模块,用于根据所述模拟方法,调用公共方法并将所述传入参数作为该公共方法的传入参数,所述公共方法用于从数据库中获取预先配置的该传入参数对应的返回值; 输出模块,用于输出所述返回值。5.根据权利要求4所述的测试系统,其特征在于,所述第一调用模块还用于运行接口测试脚本以获取所述传入参数,并且在同一次测试中运行自动化用户界面测试脚本。6.根据权利要求4或5所述的测试系统,其特征在于,还包括保存模块和控制模块,其中: 所述保存模块用于将所述外围接口的多个传入参数及其对应的返回值保存在数据库中; 所述控制模块用于在所述输出模块输出所述返回值之后触发所述第一调用模块; 所述第一调用模块还用于从所述数据库中获取未获取过的传入参数。7.根据权利要求4或5所述的测试系统,其特征在于, 还包括记录模块,用于记录所述外围接口所属的外部系统是否可用; 所述第一调用模块还用于在所述外部系统可用的情况下,调用所述外围接口的对应于所述被测系统的方法;以及在所述外部系统不可用的情况下,调用所述模拟方法。
【专利摘要】本发明提供一种测试方法和测试系统,能够使被测系统在依赖的外部系统的测试数据或者接口不可用的情况下仍进行测试。本发明的测试方法包括:步骤A:获取被测系统的指定外围接口的传入参数,并实现模拟方法,所述模拟方法的方法名与所述外围接口的对应于所述被测系统的方法的方法名相同;步骤B:根据所述模拟方法,调用公共方法并将所需传入参数作为该公共方法的传入参数,所述公共方法用于从数据库中获取预先配置的该传入参数对应的返回值;步骤C:输出所述返回值。接下来即可配置模拟接口方法和真实接口的开关,动态控制程序调用,以及正常的进行手工测试和接口自动化测试。
【IPC分类】G06F11/26, G06F11/36
【公开号】CN104881343
【申请号】CN201410068754
【发明人】谭鹏飞
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
【公开日】2015年9月2日
【申请日】2014年2月27日
转载请注明原文地址:https://www.famiwei.com/read-8138732.html

最新回复(0)