一种系统测试的方法和装置与流程

专利2022-05-09  5



1.本发明涉及计算机技术领域,尤其涉及一种系统测试的方法和装置。


背景技术:

2.传统的自动化运行方式是采用主动触发运行的,例如通过jenkins等持续集成触发、自动化测试工具手动触发等,把自动化运行作为一个持续集成任务中的一个流程节点,当上一个流程节点完成后(例如上一个流程节点是部署测试环境),通过持续集成任务来调度自动化测试的流程节点来达到启动自动化测试的目的。
3.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
4.传统的主动触发测试的执行方式适合于同一人、同一团队、同一组织机构中的自动化测试运行,因为在同一人、同一团队、同一组织机构中通常被测试项目、自动化测试脚本和调用者都是可控的或可预知运行时间的。然而对于那些不可控或不可预知时间的场景(例如联调测试场景)来说,自动化测试运行的触发是由上游的某个或某几个系统触发的,例如一个物流订单的生成,可能是由多个不同的第三方(如:售卖方)网站的系统来触发,而不单单是物流订单所属物流系统直接产生,通常不同的第三方系统产生的订单所需的数据也不尽相同,自动化运行的时间与数据均不在一个相对可控的范围内,这种情形下传统的主动触发自动化测试的执行方式已经不能满足要求。
5.也就是说,传统的主动触发测试的执行方式适用于自动化测试用例执行人与自动化测试用例的被测系统的测试环境维护是一个人的情形,或一个持续集成任务的情形,这种情况多适用于同一组织机构下的内部测试,但不适用于跨组织机构场景下的协同联调或依赖测试、流程上下游测试等情形。


技术实现要素:

6.有鉴于此,本发明实施例提供一种系统测试的方法和装置,能够执行对同一系统中不同测试场景的测试用例进行调度,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。
7.为实现上述目的,根据本发明实施例的一个方面,提供了一种系统测试的方法。
8.一种系统测试的方法,包括:接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;根据所述业务表标识获取所述业务表对应的测试用例;通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。
9.可选地,所述测试请求是在所述被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。
10.可选地,通过所述测试用例获取测试数据包括:通过所述测试用例从所述业务表中查找触发生成所述测试请求的数据;根据所述数据的标识从预存的测试数据表中查找所述数据对应的测试结果,并将所述数据及对应的测试结果作为测试数据。
11.可选地,在通过所述测试用例获取测试数据之后,使用所述测试数据对所述被测系统执行测试之前,还包括:从预存的测试数据表中查找所述测试数据对应的历史流程数据;判断所述被测系统是否是所述历史流程数据中指定的被测系统节点及所述被测系统节点对应的节点值;若是,则使用所述测试数据对所述被测系统执行测试;否则,退出所述被测系统的测试。
12.可选地,在对所述被测系统执行测试之后,还包括:根据所述历史流程数据确定所述测试数据流转的下一个节点,并将执行测试后的测试数据发送到所述下一个节点以触发所述下一个节点的测试。
13.可选地,所述方法被部署于独立的应用中。
14.根据本发明实施例的另一方面,提供了一种系统测试的装置。
15.一种系统测试的装置,包括:请求接收模块,用于接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;用例获取模块,用于根据所述业务表标识获取所述业务表对应的测试用例;测试执行模块,用于通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。
16.可选地,所述测试请求是在所述被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。
17.可选地,所述测试执行模块还用于:通过所述测试用例从所述业务表中查找触发生成所述测试请求的数据;根据所述数据的标识从预存的测试数据表中查找所述数据对应的测试结果,并将所述数据及对应的测试结果作为测试数据。
18.可选地,还包括节点判定模块,用于:在通过所述测试用例获取测试数据之后,使用所述测试数据对所述被测系统执行测试之前,从预存的测试数据表中查找所述测试数据对应的历史流程数据;判断所述被测系统是否是所述历史流程数据中指定的被测系统节点及所述被测系统节点对应的节点值;若是,则使用所述测试数据对所述被测系统执行测试;否则,退出所述被测系统的测试。
19.可选地,还包括数据流转模块,用于:在对所述被测系统执行测试之后,根据所述历史流程数据确定所述测试数据流转的下一个节点,并将执行测试后的测试数据发送到所述下一个节点以触发所述下一个节点的测试。
20.可选地,所述装置被部署于独立的应用中。
21.根据本发明实施例的又一方面,提供了一种系统测试的电子设备。
22.一种系统测试的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的系统测试的方法。
23.根据本发明实施例的再一方面,提供了一种计算机可读介质。
24.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的系统测试的方法。
25.上述发明中的一个实施例具有如下优点或有益效果:通过接收被测系统发来的测试请求,测试请求是在被测系统发生数据变更时生成的;然后,根据测试请求中包括的业务表标识获取业务表对应的测试用例;之后,通过测试用例获取测试数据,并使用测试数据对被测系统执行测试,实现了在被测系统的测试数据准备完成后,由被测系统发送请求来调
用自动化测试方法执行测试,可以执行对同一系统中不同测试场景的测试用例进行调度,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。根据本发明的技术方案,不同系统下的测试用例不需要写在同一工程中进行代码间的调用关系配置,方便不同系统的测试解耦和工作分解,由于可以不在同一工程下,可以实现异构自动化测试环境间的自动化测试驱动。不同系统下的测试用例可以部署在不同服务器上,利用http请求触发,达到分布式并行测试的目的。由于本发明的技术方案采用http请求的方式触发,可以通过网关在不同的网络间实现自动化测试的触发,可以应用在不同网络下的组织架构间的测试情形。由于本发明中触发器和命令解析器中不需要处理入参与返回值,只需要配置表名与请求的路径即可,可以实现自动化的动态添加服务器端数据库触发器和命令解析器的功能,避免人工修改和配置。
26.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
27.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
28.图1是根据本发明实施例的系统测试的方法的主要步骤示意图;
29.图2是本发明一个实施例的测试流程示意图;
30.图3是根据本发明实施例的系统测试的装置的主要模块示意图;
31.图4是本发明实施例可以应用于其中的示例性系统架构图;
32.图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
33.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
34.为了解决现有技术中存在的技术问题,本发明提供了一种系统测试的方法和装置,通过被动触发自动化测试执行的方式,当被测系统监测到数据变更时生成测试请求以请求进行该被测系统的测试,使得自动化测试是被动触发的,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。
35.图1是根据本发明实施例的系统测试的方法的主要步骤示意图。如图1所示,本发明实施例的系统测试的方法主要包括如下的步骤s101至步骤s103。
36.步骤s101:接收被测系统发来的测试请求,测试请求是在被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;
37.步骤s102:根据业务表标识获取业务表对应的测试用例;
38.步骤s103:通过测试用例获取测试数据,并使用测试数据对被测系统执行测试。
39.根据本发明的技术方案,当被测系统发生数据变更时,生成测试请求,然后发送给
本发明的系统测试装置(即:自动化测试脚本),从而触发了系统测试装置对该被测系统执行测试。并且,在测试请求中无需包含测试数据,系统测试装置在接收到被测系统发来的测试请求后,将根据测试请求中包括的发生数据变更的业务表标识获取业务表对应的测试用例,然后通过测试用例获取测试数据以对被测系统执行测试。可以无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。
40.根据本发明的一个实施例,测试请求是在被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。被测系统的数据库服务器端主要包括数据库触发器和服务器端的命令解析器shell,在计算机科学中,shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件,是一种命令解析器,它接收用户命令,然后调用相应的应用程序。
41.当被测试的业务系统(简称“被测系统”)的业务表写入新数据时会触发数据库触发器执行,触发器脚本会调用服务器端shell来发起测试请求。数据库触发器是只要有数据写入该业务表即可触发(一个系统触发另一个系统通常会通过在数据库中增加记录的方式来进行数据交换),无论是通过调用被测系统的接口写入数据,还是通过sql语句人为添加数据,还是通过被测系统的消息队列写入数据均会被数据库触发器捕获,即表示被测系统进入可测试状态,如果被测系统存在问题或调用者存在问题,相应的测试数据不会写入相应的数据表,自动化测试也不会触发。
42.在本发明的一个实施例中,触发器实现的伪代码例如如下:
43.create definer=`用户名`@`权限`trigger`数据库名`.`业务表名`
44.after insert on`数据库名`.`业务表名`
45.for each row
46.begin
47.set done=sys_exec("/文件路径/数据库名_业务表名.sh");
48.end;
49.其中,“create definer=`用户名`@`权限`trigger`数据库名`.`业务表名`”表示:创建数据库触发器,指定触发执行的数据库用户和用户权限,以及触发器可以操作的数据库及数据表名称;
[0050]“after insert on`数据库名`.`业务表名`”表示:指定触发器的触发规则为写入新数据,同时指定触发器待触发的数据库和数据表名称;
[0051]“for each row”表示:指定触发器的触发范围为每一行新增数据;
[0052]“begin”表示:触发器实际脚本的开始语句,作为语法规则,无实际意义;
[0053]“set done=sys_exec("/文件路径/数据库名_业务表名.sh")”表示:在触发器调用指定目录中的shell脚本文件;
[0054]“end”表示:触发器实际脚本的结束语句,作为语法规则,无实际意义。
[0055]
通过以上的伪代码,即可使得触发器在指定数据库的业务表中,任意一行写入新数据时,即触发调用指定目录中的shell脚本文件。
[0056]
服务器命令解析器shell,用于发起自动化测试应用的http请求,不需要处理http的返回值,http请求也不需要入参。
[0057]
服务器端shell的伪代码例如如下:
[0058]
wget http://autotest.com/业务名称/业务接口方法
[0059]
其中,“wget”是一个从网络上自动下载文件的自由工具,支持通过http、https、ftp三个最常见的tcp/ip协议下载,并可以使用http代理;“autotest.com”域名为自动化测试脚本的网络地址域名,该域名对应的ip地址由dns服务器给出,部署自动化测试脚本时,由部署脚本修改dns服务器对应的域名与ip的对应关系,测试服务器在调用域名时不需要配置hosts文件,实现测试执行机动态调用;“业务名称”与“业务接口方法”是由自动化测试应用的编写人员根据被测系统所属的业务名称及业务接口方法来设置的。
[0060]
根据本发明的技术方案,在进行系统测试时,预先采集线上的历史流程数据作为自动化测试的测试数据和预期结果,并保存到预测数据表中。对于不同的测试场景而言,其流程节点有所不同,而历史数据具有真实性和有效性,可以作为回归测试依据。
[0061]
在本发明的实施例中,自动化测试脚本可以被部署为独立的应用,web端应用或者应用程序app等应用形式均可。传统的自动化脚本的运行方式是在测试开始时执行,测试结束后退出运行,以嵌入其它系统或自动化框架中的部署方式运行,本发明是以独立的应用形式来部署运行的,即部署完成后,自动化测试用例一直在后台运行,但不执行测试。只有当外界发起http请求时才会真正触发自动化测试。
[0062]
自动化测试脚本应用(即:本发明的系统测试装置)在接收到被测系统发来的测试请求之后,根据测试请求的不同的url(uniform resource locator,统一资源定位系统)路径会将测试请求分发到不用的入口方法中执行。其中,入口方法是与http测试请求中的业务名称和业务接口方法相对应的。入口方法会查询触发器所属的业务系统的业务表中新增的数据记录,不同的数据记录会被入口方法进一步分发到不同的测试场景和测试用例中。其中,不同的数据记录指的是数据记录中的数据属性不同。例如:原始数据的数据属性标识例如是1,经过一次修改后的数据的数据属性标识例如是2,那么,入口方法会根据获取到的数据的数据属性标识来判断将数据进一步分发到哪个测试场景和测试用例中。
[0063]
根据本发明的实施例,在通过测试用例获取测试数据时,具体是:通过测试用例从业务表中查找触发生成测试请求的数据;根据该数据的标识从预存的测试数据表中查找该数据对应的测试结果,并将该数据及对应的测试结果作为测试数据。在使用测试数据对被测系统执行测试过程中,是将测试数据中的该数据作为被测系统的输入,然后得到被测系统的输出,并将该输出与测试数据中的测试结果进行比较判断,若两者相同,则测试通过,否则,测试失败。
[0064]
并且,在通过测试用例获取测试数据之后,使用测试数据对被测系统执行测试之前,还可以执行以下操作:
[0065]
从预存的测试数据表中查找测试数据对应的历史流程数据;
[0066]
判断被测系统是否是历史流程数据中指定的被测系统节点及被测系统节点对应的节点值;
[0067]
若是,则使用测试数据对被测系统执行测试;
[0068]
否则,退出被测系统的测试。
[0069]
在测试用例执行测试时会判断当前被测系统是否是历史流程数据中指定的被测系统节点及其对应的节点值,如果不是则说明可能存在问题,退出使用当前测试数据进行
的被测系统的测试;反之则使用该测试用例进行被测系统的测试。另外,在对被测系统执行测试结束之后,根据历史流程数据确定测试数据流转的下一个节点,并将执行测试后的测试数据发送到下一个节点以触发下一个节点的测试。其中,在将执行测试后的测试数据发送到测试流程的下一个节点时,即是将该执行测试后的测试数据发送到下一个业务系统中。数据在业务系统之间的流转可以采用发送请求或接口调用等常用的业务数据之间的数据交互方式来实现,本发明对此不作限制。当下一个业务系统接收到该被测系统发来的该执行测试后的测试数据时,该下一个业务系统的数据库触发器即会根据该数据变更生成测试请求并调用自动化测试脚本应用(即:本发明的系统测试装置)来进行该下一个业务系统的自动化测试,如此,即可实现了同一组织机构下的不同业务系统的联调,且无需人工干预。
[0070]
以一个oa(office automation,办公自动化)审批为例,用于进行测试的历史流程数据是一个三天的请假流程,该流程中共有三个节点:员工申请

二级部门领导审批

一级部门领导审批。假设测试时的当前流程节点是第二个流程节点,在进行测试前,会判断当前流程节点是否是员工所属的二级部门领导这个帐号,如果不是则说明数据流转有问题,结束测试,报错退出;如果当前节点满足历史流程数据的要求,则在当前节点尝试执行二级部门审批流程,如果可以审批成功,则当前节点测试通过,继续进行下一个节点的测试。
[0071]
本发明的技术方案适用于测试环境下的自动化测试应用,通常测试环境下数据库数据量和写入量比较小,不会对服务器产生较大的性能压力,适用于触发器方式执行;同时测试环境下测试人员或测试环境部署工具可以具有较大的权限,可以建立触发器代码,并在触发器中调用shell脚本。
[0072]
不同系统下的测试用例也不需要写在同一工程中进行代码间的调用关系配置,方便不同系统的测试解耦和工作分解,由于可以不在同一工程下,可以实现异构自动化测试环境间的自动化测试驱动,例如一个web端的ui(user interface,用户界面)框架和一个手机端ui框架。
[0073]
不同系统下的测试用例可以部署在不同服务器上,利用http请求触发,达到分布式并行测试的目的。
[0074]
由于本发明采用http请求的方式触发测试流程,可以通过网关在不同的网络间实现自动化测试的触发,可以应用在不同网络下的组织架构间的测试情形。
[0075]
由于本方案中触发器和命令解析器shell中不需要处理入参与返回值,只需要配置表名与url请求的路径即可,可以实现自动化的动态添加服务器端数据库触发器和shell的功能,避免人工修改和配置。
[0076]
图2是本发明一个实施例的测试流程示意图。如图2所示,其中示出了本发明一个实施例的自动化测试从触发到执行的整个流程。在该实施例中,有3个业务表,每个业务表对应一个业务系统,当业务表中写入订单数据时,数据库的触发器监测到该数据变更操作,则会调用数据库服务器的命令解析器shell来发起http请求,该请求中会包括业务表的标识信息(业务表名)。之后,通过对url进行处理并调用业务表对应的测试用例。使用该测试用例从业务表中查询触发请求的订单数据,并且根据该订单数据的标识从预先保存的测试数据表中查找该订单数据对应的测试结果,然后即可将该订单数据及对应的测试结果作为测试数据,并使用该测试数据执行被测系统的测试。
[0077]
在该实施例的实现流程中,http请求是由数据库服务器端的shell发起的,由自动化测试用例部署的应用来接收http请求,http请求的参数中不涉及测试数据。该自动化测试用例所属应用通常是一个微服务架构的web端程序,该程序会一直运行,因此可以处理不可预知运行时间的自动化测试用例的被动触发执行。web端程序通常分为若干个层级,第一个层级用于处理接收的http请求;第二个层级用于根据请求获取对应的第一测试用例,并通过第一测试用例查询触发器的触发数据所在业务表中的待测试数据,并根据不同的待测试数据类型调用不同的第二测试用例(也可看作是第一测试用例的子测试用例或条件分支);第三个层级的第二测试用例,用于获取待测试数据对应的历史数据并执行相应的测试。
[0078]
举一个具体的实施例,例如:触发器写入数据库中order表a一个普通用户订单新数据,该普通用户的用户订单号为123456,order表a的触发器调用shell发送http请求http://test.order.com/order/a,test.order.com所属的测试用例应用对该请求进行解析并处理,测试用例应用查询order表a中普通用户订单为新建类型的数据,查询得到123456该订单,测试用例查询123456该订单的历史记录,并根据历史记录进行该订单的自动化测试,直到达到最后一个周转节点为止。
[0079]
图3是根据本发明实施例的系统测试的装置的主要模块示意图。如图3所示,本发明实施例的系统测试的装置300主要包括请求接收模块301、用例获取模块302和测试执行模块303。
[0080]
请求接收模块301,用于接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;
[0081]
用例获取模块302,用于根据所述业务表标识获取所述业务表对应的测试用例;
[0082]
测试执行模块303,用于通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。
[0083]
根据本发明的一个实施例,所述测试请求是在所述被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。
[0084]
根据本发明的另一个实施例,测试执行模块303还可以用于:
[0085]
通过所述测试用例从所述业务表中查找触发生成所述测试请求的数据;
[0086]
根据所述数据的标识从预存的测试数据表中查找所述数据对应的测试结果,并将所述数据及对应的测试结果作为测试数据。
[0087]
根据本发明的又一个实施例,系统测试的装置300还可以包括节点判定模块(图中未示出),用于:在通过所述测试用例获取测试数据之后,使用所述测试数据对所述被测系统执行测试之前,
[0088]
从预存的测试数据表中查找所述测试数据对应的历史流程数据;
[0089]
判断所述被测系统是否是所述历史流程数据中指定的被测系统节点及所述被测系统节点对应的节点值;
[0090]
若是,则使用所述测试数据对所述被测系统执行测试;
[0091]
否则,退出所述被测系统的测试。
[0092]
根据本发明的又一个实施例,系统测试的装置300还可以包括数据流转模块(图中未示出),用于:
[0093]
在对所述被测系统执行测试之后,根据所述历史流程数据确定所述测试数据流转的下一个节点,并将执行测试后的测试数据发送到所述下一个节点以触发所述下一个节点的测试。
[0094]
根据本发明的再一个实施例,系统测试的装置300被部署于独立的应用中。
[0095]
根据本发明实施例的技术方案,通过接收被测系统发来的测试请求,测试请求是在被测系统发生数据变更时生成的;然后,根据测试请求中包括的业务表标识获取业务表对应的测试用例;之后,通过测试用例获取测试数据,并使用测试数据对被测系统执行测试,实现了在被测系统的测试数据准备完成后,由被测系统发送请求来调用自动化测试方法执行测试,可以执行对同一系统中不同测试场景的测试用例进行调度,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。根据本发明的技术方案,不同系统下的测试用例不需要写在同一工程中进行代码间的调用关系配置,方便不同系统的测试解耦和工作分解,由于可以不在同一工程下,可以实现异构自动化测试环境间的自动化测试驱动。不同系统下的测试用例可以部署在不同服务器上,利用http请求触发,达到分布式并行测试的目的。由于本发明的技术方案采用http请求的方式触发,可以通过网关在不同的网络间实现自动化测试的触发,可以应用在不同网络下的组织架构间的测试情形。由于本发明中触发器和命令解析器中不需要处理入参与返回值,只需要配置表名与请求的路径即可,可以实现自动化的动态添加服务器端数据库触发器和命令解析器的功能,避免人工修改和配置。
[0096]
图4示出了可以应用本发明实施例的系统测试的方法或系统测试的装置的示例性系统架构400。
[0097]
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0098]
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
[0099]
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0100]
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息
--
仅为示例)反馈给终端设备。
[0101]
需要说明的是,本发明实施例所提供的系统测试的方法一般由服务器405执行,相应地,系统测试的装置一般设置于服务器405中。
[0102]
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0103]
下面参考图5,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统500的结构示意图。图5示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0104]
如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram 503中,还存储有系统500操作所需的各种程序和数据。cpu 501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0105]
以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
[0106]
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本发明的系统中限定的上述功能。
[0107]
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0108]
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规
定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0109]
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括请求接收模块、用例获取模块和测试执行模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,请求接收模块还可以被描述为“用于接收被测系统发来的测试请求的模块”。
[0110]
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;根据所述业务表标识获取所述业务表对应的测试用例;通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。
[0111]
根据本发明实施例的技术方案,通过接收被测系统发来的测试请求,测试请求是在被测系统发生数据变更时生成的;然后,根据测试请求中包括的业务表标识获取业务表对应的测试用例;之后,通过测试用例获取测试数据,并使用测试数据对被测系统执行测试,实现了在被测系统的测试数据准备完成后,由被测系统发送请求来调用自动化测试方法执行测试,可以执行对同一系统中不同测试场景的测试用例进行调度,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。根据本发明的技术方案,不同系统下的测试用例不需要写在同一工程中进行代码间的调用关系配置,方便不同系统的测试解耦和工作分解,由于可以不在同一工程下,可以实现异构自动化测试环境间的自动化测试驱动。不同系统下的测试用例可以部署在不同服务器上,利用http请求触发,达到分布式并行测试的目的。由于本发明的技术方案采用http请求的方式触发,可以通过网关在不同的网络间实现自动化测试的触发,可以应用在不同网络下的组织架构间的测试情形。由于本发明中触发器和命令解析器中不需要处理入参与返回值,只需要配置表名与请求的路径即可,可以实现自动化的动态添加服务器端数据库触发器和命令解析器的功能,避免人工修改和配置。
[0112]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:
1.一种系统测试的方法,其特征在于,包括:接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;根据所述业务表标识获取所述业务表对应的测试用例;通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。2.根据权利要求1所述的方法,其特征在于,所述测试请求是在所述被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。3.根据权利要求1所述的方法,其特征在于,通过所述测试用例获取测试数据包括:通过所述测试用例从所述业务表中查找触发生成所述测试请求的数据;根据所述数据的标识从预存的测试数据表中查找所述数据对应的测试结果,并将所述数据及对应的测试结果作为测试数据。4.根据权利要求1或3所述的方法,其特征在于,在通过所述测试用例获取测试数据之后,使用所述测试数据对所述被测系统执行测试之前,还包括:从预存的测试数据表中查找所述测试数据对应的历史流程数据;判断所述被测系统是否是所述历史流程数据中指定的被测系统节点及所述被测系统节点对应的节点值;若是,则使用所述测试数据对所述被测系统执行测试;否则,退出所述被测系统的测试。5.根据权利要求4所述的方法,其特征在于,在对所述被测系统执行测试之后,还包括:根据所述历史流程数据确定所述测试数据流转的下一个节点,并将执行测试后的测试数据发送到所述下一个节点以触发所述下一个节点的测试。6.根据权利要求1所述的方法,其特征在于,所述方法被部署于独立的应用中。7.一种系统测试的装置,其特征在于,包括:请求接收模块,用于接收被测系统发来的测试请求,所述测试请求是在所述被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;用例获取模块,用于根据所述业务表标识获取所述业务表对应的测试用例;测试执行模块,用于通过所述测试用例获取测试数据,并使用所述测试数据对所述被测系统执行测试。8.根据权利要求7所述的装置,其特征在于,所述测试请求是在所述被测系统的数据库触发器检测到数据变更时,调用数据库服务器的命令解析器生成的。9.一种系统测试的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
技术总结
本发明公开了一种系统测试的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收被测系统发来的测试请求,测试请求是在被测系统发生数据变更时生成的,且包括发生数据变更的业务表标识;根据业务表标识获取业务表对应的测试用例;通过测试用例获取测试数据,并使用测试数据对被测系统执行测试。该实施方式能够执行对同一系统中不同测试场景的测试用例进行调度,从而无需关注被测系统是同一组织机构下的内部节点,还是跨组织机构下的节点,解决了跨组织机构下的系统自动化测试的问题。的问题。的问题。


技术研发人员:樊宇 王晓琦 曾丹 刘俐洋 汪小虎
受保护的技术使用者:北京京东振世信息技术有限公司
技术研发日:2020.01.16
技术公布日:2021/7/15

转载请注明原文地址:https://doc.8miu.com/read-650401.html

最新回复(0)