CN107870852B - 一种测试方法及装置 - Google Patents
一种测试方法及装置 Download PDFInfo
- Publication number
- CN107870852B CN107870852B CN201610851211.5A CN201610851211A CN107870852B CN 107870852 B CN107870852 B CN 107870852B CN 201610851211 A CN201610851211 A CN 201610851211A CN 107870852 B CN107870852 B CN 107870852B
- Authority
- CN
- China
- Prior art keywords
- test
- distributed system
- branch tree
- module
- establishing
- 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/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为基于图2、图4和图5建立的树状系统测试模型的结构示意图;
图7为本发明提供的一种测试装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,对本发明进行详细的说明。
图1为本发明实施例提供的一种测试方法的流程示意图,该方法包括如下步骤。
S101:根据被测试分布式系统的结构特征,建立树状系统测试模型,所述树状系统测试模型至少包括:基于控制节点的各个功能模块的第一分支树、基于服务节点的各个功能模块的第二分支树和基于客户端的各个动作指令的第三分支树。
本领域技术人员可以理解的是,分布式系统是建立在网络之上的系统;分布式系统具有高度的内聚性和透明性;其中,内聚性是指每一个节点均具有高度的自治,简单来说就是每一个节点具有较高的独立性;透明性是指每一个节点对用户的应用来说都是透明的,看不出是本地还是远程。例如,在分布式存储系统中,分布式存储系统,是将数据分散存储在多台独立的设备上。而用户感觉不到存储的数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个服务节点以及动作在哪个服务节点上执行等。
一个分布式系统展现给用户的是一个统一的整体,就好像是一个系统似的。分布式系统拥有多种通用的功能模块和动作指令,这些分散的功能模块和动作指令可通过RPC(Remote Procedure Call Protocol,远程过程调用协议)来实现各个功能模块之间的交互。
通常,分布式系统具有比较独特的结构特征,往往可以分为控制节点、服务节点和客户端,其中控制节点,用来控制和管理所有的功能模块和动作指令;服务节点,用来为用户提供各种功能服务,包含多个功能模块,每个功能模块均能够实现一个功能服务;客户端,用来采集并接受用户输入的各个动作指令。之所以将分布式存储系统分为三个部分,是因为系统的运行过程实际上就是上述几个部分之间的功能模块和动作指令进行交互的过程,三个部分之间各自保存各自对应的状态、参数。因此,根据分布式系统实际运行的状态,可以将分布式系统抽象成控制节点、服务节点以及客户端,然后进行各功能模块和动作指令的交互。
为了获得更加完善的分布式系统,在分布式系统交付使用之前,需要进行系统测试,系统测试是指在整个系统的基础上对各个功能模块进行的测试,从而确定分布式系统的各个功能是否还存在问题,进而对分布式系统进行完善。
为了清楚的对本发明实施例进行说明,以下均以分布式存储系统为例进行说明,分布式存储系统至少可以包括控制节点、存储服务节点以及客户端。
实际应用中,可以根据每个层级的结构特征,分别建立针对控制节点的各个功能模块的第一分支树、针对服务节点的各个功能模块的第二分支树和针对客户端的各个动作指令的第三分支树。最后根据上述的第一分支树、第二分支树和第三分支树,建立针对被测试分布式系统的树状系统测试模型。
具体的;根据被测试分布式系统中控制节点的各个功能模块对应的结构特征,建立针对所述控制节点的第一分支树;
根据被测试分布式系统中服务节点的各个功能模块对应的结构特征,建立针对所述服务节点的第二分支树;
根据被测试分布式系统中客户端的各个动作指令,建立针对所述客户端的第三分支树;
基于所述第一分支树、所述第二分支树和所述第三分支树,建立针对所述被测试分布式系统的树状系统测试模型。
首先,对针对控制节点的第一分支树的建立过程进行介绍,不难理解的是,控制器节点可以是一台主机或者还可以包括多台备用从机,对控制节点来说,它只有在关闭的状态下才会直接影响到服务节点和客户端的运行。控制节点事实上相当于一个开关模型一样,当控制节点保持正常运行时,后续的部分才能运行。因此,第一分支树可以为开关模型对应的树,本发明实施例中所提及的第一分支树是指树状系统测试模型的一个分支树,第一分支树是针对上述控制节点建立的分支树。
示例性的,假设分布式存储系统的控制节点包括一个主机和一个从机,可以根据控制节点的特点,建立如图2所示,为本发明实施例提供的一种具体的第一分支树的结构示意图;由图2可见,主机对应有两种运行状态,分别为正常运行以及异常掉线,分别对应开关模型的“开”节点和“关”节点,当主机处于异常掉线的情况下,系统将进行从机切换,不难理解的是,与主机类似的,从机的运行状态也有两种,即从机正常运行和从机异常掉线,上述每一种运行状态均对应着一个功能模块。在进行系统测试时,为了尽可能多的对被测试分布式存储系统的功能模块进行测试,可以将被测试分布式存储系统中的每一个功能模块对应为一个测试模块。
其次,对针对服务节点的第二分支树的建立过程进行介绍,实际应用中,建立针对所述服务节点的第二分支树,可以为确定被测试分布式系统中服务节点的每一个功能模块的第一结构特征;建立所述第一结构特征对应的第一测试模块;按照第一预设规则,对所述第一测试模块进行组合,建立针对所述服务节点的第二分支树,其中,所述第二支树中的每一条路径对应所述第一测试模块的一种组合。
在分布式存储系统中,存储服务节点包含大量的功能模块,实现不同的功能,例如,存储服务节点可以但不限于包含如下的功能模块:正常重启、Disk(硬盘)调用、Disk出错报警、Disk正常运行、异常重启、负载均衡、负载分裂、数据存储、数据调用、数据修改、数据删除,各功能模块之间需要进行大量的交互,因此服务节点的运行状态复杂多样。
可见要想全面地、合理地对上述的存储服务节点进行检测,需要结合存储服务节点的每一个功能模块对应的结构特征,例如,“正常重启”功能模块实现的功能是使存储服务节点重启的功能,因此它可以在存储服务节点运行的任意一个环节执行,比如说当前服务服务节点正处在运行“数据修改”功能模块的状态时,突然接到执行“正常重启”功能模块的动作指令,那么不管当前存储服务节点处于什么运行状态,都将结束运行,重新启动服务节点。根据上述“正常重启”功能模块的结构特征,可以建立对应的“正常重启”测试模块;不同的功能模块具有不同的结构特征,因此,可以确定每一个功能模块对应的结构特征,根据各自对应的结构特征建立对应的测试模块。可分别建立Disk调用、Disk出错报警、Disk正常运行、异常重启、负载均衡、负载分裂、数据存储、数据调用、数据修改、数据删除各个功能模块对应的“Disk调用”测试模块、“Disk出错报警”测试模块、“Disk正常运行”测试模块、“异常重启”测试模块、“负载均衡”测试模块、“负载分裂”测试模块、“数据存储”测试模块、“数据调用”测试模块、“数据修改”测试模块、“数据删除”测试模块。
由上可知,每一个测试模块均对应一个功能模块,将存储服务节点所包括的所有的测试模块进行随机组合,随机组合是指按照概率论的排列组合中的随机组合,假设现有测试模块1、测试模块2和测试模块3,随机组合是指从这3个测试模块中选择1-3个,有顺序的排列成组,可得到如表1中所示的各条路径。
表1
路径 | 组合结果 |
1 | 测试模块1 |
2 | 测试模块1→测试模块2 |
3 | 测试模块1→测试模块2→测试模块3 |
4 | 测试模块1→测试模块3 |
5 | 测试模块1→测试模块3→测试模块2 |
6 | 测试模块2 |
7 | 测试模块2→测试模块1 |
8 | 测试模块2→测试模块1→测试模块3 |
9 | 测试模块2→测试模块3 |
10 | 测试模块2→测试模块3→测试模块1 |
11 | 测试模块3 |
12 | 测试模块3→测试模块1 |
13 | 测试模块3→测试模块1→测试模块2 |
14 | 测试模块3→测试模块2 |
15 | 测试模块3→测试模块2→测试模块1 |
可见,表1中的组合结果包含了测试模块1-3在服务节点运行时的所有状态,每个组合结果都是构成存储服务节点对应第二分支树中的一条路径。假设存储服务节点中包括:“正常重启”测试模块、“Disk调用”测试模块、“Disk出错报警”测试模块,按照上述的组合方式,可得到如表2中所示的各条路径。
表2
路径 | 组合结果 |
1 | 正常重启 |
2 | 正常重启→Disk调用 |
3 | 正常重启→Disk调用→Disk出错报警 |
4 | 正常重启→Disk出错报警 |
5 | 正常重启→Disk出错报警→Disk调用 |
6 | Disk调用 |
7 | Disk调用→正常重启 |
8 | Disk调用→正常重启→Disk出错报警 |
9 | Disk调用→Disk出错报警 |
10 | Disk调用→Disk出错报警→正常重启 |
11 | Disk出错报警 |
12 | Disk出错报警→正常重启 |
13 | Disk出错报警→正常重启→Disk调用 |
14 | Disk出错报警→Disk调用 |
15 | Disk出错报警→Disk调用→正常重启 |
可见,表2中共展示了15条路径,对应表2中的每一条路径,可建立如图3所示,为本发明实施例提供的一种具体的第二分支树的结构示意图。
由图3所示,在“正常重启”、“Disk调用”和“Disk出错报警”这三个测试模块之间随机的进行组合,一共构建了15条路径,每一条路径对应这一种运行状态,因此,在对服务节点进行测试时,可以根据建立的第二分支树中的每一条路径运行至对应的状态。
事实上,存储服务节点中包含有大量的功能模块,每个功能模块对应一个测试模块,按照建立图3所示的第二分支树的方式,将会组合出数量庞大的路径,假设当前的存储服务节点中包含有5个功能模块的话,那个这5个功能模块对应的5个测试模块按照上述的组合方式将得到种组合结果,即225条路径,可以想象的,如果存储服务节点中包含的功能模块数量更多的话,最终获得第二分支树中的路径数量将呈爆炸式增长,这样数量庞大的路径将会直接影响系统测试的速度。
为了更进一步的提高测试的速度,本发明实施例中所提及的按照第一预设规则,对所述第一测试模块进行组合,建立针对所述服务节点的第二分支树,具体可以根据存储服务节点中功能模块之间常用的交互情况,一些在存储服务节点运行时不会发生交互的功能模块之间的组合可以不考虑,这样可以在保证全面检测的情况下尽量的减少组合的路径数量,进而能够提高测试的速度。
假设存储服务节点中包含:正常重启、Disk调用、Disk出错报警、Disk正常运行、异常重启、负载均衡、负载分裂、数据存储、数据调用、数据修改、数据删除这11个功能模块,根据存储服务节点的各个功能模块的交互情况,其中有“正常重启”、“负载分裂”和“数据存储”功能模块在存储服务节点运行的过程中首先运行,而“正常重启”与“异常重启”功能模块之间就没有直接交互的可能,因此,根据各个功能模块之间的交互关系,可以组合得到如表3中所示的各条路径。
表3
路径 | 组合结果 |
1 | 正常重启 |
2 | 正常重启→Disk调用→Disk正常运行 |
3 | 正常重启→Disk调用→Disk出错报警→异常重启 |
4 | 负载分裂→正常重启 |
5 | 负载分裂→负载均衡→正常重启 |
6 | 负载分裂→异常重启 |
7 | 数据存储→数据调用→数据删除 |
8 | 数据存储→数据调用→数据修改 |
9 | 数据存储→正常重启 |
可见,表3中共展示了9条路径,对应表3中的每一条路径,可以建立如图4所示,为本发明实施例提供的另一种具体的第二分支树的结构示意图。
需要强调的是,图4所示的第二分支树仅为本申请提供的一个具体的示例,实际建立的第二分支树以存储服务节点所包含的实际功能模块为准,因此,本申请并不对第二分支树的具体结构做明确限定。
然后,对针对客户端的第三分支树的建立过程进行介绍,实际应用中,建立针对所述客户端的第三分支树,可以确定被测试分布式系统中客户端的可执行动作指令;建立所述可执行动作指令对应的第二测试模块;按照第二预设规则,对所述第二测试模块进行组合,建立针对所述客户端的第三分支树,其中,所述第三支树中的每一条路径对应所述第二测试模块的一种组合。
与建立存储服务节点对应的第二分支树的过程类似地,可以将客户端中包含的每一个可执行动作指令对应成一个测试模块,这里所说的可执行动作指令是指客户端中能够被分布式存储系统识别并产生相应动作的指令,而在本发明实施例中,所描述的第二测试模块是指可执行动作指令对应的测试模块。示例性的,假设客户端中包含的可执行动作指令有:数据状态检测、数据一致性检测、数据完整性检测、增加数据、修改数据、删除数据、建立表格、删除表格,分别将每一个可执行的动作指令转化为一个测试模块,分别得到“数据状态检测”测试模块、“数据一致性检测”测试模块、“数据完整性检测”测试模块、“增加数据”测试模块、“修改数据”测试模块、“删除数据”测试模块、“建立表格”测试模块、“删除表格”测试模块。类似地,可已根据上述每个测试模块之间的交互关系,可以得到表4中所述的各条路径。
表4
路径 | 组合结果 |
1 | 数据状态检测 |
2 | 数据状态检测→数据一致性检测 |
3 | 数据状态检测→数据一致性检测→数据完整性检测 |
4 | 增加数据→修改数据 |
5 | 增加数据→删除数据 |
6 | 修改数据→删除数据 |
7 | 建立表格 |
8 | 建立表格→删除表格 |
9 | 删除表格 |
可见,表4中共展示了9条路径,对应表4中的每一条路径,可以建立如图5所示,为本发明实施例提供的一种具体的第三分支树的结构示意图。
需要说明的是,图5所示的第三分支树仅为本申请提供的一个具体的示例,实际建立的第三分支树以客户端所包含的实际可执行动作指令为准,因此,本申请并不对第三分支树的具体结构做明确限定。
最后,将上述已建立的第一分支树、第二分支树和第三分支树进行合并,可以建立如图6所示的树状系统测试模型,图6为基于图2、图4和图5建立的树状系统测试模型的结构示意图。
值得一提的是,上述针对控制节点的各个功能模块的第一分支树、针对服务节点的各个功能模块的第二分支树以及针对客户端的各个动作指令的第三分支树,均是在功能层面上对分布式系统的运行状态进行的模拟,无需对分布式系统自身代码层面进行任何修改,更容易实现对分布式系统中的各个功能的测试,并且能够应用到其它原理类似的系统之上,实现方便。
需要说明的是,在图6所示的树状测试模型中仅包含三个分支树,但实际中还并不限于仅包含这三个分支树,图6仅为本申请提供的一个具体的示例,本申请并不对树状系统测试模型的具体结构做明确限定。
S102:针对所述第一分支树的每一条路径和/或所述第二分支树的每一条路径和/或所述第三分支树的每一条路径,生成测试用例。
测试用例是将被测试分布式系统中各个功能模块或者动作指令做一个科学化的组织归纳,目的是能够将测试过程的转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一。
如图6所示的树状系统测试模型,图6中包含有针对控制节点的第一分支树、针对存储服务节点的第二分支树和针对客户端的第三分支树,其中,第一分支树中包含有3条路径,第二分支树中包含有9条路径,第三分支树中包含有9条路径。
在实际的测试中,可以从每一个分支树中所包含的多条路径中选出一条或多条路径作为对被测试分布式存储系统进行测试的测试用例,其中每一条路径就是一个测试用例。
例如,从第一分支树所包含的3条路径中选择“正常运行”这一条路径,该路径将作为测试的一个测试用例,那么测试的过程中将控制节点中的主机运行至正常运行状态。还可以从第二分支树所包含的9条支路中选择“数据存储→数据调用→数据删除”这一条路径,那么该路径将作为测试的一个测试用例,在测试的过程中,存储服务节点将依次运行数据存储测试模块对应的功能模块、数据调用测试模块对应的功能模块和数据删除测试模块对应的功能模块。或者,可以从第三分支树所包含的9条支路中选择出“数据状态检测→数据一致性检测→数据完整性检测”这条路径以及“增加数据→修改数据”这一条路径,那么选择出的每一个路径均作为一个测试用例。
除了上述的可分别从树状系统测试模型中包含的三个分支树中单独选择路径的方式外,还可以同时选择不同分支树中的路径重新组合为一个行的路径,将组合后的新的路径作为一个测试用例,例如,可以从第一分支树中选择“正常运行”这一路径,从第二分支树中选择数据“数据存储→数据调用→数据删除”这一路径,将所选择出的两条路径进行组合,组合的方式通常按照分布式系统的控制级别来进行,一般为控制节点中的路径在前,服务节点中的路径在控制节点之后,客户端中的路径在服务节点之后,因此,可将上述选出的两条路径进行组合,得到组合后的新路径为:“正常运行→数据存储→数据调用→数据删除”,该新路径也作为一个测试用例。
由上可见,根据建立的针对分布式存储系统的树状测试模型,可以随机的生成多个测试用例,测试用例用来作为对分布式存储系统进行测试时的输入,有效的减少了被测试分布式系统中功能模块之间交互漏测的情况。
需要说明的是,上述所选取的测试用例均为本发明实施例的一种具体举例,并不构成对本发明实施例选取测试用例的方式以及测试用例的具体内容的限定。
S103:根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
按照上述的步骤可以获得大量的测试用例,其中每一个测试用例都对应一个路径,而每个路径都是由一个或多个测试模块组合而成,当获得测试用例之后便可以根据测试用例中所包含的测试模块,对被测试分布式存储系统进行测试,这里所说的对被测试分布式存储系统进行测试事实上就是运行被测试分布式存储系统,按照测试用例中所包含的测试模块对被测试分布式存储系统中相应的功能模块或者是动作指令进行测试。
实际应用中,所述根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试,可以根据所述测试用例,确定被测试分布式系统的运行参数;以所述运行参数作为所述被测试分布式系统的输入,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
进一步的,在实际中根据所述测试用例,确定被测试分布式系统的运行参数,可以先确定所述测试用例包含的目标测试模块;再确定所述目标测试模块在所述被测试分布式系统中对应的功能模块或动作指令;最后根据所确定的功能模块或动作指令,确定所述被测试分布式系统的运行参数。上述所描述的目标测试模块为测试用例中所包含的测试模块。
下面分几种情况进行详细的介绍:
第一种情况,从图6所示的树状系统测试模型中所包含的路径中任意选择一条作为测试用例,例如,从图6所示的树状系统测试模型中第二分支树中选择“数据存储→数据调用→数据修改”这一条路径为测试用例。
可见该测试用例中包含目标测试模块有“数据存储”测试模块、“数据调用”测试模块和“数据删除”测试模块,由于测试模块与功能模块之间具有一一对应的关系,因此,不难根据“数据存储”测试模块、“数据调用”测试模块和“数据删除”测试模块分别找到对应的功能模块为“数据存储”功能模块、“数据调用”功能模块和“数据删除”功能模块。
在被测试分布式存储系统中,每一个功能模块或动作指令均对应的程序代码是唯一的,在运行功能模块或动作指令之前都需要确定运行参数,不同的功能模块或不同的动作指令对应的运行参数是不同的。例如,“数据存储”功能模块在运行之前需要确定待存储的数据类型、数据大小、分布式存储系统对应的数据存储速度,这些参数即为运行参数。而“数据调用”功能模块对应的运行参数可以包括:被调用的数据对象、被调用的数据对象所在位置,被调用的数据的大小以及调用的时长。“数据修改”功能模块对应的运行参数可以包括:被修改的数据对象、被修改的数据对象所在位置、被修改的具体内容以及修改后的具体内容。
示例性的,假设待存储数据A类型为视频、数据A大小为2GB、当前分布式存储系统对应的数据存储速度为8Mb/s,将这几个运行参数作为被测试分布式存储系统的输入,运行被测试分布式存储系统,测试“数据存储”功能模块对应的程序代码,具体的,根据上述待存储数据A的类型和大小,为数据A分配一个存储空间,例如,分配一个存储空间大小为2GB的视频文件夹,分配好存储空间之后便可对数据A进行存储,根据当前分布式存储系统对应的数据存储速度(8Mb/s),可以计算出存储数据A需要占用的时间为256s,假设数据A的存储开始时刻为2016-01-01.14:05:25,那么,数据A的存储完成时刻为2016-01-01.14:09:41。
根据测试用例对应的路径,在完成对数据A的存储之后,便可对数据A进行调用等操作,在运行“数据存储”功能模块之后,假设数据A存储在“E:\视频文件夹”中,假设需要调用数据A时间3分钟,那么可以确定“数据调用”功能模块对应的运行参数为:被调用的数据对象为数据A、被调用的数据对象所在位置为E:\视频文件夹、被调用的数据的大小为2GB、调用的时长为3分钟。将这些运行参数作为作为被测试分布式存储系统的输入,运行被测试分布式存储系统,测试“数据调用”功能模块所对应的程序代码,具体的,根据上述运行参数中的“被调用的数据的大小为2GB”为数据调用分配一个缓存空间,根据上述运行参数中的“被调用的数据对象为数据A、被调用的数据对象所在位置为E:\视频文件夹”提取数据A至已分配的缓存空间中,假设数据A在存储完之后就被调用,忽略时延的情况下,根据上述运行参数中的“调用的时长为3分钟”可以确定,调用数据A结束的时刻为2016-01-01.14:12:41。
在数据A被调用的时间段内,可以实现对数据A的修改,例如数据A的具体内容中包含有视频名称:家有喜事2009、上映时间:2009-10-10;现需要将视频A的具体内容中包含有视频名称修改为:家有喜事2011、上映时间修改为:2011-11-11,那么不难确定“数据修改”功能模块对应的运行参数为:被修改的数据对象为数据A、被修改的数据对象所在位置为E:\视频文件夹、被修改的具体内容为视频名称:家有喜事2009、上映时间:2009-10-10、修改后的具体内容为视频名称:家有喜事2011、上映时间:2011-11-11。将这些运行参数作为作为被测试分布式系统的输入,运行被测试分布式存储系统,测试“数据修改”功能模块所对应的程序代码,具体的,根据上述运行参数中的“被修改的数据对象为数据A、被修改的数据对象所在位置为E:\视频文件夹”找到数据A,再根据上述运行参数中的“被修改的具体内容为视频名称:家有喜事2009、上映时间:2009-10-10”确定出数据A中需要修改的具体内容,最后根据上述运行参数中的“修改后的具体内容为视频名称:家有喜事2011、上映时间:2011-11-11”,可以将“视频名称:家有喜事2009、上映时间:2009-10-10”修改为“视频名称:家有喜事2011、上映时间:2011-11-11”,完成数据修改的功能。
由上可见,通过测试用例可以对被测试分布式存储系统中的各个功能模块之间交互的情况进行测试。通过遍历不同的测试用例能够实现对被测试分布式存储系统进行全面的测试。
第二种情况,从图6所示的树状系统测试模型中所包含的路径中选择多条路径,每一条路径作为一个测试用例。例如,从图6所示的树状系统测试模型中选择“数据存储→数据调用→数据修改”这一条路径为测试用例x;选择“异常掉线→从机切换→从机正常运行”这一条路径为测试用例y;选择“数据存储→数据调用→数据删除”这一条路径为测试用例z。
在同时获得多个测试用例的情况下,为了提高测试的速度,一般会并发多个线程分别进行测试,例如,可以分配线程x执行成对测试用例x所包含的各个测试模块的测试,分配线程y来执行对测试用例y所包含的各个测试模块的测试,再分配线程z来执行对测试用例z所包含的各个测试模块的测试。
具体的,线程x执行对测试用例x的过程与上述第一种情况中描述的过程无异,这里不再赘述,由于同一个测试模块可能出现在不同的测试用例中,而对于同一个分布式存储系统来说,同一个测试模块对应的程序代码是唯一的,因此在对被测试分布式存储系统中的同一个程序代码进行测试时,两条路径中包含的测试模块相同的话,不能同时测试。本实施例中测试用例x中所包含的目标测试模块为:数据存储、数据调用、数据修改;测试用例y中所包含的目标测试模块为:异常掉线、从机切换、从机正常运行;测试用例z中所包含的目标测试模块为:数据存储、数据调用、数据删除。
可见,测试用例x和测试用例y中没有相同的目标测试模块,所以线程x与线程y能够同时运行,并且没有先后顺序而言,对于线程y运行对测试用例y的具体步骤与上述第一种情况的步骤相同,不同之处仅在于对应的测试模块不同,具体的,测试用例y中所包含的目标测试模块为:异常掉线、从机切换、从机正常运行。实际中,“异常掉线”测试模块对应的情况由很多,例如,主机突然断电,分布式存储系统运行至某一死循环或者是分布式存储系统被病毒攻击等,从程序的角度说,不管上述那种情况,主机接收到的只是一个信息,通过“异常掉线”测试模块对应的程序代码来断掉主机。为了保证分布式存储系统的稳定性,通常在在主机异常掉线后,可以通过RPC(Remote Procedure Call Protocol,远程过程调用协议)来迅速的进行从机切换。
从机切换测试模块对应的运行参数包括主机的运行状态、主机掉线的时刻。假设,分布式存储系统中的主机的运行状态为掉线,主机掉线的时刻为2016-01-01.14:15:10,那么可以确定“从机切换”测试模块对应的运行参数为:主机的运行状态为掉线、主机掉线的时刻为2016-01-01.14:15:10。将这两个运行参数作为作为被测试分布式系统的输入,运行被测试分布式存储系统,测试“从机切换”测试模块所对应的程序代码,根据这两个运行参数,通过RPC来迅速的进行从机切换,而从机切换完成后,从机就可以替代主机的部分或全部功能,从机正常运行可以满足系统的正常运行。
而测试用例z中存在“数据存储”测试模块和“数据调用”测试模块与测试用例x中的“数据存储”测试模块和“数据调用”测试模块相同。因此,线程z在运行测试用例z时,测试“数据存储”测试模块的开始时刻与线程x在测试“数据存储”测试模块的开始时刻不同,同样的,线程z在运行测试用例z时,测试“数据调用”测试模块的开始时刻与线程x在测试“数据调用”测试模块的开始时刻也不同。
示例性的,假设线程x在测试“数据存储”测试模块的开始时刻为:2016-01-01.14:05:25,测试“数据调用”测试模块的开始时刻为:2016-01-01.14:15:20,由于测试“数据存储”测试模块需要占用256s的时间,所以,线程z在运行测试用例z时,测试“数据存储”测试模块的开始时刻可以在时刻2016-01-01.14:05:25之前或者之后256s,这里的之前或之后256s是保证同一个测试模块不同时测试,假设,测试“数据存储”测试模块的开始时刻2016-01-01.14:05:25之后256s,即测试“数据存储”测试模块的开始时刻为:2016-01-01.14:09:40,由于测试“数据存储”测试模块需要占用256s的时间,所以测试“数据存储”测试模块的结束时刻为2016-01-01.14:13:56,而对于测试用例z中的“数据调用”测试模块进行测试时,测试“数据调用”测试模块的开始时刻,既要考虑到测试“数据存储”测试模块的结束时刻2016-01-01.14:13:56,又要考虑测试“数据调用”测试模块的开始时刻是否与测试用例x中的“数据调用”测试模块的开始时刻2016-01-01.14:15:20一致,具体的,测试“数据调用”测试模块的开始时刻可以在测试“数据存储”测试模块的结束时刻2016-01-01.14:13:56之后,并且与测试用例x中的“数据调用”测试模块的开始时刻2016-01-01.14:15:20不一致。例如,在对测试用例z中的“数据调用”测试模块进行测试时,测试“数据调用”测试模块的开始时刻可以但不限定为:2016-01-01.14:14:20或2016-01-01.14:16:20。
第三种情况,从图6所示的树状系统测试模型中所包含的不同分支树中选择多条路径,并根据选择出的路径组合成一个新路径,该路径作为一个新的测试用例。例如,从图6所示的树状系统测试模型的第一分支树中选择“异常掉线→从机切换→从机正常运行”这一条路径,从第二分支树中选择“数据存储→数据调用→数据修改”这一条路径,将这两个路径进行组合,比较合理的组合方式是先控制节点对应的第一分支树中的路径,然后存储服务节点对应的第二分支树中的路径,最后客户端对应的第三分支树中的路径。按照上述的组合方式进行组合,得到的新路径为:“异常掉线→从机切换→从机正常运行→数据存储→数据调用→数据修改”,该新路径作为测试用例n。
由上可见,在测试用例n中“数据存储”测试模块在“从机正常运行”测试模块之后,这就意味着在运行测试用例n时,测试“数据存储”测试模块是在“从机正常运行”的状态下进行的。对于测试用例n来说,对测试用例n中的各个测试用例进行测试的过程与上述第一种情况中描述的过程无异,这里亦不再赘述。
需要说明的是,对于上述选择测试用例的具体过程,仅仅是本发明实施例的一种具体示例,对于选择测试用例的数量本申请并不进行限定。
S104:获得系统测试结果。
系统测试结果是指在预先设定的时间内运行图6所示树状系统测试模型中所包含的各路径进行测试,对每一个路径对应的运行状态进行统计和分析获得的,用于反映被测试分布式存储系统是否存在漏洞或则缺陷的报告。
示例性的,假设在对“数据存储”功能模块进行测试时,待存储数据A类型为视频、数据A大小为2GB、当前分布式存储系统对应的数据存储速度为8Mb/s,那么,分配一个存储空间大小为2GB的视频文件夹,之后对数据A进行存储,假设数据存储开始时刻为2016-01-01.14:05:25,实际中,数据A的存储完成时刻为2016-01-01.16:20:22。由于当前分布式存储系统对应的数据存储速度为8Mb/s,经分析不难的知,存储数据A需要占用的时间为256s,正常的情况下,数据A的存储完成时刻应为2016-01-01.14:09:41,而实际中,数据A的存储完成时刻为2016-01-01.16:20:22。因此,可以判定被测试分布式存储系统中“数据存储”功能模块存在缺陷。
假定除上述存在缺陷之外,其他没有任何漏洞或缺陷,那么可以获得的系统测试结果如表5所示。
表5
被测试分布式存储系统 | 系统测试结果 |
正常运行 | 正常 |
异常掉线 | 正常 |
从机切换 | 正常 |
从机正常运行 | 正常 |
从机异常掉线 | 正常 |
正常重启 | 正常 |
数据存储 | 缺陷 |
数据调用 | 正常 |
······ | ······ |
增加数据 | 正常 |
修改数据 | 正常 |
删除数据 | 正常 |
建立表格 | 正常 |
删除表格 | 正常 |
经过大量的实验证明,只要上述被测试分布式存储系统的运行时间够长,可以覆盖到被测试分布式存储系统中所有的功能组合,被测试分布式存储系统的状态覆盖广、路径覆盖广,同时该方案实现方便,无需专业的测试人员也能够有顺利执行测试操作,易用性好,具有良好的可推广性。
需要说明的是,上述均以分布式存储系统为例进行的介绍,而本发明实施例所提供的方案可以适用于任意分布式结构的系统,因此,上述的分布式存储系统仅为本发明实施例的一个具体示例,并不构成对本申请的限定。
由上可见,应用图1提供的实施例,生成的测试用例能够涉及到被测试分布式系统的各个功能模块,能够有效的减少被测试分布式系统中功能模块之间交互漏测的情况,能够实现对被测试分布式系统中各个功能模块之间的交互进行全面测试。
与图1提供的方法实施例对应的,如图7所示,为本发明提供的一种测试装置的结构示意图,装置包括:建立模块201、生成模块202、测试模块203和获得模块204。
建立模块201,用于根据被测试分布式系统的结构特征,建立树状系统测试模型,所述树状系统测试模型至少包括:基于控制节点的各个功能模块的第一分支树、基于服务节点的各个功能模块的第二分支树和基于客户端的各个动作指令的第三分支树;
实际应用中,所述建立模块201,包括:第一建立子模块、第二建立子模块、第三建立子模块和建立子模块(图中未示出)。
第一建立子模块,用于根据被测试分布式系统中控制节点的各个功能模块对应的结构特征,建立针对所述控制节点的第一分支树。
更进一步的,上述所提及的第一分支树可以为开关模型对应的树。
第二建立子模块,用于根据被测试分布式系统中服务节点的各个功能模块对应的结构特征,建立针对所述服务节点的第二分支树;
实际应用中,第二建立子模块,具体用于:
确定被测试分布式系统中服务节点的每一个功能模块的第一结构特征;
建立所述第一结构特征对应的第一测试模块;
按照第一预设规则,对所述第一测试模块进行组合,建立针对所述服务节点的第二分支树,其中,所述第二支树中的每一条路径对应所述第一测试模块的一种组合。
第三建立子模块,用于根据被测试分布式系统中客户端的各个动作指令,建立针对所述客户端的第三分支树。
实际应用中,第三建立子模块,具体用于:
确定被测试分布式系统中客户端的可执行动作指令;
建立所述可执行动作指令对应的第二测试模块;
按照第二预设规则,对所述第二测试模块进行组合,建立针对所述客户端的第三分支树,其中,所述第三支树中的每一条路径对应所述第二测试模块的一种组合。
建立子模块,用于基于所述第一分支树、所述第二分支树和所述第三分支树,建立针对所述被测试分布式系统的树状系统测试模型。
生成模块202,用于针对所述第一分支树的每一条路径和/或所述第二分支树的每一条路径和/或所述第三分支树的每一条路径,生成测试用例。
测试模块203,用于根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
在实际应用中,测试模块203,包括:确定子模块和测试子模块(图中未示出)。
确定子模块,用于根据所述测试用例,确定被测试分布式系统的运行参数;
进一步的,确定子模块,具体用于:
确定所述测试用例包含的目标测试模块;
确定所述目标测试模块在所述被测试分布式系统中对应的功能模块或动作指令;
根据所确定的功能模块或动作指令,确定所述被测试分布式系统的运行参数。
测试子模块,用于以所述运行参数作为所述被测试分布式系统的输入,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
获得模块204,用于获得系统测试结果。
由上可见,应用图7提供的实施例,生成的测试用例能够涉及到被测试分布式系统的各个功能模块,能够有效的减少被测试分布式系统中功能模块之间交互漏测的情况,能够实现对被测试分布式系统中各个功能模块之间的交互进行全面测试。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (14)
1.一种测试方法,其特征在于,所述方法包括:
根据被测试分布式系统的结构特征,建立树状系统测试模型,所述树状系统测试模型至少包括:基于控制节点的各个功能模块的第一分支树、基于服务节点的各个功能模块的第二分支树和基于客户端的各个动作指令的第三分支树;所述被测试分布式系统包括控制节点、服务节点和客户端;
针对所述第一分支树的每一条路径和/或所述第二分支树的每一条路径和/或所述第三分支树的每一条路径,生成测试用例;
根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试;
获得系统测试结果。
2.根据权利要求1所述的方法,其特征在于,所述根据被测试分布式系统的结构特征,建立树状系统测试模型,包括:
根据被测试分布式系统中控制节点的各个功能模块对应的结构特征,建立针对所述控制节点的第一分支树;
根据被测试分布式系统中服务节点的各个功能模块对应的结构特征,建立针对所述服务节点的第二分支树;
根据被测试分布式系统中客户端的各个动作指令,建立针对所述客户端的第三分支树;
基于所述第一分支树、所述第二分支树和所述第三分支树,建立针对所述被测试分布式系统的树状系统测试模型。
3.根据权利要求2所述的方法,其特征在于,所述第一分支树为开关模型对应的树。
4.根据权利要求2所述的方法,其特征在于,所述根据被测试分布式系统中服务节点中各个功能模块对应的结构特征,建立针对所述服务节点的第二分支树,包括:
确定被测试分布式系统中服务节点的每一个功能模块的第一结构特征;
建立所述第一结构特征对应的第一测试模块;
按照第一预设规则,对所述第一测试模块进行组合,建立针对所述服务节点的第二分支树,其中,所述第二支树中的每一条路径对应所述第一测试模块的一种组合,所述第一预设规则包括所述服务节点中功能模块之间的交互情况。
5.根据权利要求2所述的方法,其特征在于,所述根据被测试分布式系统中客户端的各个动作指令,建立针对所述客户端的第三分支树,包括:
确定被测试分布式系统中客户端的可执行动作指令;
建立所述可执行动作指令对应的第二测试模块;
按照第二预设规则,对所述第二测试模块进行组合,建立针对所述客户端的第三分支树,其中,所述第三支树中的每一条路径对应所述第二测试模块的一种组合,所述第二预设规则包括所述第二测试模块之间的交互关系。
6.根据权利要求4或5所述的方法,其特征在于,所述根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试,包括:
根据所述测试用例,确定被测试分布式系统的运行参数;
以所述运行参数作为所述被测试分布式系统的输入,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
7.根据权利要求6所述的方法,其特征在于,所述根据所述测试用例,确定被测试分布式系统的运行参数,包括:
确定所述测试用例包含的目标测试模块;
确定所述目标测试模块在所述被测试分布式系统中对应的功能模块或动作指令;
根据所确定的功能模块或动作指令,确定所述被测试分布式系统的运行参数。
8.一种测试装置,其特征在于,所述装置包括:
建立模块,用于根据被测试分布式系统的结构特征,建立树状系统测试模型,所述树状系统测试模型至少包括:基于控制节点的各个功能模块的第一分支树、基于服务节点的各个功能模块的第二分支树和基于客户端的各个动作指令的第三分支树;所述被测试分布式系统包括控制节点、服务节点和客户端;
生成模块,用于针对所述第一分支树的每一条路径和/或所述第二分支树的每一条路径和/或所述第三分支树的每一条路径,生成测试用例;
测试模块,用于根据所述测试用例,运行所述被测试分布式系统,对所述被测试分布式系统进行测试;
获得模块,用于获得系统测试结果。
9.根据权利要求8所述的装置,其特征在于,所述建立模块,包括:
第一建立子模块,用于根据被测试分布式系统中控制节点的各个功能模块对应的结构特征,建立针对所述控制节点的第一分支树;
第二建立子模块,用于根据被测试分布式系统中服务节点的各个功能模块对应的结构特征,建立针对所述服务节点的第二分支树;
第三建立子模块,用于根据被测试分布式系统中客户端的各个动作指令,建立针对所述客户端的第三分支树;
建立子模块,用于基于所述第一分支树、所述第二分支树和所述第三分支树,建立针对所述被测试分布式系统的树状系统测试模型。
10.根据权利要求9所述的装置,其特征在于,所述第一分支树为开关模型对应的树。
11.根据权利要求9所述的装置,其特征在于,所述第二建立子模块,具体用于:
确定被测试分布式系统中服务节点的每一个功能模块的第一结构特征;
建立所述第一结构特征对应的第一测试模块;
按照第一预设规则,对所述第一测试模块进行组合,建立针对所述服务节点的第二分支树,其中,所述第二支树中的每一条路径对应所述第一测试模块的一种组合,所述第一预设规则包括所述服务节点中功能模块之间的交互情况。
12.根据权利要求9所述的装置,其特征在于,所述第三建立子模块,具体用于:
确定被测试分布式系统中客户端的可执行动作指令;
建立所述可执行动作指令对应的第二测试模块;
按照第二预设规则,对所述第二测试模块进行组合,建立针对所述客户端的第三分支树,其中,所述第三支树中的每一条路径对应所述第二测试模块的一种组合,所述第二预设规则包括所述第二测试模块之间的交互关系。
13.根据权利要求11或12所 述的装置,其特征在于,所述测试模块,包括:
确定子模块,用于根据所述测试用例,确定被测试分布式系统的运行参数;
测试子模块,用于以所述运行参数作为所述被测试分布式系统的输入,运行所述被测试分布式系统,对所述被测试分布式系统进行测试。
14.根据权利要求13所述的装置,其特征在于,所述确定子模块,具体用于:
确定所述测试用例包含的目标测试模块;
确定所述目标测试模块在所述被测试分布式系统中对应的功能模块或动作指令;
根据所确定的功能模块或动作指令,确定所述被测试分布式系统的运行参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851211.5A CN107870852B (zh) | 2016-09-26 | 2016-09-26 | 一种测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851211.5A CN107870852B (zh) | 2016-09-26 | 2016-09-26 | 一种测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870852A CN107870852A (zh) | 2018-04-03 |
CN107870852B true CN107870852B (zh) | 2020-11-27 |
Family
ID=61751861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610851211.5A Active CN107870852B (zh) | 2016-09-26 | 2016-09-26 | 一种测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870852B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874317B (zh) * | 2018-08-31 | 2023-06-20 | 创新先进技术有限公司 | 一种生成、使用测试用例的方法及其服务器、终端 |
CN109960658B (zh) * | 2019-03-29 | 2022-06-03 | 北京金山云网络技术有限公司 | 应用程序编程接口测试方法、装置、电子设备及存储介质 |
CN111459824B (zh) * | 2020-04-01 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 并发服务的测试用例处理方法及装置 |
CN111694741B (zh) * | 2020-06-05 | 2023-09-29 | 中国工程物理研究院计算机应用研究所 | 一种基于路径深度覆盖的测试用例设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987817A (zh) * | 2005-12-22 | 2007-06-27 | 中兴通讯股份有限公司 | 一种实现测试用例自动化运行的方法 |
CN104346278A (zh) * | 2014-09-28 | 2015-02-11 | 上海新炬网络技术有限公司 | 一种基于矩阵模型的软件测试方法 |
CN104391686A (zh) * | 2014-10-14 | 2015-03-04 | 深圳怡化电脑股份有限公司 | 流程控制方法及装置 |
US9256516B2 (en) * | 2005-02-23 | 2016-02-09 | International Business Machines Corporation | Business process execution language program simulation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101888451B (zh) * | 2010-06-13 | 2012-07-04 | 中国工商银行股份有限公司 | 一种电话语音系统测试信息生成方法、服务器及设备 |
CN104834595B (zh) * | 2015-02-15 | 2017-09-12 | 网易(杭州)网络有限公司 | 一种可视化自动测试方法及系统 |
-
2016
- 2016-09-26 CN CN201610851211.5A patent/CN107870852B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256516B2 (en) * | 2005-02-23 | 2016-02-09 | International Business Machines Corporation | Business process execution language program simulation |
CN1987817A (zh) * | 2005-12-22 | 2007-06-27 | 中兴通讯股份有限公司 | 一种实现测试用例自动化运行的方法 |
CN104346278A (zh) * | 2014-09-28 | 2015-02-11 | 上海新炬网络技术有限公司 | 一种基于矩阵模型的软件测试方法 |
CN104391686A (zh) * | 2014-10-14 | 2015-03-04 | 深圳怡化电脑股份有限公司 | 流程控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
分布式系统测试方法的研究和应用;李艳丽等;《计算机技术与发展》;20110331;第21卷(第3期);第205-208页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107870852A (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389900B (zh) | 一种分布式数据库集群测试方法、装置及存储介质 | |
CN107870852B (zh) | 一种测试方法及装置 | |
US11184216B2 (en) | State control method and apparatus | |
CN105335472B (zh) | 一种更新数据查询引擎配置列表的方法及装置 | |
CN108121511B (zh) | 一种分布式边缘存储系统中的数据处理方法、装置及设备 | |
CN103064742A (zh) | 一种hadoop集群的自动部署系统及方法 | |
WO2018145559A1 (zh) | 持续集成流水线的生成方法和系统 | |
CN111695827B (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN109408310B (zh) | 服务器的调试方法、服务器及可读存储介质 | |
CN107193543B (zh) | 一种批量操作执行方法及装置 | |
CN113220431A (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN111371599A (zh) | 一种基于etcd的集群容灾管理系统 | |
CN110865840B (zh) | 一种应用管理方法、装置、服务器及存储介质 | |
CN114172785A (zh) | 告警信息处理方法、装置、设备和存储介质 | |
CN112256247A (zh) | 模块组件的依赖处理方法、装置、计算机设备及存储介质 | |
US20190132388A1 (en) | Network topology templates for internal states of management and control planes | |
CN112799959A (zh) | 接口测试方法、装置、存储介质和电子装置 | |
CN109933506A (zh) | 服务器大数据性能评价方法、系统及电子设备和存储介质 | |
CN116974628A (zh) | 信息获取方法、装置、电子设备及计算机可读存储介质 | |
CN108153836B (zh) | 一种时序数据访问系统及方法 | |
CN109150941B (zh) | 一种数据中心物理资源浮动方法 | |
CN111158794A (zh) | 一种面向OpenStack的API接口组合优化方法及装置 | |
CN115150466B (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 |