系统测试方法及其装置的制造方法

文档序号:10512085阅读:383来源:国知局
系统测试方法及其装置的制造方法
【专利摘要】本发明公开了一种系统测试方法及其装置。该系统测试方法包括以下步骤:配置故障定时任务,每个故障定时任务中包括一个或多个故障操作;将压力测试任务与故障定时任务进行关联;以及执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到对应的故障操作时段的监控数据。该方法通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标,解决了大并发的情况下也能有效地对特定故障进行测试的问题。
【专利说明】
系统测试方法及其装置
技术领域
[0001]本发明涉及测试领域,特别涉及一种系统测试技术。
【背景技术】
[0002]自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
[0003]在当前的自动化测试框架可以运行异常用例,大部分的异常用例都是通过构造无效或者非法请求,用单线程验证该异常用例是否被代码的异常逻辑捕获。测试报告会展现测试用例是否通过。部分故障注入框架会采用字节码注入的方式来动态地模拟故障,来观察系统或业务在某一故障条件下的表现。在当前的性能测试自动化框架中,可以通过预设压力测试脚本和其他配置来自动的触发性能压力测试,采集性能数据和自动化的生成性能报告,以此评估在不同的高并发下评估系统或业务的性能表现。
[0004]但是,在现有的测试方式中,存在着以下缺陷。当前的自动化测试框架中虽然有很多的异常用例,但是大部分都是通过构造无效或者非法请求,用单线程验证该异常用例是否被代码的异常逻辑捕获,偏重功能测试,测试报告中只包含用例是否通过的情况,没有与压力测试模块做集成,很少会考虑在大并发的情况下,某类特定故障对业务的影响度。在性能测试过程中,大多数时候只是观察在不同的高并发下,系统或业务的性能表现。没有与故障注入模块做集成,很少关注在高并发下的业务链路中某系统出现故障的情况,基本没有对业务链路的容错性和恢复性表现进行分析。部分故障注入框架虽然采用了故障注入的方式来模拟异常情况,但在报告分析模块,基本没有把该系统维度的故障与链路业务维度的场景进行关联,更没有考虑对响应延迟故障的趋势进行建模分析。由此可见,在本领域迫切需要一种能测试出在大并发的情况下对特定故障进行测试的测试方法。

【发明内容】

[0005]本发明的目的在于提供一种系统测试方法及其装置,在大并发的情况下也能有效地对特定故障进行测试。
[0006]为解决上述技术问题,本发明的实施方式公开了一种系统测试方法,通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标,该方法包括以下步骤:
[0007]配置故障定时任务,每个故障定时任务中包括一个或多个故障操作;
[0008]将压力测试任务与故障定时任务进行关联;以及
[0009]执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到对应的故障操作时段的监控数据。
[0010]本发明的实施方式还公开了一种系统测试装置,包括:
[0011]故障配置单元,用于配置故障定时任务,每个故障定时任务中包括一个或多个故障操作;
[0012]任务关联单元,用于将压力测试任务与特定的故障定时任务进行关联;以及
[0013]压力测试单元,用于执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到每个故障时段的监控数据。
[0014]本发明实施方式与现有技术相比,主要区别及其效果在于:
[0015]通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标,解决了大并发的情况下也能有效地对特定故障进行测试的问题。
[0016]进一步地,在压力测试任务结束后,将与压力测试任务所关联的故障定时任务中的每个故障操作与对应的故障操作时段的监控数据和业务场景进行关联,自动生成测试报告,从而能够将系统维度的故障与链路业务维度的场景进行关联地进行分析,提高了准确度。
[0017]进一步地,在自动生成测试报告之后,还以趋势建模的方式对指标均值对比、趋势对比以及响应延迟进行分析,从而在考虑了响应延迟的故障来进行建模分析,提高了准确度。
【附图说明】
[0018]图1是本发明第一实施方式中一种系统测试方法的流程示意图。
[0019]图2是图1中的系统测试方法中配置故障定时任务的流程示意图。
[0020]图3是本发明第二实施方式中一种系统测试装置的结构示意图。
【具体实施方式】
[0021]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0022]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
[0023]为了帮助理解本发明,现对一些说明书中的用语进行说明。
[0024]业务场景通常是指完成某项业务目标的一个过程。通常一个业务场景的执行过程会包含对链路上多个系统的多个接口的多次调用。在业务场景中可以包含多个操作步骤,每个操作步骤包含一个或多个页面请求,每个页面请求会包含一个或多个依赖系统的接口调用。
[0025]故障注入操作是健壮性测试的基本单位。一个故障注入操作通常包括以下信息:故障名称、注入手段(字节码、脚本或其他)、被注入故障的系统域名、注入的响应延迟大小、抛出的异常类型等。在健壮性测试的过程中,测试人员可以从系统接口的粒度进行故障注入操作,来监控和评估该故障操作对业务场景的影响度。
[0026]利特尔法则(Little’s Law)在性能测试中的应用非常广泛,主要用于性能结果的验证,法则的公式如下所示:
[0027]TPS = U_concurrent/(T_response+T_think)
[0028]其中:
[0029]a) TPS是系统或业务的吞吐量;
[0030]b) U_concurrent是压力测试的并发数;
[0031]c)T_response是系统或业务的平均响应时间;
[0032]d) T_think是平均思考时间。
[0033]根据利特尔法则,只要保持压力测试并发数ILconcurrent恒定,可以利用故障注入技术来动态地控制T_response+T_think,从而量化系统或者业务在某个故障延迟状态下的TPS表现。
[0034]本发明第一实施方式涉及一种系统测试方法。图1是该系统测试方法的流程示意图。
[0035]具体地说,该系统测试方法通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标。如图1所示,该系统测试方法包括以下步骤:
[0036]在步骤SlOl中,配置故障定时任务,每个故障定时任务中包括一个或多个故障操作。
[0037]故障操作是健壮性测试的基本对象。故障操作可以包括多种信息,例如包括以下信息:故障操作名称,注入手段,操作类型,(被注入)系统域名,(被注入)服务类名,(被注入接口 )方法名,注入延迟,(抛出)异常类名。
[0038]例如以下为一个示例性的故障操作所包括的信息。
[0039]故障操作名称:systemA_serviceB.methodC-注入 500ms 延迟,
[0040]注入手段:字节码注入,
[0041]操作类型:故障注入,
[0042]系统域名:systemA.XXX.yyy.net,
[0043]服务类名:net.yyy.xxx.systemA.serviceB,
[0044]方法名:methodC,
[0045]注入延迟:500ms,
[0046]异常类名:java.lang.NullPointerExcept1n。
[0047]一个或多个故障操作组装成一个故障定时任务。例如,在一个名为testTaskl的故障定时任务中包括三个故障操作,即故障操作testAct1nl、testAct1n3、testAct1n4,三个故障操作的相对时间分别是5min、lOmin、15min。
[0048]图2中示出了一个示例性的故障定时任务的配置过程,在故障配置模块新建故障操作,根据需要可以新建任意数量的故障操作,然后再新建故障定时任务,把之前新建的所有故障操作添加到此故障定时任务中来,并配置每个故障操作的计划执行时间。
[0049]可选地,除了创建以外,还可以查询、编辑或删除故障操作和故障定时任务。
[0050]此后进入步骤S102,将压力测试任务与故障定时任务进行关联。
[0051 ] 此后进入步骤S103,执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到对应的故障操作时段的监控数据。
[0052]系统的各项指标可以包括各种指标,例如包括硬件资源、Java虚拟机(JVM)状态、系统日志等等。
[0053]监控数据可以包括各种数据,例如包括业务维度数据和系统维度数据等等。
[0054]以下是一个示例性的实施例,根据实际需要可进行更改。在配置了故障定时任务且将压力测试任务与故障定时任务进行关联后,触发压力测试任务,并启用与其相关联的故障定时任务。在压力测试任务的执行过程中,根据之前配置的故障定时任务,与业务链路上的相关应用系统所在机器上的agent (智能体)进行通讯,动态地注入故障。在压力测试任务的执行过程中,与业务链路上的每个应用系统所在机器上的agent (智能体)进行交互,实时采集相关的业务维度和系统维度指标数据。
[0055]此后结束本流程。
[0056]该系统测试方法优选为还包括以下步骤:在压力测试任务结束后,将与压力测试任务所关联的故障定时任务中的每个故障操作与对应的故障操作时段的监控数据和业务场景进行关联,自动生成测试报告。如此一来,能够将系统维度的故障与链路业务维度的场景进行关联地进行分析,提高了准确度。
[0057]而且,在自动生成测试报告之后,还优选对测试报告进行分析。对测试报告的分析可以采用多种方式,例如以趋势建模的方式对指标均值对比、趋势对比以及响应延迟进行分析等等。如此一来,在考虑了响应延迟的故障来进行建模分析,提高了准确度。
[0058]综上所述,通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标,解决了大并发的情况下也能有效地对特定故障进行测试的问题。
[0059]本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称 “PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPR0M”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
[0060]本发明第二实施方式涉及一种系统测试装置。图3是该系统测试装置的结构示意图。本发明的实际结构可以根据实际需要做出必要的调整,并不局限于图3中的结构。
[0061]具体地说,该系统测试装置通过把健壮性测试与性能压力测试实现松耦合的集成,在压力测试过程中自动注入系统故障,并在压力测试过程中实时监控链路上各系统的各项指标。如图3所示,该系统测试装置100包括:
[0062]故障配置单元101,用于配置故障定时任务,每个故障定时任务中包括一个或多个故障操作;
[0063]任务关联单元102,用于将压力测试任务与特定的故障定时任务进行关联;以及
[0064]压力测试单元103,用于执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到每个故障时段的监控数据。
[0065]第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
[0066]可选地但并非必须地,系统测试装置100还包括报告生成单元104 (在图3中未示出),用于在压力测试任务结束后,将与压力测试任务所关联的故障定时任务中的每个故障操作与对应的故障时段的监控数据和业务场景进行关联,自动生成测试报告。
[0067]可选地但并非必须地,故障配置单元101包括以下子单元(在图3中未示出):故障操作创建单元201,用于创建一个或多个故障操作;故障定时任务创建单元202,用于创建故障定时任务;以及添加单元203,为故障定时任务创建单元202所创建的故障定时任务添加故障操作创建单元201所创建的故障操作及每个所创建的故障操作的执行时间。
[0068]可选地但并非必须地,系统测试装置100还包括报告分析单元105 (在图3中未示出),用于对测试报告进行分析。
[0069]需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,这并不表明上述设备实施方式并不存在其它的单元。
[0070]需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0071]虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【主权项】
1.一种系统测试方法,其特征在于,包括以下步骤: 配置故障定时任务,每个故障定时任务中包括一个或多个故障操作; 将压力测试任务与故障定时任务进行关联;以及 执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到对应的故障操作时段的监控数据。2.如权利要求1所述的系统测试方法,其特征在于, 在压力测试任务结束后,将与压力测试任务所关联的故障定时任务中的每个故障操作与对应的故障操作时段的监控数据和业务场景进行关联,自动生成测试报告。3.如权利要求1所述的系统测试方法,其特征在于, 配置故障定时任务包括以下步骤: 创建一个或多个故障操作; 创建故障定时任务;以及 为所创建的故障定时任务添加所创建的故障操作及每个所创建的故障操作的执行时间。4.如权利要求3所述的系统测试方法,其特征在于, 配置故障定时任务还包括以下步骤: 对所创建的故障操作进行查询、编辑或删除。5.如权利要求1所述的系统测试方法,其特征在于, 每个故障操作包括以下信息:故障操作名称,注入手段,操作类型,被注入系统域名,被注入服务类名,被注入接口方法名,注入延迟,抛出异常类名。6.如权利要求1所述的日志实时监控预警方法,其特征在于, 系统的各项指标包括硬件资源、Java虚拟机状态、系统日志, 监控数据包括业务维度数据和系统维度数据。7.如权利要求2所述的日志实时监控预警方法,其特征在于, 在自动生成测试报告之后,还包括对测试报告进行分析的步骤。8.如权利要求7所述的日志实时监控预警方法,其特征在于, 对测试报告进行分析是指以趋势建模的方式对指标均值对比、趋势对比以及响应延迟进行分析。9.一种系统测试装置,其特征在于,包括: 故障配置单元,用于配置故障定时任务,每个故障定时任务中包括一个或多个故障操作; 任务关联单元,用于将压力测试任务与特定的故障定时任务进行关联;以及压力测试单元,用于执行压力测试任务,在执行压力测试任务的过程中,动态注入与压力测试任务所关联的故障定时任务中的每个故障操作,并实时监控业务链路上各系统的各项指标,得到每个故障时段的监控数据。10.如权利要求9所述的系统测试装置,其特征在于,还包括: 报告生成单元,用于在压力测试任务结束后,将与压力测试任务所关联的故障定时任务中的每个故障操作与对应的故障时段的监控数据和业务场景进行关联,自动生成测试报生口 O11.如权利要求9所述的系统测试装置,其特征在于, 故障配置单元包括以下子单元: 故障操作创建单元,用于创建一个或多个故障操作; 故障定时任务创建单元,用于创建故障定时任务;以及 添加单元,为故障定时任务创建单元所创建的故障定时任务添加故障操作创建单元所创建的故障操作及每个所创建的故障操作的执行时间。12.如权利要求9所述的系统测试装置,其特征在于,还包括: 报告分析单元,用于对测试报告进行分析。
【文档编号】G06F11/36GK105868097SQ201510033668
【公开日】2016年8月17日
【申请日】2015年1月22日
【发明人】付宇, 李恩领
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1