CN110196800B - 分布式事务测试方法、装置及系统 - Google Patents
分布式事务测试方法、装置及系统 Download PDFInfo
- Publication number
- CN110196800B CN110196800B CN201810157028.4A CN201810157028A CN110196800B CN 110196800 B CN110196800 B CN 110196800B CN 201810157028 A CN201810157028 A CN 201810157028A CN 110196800 B CN110196800 B CN 110196800B
- Authority
- CN
- China
- Prior art keywords
- use case
- information
- case
- abnormal
- task
- 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.)
- Active
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/3676—Test management for coverage analysis
-
- 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
Abstract
本发明涉及互联网技术领域,尤其涉及一种分布式事务测试方法,所述方法包括:获取待测用例的用例ID;根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;根据所述调用链路信息获取运行环境信息;根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的测试结果。本发明无须人工设置异常,只需要根据模调关系自动生成异常并执行,不仅让测试覆盖更加全面,还提高了测试分析效率。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种分布式事务测试方法、装置及系统。
背景技术
分布式服务框架大量应用在强事务性的业务上,例如支付、购物、物流等场景。针对分布式服务后台自动化测试,目前的主要自动化测试方法是:构造不同的参数,适配不同协议,调用接口,根据返回结果判断接口调用是否成功。
现有的接口自动化测试平台,现有的自动化测试方案,针对模调异常全靠人工分析,针对不同的分布式服务架构需要不同的预设条件,然后将每种预设条件人工设置好,重复执行已经设置好的预设条件。例如:请参见图1所示的接口A的模调关系的示意图,若要测试接口A,一般需要构造以下几个测试用例:
1.接口A正常调用流程,覆盖服务A、服务B和服务C 3个服务,数据库A、数据库B和数据库C 3个数据库调用,接口A调用结果是否符合预期?
2.接口A调用服务A异常(异常的两种情况:超时未写数据库A和超时已写数据库A),重复参数调用接口A,接口A的反应是否满足幂等性要求?
3.接口A调用服务A正常,但调用服务B出现异常(异常的两种情况:超时未写数据库B和超时已写数据库B),重复参数调用接口A,接口A的反应是否满足幂等性要求?
4.接口A调用服务A和服务B正常,但调用服务C出现异常(异常的两种情况:超时未写数据库C和超时已写数据库C),重复参数调用接口A,接口A的反应是否满足幂等性要求?
针对上面四种场景,现有的测试方案需要人工编写7个自动化用例,并且需要根据模调情况插入不同的异常桩,执行并检查结果。
上述示例仅是一个模调关系较简单的例子,随着SOA或微服务的广泛应用,模块之间的调用关系日趋复杂,而对于服务调用异常后的幂等性测试也越来越复杂,依靠人工分析模调异常及测试幂等性存在如下缺陷:
(1)分布式服务框架应用的业务往往有着比较复杂的调用链路,并且对事务的数据一致性、服务调用的幂等性有一定要求,现有的依靠人工分析和设置进行测试的方法较难覆盖服务调用的幂等性。
(2)每一种异常覆盖,对于事务性业务也是非常关键的流程,需要测试用例覆盖,但采用现有的测试方法进行测试时,随着模调关系进一步深入,编写用例数会呈几何级别增加,但实际上每次调用的参数上并未发生变化,耗费人力;另外由于人工分析和设置的关系,对于调用关系复杂的情况容易产生遗漏,导致测试覆盖不全。
发明内容
针对现有技术的上述问题,本发明的目的在于提供一种分布式事务测试方法及装置,通过构建测试平台,针对一个场景,只需编写一个测试用例,实现覆盖接口调用过程中每条调用链路的异常测试。
第一方面,本发明提供了一种分布式事务测试方法,所述方法包括:
获取待测用例的用例ID;
根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;
获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;
根据所述调用链路信息获取运行环境信息;
根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
第二方面,本发明提供了一种分布式事务测试装置,所述装置包括用例执行模块,所述用例执行模块包括:
第一获取单元,用于获取待测用例的用例ID;
任务生成单元,用于根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;
任务执行单元,用于获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;根据所述调用链路信息获取运行环境信息;以及根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
第三方面,本发明还提供了一种分布式事务测试系统,所述系统包括自动化用例平台、模调日志分析平台、环境管理平台和分布式事务测试装置,所述分布式事务测试装置分别与所述自动化用例平台、模调日志分析平台和环境管理平台通信。
本发明具有如下有益效果:
本发明通过对模调日志进行分析处理,生成不同的模调异常用例,测试过程中,会根据待测用例ID拉取对应的异常用例生成待执行任务,根据任务自动构造异常并执行用例,获得异常情况下的执行结果。本发明无须人工设置异常,只需要根据模调关系自动生成异常并执行,不仅让测试覆盖更加全面,还提高了测试分析效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是接口A的模调关系图;
图2是可用于实施本发明实施例的分布式事务测试方法的计算机终端的硬件结构框图;
图3是本发明实施例提供的方法的应用场景的示意图;
图4是本发明实施例揭示的分布式事务测试方法的流程图;
图5是本发明实施例揭示的分布式事务测试方法的流程图;
图6是本发明实施例揭示的分布式事务测试方法的流程图;
图7是本发明实施例揭示的分布式事务测试装置的流程图;
图8是本发明实施例揭示的分布式事务测试系统的示意图;
图9是本发明实施例揭示的分布式事务测试系统的示意图;
图10是本发明实施例提供的前端web页面。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图2示出了一种用于实现本发明实施例所提供的方法的计算机终端(或移动设备)的硬件结构框图。如图2所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
图2示出的硬件结构框图,不仅可以作为上述计算机终端10(或移动设备)的示例性框图,还可以作为上述服务器的示例性框图。
其中,图3示出了本发明实施例的一个具体应用场景的示意图。参考图3所示,用户可以使用计算机终端201上的应用程序(例如网络游戏,电子商务,通信业务,微信等等)的客户端。并且计算机终端201可以通过客户端访问服务器202,服务器202可以从数据库203调用关于客户的信息。其中,本实施例中所述的方法既可以在计算机终端201上运行,也可以在服务器202或数据库203上运行。
在上述运行环境下,本申请实施例的一个方面提供了如图4所示的分布式事务测试方法,图4示出了根据本申请实施例的一个方面的分布式事务测试方法的流程图,参考图4所示,所述方法包括:
S401:获取待测用例的用例ID。
用户可以通过web页面选择需要测试的用例的用例ID、运行环境ID、场景名称、用例包含的接口个数、HOST配置(涉及被测web服务的域名)等信息,填写自定义收件人信息(即测试结果收件人),填写完毕后点击提交,会生成一个测试请求发送给后台。后台接收测试请求后,提取请求包含的用例ID,根据用例ID执行后续操作。
S402:根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务。
后台预先为用例ID所对应的用例构建了异常用例,每个用例对应多个异常用例,当获取了用例ID之后,可以通过用例ID拉取与该用例ID匹配的所有异常用例,每个异常用例包含用例ID、异常用例ID、调用链路信息和异常类型。其中,调用链路信息包括被调方、调用方以及被调方与调用方之间的通信协议类型。可选地,异常类型可以包括:1.超时已执行,2.超时未执行;可选地,异常类型还可以包括:1.报错,2.超时已执行,3.超时未执行。
根据拉取的异常用例建立任务,每一个异常用例对应生成一个待执行任务,并通过任务表的形式进行记录。
S403:获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型。
从任务表中读取任务信息,任务信息包含用例ID、异常用例ID、调用链路信息和异常类型,此外,任务表中还可以进一步包含执行结果、返回结果、期望结果以及执行情况等信息。
S404:根据所述调用链路信息获取运行环境信息。
具体的,根据所述调用链路信息获取被调方或者调用方的环境信息,所述环境信息包括被调方或调用方所在设备的IP地址和端口信息。
S405:根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
其中,根据被调方或调用方所在设备的IP地址查找设备,通过所述端口信息和通信协议类型在所述设备上构造与所述异常类型相同的异常,在异常情况下执行用例,获得异常情况下的实际执行结果。优选地,可以通过mock方式构造异常。
进一步的,所述步骤S401之前,还包括:
S501:获取用例的基础信息,所述基础信息包括用例名称、用例ID和贯穿该用例调用链路的唯一标识。
S502:根据所述唯一标识获取与用例ID对应的模调信息,所述模调信息包括多条模调记录。每条模调记录包括调用方信息、被调方信息以及调用方和被调方之间的通信协议类型。
S503:分析所述模调信息的所有模调记录,构造与所述模调记录一一对应的异常用例,并为异常用例分配异常用例ID。根据需要构建异常类型的种类,每条模调记录可以构造多种异常,例如异常类型包括超时未执行和超时已执行2种,则每条模调记录可以对应构造2种异常,对应生成两个异常用例。
S504:存储所述异常用例。每个异常用例可以包括用例ID、异常用例ID、调用链路信息和异常类型。
本发明预先生成了不同的模调异常用例,测试过程中,会根据待测用例ID拉取对应的异常用例生成待执行任务,根据任务自动构造异常并执行用例,获得异常情况下的执行结果。本发明无须人工设置异常,只需要根据模调关系自动生成异常并执行,不仅让测试覆盖更加全面,还提高了测试分析效率。
本发明还提供了一种分布式事务测试方法,所述方法分为准备阶段和测试阶段,其中准备阶段包括:
1.获取用例的基础信息,所述基础信息包括用例名称、用例ID和贯穿该用例调用链路的唯一标识。
2.根据所述唯一标识获取与用例ID对应的模调信息,所述模调信息包括多条模调记录。每条模调记录包括调用方信息、被调方信息以及调用方和被调方之间的通信协议类型。
3.分析所述模调信息的所有模调记录,构造与所述模调记录一一对应的异常用例,并为异常用例分配异常用例ID。根据需要构建异常类型的种类,每条模调记录可以构造多种异常,例如异常类型包括超时未执行和超时已执行2种,则每条模调记录可以对应构造2种异常,对应生成两个异常用例。
4.存储所述异常用例。每个异常用例可以包括用例ID、异常用例ID、调用链路信息和异常类型。
所述测试阶段包括:
S601:获取待测用例的用例ID。
用户可以通过web页面选择需要测试的用例的用例ID、运行环境ID、场景名称、用例包含的接口个数、HOST配置(涉及被测web服务的域名)等信息,填写自定义收件人信息(即测试结果收件人),填写完毕后点击提交,会生成一个测试请求发送给后台。后台接收测试请求后,提取请求包含的用例ID,根据用例ID执行后续操作。
S602:根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务。
后台预先为用例ID所对应的用例构建了异常用例,每个用例对应多个异常用例,当获取了用例ID之后,可以通过用例ID拉取与该用例ID匹配的所有异常用例,每个异常用例包含用例ID、异常用例ID、调用链路信息和异常类型。其中,调用链路信息包括被调方、调用方以及被调方与调用方之间的通信协议类型。可选地,异常类型可以包括:1.超时已执行,2.超时未执行;可选地,异常类型还可以包括:1.报错,2.超时已执行,3.超时未执行。
根据拉取的异常用例建立任务,每一个异常用例对应生成一个待执行任务,并通过任务表的形式进行记录。
S603:获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型。
从任务表中读取任务信息,任务信息包含用例ID、异常用例ID、调用链路信息和异常类型,此外,任务表中还可以进一步包含执行结果、返回结果、期望结果以及执行情况等信息。
S604:根据所述调用链路信息获取运行环境信息。
具体的,根据所述调用链路信息获取被调方或者调用方的环境信息,所述环境信息包括被调方或调用方所在设备的IP地址和端口信息。
S605:根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
其中,根据被调方或调用方所在设备的IP地址查找设备,通过所述端口信息和通信协议类型在所述设备上构造与所述异常类型相同的异常,在异常情况下执行用例,获得异常情况下的实际执行结果。
S606:去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果。
具体包括:去除设备上构造的异常;获取异常情况下执行用例ID对应的用例时调用服务的请求参数;根据所述请求参数在设备上请求服务,获得正常情况下的第二测试结果。
S607:将所述第一测试结果和所述第二测试结果作为实际测试数据与预期结果进行比对,根据比对结果判断所述用例的服务调用是否具有幂等性;如果所述实际测试数据与预期结果一致,则判定所述用例对应的服务调用具有幂等性;如果所述实际测试数据与预期结果不一致,则判定用例对应的服务调用不具有幂等性。
在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,如果符合幂等操作特点则可以认为其具有幂等性。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
本发明预先生成了不同的模调异常用例,测试过程中,会根据待测用例ID拉取对应的异常用例生成待执行任务,根据任务自动构造异常并执行用例,获得异常情况下的执行结果。本发明无须人工编写异常,只需要根据模调关系自动生成异常并执行,使测试覆盖更加全面,能够覆盖服务调用的幂等性,提高了测试分析效率。
此外,参考图2所示,本实施例还提供了一种存储介质(例如,图2中所示的存储器)。该存储介质包括存储的程序,其中在程序运行时控制处理器102执行上述任意一项所述的方法。
可选地,程序所执行的方法包括:获取待测用例的用例ID;根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;根据所述调用链路信息获取运行环境信息;根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
可选地,程序所执行的方法包括:去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果;将所述第一测试结果和所述第二测试结果作为实际测试数据与预期结果进行比对;如果所述实际测试数据与预期结果一致,则判定所述用例对应的服务调用具有幂等性;如果所述实际测试数据与预期结果不一致,则判定用例对应的服务调用不具有幂等性。
可选地,程序所执行的方法包括:获取用例的基础信息,所述基础信息包括用例名称、用例ID和贯穿该用例调用链路的唯一标识,根据所述唯一标识获取与用例ID对应的模调信息,所述模调信息包括多条模调记录;分析所述模调信息的所有模调记录,构造与所述模调记录一一对应的异常用例;存储所述异常用例。
可选地,所述调用链路信息包括被调方、调用方以及被调方和调用方之间的通信协议类型;调用链路信息获取运行环境信息的操作包括:根据所述调用链路信息获取被调方或者调用方的环境信息,所述环境信息包括被调方或调用方所在设备的IP地址和端口信息。
可选地,根据所述异常类型和运行环境信息构造异常的操作包括:根据被调方或调用方所在设备的IP地址查找设备;通过所述端口信息和通信协议类型在所述设备上构造与所述异常类型相同的异常。
可选地,去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果的操作包括:去除设备上构造的异常;获取异常情况下执行用例ID对应的用例时调用服务的请求参数;根据所述请求参数在设备上请求服务,获得正常情况下的第二测试结果。
可选地,所述任务信息还包括预期结果;程序所执行的方法还包括:将每个任务首次执行获得的第一测试结果和第二测试结果作为所述预期结果。
此外,参考图7所示,本实施例还提供了一种分布式事务测试装置。其更详细的结构,可以参考图1中所示的终端计算机终端10(或移动设备10)。
参考图7所示,分布式事务测试装置包括用例执行模块73、异常用例生成模块73和存储模块72。其中,用例执行模块73包括:第一获取单元731、任务生成单元732和任务执行单元733。第一获取单元731用于获取待测用例的用例ID;任务生成单元732用于根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;任务执行单元733用于获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;根据所述调用链路信息获取运行环境信息;以及根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
此外,所述任务执行单元733还用于:去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果;将所述第一测试结果和所述第二测试结果作为实际测试数据与预期结果进行比对;如果所述实际测试数据与预期结果一致,则判定所述用例具有幂等性;如果所述实际测试数据与预期结果不一致,则判定所述用例不具有幂等性。
所述异常用例生成模块71包括第二获取单元711、第三获取单元712和异常用例生成单元713。所述第二获取单元711用于获取用例的基础信息,所述基础信息包括用例名称、用例ID和贯穿该用例调用链路的唯一标识;所述第三获取单元712用于根据所述唯一标识获取与用例ID对应的模调信息,所述模调信息包括多条模调记录;所述异常用例生成单元713用于分析所述模调信息的所有模调记录,构造与所述模调记录一一对应的异常用例。
所述存储模块72用于存储异常用例。
可选的,所述调用链路信息包括被调方、调用方以及被调方和调用方之间的通信协议类型。所述任务执行单元733还用于:根据所述调用链路信息获取被调方或者调用方的环境信息,所述环境信息包括被调方或调用方所在设备的IP地址和端口信息,根据被调方或调用方所在设备的IP地址查找设备,并通过所述端口信息和通信协议类型在所述设备上构造与所述异常类型相同的异常。
可选的,所述任务执行单元733还用于:去除设备上构造的异常,获取异常情况下执行用例ID对应的用例时调用服务的请求参数,根据所述请求参数在设备上请求服务,获得正常情况下的第二测试结果。
可选的,所述任务生成单元732还用于:将任务表发送给存储模块,所述任务表中每个任务的任务信息还包括预期结果;所述存储模块72还用于存储任务表;所述任务执行单元733还用于将每个任务首次执行获得的第一测试结果和第二测试结果作为所述预期结果,将所述预期结果存入存储模块。
本发明通过对模调日志进行分析处理,生成不同的模调异常用例,测试过程中,会根据待测用例ID拉取对应的异常用例生成待执行任务,根据任务自动构造异常并执行用例,获得异常情况下的执行结果。本发明无须人工设置异常,只需要根据模调关系自动生成异常并执行,不仅让测试覆盖更加全面,还提高了测试分析效率。
此外,参考图8和图9所示,本实施例还提供了一种分布式事务测试系统,所述系统包括自动化用例平台810、模调日志分析平台820、环境管理平台830和上述的分布式事务测试装置840,所述分布式事务测试装置分别与所述自动化用例平台、模调日志分析平台和环境管理平台通信。
可选地,所述自动化用例平台810,用于为用例设置贯穿该用例调用链路的唯一标识,执行所述用例获得模调日志,并将用例的用例名称、用例ID和唯一标识进行关联存储;所述模调日志分析平台820,用于对模调日志进行分析处理,获得模调信息,将模调信息与用例的唯一标识进行关联存储;环境管理平台830,用于将模块的信息和与模块所在的运行环境信息进行关联存储,所述模块为被调方或者调用方。
具体的,模调日志分析平台表示分布式系统里面各个服务之间的调用关系,通过树形结构展示。环境管理平台用于管理不同业务模块或系统模块在环境内的部署情况。自动化用例平台是通过构造参数,适配不同协议、预设条件、调用接口、检查结果等通用手段完成接口自动化的平台。自动化用例平台具备通用接口协议(一般为http/https协议)支持,主要通过组装不同的参数,保存为可重复执行的测试用例,并通过页面调用执行。
所述自动化用例平台、模调日志分析平台、环境管理平台和上述的分布式事务测试装置的交互过程如下:
1)在原有自动化用例平台用例基础上,增加唯一贯穿整个调用链路的标识sign_no,并执行该自动化用例。
2)异常用例生成模块通过自动化用例平台获取用例的基础信息,所述基础信息包括包括调用链路的唯一标识、用例名称和用例ID。
3)异常用例生成模块通过唯一标识从模调日志分析平台调用与用例ID对应的模调信息。
4)异常用例生成模块内部分析模调信息,通过标记重要事务节点,确定需要构造的异常节点位置,每一个位置生成一个异常用例,将原有用例名称、用例ID、异常节点位置当作唯一键,并生成自增ID为异常用例唯一主键存入数据库。
5)用例执行模块分为前端控制和后台运行,前端web化接口用于触发执行任务,确认要执行哪个用例,之后交给后台运行程序;后台运行程序查询该任务关联的所有异常用例,逐个去执行。
具体包括:用户通过如图10所示的前端web页面选择环境ID、用例ID、场景名称、用例包含的接口个数、HOST配置(涉及被测web服务的域名),自定义收件人(测试结果收件人);填写完毕后,提交后台执行。后台根据用例ID,拉取数据库中的与用例ID相关的异常用例,行成待执行的任务,并拉取任务逐个执行。
执行任务的流程即为解析任务对应的异常用例的过程,包括:
a)运行成功一次正常用例,确定环境正常;
b)根据用例里面的模块信息和任务的环境信息从环境管理平台获取需要构造异常的模块的IP、端口等信息;
c)根据模块的IP找到设备,在该设备上构造对应的异常类型;
d)在自动化用例平台运行设置的用例;
e)得到异常情况下的返回结果,将结果记录到数据库;
f)清理构造的异常,将环境恢复正常;
g)通过自动化用例平台获取调用失败步骤的服务的请求参数,再次用同样的参数请求目标服务,并将请求的返回结果记录入库,并将本次返回的结果与步骤e)的执行结果合并写到执行过程结果字段)
h)如果是首次执行,将步骤e)和步骤g)的执行过程结果人工确认后作为数据库中的预期结果值,同时确认最终执行结果是符合预期还是不符合预期;
i)如果不是首次执行,直接将执行过程结果与预期结果做对比,如果对比一致,则最终执行结果为符合预期;如果对比不一致,则最终执行结果为不符合预期;
对每个异常用例重复上述步骤,直到所有用例执行完毕,然后将最终执行结果通过邮件发给测试结果收件人。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种分布式事务测试方法,其特征在于,所述方法包括:
获取待测用例的用例ID;
根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;
获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;其中,所述调用链路信息包括被调方、调用方以及被调方与调用方之间的通信协议类型;
根据所述调用链路信息获取运行环境信息;其中,所述运行环境信息包括被调方或调用方所在设备的IP地址和端口信息;
根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果。
2.根据权利要求1所述的方法,其特征在于,所述获得异常情况下的第一测试结果之后,还包括:
去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果;
将所述第一测试结果和所述第二测试结果作为实际测试数据与预期结果进行比对;
如果所述实际测试数据与预期结果一致,则判定所述用例对应的服务调用具有幂等性;
如果所述实际测试数据与预期结果不一致,则判定用例对应的服务调用不具有幂等性。
3.根据权利要求1所述的方法,其特征在于,所述获取待测用例的用例ID之前,还包括:
获取用例的基础信息,所述基础信息包括用例名称、用例ID和贯穿该用例调用链路的唯一标识,
根据所述唯一标识获取与用例ID对应的模调信息,所述模调信息包括多条模调记录;
分析所述模调信息的所有模调记录,构造与所述模调记录一一对应的异常用例;
存储所述异常用例。
4.根据权利要求2所述的方法,其特征在于,
所述调用链路信息包括被调方、调用方以及被调方和调用方之间的通信协议类型;
所述根据所述调用链路信息获取运行环境信息包括:
根据所述调用链路信息获取被调方或者调用方的环境信息,所述环境信息包括被调方或调用方所在设备的IP地址和端口信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述异常类型和运行环境信息构造异常包括:
根据被调方或调用方所在设备的IP地址查找设备;
通过所述端口信息和通信协议类型在所述设备上构造与所述异常类型相同的异常。
6.根据权利要求5所述的方法,其特征在于,所述去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果包括:
去除设备上构造的异常;
获取异常情况下执行用例ID对应的用例时调用服务的请求参数;
根据所述请求参数在设备上请求服务,获得正常情况下的第二测试结果。
7.根据权利要求2所述的方法,其特征在于,
所述任务信息还包括预期结果;
所述方法还包括:
将每个任务首次执行获得的第一测试结果和第二测试结果作为所述预期结果。
8.一种分布式事务测试装置,其特征在于,所述装置包括用例执行模块,所述用例执行模块包括:
第一获取单元,用于获取待测用例的用例ID;
任务生成单元,用于根据所述用例ID拉取与所述用例ID关联的所有异常用例,根据异常用例建立任务集,所述任务集包含多个与异常用例一一对应的任务;
任务执行单元,用于获取任务的任务信息,所述任务信息包括用例ID、异常用例ID、调用链路信息和异常类型;根据所述调用链路信息获取运行环境信息;以及根据所述异常类型和运行环境信息构造异常,并在异常情况下执行与所述用例ID对应的用例,获得异常情况下的第一测试结果;其中,所述调用链路信息包括被调方、调用方以及被调方与调用方之间的通信协议类型,所述运行环境信息包括被调方或调用方所在设备的IP地址和端口信息。
9.根据权利要求8所述的装置,其特征在于,
所述任务执行单元,还用于去除构造的异常,在运行环境信息对应的运行环境下重复执行与用例ID对应的用例,获得正常情况下的第二测试结果;将所述第一测试结果和所述第二测试结果作为实际测试数据与预期结果进行比对;如果所述实际测试数据与预期结果一致,则判定所述用例具有幂等性;如果所述实际测试数据与预期结果不一致,则判定所述用例不具有幂等性。
10.一种分布式事务测试系统,其特征在于,所述系统包括自动化用例平台、模调日志分析平台、环境管理平台和权利要求8或9所述的分布式事务测试装置,所述分布式事务测试装置分别与所述自动化用例平台、模调日志分析平台和环境管理平台通信;
所述自动化用例平台,用于为用例设置贯穿该用例调用链路的唯一标识,执行所述用例获得模调日志,并将用例的用例名称、用例ID和唯一标识进行关联存储;
所述模调日志分析平台,用于对模调日志进行分析处理,获得模调信息,将模调信息与用例的唯一标识进行关联存储;
所述环境管理平台,用于将模块的信息与模块所在的运行环境信息进行关联存储,所述模块为被调方或者调用方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810157028.4A CN110196800B (zh) | 2018-02-24 | 2018-02-24 | 分布式事务测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810157028.4A CN110196800B (zh) | 2018-02-24 | 2018-02-24 | 分布式事务测试方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196800A CN110196800A (zh) | 2019-09-03 |
CN110196800B true CN110196800B (zh) | 2023-05-12 |
Family
ID=67743996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810157028.4A Active CN110196800B (zh) | 2018-02-24 | 2018-02-24 | 分布式事务测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196800B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078551B (zh) * | 2019-12-13 | 2023-09-22 | 浙江诺诺网络科技有限公司 | 一种全链路测试方法、装置、系统及计算机可读存储介质 |
CN111343242B (zh) * | 2020-02-13 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种信息收集方法、装置、设备、存储介质及分布式系统 |
CN113448827A (zh) * | 2020-03-26 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 一种测试数据的处理方法和装置 |
DE102020206861A1 (de) * | 2020-06-02 | 2021-12-02 | Siemens Healthcare Gmbh | Computerimplementiertes Laufzeitsystem, Netzwerk zur Verarbeitung medizinischer Informationen, entsprechendes Verfahren und entsprechendes Computerprogrammprodukt |
CN114741274A (zh) * | 2021-01-08 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 一种异常测试方法及装置 |
CN115514676A (zh) * | 2022-09-19 | 2022-12-23 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于服务链路的异常监控方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101252471A (zh) * | 2008-03-20 | 2008-08-27 | 中兴通讯股份有限公司 | 一种分布式自动化测试系统及其方法 |
CN102945204A (zh) * | 2012-11-14 | 2013-02-27 | 清华大学 | 一种基于接口模型的操作系统标准符合性测试的充分性评估方法 |
CN103209180A (zh) * | 2013-03-21 | 2013-07-17 | 大唐联仪科技有限公司 | 一种协议一致性测试的方法及系统 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360120B2 (en) * | 2003-11-26 | 2008-04-15 | International Business Machines Corporation | Methods for adaptive problem determination in distributed service-based applications |
US9792203B2 (en) * | 2013-11-14 | 2017-10-17 | Sap Se | Isolated testing of distributed development projects |
-
2018
- 2018-02-24 CN CN201810157028.4A patent/CN110196800B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101252471A (zh) * | 2008-03-20 | 2008-08-27 | 中兴通讯股份有限公司 | 一种分布式自动化测试系统及其方法 |
CN102945204A (zh) * | 2012-11-14 | 2013-02-27 | 清华大学 | 一种基于接口模型的操作系统标准符合性测试的充分性评估方法 |
CN103209180A (zh) * | 2013-03-21 | 2013-07-17 | 大唐联仪科技有限公司 | 一种协议一致性测试的方法及系统 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110196800A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196800B (zh) | 分布式事务测试方法、装置及系统 | |
WO2018006789A1 (zh) | 一种参数校验方法和装置、以及网管服务器和计算机存储介质 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
CN106209503B (zh) | Rpc接口测试方法及系统 | |
CN105450476A (zh) | 一种回归测试系统及测试方法 | |
CN107637052A (zh) | 一种业务数据处理方法、客户端、服务端及系统 | |
CN116204438A (zh) | 测试用例生成方法、自动化测试方法和相关装置 | |
CN112148607A (zh) | 一种业务场景的接口测试方法和装置 | |
CN112559348B (zh) | 基于jacoco的测试分析方法、系统、设备以及介质 | |
CN108089972A (zh) | 接口测试方法及装置 | |
US11113357B2 (en) | Method and system for onboarding a virtual network function package utilized by one or more network services | |
CN111158979A (zh) | 服务的拨测方法、系统、装置及存储介质 | |
CN114490746B (zh) | 一种设备测试方法、装置、待测试设备及存储介质 | |
CN116260809A (zh) | 批量文件的处理方法及装置、电子设备、存储介质 | |
CN110737549A (zh) | 应用测试方法、装置、服务器和系统 | |
CN110968491B (zh) | 一种运维作业方法及系统 | |
CN110618943B (zh) | 安防服务测试方法、装置、电子设备及可读存储介质 | |
CN114282760A (zh) | 一种结合动态表单和动态流程的工作流生成方法及装置 | |
CN113934552A (zh) | 功能代码的确定方法及装置、存储介质、电子装置 | |
CN112650815A (zh) | 环境数据的同步方法及装置、存储介质及电子装置 | |
CN116560722B (zh) | 运维流程处理方法、装置、电子设备及存储介质 | |
CN112053273B (zh) | 引导案件分析的方法、装置以及存储介质 | |
CN113141366B (zh) | 报文报送方法及装置、存储介质和电子设备 | |
CN114048081A (zh) | Vpn设备的测试方法、装置、电子设备及存储介质 | |
CN116962266A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |