CN111666201A - 回归测试方法、装置、介质及电子设备 - Google Patents
回归测试方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN111666201A CN111666201A CN201910176662.7A CN201910176662A CN111666201A CN 111666201 A CN111666201 A CN 111666201A CN 201910176662 A CN201910176662 A CN 201910176662A CN 111666201 A CN111666201 A CN 111666201A
- Authority
- CN
- China
- Prior art keywords
- test
- execution result
- data
- version
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种回归测试方法、回归测试装置、计算机可读介质及电子设备,涉及软件测试技术领域。该方法包括:采集应用程序线上版本的日志数据;从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。本发明实施例的技术方案能够提高回归测试的效率。
Description
技术领域
本发明涉及软件测试技术领域,具体而言,涉及一种回归测试方法、回归测试装置、计算机可读介质及电子设备。
背景技术
随着网络技术的快速发展,应用软件层出不穷,其迭代的周期也越来越短。
为了满足用户的需求,应用软件在推出后会频繁地被修改、完善,不断地推出新的版本。在对应用软件进行修改之后,测试工程师需要对修改后的应用进行测试,以确保没有引入新的问题。随着应用软件新版本的连续发布,回归测试越来越频繁,并且工作量也越来越大。为了确保修改的代码没有对已发布的版本造成影响,需要对比在同样的操作修改后的应用软件与已发布的应用软件的执行结果是否相同,因此在进行回归测试时,需要采集大量的应用软件的线上数据。线上数据一般包含多个测试用例,以及各个测试用例的输入数据、执行条件与输出结果。目前,线上数据的采集代码耦合在应用软件中,采集的数据无法动态改变。并且,为了避免对线上版本的数据造成影响,只能获取读数据接口的输出结果,而无法对写数据接口进行测试。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种回归测试方法、回归测试装置、计算机可读介质及电子设备,进而至少在一定程度上克服回归测试效率低下的问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种回归测试方法,包括:采集应用程序线上版本的日志数据;从日志数据中确定出应用程序的测试任务所需的测试数据;利用测试数据获取测试任务在线上版本的第一执行结果,并获取测试任务在应用程序的待测版本的第二执行结果;对比第一执行结果与第二执行结果,根据对比结果确定待测版本的测试结果。
可选地,从日志数据中确定出应用程序的测试任务所需的测试数据可以包括:确定测试任务中包含的接口的类型;若接口为预设类型的接口,则从日志数据中确定出预设类型的接口对应的输入参数以及与输入参数匹配的输出结果。
可选地,利用测试数据获取测试任务在线上版本的第一执行结果可以包括:在测试任务中包含所述预设类型的接口时,确定测试任务中所述预设类型的接口需响应的输入值;从所述测试数据中查询与所述输入值匹配的输入参数,将与所述输入参数匹配的输出结果确定为所述预设类型的接口的输出值;在所述线上版本执行测试任务时根据所述输出值模拟所述预设类型的接口的调用结果,以获取所述测试任务的第一执行结果;在所述预设类型的接口被所述测试任务中的其他接口调用时,将所述调用结果返回给所述其他接口,以获取所述测试任务的第一执行结果。
可选地,所述应用程序的测试任务中可以包含多个待测接口,且所述多个待测接口之间存在依赖关系。
可选地,利用测试数据获取测试任务在所述线上版本的第一执行结果,并获取测试任务在应用程序的待测版本的第二执行结果可以包括:通过字节码注入技术将测试数据插入测试任务对应的测试用例中;在线上版本执行测试用例,以获取第一执行结果;在待测版本执行测试用例,以获取第二执行结果。
可选地,利用测试数据获取测试任务在线上版本的第一执行结果,并获取测试任务在应用程序的待测版本的第二执行结果可以包括:对同一测试任务中包含的多个待测接口确定第一标识号,并根据各待测接口之间的依赖关系为待测接口确定第二标识号;分别于线上版本和待测版本测试各待测接口,根据第一标识号以及第二标识号确定各待测接口的第一测试结果与第二测试结果;根据各测试任务中包含的各待测接口的第一测试结果与第二测试结果确定各测试任务的第一执行结果与第二执行结果。
可选地,对比第一执行结果与第二执行结果,根据对比结果确定待测版本的测试结果可以包括:对比各测试任务的第一执行结果与第二执行结果;在第一执行结果与第二执行结果不同时,确定待测版本测试不通过。
根据本发明实施例的第二方面,提供了一种回归测试装置,包括:数据采集单元,用于采集应用程序线上版本的日志数据;测试数据确定单元,用于从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;测试单元,用于利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;测试结果对比单元,用于对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
可选地,测试数据确定单元可以包括:接口确定单元,用于确定所述测试任务中包含的接口的类型;第一数据获取单元,用于当所述接口为预设类型的接口时,从所述日志数据中确定出所述预设类型的接口对应的输入参数以及与所述输入参数匹配的输出结果。
可选地,测试单元可以包括:输入确定单元,用于在所述测试任务中包含所述预设类型的接口时,确定所述测试任务中所述预设类型的接口需响应的输入值;输出确定单元,用于从所述测试数据中查询与所述输入值匹配的输入参数,将与所述输入参数匹配的输出结果确定为所述预设类型的接口的输出值;第一结果获取单元,用于在所述线上版本执行所述测试任务时根据所述输出值模拟所述预设类型的接口的调用结果,以获取所述测试任务的第一执行结果;第二结果获取单元,用于在所述预设类型的接口被所述测试任务中的其他接口调用时,将所述调用结果返回给所述其他接口,以获取所述测试任务的第一执行结果。
可选地,在该回归测试装置中,所述应用程序的测试任务中可以包含多个待测接口,且所述多个待测接口之间可以存在依赖关系。
可选地,测试单元还可以包括:用例确定单元,用于将所述测试数据插入所述测试任务对应的测试用例中;第三结果获取单元,用于在所述线上版本执行所述测试用例,以获取所述第一执行结果;第四结果获取单元,用于在所述待测版本执行所述测试用例,以获取所述第二执行结果。
可选地,所述测试单元可以包括:标识单元,用于对同一测试任务中包含的多个待测接口确定第一标识号,并根据所述依赖关系为所述待测接口确定第二标识号;第五结果获取单元,用于分别于所述线上版本与所述待测版本测试所述待测接口,根据所述第一标识号以及所述第二标识号确定各所述测试任务的第一执行结果与所述第二执行结果。
可选地,所述测试结果对比单元可以包括:匹配单元,用于对比各所述测试任务的所述第一执行结果与所述第二执行结果;确定单元,用于在所述第一执行结果与所述第二执行结果不同时,确定所述待测版本测试不通过。
可选地,所述测试数据确定单元可以包括:应用单元,用于通过字节码注入技术从第三方应用中获取所述测试任务对应的配置条件;数据筛选单元,用于根据所述配置条件从所述日志数据中确定出所述测试数据。
根据本发明实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的回归测试方法。
根据本发明实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的回归测试方法。
本发明实施例提供的技术方案可以包括以下有益效果:
根据本示例性实施方式中的回归测试方法,一方面,通过采集应用程序线上版本的日志数据,可以从日志数据中确定出应用程序的测试任务需要的测试数据,能够提高测试数据的多样性和真实性;并且测试数据能够适应测试任务的需求,从而能够提高测试数据的灵活性。另一方面,利用该测试数据可以获取测试任务在线上版本的第一执行结果与待测版本的第二执行结果,然后通过对比两次的执行结果能够确定待测版本的测试结果,从而完成回归测试。由于测试数据是从线上版本的日志中选取的,因此不会改变线上版本的数据,能够提高测试的准确性;并且,可以利用测试数据对写数据的接口进行测试,提高了测试的自动化程度,极大地增加了测试的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明的实施例中用于实现数据监控方法的系统架构示意图;
图2示意性示出了根据本发明的实施例的回归测试方法的第一个流程图;
图3示意性示出了根据本发明的实施例的回归测试方法的第二个流程图;
图4示意性示出了根据本发明的实施例的回归测试方法的第三个流程图;
图5示意性示出了根据本发明的实施例的回归测试方法的第四个流程图;
图6示意性示出了根据本发明的实施例的回归测试方法的第五个流程图;
图7示意性示出了根据本发明的实施例的回归测试方法的第六个流程图;
图8示意性示出了根据本发明的实施例的回归测试方法的第七个流程图;
图9示意性示出了根据本发明的实施例的回归测试方法的第八个流程图;
图10示意性示出了根据本发明的实施例的回归测试装置的框图;
图11示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
目前,对于只包含单接口测试用例,可以通过将相同的输入参数分别输入线上版本与待测试版本,进而比较输出结果。而对于一些既包括读数据的接口又包括写数据的接口的测试用例来说,在线上版本测试时可能会导致线上版本的数据发生改动,进而导致测试用例无法执行或者执行失败。
基于此,本示例实施方式中首先提供了一种用于实现回归测试方法的系统架构。参考图1所示,该系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送请求指令等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本申请实施方式所提供的回归测试方法一般由服务器105执行,相应地,回归测试装置一般设置与终端设备101中。
基于上述系统架构100,本示例中首先提供一种回归测试方法。如图2所示,该方法可以包括步骤S210、S220、S230、S240。其中:
步骤S210,采集应用程序线上版本的日志数据;
步骤S220,从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;
步骤S230,利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;
步骤S240,对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
根据本示例性实施方式中的回归测试方法,一方面,通过采集应用程序线上版本的日志数据,可以从日志数据中确定出应用程序的测试任务需要的测试数据,能够提高测试数据的多样性和真实性;并且测试数据能够适应测试任务的需求,从而能够提高测试数据的灵活性。另一方面,利用该测试数据可以获取测试任务在线上版本的第一执行结果与待测版本的第二执行结果,然后通过对比两次的执行结果能够确定待测版本的测试结果,从而完成回归测试。由于测试数据是从线上版本的日志中选取的,因此不会改变线上版本的数据,能够提高测试的准确性;并且,可以利用测试数据对写数据的接口进行测试,提高了测试的自动化程度,极大地增加了测试的效率。
下面,将结合图2至图9对本示例性实施方式中的回归测试方法的各个步骤进行更加详细的说明。
如图2所示,在步骤S210中,采集应用程序线上版本的日志数据。
应用程序开发完成后可以部署到网络中,用户可以通过网络访问该应用。例如,通过网络地址获取应用的安装包,进而将该应用部署至终端设备上。线上版本可以是已经发布的供用户使用的应用程序的版本。用户使用线上版本时会产生日志数据。日志数据可以包括多个日志文件。日志文件可以记录在线上版本中发送的事件,或者用户的操作。通过获取日志文件可以采集到日志数据;可以通过各种工具来采集日志数据,例如数据采集软件、agent工具等,本示例实施方式对此不做特殊限定。获取到的日志数据可以保存在数据库,或者存储设备中;也可以传至其他应用中,例如kafka、消息中间件等。
在步骤S220中,从日志数据中确定出应用程序的测试任务所需的测试数据。
在本示例实施方式中,测试任务可以包括多个测试用例,或者也可以是代码文件、代码片段。测试任务可以用于对应用程序中的各个模块、函数方法,或者接口进行测试。根据测试任务的需求可以从日志数据中确定出该测试任务所需的测试数据。测试数据可以包括接口的输入参数、执行条件,例如测试任务为测试一个读数据的接口,测试数据可以为该读数据接口所需的输入参数以及执行条件;此外,测试数据也可以包括接口或者函数的执行结果,例如,测试任务为测试多个接口,分别为A、B、C,其中A调用B、B调用C,那么A的执行条件中可能包括B的执行结果,而B的执行条件中包含C的执行结果,此时测试数据可以为C的输入参数、B的执行结果。
在本示例实施方式中,可以根据需要获取的测试数据预先将从日志数据中获取测试数据的代码编写好,需要获取测试数据时触发执行编写好的代码,进而获取到日志数据中的测试数据。或者,利用agent工具收集测试数据。通过agent的端口请求数据时,agent可以根据设定的配置采集目标数据,然后返回相应的数据。当然,也可以通过其他方式获取测试数据,例如对日志数据进行解析以得出记录在日志数据中的各个模块的输入参数,将该输入参数作为测试数据等。
获取到的测试数据可以保存在数据库中;或者,也可以以记录日志的方式将测试数据记录在日志中;此外,测试数据还可以以其他形式保存,例如保存在内存、保存在消息中间件、数据采集器等;本示例实施方式对此不做特殊限定。
在步骤S230中,利用测试数据获取测试任务在线上版本的第一执行结果,并获取测试任务在应用程序待测版本的第二执行结果。
在本示例实施方式中,利用测试数据可以获取测试任务对应的可执行代码,进而在线上版本或者待测版本执行测试任务对应的可执行代码,然后得到线上版本的执行结果,即第一执行结果,待测版本的执行结果为第二执行结果。详细而言,可以利用测试数据替换测试任务代码中的对应参数,然后执行替换后的测试任务的代码,进而得到第一执行结果和第二执行结果;或者,将测试数据补充至测试任务代码的对应位置形成可执行的测试任务代码,进而获取线上版本的第一执行结果以及待测版本的第二执行结果。也就是说,可以先编辑测试任务的逻辑代码,在获取到测试数据后,按照测试数据中包含的各种数据的数据属性将各数据填充在该逻辑代码中,进而生成可执行的完整代码;或者测试任务也可以为表格模板,在得到测试数据后将该测试数据填入表格模板中,然后根据该表格模板生成完整的测试用例。
在步骤S240中,对比第一执行结果与第二执行结果,根据对比结果确定待测版本的测试结果。
在本示例实施例中,第一执行结果和第二执行结果可以是测试任务在线上版本与待测版本的执行结果。该执行结果可以包括多种信息,该信息可以是可视化页面,在该页面中可以包含图像、文字、数字等;该执行结果也可以包括其他信息,例如声音等,本示例实施方式对此不做限定。如果第一执行结果与第二执行结果内容一致可以确定待测版本的测试通过,例如第一执行结果与第二执行结果均为“5000”、均为“小明”等。如果第一执行结果与第二执行结果不一致,例如第一执行结果为图像而第二执行结果为表格等,那么可以确定待测版本的测试不通过。
为了更灵活地确定测试数据,在一些实施例中,从日志数据中确定出测试任务所需的测试数据可以包括步骤S301和步骤S302,如图3所示。在步骤S301中,通过字节码注入技术可以使得在进行回归测试时启动第三方应用,然后测试人员可以在第三方应用中实时配置测试任务需要的测试数据,将从第三方应用接收到的测试人员的配置作为配置条件。详细而言,在执行回归测试时,注入到字节码文件中的agent工具包可以被加载,进而可以通过javaagent参数启动agent代码中拉起http服务,从而唤起第三方应用。该第三方应用可以包括可视化页面,或者也可以包括应用软件,例如管理系统、数据采集软件等;并且在进入该应用时还可以设置安全权限验证,保证数据安全性。在该应用中,测试人员可以根据测试任务在页面中输入配置条件。该配置条件可以用于从日志数据中筛选出测试数据。并且,该配置条件可以包括测试任务所需的测试数据的类型,或者属性,例如配置条件可以是从日志数据中筛选出接口、根据某接口的名称确定该接口的输入参数、输出结果等。
在步骤S302中,根据该配置条件采集相应的数据,例如测试人员配置了接口,则按照接口采集数据(例如,采集接口的输入参数、输出参数等),然后返回采集到的数据,即测试数据。此外,获取到测试数据后,可以将测试数据以记录日志的形式保存,也可以直接发送至数据库中保存,本示例实施方式对此不做特殊限定。
在一些实施例中,从日志数据中确定出应用程序的测试任务所需的测试数据还可以包括步骤S401和步骤402,如图4所示。在步骤S401中,可以确定测试任务中包含的接口的类型。测试任务中可以包含多个接口,各个接口的类型可以不同,例如写数据接口、读数据接口等。接口的类型可以通过该应用程序对应的接口规范文档中确定,接口规范文档中通常会包括应用程序的所有接口的说明。或者,可以对各个接口的类型进行标识,利用接口的标识信息确定各接口的类型。
在步骤S402中,如果确定测试任务中包含的接口为预设类型的接口,则可以从日志数据中确定出该预设类型的接口对应的输入参数以及与该输入参数匹配的输出结果。预设类型的接口可以是用于操作数据的接口,这类接口可以包括用于写数据的接口,例如插入数据的接口、删除数据的接口等;也可以包括用于修改数据的接口,例如用于对数据进行排序的接口、对数据进行修改、运算的接口等等。如果测试任务中包含该预设类型的接口时,从日志数据中确定该接口对应的输入参数以及与该输入参数相匹配的输出结果。详细而言,日志数据是用户在使用线上版本时产生的真实数据,因此为响应用户操作将用户行为产生的真实的输入参数输入到该接口,该接口在接收到该输入参数可以实现该接口的功能,进而输出一个结果。
因此,在一些实施例中,利用测试数据获取测试任务在线上版本的第一执行结果可以包括步骤S501至步骤S504,如图5所示。在步骤S501中,如果测试任务中包含预设类型的接口时,可以确定出在测试任务中,该接口需要响应的输入值。由于测试任务中可以包含多个接口,各个接口之间执行的顺序会影响接口的输入值,例如A接口的输入值为B接口中计算出的一个值,因此在线上版本执行测试任务时,执行到该接口时可以确定出该接口的输入值。
在步骤S502中,从测试数据中查询与该输入值匹配的输入参数。测试数据中可以包含多个接口的输入参数以及对应该输入参数的输出结果。因此在确定了测试任务中预设类型的接口的输入值后,从测试数据中查找该接口的输入参数中是否存在与该输入值匹配的,然后将与该输入值匹配的输入参数对应的输出结果确定为该预设类型的接口输出值。也就是说,如果在线上版本执行该预设类型接口时,该接口的执行结果为该输出值。
在步骤S503中,在线上版本执行测试任务时,根据该输出值模拟该预设类型的接口的调用结果,进而获取到该测试任务的第一执行结果。详细而言,对预设类型的接口来说,如果该接口为删除数据的接口那么调用该接口并为该接口输入一个参数时,就会在线上版本的数据中删除该参数对应的数据,如此一来就会修改线上版本的数据。因此,从历史数据中已经产生的数据中确定出该输入值对应的输出值后,可以直接模拟该预设类型的接口的调用结果,能够确定线上版本的数据不被修改,增强数据的安全性;并且能够解决对于写数据类型的接口无法自动化测试的问题,提高测试的自动化程度,节省人力。
在步骤S504中,如果在测试任务中有多个接口,并且该预设类型的接口被该测试任务中的其他接口调用,则将模拟的调用结果返回给其他接口,以使测试任务顺利进行获得第一执行结果。
此外,在获取第一结果时,还可以通过MOCK模拟预设类型接口的程序,然后执行mock接口来代替真实接口,进而获得该接口的调用结果。
由于待测版本还没有上线只在测试阶段,因此测试任务中有预设类型接口时可以在待测版本上直接调用该接口,对待测版本的数据进行增加、修改、删除等操作,进而获取第二执行结果,无需对该接口的调用结果进行模拟,减少了运算,提高了回归测试效率。
由于大多数的测试任务中可以包含多个待测接口,并且各个待测接口之间可以存在依赖关系,因此获取第一执行结果与第二执行结果还可以包括步骤S601至步骤S602,如图6所示。
在本示例实施例中,步骤S601中,可以对同一测试任务中包含的多个待测接口确定第一标识号,并根据各个待测接口之间的依赖关系为各待测接口确定第二标识号。例如,如果存在多个测试任务,可以按照顺序为各个测试任务编号,则第一个测试任务中的待测接口的第一标识号为“1”,第二测试任务中的待测接口的第一标识号为“2”等等;如果第一个测试任务中包含3个待测接口A、B、C,A依赖B,B依赖C,那么A、B、C的执行顺序为C、B、A,则A、B、C的第二标识号分别为1-3、1-2、1-1。第一标识号可以标识该待测接口所属的测试任务,第二标识号可以标识待测接口的依赖关系。此外,也可以通过其他方式对测试任务中待测接口进行标识,例如利用符号、文字对每一待测接口进行标识等等。
在步骤S602中,可以分别在线上版本与待测版本测试各个待测接口,并且根据第一标识号与第二标识号确定各测试任务的第一执行结果与第二执行结果。详细而言,在确定了各待测接口的标识号之后,可以根据各测试任务中待测接口的依赖关系按照各待测接口的标号依次调用各待测接口,获得各待测接口的调用结果,进而确定测试任务的第一执行结果与第二执行结果。例如,测试任务的标识号为“1”,该测试任务中包含2个待测接口,那么第一标识号为“1”,第二标识号为“1-2”的待测接口的输出结果为该测试任务的第一执行结果。
在本发明的一些实施例中,获取第一执行结果与第二执行结果还可以包括步骤S701至步骤S703,如图7所示。在步骤S701中,可以将测试数据插入测试任务对应的测试用例中。测试数据中可以包含多个测试用例,根据测试数据的属性可以将测试数据插入测试用例中,进而执行测试用例。或者,还可以预先确定测试数据中不同属性的参数对应测试用例中不同的参数,然后根据测试数据中包含的各个参数的属性将测试用例中对应的参数进行替换,生成新的测试用例。此外,对于预设类型的待测接口,还可以生成该类型接口对应的测试用例,该测试用例可以包含该类型接口对应的mock程序,然后将测试数据插入该mock程序中。在步骤S702中,在线上版本执行该测试用例以获取第一执行结果,在步骤S703中,在待测版本执行该测试用例以获取第二执行结果。
如图8所示,在一些实施例中,本发明还可以包括步骤S801至步骤S806。在步骤S801中,开始回归测试之后,可以启动加载agent.jar工具包,该工具包用于提供http服务。加载工具包可以通过javaagent命令启动。然后在步骤S802中,可以通过http服务启动管理端。该管理端可以是用于对回归测试进行管理的应用,并且可以包括多个用户界面,测试人员可以在该用户界面将配置条件输入。然后在步骤S803中,可以根据从管理端接收到的配置条件采集测试数据。该数据可以包括应用程序的线上版本产生的数据。采集到的测试数据可以以记录日志的形式进行保存,从而生成*.log的日志文件。在步骤S804中,通过数据收集器将采集的测试数据进行收集,并将收集到的数据上传至消息中间件kafka中。然后在步骤S805中,kafka对测试数据进行处理,例如确定各个接口对应的输入参数、输出参数、确定各接口的类型等。最后在步骤S806中,根据kafka的分析结果将对应数据插入测试用例,以获取线上版本的第一执行结果与待测版本的第二执行结果,进而通过对比两次执行结果来确定待测版本的测试结果。
如图9所示,在线上版本与待测版本获取第一执行结果与第二执行结果时,可以包括步骤S901至步骤S902。在步骤S901中,根据管理端的配置条件确定了测试数据之后,将测试数据中包含的输入参数输入待测接口中。在步骤S902中,待测接口包含预设类型的接口时可以将输入参数输入该预设类型接口对应的mock程序中,以模拟输出结果。并且,对于线上版本与待测版本,管理端可以配置是否需要mock接口方法。最后,利用各待测接口的输出结果获取测试任务最终的执行结果。
以下介绍本发明的装置实施例,可以用于执行本发明上述的回归测试方法。如图10所示,该回归测试装置10可以包括:数据采集单元1001,用于采集应用程序线上版本的日志数据;测试数据确定单元1002,用于从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;测试单元1003,用于利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;测试结果对比单元1004,用于对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
可选地,测试数据确定单元可以包括:接口确定单元,用于确定所述测试任务中包含的接口的类型;第一数据获取单元,用于当所述接口为预设类型的接口时,从所述日志数据中确定出所述预设类型的接口对应的输入参数以及与所述输入参数匹配的输出结果。
可选地,测试单元可以包括:输入确定单元,用于在所述测试任务中包含所述预设类型的接口时,确定所述测试任务中所述预设类型的接口需响应的输入值;输出确定单元,用于从所述测试数据中查询与所述输入值匹配的输入参数,将与所述输入参数匹配的输出结果确定为所述预设类型的接口的输出值;第一结果获取单元,用于在所述线上版本执行所述测试任务时根据所述输出值模拟所述预设类型的接口的调用结果,以获取所述测试任务的第一执行结果;第二结果获取单元,用于在所述预设类型的接口被所述测试任务中的其他接口调用时,将所述调用结果返回给所述其他接口,以获取所述测试任务的第一执行结果。
可选地,在该回归测试装置中,所述应用程序的测试任务中可以包含多个待测接口,且所述多个待测接口之间可以存在依赖关系。
可选地,测试单元还可以包括:用例确定单元,用于将所述测试数据插入所述测试任务对应的测试用例中;第三结果获取单元,用于在所述线上版本执行所述测试用例,以获取所述第一执行结果;第四结果获取单元,用于在所述待测版本执行所述测试用例,以获取所述第二执行结果。
可选地,所述测试单元可以包括:标识单元,用于对同一测试任务中包含的多个待测接口确定第一标识号,并根据所述依赖关系为所述待测接口确定第二标识号;第五结果获取单元,用于分别于所述线上版本与所述待测版本测试所述待测接口,根据所述第一标识号以及所述第二标识号确定各所述测试任务的第一执行结果与所述第二执行结果。
可选地,所述测试结果对比单元可以包括:匹配单元,用于对比各所述测试任务的所述第一执行结果与所述第二执行结果;确定单元,用于在所述第一执行结果与所述第二执行结果不同时,确定所述待测版本测试不通过。
可选地,所述测试数据确定单元可以包括:应用单元,用于通过字节码注入技术从第三方应用中获取所述测试任务对应的配置条件;数据筛选单元,用于根据所述配置条件从所述日志数据中确定出所述测试数据。
由于本发明的示例实施例的回归测试装置的各个功能模块与上述回归测试方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的回归测试方法的实施例。
下面参考图11,其示出了适于用来实现本发明实施例的电子设备的计算机系统1100的结构示意图。图11示出的电子设备的计算机系统1100仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的回归测试方法。
例如,所述的电子设备可以实现如图1中所示的:步骤S210,采集应用程序线上版本的日志数据;步骤S220,从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;步骤S230,利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;步骤S240,对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
又如,所述的电子设备可以实现如图3所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (11)
1.一种回归测试方法,其特征在于,包括:
采集应用程序线上版本的日志数据;
从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;
利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序待测版本的第二执行结果;
对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
2.根据权利要求1所述的回归测试方法,其特征在于,所述从所述日志数据中确定出所述应用程序的测试任务所需的测试数据包括:
确定所述测试任务中包含的接口的类型;
若所述接口为预设类型的接口,则从所述日志数据中确定出所述预设类型的接口对应的输入参数以及与所述输入参数匹配的输出结果。
3.根据权利要求2所述的回归测试方法,其特征在于,所述利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果包括:
在所述测试任务中包含所述预设类型的接口时,确定所述测试任务中所述预设类型的接口响应的输入值;
从所述测试数据中查询与所述输入值匹配的输入参数,将与所述输入参数匹配的输出结果确定为所述预设类型的接口的输出值;
在所述线上版本执行所述测试任务时根据所述输出值模拟所述预设类型的接口的调用结果,以获取所述测试任务的第一执行结果;
在所述预设类型的接口被所述测试任务中的其他接口调用时,将所述调用结果返回给所述其他接口,以获取所述测试任务的第一执行结果。
4.根据权利要求1所述的回归测试方法,其特征在于,所述应用程序的测试任务中包含多个待测接口,且所述多个待测接口之间存在依赖关系。
5.根据权利要求1所述的回归测试方法,其特征在于,所述利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果包括:
将所述测试数据插入所述测试任务对应的测试用例中;
在所述线上版本执行所述测试用例,以获取所述第一执行结果;
在所述待测版本执行所述测试用例,以获取所述第二执行结果。
6.根据权利要求4所述的回归测试方法,其特征在于,所述利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果包括:
对同一测试任务中包含的多个待测接口确定第一标识号,并根据所述依赖关系为所述待测接口确定第二标识号;
分别于所述线上版本与所述待测版本测试所述待测接口,根据所述第一标识号以及所述第二标识号确定各所述测试任务的第一执行结果与所述第二执行结果。
7.根据权利要求1所述的回归测试方法,其特征在于,所述对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果包括:
对比各所述测试任务的所述第一执行结果与所述第二执行结果;
在所述第一执行结果与所述第二执行结果不同时,确定所述待测版本测试不通过。
8.根据权利要求1所述的回归测试方法,其特征在于,所述从所述日志数据中确定出所述应用程序的测试任务所需的测试数据包括:
通过字节码注入技术从第三方应用中获取所述测试任务对应的配置条件;
根据所述配置条件从所述日志数据中确定出所述测试数据。
9.一种回归测试装置,其特征在于,包括:
数据采集单元,用于采集应用程序线上版本的日志数据;
测试数据确定单元,用于从所述日志数据中确定出所述应用程序的测试任务所需的测试数据;
测试单元,用于利用所述测试数据获取所述测试任务在所述线上版本的第一执行结果,并获取所述测试任务在所述应用程序的待测版本的第二执行结果;
测试结果对比单元,用于对比所述第一执行结果与所述第二执行结果,根据对比结果确定所述待测版本的测试结果。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至8中任一项所述的回归测试方法。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的回归测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910176662.7A CN111666201A (zh) | 2019-03-08 | 2019-03-08 | 回归测试方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910176662.7A CN111666201A (zh) | 2019-03-08 | 2019-03-08 | 回归测试方法、装置、介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111666201A true CN111666201A (zh) | 2020-09-15 |
Family
ID=72382407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910176662.7A Pending CN111666201A (zh) | 2019-03-08 | 2019-03-08 | 回归测试方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666201A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965910A (zh) * | 2021-03-19 | 2021-06-15 | 携程旅游信息技术(上海)有限公司 | 自动化回归测试方法、装置、电子设备、存储介质 |
CN113360413A (zh) * | 2021-07-21 | 2021-09-07 | 中国工商银行股份有限公司 | 一种代码测试方法及装置 |
CN113590495A (zh) * | 2021-08-31 | 2021-11-02 | 北京沃东天骏信息技术有限公司 | 一种测试覆盖率的确定方法、装置、设备及存储介质 |
CN113760737A (zh) * | 2021-02-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据测试方法和装置 |
CN113760722A (zh) * | 2021-01-13 | 2021-12-07 | 北京京东振世信息技术有限公司 | 测试系统和测试方法 |
CN117591418A (zh) * | 2023-11-29 | 2024-02-23 | 中国东方航空股份有限公司 | 用于软件发布的数据测试方法、装置和存储介质 |
-
2019
- 2019-03-08 CN CN201910176662.7A patent/CN111666201A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760722A (zh) * | 2021-01-13 | 2021-12-07 | 北京京东振世信息技术有限公司 | 测试系统和测试方法 |
CN113760737A (zh) * | 2021-02-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据测试方法和装置 |
CN112965910A (zh) * | 2021-03-19 | 2021-06-15 | 携程旅游信息技术(上海)有限公司 | 自动化回归测试方法、装置、电子设备、存储介质 |
CN112965910B (zh) * | 2021-03-19 | 2024-06-21 | 携程旅游信息技术(上海)有限公司 | 自动化回归测试方法、装置、电子设备、存储介质 |
CN113360413A (zh) * | 2021-07-21 | 2021-09-07 | 中国工商银行股份有限公司 | 一种代码测试方法及装置 |
CN113590495A (zh) * | 2021-08-31 | 2021-11-02 | 北京沃东天骏信息技术有限公司 | 一种测试覆盖率的确定方法、装置、设备及存储介质 |
CN117591418A (zh) * | 2023-11-29 | 2024-02-23 | 中国东方航空股份有限公司 | 用于软件发布的数据测试方法、装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415832B (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
CN109062780B (zh) | 自动化测试用例的开发方法及终端设备 | |
CN107608901B (zh) | 基于Jmeter的测试方法及装置、存储介质、电子设备 | |
CN109308254B (zh) | 一种测试方法、装置及测试设备 | |
CN113900958A (zh) | 测试用例脚本的生成方法、系统、介质及电子设备 | |
CN111694561B (zh) | 一种接口管理方法、装置、设备及存储介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
CN103530292A (zh) | 网页显示方法和装置 | |
CN111045653A (zh) | 系统生成方法、装置、计算机可读介质及电子设备 | |
CN112035092A (zh) | 一种表单的处理方法、装置、设备和可读介质 | |
CN110598135A (zh) | 网络请求处理方法、装置、计算机可读介质及电子设备 | |
CN111563257A (zh) | 数据检测方法及装置、计算机可读介质及终端设备 | |
CN111324510B (zh) | 日志处理方法、装置及电子设备 | |
CN112579428B (zh) | 接口测试的方法、装置、电子设备和存储介质 | |
CN117112341A (zh) | 一种基于asm字节码插桩的非入侵准实时监控方法及系统 | |
CN116756016A (zh) | 多浏览器测试方法、装置、设备、介质及程序产品 | |
CN110716859A (zh) | 自动为修改的代码推送测试用例的方法及相关装置 | |
CN113377648B (zh) | 软件系统诊断方法、装置、电子设备及计算机可读介质 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
CN115687129A (zh) | 一种覆盖率报告生成方法、装置、存储介质和计算机设备 | |
CN113641628A (zh) | 数据质量检测方法、装置、设备及存储介质 | |
CN109697141B (zh) | 用于可视化测试的方法及装置 | |
CN112286802A (zh) | 一种测试程序性能方法、装置和电子设备 | |
CN112860538A (zh) | 基于线上日志进行接口回归测试的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |