一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

测试执行方法、装置、存储介质和计算设备与流程

2021-10-24 07:03:00 来源:中国专利 TAG:实施 公开 方式 装置 执行


1.本公开的实施方式涉及计算机技术领域,更具体地,本公开的实施方式涉及一种测试执行方法、装置、存储介质以及计算设备。


背景技术:

2.本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.网络营销,是互联网时代出现的一种,以互联网为基础,利用面向用户提供的客户端应用作为媒介,来实现营销目标的一种新型的市场营销方式。由于线上营销对信息时效性要求较高,因此客户端应用的系统环境保持高稳定性则变得尤为重要。在实际应用中,为了确保客户端应用的系统环境始终保持一个比较稳定的状态,通常需要定时对客户端应用的系统环境进行测试;例如,可以对系统环境进行压力测试,来评估系统环境的系统资源的消耗状况。
4.然而,目前对客户端应用的系统环境进行测试的流程虽然已经标准化,但是整个测试流程仍然过度依赖人工处理,不仅效率低,而且当有比较紧急的网络营销活动上线需要进行紧急测试时,可能会面临人力短缺的问题。


技术实现要素:

5.在本公开实施方式的第一方面中,提供了一种测试执行方法,应用于测试管理平台,所述测试管理平台用于管理执行测试任务的设备集群;所述测试管理平台包括分布式定时任务调度组件;所述方法包括:
6.获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
7.将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;
8.其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
9.在本公开的一个实施例中,所述测试任务包括针对所述目标应用进行测试所需的模拟请求集;其中,所述模拟请求集对应所述目标应用上的用户功能;所述模拟请求集中的模拟请求,用于模拟用户在所述目标应用上执行与所述用户功能相关的各项用户操作时所触发的用户请求;所述测试管理平台对接了用于存储所述模拟请求集的数据库;
10.按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,包括:
11.按照所述定时触发时刻,定时从所述数据库中读取所述模拟请求集,对读取到的所述模拟请求集进行分片处理,并将分片处理后得到的各模拟请求子集分别调度至所述设
备集群中的各执行设备进行分布式执行。
12.在本公开的一个实施例中,所述数据库中存储了分别与所述目标应用上的多项用户功能对应的多个模拟请求集;其中,所述多个模拟请求集被分别配置了预设的属性字段;所述属性字段的取值为预设值时,表示与该模拟请求集对应的用户功能为待测试的用户功能;
13.按照所述定时触发时刻,定时从所述数据库中读取所述模拟请求集,包括:按照所述定时触发时刻,定时从所述数据库中读取所述属性字段的取值为所述预设值的模拟请求集。
14.在本公开的一个实施例中,所述方法还包括:
15.将分片处理后得到的各模拟请求子集,分别调度至所述设备集群中的各执行设备进行分布式执行之前,对所述数据库中存储的所述各模拟请求子集中的模拟请求添加分布式锁;以及,
16.所述各模拟请求子集中的模拟请求由所述设备集群中的各执行设备分布式执行完成或者执行异常时,删除为所述数据库中存储的所述各模拟请求子集中的模拟请求添加的分布式锁。
17.在本公开的一个实施例中,所述若干子流程,包括;
18.第一子流程,用于触发执行所述模拟请求子集中的模拟请求;
19.第二子流程,在所述模拟请求子集中的模拟请求均执行成功时被触发执行;用于监控所述模拟请求子集中的模拟请求的执行结果是否达到预期的测试目标;
20.第三子流程,在所述第二子流程执行完成时被触发执行;用于保存测试环境信息。
21.在本公开的一个实施例中,所述若干子流程,还包括;
22.与所述第一子流程关联的第四子流程,用于采集所述第一子流程在执行所述模拟请求子集中的模拟请求的过程中的执行参数,并将所述执行参数与预设阈值进行比较,以判断是否结束所述第一子流程。
23.在本公开的一个实施例中,其中,所述模拟请求子集进一步包括与用户在所述目标应用上执行的多项用户操作分别对应的多个执行集;
24.所述将所述第一执行参数与预设阈值进行比较,以判断是否结束所述第一子流程,包括:
25.将采集到的所述第一子流程在执行各个执行集中的模拟请求的过程中的执行参数,分别与预设阈值进行比较;
26.如果所述第一子流程在执行任一目标执行集中的模拟请求的过程中的执行参数低于预设阈值,则触发结束所述第一子流程。
27.在本公开的一个实施例中,所述第一子流程,进一步用于:
28.获取各个执行集对应的执行状态;
29.如果任一执行集对应的执行状态为执行失败状态,则终止执行所述模拟请求子集中的其它执行集;
30.所述如果所述第一子流程在执行任一目标执行集中的模拟请求的过程中的执行参数低于预设阈值,则触发结束所述第一子流程,包括:
31.如果所述第一子流程在执行任一目标执行集中的模拟请求的过程中的执行参数
低于预设阈值,将所述目标执行集设置为执行失败状态,以触发所述第一子流程在获取到所述目标执行集的执行状态为执行失败状态时,终止执行所述模拟请求子集中的其它执行集。
32.在本公开的一个实施例中,所述执行参数包括错误率指标。
33.在本公开的一个实施例中,第二子流程,进一步用于:
34.在所述各个执行集对应的模拟请求的执行结果均达到预期的测试目标时,触发停止所述测试任务,并生成测试报告。
35.在本公开的一个实施例中,第二子流程,进一步用于:
36.在所述各个执行集中的至少一个执行集对应的模拟请求的执行结果未达到预期的测试目标时,触发创建新的模拟请求子集,并通知所述第一子流程重新执行所述新的模拟请求子集中的模拟请求。
37.在本公开的一个实施例中,将所述配置信息进一步提交给所述分布式定时任务调度组件,包括:
38.将所述配置信息以cron表达式的形式进一步提交给所述分布式定时任务调度组件。
39.在本公开的一个实施例中,所述分布式定时任务调度组件,包括基于zookeeper的分布式定时任务调度组件。
40.在本公开的一个实施例中,所述分布式定时任务调度组件,包括kschedule组件。
41.在本公开的一个实施例中,所述测试包括针对所述目标应用的系统环境进行的压力测试。
42.在本公开的一个实施例中,所述压力测试包括针对所述目标应用的系统环境进行的容量回归测试。
43.在本公开实施方式的第二方面中,提供了一种存储介质,应用于测试管理平台,所述测试管理平台用于管理执行测试任务的设备集群;所述测试管理平台包括分布式定时任务调度组件;所述存储介质上存储有计算机指令,该指令被处理器执行时实现如下所述方法的步骤:
44.获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
45.将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;
46.其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
47.在本公开实施方式的第三方面中,提供了一种测试执行装置,应用于测试管理平台,所述测试管理平台管理用于执行测试任务的设备集群;所述测试管理平台包括分布式定时任务调度组件;包括:
48.获取模块,获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
49.测试模块,将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时
触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;
50.其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
51.在本公开实施方式的第四方面中,提供了一种电子设备,包括:多个处理器;用于存储处理器可执行指令的存储器;所述处理器通过运行所述可执行指令以实现如下所述的方法:
52.获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
53.将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;
54.其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
55.在本公开以上的实施方式,可以通过测试管理平台上的分布式定时任务调度组件,按照用户配置的定时触发时刻,定时触发与目标应用对应的测试任务,对该测试任务进行分片处理,并将分片处理得到的各任务分片,分别调度至测试管理平台管理的设备集群中的各执行设备进行分布式执行;而且,由于分片处理得到的各任务分片对应的执行流程,是由分别与测试流程中的各个测试环节对应的若干子流程构成的流水线流程,因此使得设备集群中的各执行设备,可以按照流水线流程规定的测试顺序,自动化的完成整个测试流程中的各个测试环节的测试任务,而不再需要人工干预,从而可以大幅提升测试效率。
附图说明
56.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
57.图1示意性地示出了根据本公开实施方式的一种对客户端应用的系统环境进行测试的应用场景示意图;
58.图2示意性地示出了根据本公开实施方式的一种测试执行方法的流程图;
59.图3示意性地示出了根据本公开实施方式的另一种对客户端应用的系统环境进行测试的应用场景示意图;
60.图4示意性地示出了根据本公开实施方式的一种测试执行装置的框图;
61.图5示意性地示出了根据本公开实施方式的一种计算设备的硬件架构图;
62.图6示意性地示出了根据本公开实施方式的一种应用于测试执行方法的软件产品的示意图。
63.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
64.下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这
些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
65.本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
66.根据本公开的实施方式,提出了一种测试执行方法、介质、装置和计算设备。
67.在本文中,需要理解的是,所涉及的术语表示如下:
68.压力测试:是指给软件(比如客户端应用)不断加压,强制其在极限的情况下运行,观察该软件的系统环境的性能变化,从而发现其性能缺陷。在对软件进行压力测试时,通常可以模拟海量的用户请求和数据,测试系统环境在不同压力情况下的运行状况,以及系统环境可以承受的压力情况,然后有针对性对测试结果进行分析,找到影响系统环境的性能瓶颈,评估是否需要对系统环境进行优化处理或结构调整。
69.回归测试:当软件修正了bug或上线了新的功能(比如在软件上线了新的网络营销活动),生成了新的软件版本之后,对这个版本的系统环境进行的测试称之为回归测试。
70.容量回归测试:当软件修正了bug或上线了新的功能(比如在软件上线了新的网络营销活动),生成了新的软件版本之后,通过对这个版本进行压力测试,来评估系统环境的系统资源的消耗状况,摸清系统环境需要搭载的极限资源容量,通常称之为容量回归测试。
71.此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
72.下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
73.发明概述
74.本公开的发明人发现,在相关技术中,在对客户端应用的系统环境进行测试时,通常会存在整个测试流程过度依赖人工处理导致测试效率低下的问题。
75.例如,以对客户端应用的系统环境进行容量回归测试,来评估系统环境的系统资源的消耗状况的测试场景为例,在容量回归测试的场景下,通常包含测试场景设计、测试数据准备、测试执行、监控测试结果、整理测试报告等阶段,其中最耗时的部分就是测试执行和监控测试结果这两个阶段。
76.其中,测试执行的方法通常有以下2种:
77.第一种方法,可以开启一个持续时间较短(比如5

10分钟),并且在该时间段内并发的模拟出的用户请求的数量恒定的测试任务,在任务执行期间,观察监控测试结果和测试指标;如果该测试任务未达到预期的测试目标,则可以对该时间段内并发的用户请求的数量进行增加后,再重新开启一轮任务。
78.另一种方法,可以开启一个持续时间较长(比如30

50分钟),并且在该时间段内并发的模拟出的用户请求的数量恒定的测试任务,在任务执行期间,观察监控测试结果和测试指标,并动态调整该时间段内并发的模拟出的用户请求的数量,直到该测试任务达到预期的测试目标。
79.无论是以上示出的哪一种方法,每次调整在任务时段内并发的用户请求的数量时,都需要通知相关的测试人员。在任务执行期间,还需要测试人员不断的观察监控测试结
果和测试指标,当测试指标超出一定阈值,需要立即停止压力测试,避免影响真实环境的真实用户。而且,测试任务运行结束后,如果该测试任务未达到预期的测试目标,还需要人工调整在任务时段内并发的用户请求的数量。
80.不难理解,以上3点会耗费测试人员大量的时间,而且当有比较紧急的网络营销活动上线需要进行紧急测试时,可能会面临人力短缺的问题。而且,即便人力不短缺,在时间紧张、操作繁琐的情况下,测试人员也很可能出现不可预知的操作失误,而影响整个系统环境的稳定性。
81.有鉴于此,本说明书提供一种通过测试管理平台上的分布式定时任务调度组件,来定时触发与目标应用对应的测试任务,并通过流水线任务的方式来自动化执行该测试任务的技术方案。
82.本说明书的核心技术构思在于:
83.通过在测试管理平台上实现一个分布式定时任务调度组件,通过该分布式定时任务调度组件,按照用户配置的定时触发时刻,定时触发与客户端应用对应的测试任务,对该测试任务进行分片处理,并将分片处理得到的各任务分片,分别调度至测试管理平台管理的设备集群中的各执行设备进行分布式执行。其中,上述任务分片对应的执行流程,具体可以是由分别与测试流程中的各个测试环节对应的若干子流程构成的流水线流程
84.由于分片处理得到的各任务分片对应的执行流程,是由分别与测试流程中的各个测试环节对应的若干子流程构成的流水线流程,因此使得设备集群中的各执行设备,可以按照流水线流程规定的测试顺序,自动化的完成整个测试流程中的各个测试环节的测试任务,而不再需要人工干预,从而可以大幅提升测试效率。
85.应用场景总览
86.本公开描述的对客户端应用的系统环境进行测试的应用场景,具体可以涵盖任意类型的针对客户端应用的系统环境进行测试,来观察该系统环境的性能变化的测试场景。
87.例如,在一个应用场景中,针对客户端应用的系统环境进行的测试,具体可以是修正了客户端应用的某一项或者多项bug,生成了新的软件版本之后,针对该客户端应用的系统环境进行测试,来观察和评估该系统环境的性能变化的测试场景。
88.在另一个应用场景中,针对客户端应用的系统环境进行的测试,具体也可以是客户端应用上线了某一项或者多项新的功能,生成了新的软件版本之后,针对该客户端应用的系统环境进行测试,来观察和评估该客户端应用的系统环境的性能变化的测试场景。
89.需要强调的是,本公开可以应用于针对客户端应用的系统环境的任意类型的测试场景,因此申请人在本公开中将不再对本公开涵盖的所有测试场景进行一一列举。
90.请参见图1,图1是一示例性实施例提供的一种对客户端应用的系统环境进行测试的应用场景示意图。
91.在实际应用中,当在客户端应用上线一个新的功能时,通常需要针对该客户端应用的系统环境进行测试,来观察和评估该系统环境的性能变化,以确保该新的功能能够正常运行。
92.如图1所示,对客户端应用的系统环境进行测试的应用场景中,通常涉及以下几种角色:
93.客户端应用,通过各种软件功能面向用户提供各种用户服务。
94.服务端,可以是一个服务设备集群,作为客户端应用的后台,面向客户端应用提供相关的系统环境,在该系统环境中可以搭载各种系统资源,来运行应用客户端上的各种软件功能。服务设备集群中的各台服务设备,可以作为在线设备,来运行真实的用户在客户端应用上执行的各项用户操作对应的在线任务;也可以作为测试设备,来运行模拟出的用户在客户端应用上执行的各项用户操作对应的测试任务。
95.测试管理平台,用于管理上述服务设备集群中的各台服务器,对各台服务器面向客户端应用提供的系统环境进行测试,以观察该系统环境的性能变化。
96.其中,如图1所示,在测试管理平台中,可以实现一个分布式定时任务调度组件。该分布式定时任务调度组件,用于根据测试人员配置的定时触发时刻,定时对与客户端应用对应的测试任务进行分片处理,将该测试任务划分成若干任务分片。
97.其中,各任务分片可以包括由若干子流程构成的流水线任务;这些子流程可以分别与测试流程中的各个测试环节相对应;然后,可以基于自身的调度机制将各任务分片分别调度至上述服务设备集群中的各服务设备进行分布式执行,以完成针对客户端应用的系统环境的测试。
98.请继续参见图1,在一个应用场景下,客户端应用上线的新的功能,可以是在客户端应用上线的新的网络营销活动。
99.在这种场景下,图1示出的测试场景具体可以是容量回归测试的测试场景。由于上线的新的网络营销活动通常并不是该客户端应用常驻的功能,而仅仅是在某一个特定的营销时段内短暂上线,在营销结束后会立即下线的临时性的功能;因此,在网络营销活动上线的活动时段,系统资源的消耗情况通常远大于网络营销活动未上线的日常时段。
100.为了保证网络营销活动能够顺利进行,通常需要在系统环境中预留大量的系统资源供网络营销活动使用。而在实际应用中,如果在网络营销活动下线后仍然将系统环境中预留的系统资源始终保持在一个较高的水准,会造成系统资源的浪费。反之,如果在网络营销活动上线后系统环境中预留的系统资源处于一个较低的水准,则会影响网络营销活动的稳定性,降低营销活动的活动效果。
101.因此,在这种场景下,可以结合图1示出的应用场景,通过在测试管理平台中实现的分布式定时任务调度组件,按照用户配置的定时触发时刻,定时触发针对客户端应用的系统环境的容量回归测试任务,及时的评估系统环境的系统资源消耗状况,并基于评估出的系统资源消耗状况及时的对系统环境中预留的系统资源的数量进行调整,则有助于系统环境中的系统资源的优化配置。
102.示例性方法
103.下面结合图1的应用场景,参考图2来描述根据本公开示例性实施方式的测试执行方法。
104.需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
105.请参见图2,图2是一示例性实施例提供的一种测试执行方法的流程图。所述方法应用于图1中示出的测试管理平台,所述测试管理平台用于管理执行测试任务的设备集群;所述测试管理平台包括分布式定时任务调度组件。所述方法执行以下步骤:
106.步骤201,获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
107.上述目标应用可以包括任意类型的需要被测试的客户端应用;例如,在一个例子中,上述客户端应用具体可以是音乐播放类app。
108.针对上述目标应用进行的测试,则具体可以涵盖针对上述目标应用的系统环境进行的任意形式的软件测试。在示出的一种实施方式中,针对上述目标应用的系统环境进行的测试,具体可以是针对上述目标应用的系统环境进行的压力测试。例如,结合图1示出的应用场景,针对上述目标应用的系统环境进行的测试,具体可以是上述目标应用上线了新的功能后,针对上述目标应用的系统环境进行的容量回归测试。
109.在需要对目标应用的系统环境进行测试时,测试人员可以为目标应用人工配置测试任务,并为该测试任务添加相关的基础配置信息;其中,在该基础配置信息中,具体可以包括与该测试任务对应的定时触发时刻,使得测试管理平台在获取到测试人员为测试任务添加的基础配置信息后,可以按照该基础配置信息中的定时触发时刻,定时触发针对该目标应用的测试任务。
110.在一个例子中,该测试管理平台可以面向测试人员提供一个用于配置测试任务的可视化界面,测试人员可以通过该可视化界面来为目标应用创建测试任务,并为创建的测试任务手动输入定时触发时刻;相应的,测试管理平台可以获取测试人员在该可视化界面中输入的基础配置信息,再根据获取到的基础配置信息,来定时触发针对上述目标应用的测试任务。
111.需要说明的是,在实际应用中,测试人员为该测试任务添加相关的基础配置信息中,除了可以包括上述定时触发时刻以外,还可以包括该测试任务的执行所需的其它形式的信息;例如,还可以包括该测试任务对应的流水线任务执行所需的上下文信息;举例而言,在需要对测试任务进行分片的情况下,该基础配置信息中还可以包括由测试人员配置的针对该测试任务的分片数量,单个任务分片所包含的模拟出的用户请求的数量,等等,在本公开中不再进行一一列举。
112.步骤202,将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
113.如图1所示,在上述测试管理平台上,可以包括一个分布式定时任务调度组件。
114.其中,在一个例子中,该分布式定时任务调度组件具体可以是一个在测试管理平台的系统环境中实现的,搭载在测试管理平台的系统环境中的一个系统内置的组件。在这种情况下,上述分布式定时任务调度组件可以作为上述测试管理平台内部的一个功能模块。
115.在另一个例子中,该分布式定时任务调度组件具体也可以是一个与测试管理平台对接的外部组件(比如第三方的组件)。在这种情况下,上述分布式定时任务调度组件将不再作为上述测试管理平台内部的一个功能模块,此时上述分布式定时任务调度组件与上述测试管理平台之间可以是一种远程调用的关系,上述分布式定时任务调度组件可以面向上
述测试管理平台暴露一个接口,上述测试管理平台可以通过调用该接口,来远程调用该分布式定时任务调度组件,与该分布式定时任务调度组件进行交互。
116.需要说明的是,在实际应用中,上述分布式定时任务调度组件,具体可以是一个分布式的定时任务调度框架。关于该分布式定时任务调度组件所采用的具体的系统框架,在本公开中不进行特别限定;
117.在示出的一种实施方式中,上述分布式定时任务调度组件,具体可以采用基于zookeeper框架的分布式定时任务调度组件。
118.其中,zookeeper是目前应用比较广泛的一种面向大型分布式系统的协调服务框架。在zookeeper框架下,包括一个由leader、follower、observer等三种角色的zookeeper节点构成的,面向分布式系统提供协调服务的zookeeper集群,通过该zookeeper集群可以将任务进行分片后,利用zookeeper集群自身的协调服务,将任务分片均衡的调度至分布式系统中的各个任务处理节点进行分布式执行。
119.例如,请参见图3,图3是一示例性实施例提供的另一种对客户端应用的系统环境进行测试的应用场景示意图。如图3所示,在一个例子中,上述分布式定时任务调度组件,具体可以是kschedule组件。其中,图3示出的kschedule组件,就是一种典型的基于zookeeper框架构建的定时任务调度框架。
120.测试管理平台在获取到测试人员为测试任务添加的基础配置信息之后,可以将获取到的该基础配置信息进一步提交给上述分布式定时任务调度组件。
121.例如,在示出的一种实施方式中,测试管理平台可以将该基础配置信息,以通用的cron表达式的形式进一步提交给上述分布式定时任务调度组件。由于cron表达式是诸如kschedule组件等各种框架均支持的较为通用的表达式,因此以cron表达式的形式向上述分布式定时任务调度组件提交基础配置信息,具有较好的兼容性。
122.其中,需要说明的是,上述基础配置信息可以默认就是由测试人员手动输入的cron表达式的形式,也可以不是,在本公开中不进行特别限定。如果上述基础配置信息默认不是cron表达式的形式,则上述测试管理平台在将该基础配置信息提交给上述分布式定时任务调度组件时,可以先将该基础配置信息强制转换成cron表达式的形式,再提交给上述分布式定时任务调度组件。
123.上述分布式定时任务调度组件在获取到该基础配置信息后,可以按照该基础配置信息中由测试人员配置的定时触发时刻,定时触发对测试任务进行分片处理,再将分片处理后得到的各任务分片,分别调度至图1示出的服务设备集群中的各服务设备进行分布式执行。
124.在示出的一种实施方式中,针对上述目标应用的测试任务,具体可以包括针对该目标应用进行测试所需的模拟请求集。在这种情况下,针对测试任务进行分片,即为对上述模拟请求集进行分片,分片得到的各任务分片即为对上述模拟请求集进行分片后得到的模拟请求子集。
125.在以下实施例中,将以上述任务分片为上述模拟请求子集为例进行说明。需要强调的是,以上述任务分片为上述模拟请求子集为例仅为示例性说明,并不用于对本公开进行特别限定。显而易见的,在实际应用中,上述任务分片具体也可以其它形式的与测试相关的测试数据。
126.其中,上述模拟请求集具体可以对应目标应用面向用户提供的一项具体的用户功能。而在该模拟请求集中可以包括若干模拟请求,这些模拟请求具体可以用于模拟用户在该目标应用上执行与前述的用户功能相关的各项用户操作时所触发的用户请求。
127.需要说明的是,用户在目标应用上执行的与前述的用户功能相关的各项用户操作,具体可以包括用户在使用目标应用的某项用户功能的过程中,基于用户视角的所有与该用户功能相关的可行操作。
128.例如,以上述目标应用为音乐播放类app为例,前述的用户功能具体可以是音乐播放的功能;此时用户在该app上执行的与该用户功能相关的各项用户操作,具体可以包括用户对该app的首页信息流的访问操作、进入歌单的操作、播放歌单中的音乐的操作,等等。
129.在示出的一种实施方式中,请参见图3,上述测试管理平台还可以对接一个用于存储上述模拟请求集的数据库。在实际应用中,测试人员可以基于自身对上述目标应用上各项功能的了解情况,通过手动创建用户请求,来模拟用户在上述目标应用上执行与各项待测试的用户功能相关的用户操作,再将创建的用户请求构建成模拟请求集,写入到图3示出的与上述测试管理平台对接的数据库中进行存储。
130.相应的,上述分布式定时任务调度组件在按照测试人员配置的定时触发时刻,定时触发对测试任务进行分片处理时,则可以按照上述定时触发时刻,定时从上述数据库中读取所述模拟请求集,再对读取到的模拟请求集进行分片处理,将该模拟请求集划分为若干个模拟请求子集,此时分片处理得到的任务分片即为上述模拟请求子集;然后,再将分片处理后得到的各模拟请求子集,分别调度至图1示出的服务设备集群中的各服务设备进行分布式执行。
131.其中,需要说明的是,在针对上述目标应用的系统环境进行测试时,可能涉及该目标应用的多项用户功能。在这种情况下,在上述数据库中则可以存储分别与上述目标应用上的多项用户功能对应的多个模拟请求集。而在实际应用中,在一些特殊的情形下,与这些模拟请求集对应的用户功能中的部分用户功能,可能并不需要进行测试。
132.例如,在一个例子中,上述目标应用面向用户提供的各项用户功能,通常会随着上述目标应用软件的更新发生变化;比如,某项用户功能临时下线,或者又有新的用户功能加入,等等。如果对已经下线的用户功能进行重复测试,则会浪费测试资源。此时已经下线的用户功能,则属于并不需要进行测试的用户功能。
133.又如,在另一个例子中,当测试人员需要临时调整测试计划,仅对数据库中存储的多个模拟请求集中的某一个模拟请求集对应的用户功能进行测试,则其它的模拟请求集对应的用户功能,则属于并不需要进行测试的用户功能。
134.基于此,在示出的一种实施方式中,数据库中可以为存储的各个模拟请求集,分别预设一个属性字段来表示各个模拟请求集对应的用户功能,是否为待测试的用户功能。当某一模拟请求集的属性字段的取值为预设值时,表示该模拟请求集对应的用户功能,为待测试的用户功能;反之,则表示该模拟请求集对应的用户功能,为不需要进行重复测试的用户功能;例如,在一个例子中,上述属性字段可以是enabled字段;上述预设值具体可以是true。当上述目标应用的某项用户功能临时下线,或者测试人员临时调整了测试计划,不再对该项用户功能进行测试,则测试人员可以将数据库中存储的与该项用户功能对应的模拟请求集的enabled字段的取值设置为true。
135.在这种情况下,上述分布式定时任务调度组件在按照上述定时触发时刻,定时从上述数据库中读取模拟请求集时,则可以定时从上述数据库中读取上述属性字段的取值为预设值的模拟请求集,再对读取到的模拟请求集进行分片处理,将该模拟请求集划分为若干个模拟请求子集,然后再将分片处理后得到的各模拟请求子集,分别调度至图1示出的服务设备集群中的各服务设备进行分布式执行。
136.通过为数据库中存储的模拟请求子集设置上述属性字段,可以灵活的适应具体的测试需求,在某项用户功能临时下线,或者测试人员临时调整了测试计划,不再对该项用户功能进行测试,避免对该项用户功能进行不必要的重复性测试,有助于节约测试资源。
137.在示出的一种实施方式中,上述分布式定时任务调度组件在将分片处理后得到的各模拟请求子集,分别调度至图1示出的服务设备集群中的各服务设备进行分布式执行之前,还可以预先对数据库中存储的各模拟请求子集中的模拟请求添加分布式锁;相应的,上述分布式定时任务调度组件在将分片处理后得到的各模拟请求子集,分别调度至图1示出的服务设备集群中的各服务设备之后,如果各个服务设备在执行分配给自己的模拟请求子集中的模拟请求的过程中发生异常,或者,该模拟请求子集中的模拟请求均执行完成,此时再删除为该模拟请求子集中的模拟请求添加的分布式锁。
138.其中,为数据库中存储的各模拟请求子集中的模拟请求添加分布式锁,以及删除分布式锁的具体实施细节,在本公开中不再进行详述,本领域技术人员可以参考相关技术中的记载。例如,实际应用中,可以采用基于redis的分布式锁的解决方案,为数据库中存储的各模拟请求子集中的模拟请求添加分布式锁和删除分布式锁。
139.在本公开中,上述分布式定时任务调度组件在将分片处理得到的各模拟请求子集(即任务分片),分别调度至图1示出的服务设备集群中的各服务设备之后,各个模拟请求子集在其对应的服务设备上的执行流程,具体可以包括由若干子流程构成的一个流水线流程。也即,各个服务设备具体可以按照一个由若干子流程构成的流水线流程,来分别自动化的执行分配给自身的模拟请求子集中的模拟请求。其中,上述若干子流程具体可以对应以上测试的测试流程中的各个测试环节。而上述测试流程中的各个具体的测试环节,在实际应用中,可以由测试人员基于实际的测试需求来自定义,在本公开中不进行特别限定。
140.在示出的一种实施方式中,上述测试流程中所包含的测试环节,具体可以包括测试执行环节、测试评估环节、以及测试环境保存环节。相应的,上述流水线流程,可以包括与测试执行环节对应的第一子流程、与测试评估环节对应的第二子流程、以及与测试环境保存环节对应的第三子流程。其中:
141.上述第一子流程,用于触发执行调度至本地的模拟请求子集中的模拟请求。
142.上述第二子流程,在调度至本地的模拟请求子集中的模拟请求均执行成功时被触发执行;用于监控前述的模拟请求子集中的模拟请求的执行结果是否达到预期的测试目标。
143.上述第三子流程,在上述第二子流程执行完成时被触发执行;用于保存测试环境信息。其中,上述测试环境信息,具体可以包括执行本次测试任务的服务设备集群相关的一些描述信息;例如,上述测试环境信息具体可以包括参与本次测试任务的服务设备的台数,参与本次测试任务的服务设备的硬件配置信息,等等。
144.在实际应用中,第三子流程保存的测试环境信息,具体可以作为本次测试任务的
测试结果的一部分,以测试报告的形式呈现给测试人员。
145.在示出的一种实施方式中,除了以上三个子流程以外,上述流水线流程具体还可以包括一个与上述第一子流程关联的第四子流程。
146.其中,该第四子流程,用于采集上述第一子流程在执行调度至本地的模拟请求子集中的模拟请求的过程中的执行参数,并将该执行参数与预设阈值进行比较,以判断是否结束上述第一子流程。
147.在一种实现方式中,如前所述,由于上述模拟请求集对应目标应用上的一项待测试的用户功能,而上述模拟请求集中的模拟请求则可以包括用于模拟用户在该目标应用上执行与前述的用户功能相关的多项用户操作时所触发的用户请求;因此,对上述模拟请求集进行分片后得到的模拟请求子集中的模拟请求,具体也可以对应多项用户操作。在这一基础之上,可以按照模拟请求子集中的模拟请求对应的用户操作的不同,将该模拟请求子集进一步划分成多个执行集。各执行集分别对应不同的用户操作,每一个执行集中包括与同一种用户操作对应的模拟请求。
148.在这种情况下,上述第四子流程在判断是否结束上述第一子流程的过程中,具体可以将采集到的上述第一子流程在执行各个执行集中的模拟请求的过程中的执行参数,分别与预设阈值进行比较;如果上述第一子流程在执行任一目标执行集中的模拟请求的过程中的执行参数低于预设阈值,则可以触发结束上述第一子流程。
149.例如,在一个例子中,上述第一子流程,可以进一步用于获取各个执行集对应的执行状态;如果任一执行集对应的执行状态为执行失败状态,则终止执行调度至本地的模拟请求子集中的其它执行集。在这种情况下,如果上述第一子流程在执行任一目标执行集中的模拟请求的过程中的执行参数低于预设阈值,上述第四子流程在触发结束上述第一子流程时,可以触发将上述目标执行集设置为执行失败状态,而上述第一子流程在获取到该目标执行集的状态为执行失败状态时,可以立即终止执行调度至本地的模拟请求子集中的其它执行集,从而触发结束整个第一子流程。
150.其中,需要说明的是,前述的执行参数,在实际应用中,具体可以包括能够指示上述第一子流程发生异常的任意形式的系统指标,在本说明书中不进行特别限定;例如,在一个例子中,上述执行参数,具体可以是模拟请求的执行过程中的错误率指标。
151.在以上实施中,通过为第一子流程设置一个可以自动判断是否结束上述第一子流程的第四子流程,可以确保上述第一子流程在执行过程中出现异常时,自动化停止第一子流程,从而可以保障测试的稳定性;例如,当上述第一子流程在执行调度至本地的模拟请求子集中的各个执行集中的模拟请求时,如果任一执行集中的模拟请求的执行出现异常,第四子流程就会立即触发结束整个第一子流程,从而保障测试能够始终输出准确的测试结果,维持测试的稳定性。
152.在示出的一种实施方式中,上述第二子流程,还可以进一步用于在调度至本地的模拟请求子集中的各个执行集对应的模拟请求的执行结果,均达到预期的测试目标时,触发停止前述的测试任务,并生成测试报告。以及,在前述的各个执行集中的至少一个执行集对应的模拟请求的执行结果未达到预期的测试目标时,触发创建新的模拟请求子集,并通知上述第一子流程重新执行前述的新的模拟请求子集中的模拟请求,重新开启一轮测试,以此类推,直到上述测试任务能够达到满意的测试结果。
153.需要补充说明的是,以上描述的四种子流程对应的执行逻辑,在实际应用中,可以采用模块化的实现方式。所谓模块化的实现方式,是指将以上描述的四种子流程对应的执行逻辑抽象成为若干类模块化的可执行方法,通过抽象出的这些模块化的方法相互配合,来实现以上描述的四种子流程对应的完整的执行逻辑。
154.例如,在一个例子中,以上描述的四种子流程对应的执行逻辑可以抽象成为四类可执行的方法,分别为loadcontext方法、precheck方法、process方法和finish方法。
155.其中,loadcontext方法,可以负责组装当前子流程执行所需要的一些基础信息;比如,任务执行所需的任务详情、定时任务详情、场景信息等上下文信息。
156.precheck方法,可以负责校验当前子流程的核心执行逻辑执行前的一些前置条件是否满足;比如,是否有正在执行的任务、任务是否执行成功等。
157.process方法,用于执行当前子流程的核心逻辑;比如,创建任务、启动任务、停止任务、保存任务环境、校验是否达到预期目标等。
158.finish方法,用于根据process方法的执行结果做些特殊逻辑处理;如任务执行完成后生成测试报告,通知测试人员,等等。基于以上四种可执行方法,实现以上描述的各个子流程的具体实施细节,在本公开中不再进行赘述,本领域技术人员可以参考相关技术中的记载。
159.通过以上示出的各个实施例可知,本公开可以通过测试管理平台上的分布式定时任务调度组件,按照用户配置的定时触发时刻,定时触发与目标应用对应的测试任务,对该测试任务进行分片处理,并将分片处理得到的各任务分片,分别调度至测试管理平台管理的设备集群中的各执行设备进行分布式执行;而且,由于分片处理得到的各任务分片对应的执行流程,是由分别与测试流程中的各个测试环节对应的若干子流程构成的流水线流程,因此使得设备集群中的各执行设备,可以按照流水线流程规定的测试顺序,自动化的完成整个测试流程中的各个测试环节的测试任务,而不再需要人工干预,从而可以大幅提升测试效率。
160.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
161.在本公开的示例性实施例中,还提供一种测试执行装置。图4示出了上述测试执行装置400的结构示意图,如图4所示,上述测试执行装置400可以包括:获取模块410和测试模块420。其中:
162.获取模块410被配置为,获取与目标应用对应的测试任务的配置信息;其中,所述配置信息包括与所述测试任务对应的定时触发时刻;
163.测试模块420被配置为,将所述配置信息提交给所述分布式定时任务调度组件,按照所述定时触发时刻,定时对所述测试任务进行分片处理,并将分片处理后得到的各任务分片分别调度至所述设备集群中的各执行设备进行分布式执行,以完成针对所述目标应用的测试;其中,所述任务分片对应的执行流程,包括由若干子流程构成的流水线流程;所述若干子流程分别对应所述测试的测试流程中的各个测试环节。
164.上述测试执行装置400的各个模块的具体细节已经在之前描述测试执行方法流程中进行了详细的描述,因此此处不再赘述。
165.应当注意,尽管在上文详细描述中提及测试执行装置400的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或
者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
166.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
167.下面参照图5来描述根据本公开的这种实施例的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
168.如图6所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元501、上述至少一个存储单元502、连接不同系统组件(包括存储单元502和处理单元501)的总线503。
169.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元501执行,使得所述处理单元501执行本说明书上述各种实施例的步骤。
170.存储单元502可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)5021和/或高速缓存存储单元5022,还可以进一步包括只读存储单元(rom)5023。
171.存储单元502还可以包括具有一组(至少一个)程序模块5025的程序/使用工具5024,这样的程序模块5025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包含网络环境的现实。
172.总线503可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
173.电子设备500也可以与一个或多个外部设备504(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口505进行。并且,电子设备500还可以通过网络适配器506与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器506通过总线503与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
174.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
175.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
176.参考图6所示,描述了根据本公开的实施例的用于实现上述方法的程序产品60,其可以采用便携式紧凑盘只读存储器(cd

rom)并包括程序代码,并可以在终端设备,例如个
人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
177.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
178.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
179.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
180.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
181.本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其他实施例。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
182.应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
183.此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
184.虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能
组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜