首页> 中国专利> 一种实时软件压力测试用例生成方法及装置

一种实时软件压力测试用例生成方法及装置

摘要

本申请公开的实时软件压力测试用例生成方法及装置,方法为:利用采集的实时软件的实时相关信息建立OPL模型,其中建立的OPL模型包括常量、变量、约束条件及目标函数,且目标函数包括截止时间和响应时间,然后利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,其中所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。本申请中,将建立的OPL模型中的目标函数设置为两个,所得的压力测试用例需要使目标函数满足一定的预设条件才可,相比于单目标函数的方式,压力测试用例的选取更加精确。

著录项

  • 公开/公告号CN104239218A

    专利类型发明专利

  • 公开/公告日2014-12-24

    原文格式PDF

  • 申请/专利权人 苏州大学;

    申请/专利号CN201410553203.3

  • 申请日2014-10-17

  • 分类号G06F11/36(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人常亮

  • 地址 215137 江苏省苏州市相城区济学路8号

  • 入库时间 2023-12-17 04:44:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-04-19

    授权

    授权

  • 2015-01-14

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20141017

    实质审查的生效

  • 2014-12-24

    公开

    公开

说明书

技术领域

本申请涉及压力测试技术领域,更具体地说,涉及一种实时软件压力测试用例生成方法及装置。

背景技术

在交通运输、医疗设备、航空控制器、武器、核反应系统等安全攸关领域,极有可能因缺陷带来人员生命和财产的重大损失,甚至灾难,环境的严重毁坏。因此,安全攸关系统仅仅满足功能需求远远不够,对系统进行性能分析同样具有重要性和必要性。因此,在软件运行之前,有必要对软件进行彻底的测试。

许多软件在正常环境下一般不会出现错误,极端的环境下往往会引发许多严重的错误。压力测试,即通过输入组合,使待测软件处于极端状态,意图使系统出现错误。针对于软件的时间约束,则是在一定的任务调度策略下,搜索任务可能执行的顺序,确定测试场景,使其错失截止期的可能性最大化。安全攸关软件大多是实时软件,具有严格的时间限制。因而,在软件开发初期,针对软件实时性进行分析,生成压力测试用例,非常重要,可以尽早发现软件错误,减少开发成本。

现有测试软件实时性的策略主要分为3个步骤:首先在软件开发早期,对软件中实时性相关信息进行描述;然后根据描述的信息,在ILOG中建立OPL模型(包括变量、约束、目标函数);最后利用约束模型求解实时任务执行的可能执行序列,找出最大可能错过截止时间的测试场景。但是,现有OPL模型的目标函数仅仅只有一个,因此很有可能存在多个任务执行序列同时满足目标函数最大,无法精确的选取最佳的压力测试用例。

发明内容

有鉴于此,本申请提供了一种实时软件压力测试用例生成方法及装置,用于解决现有单目标函数的OPL模型无法精确选取最佳压力测试用例的问题。

为了实现上述目的,现提出的方案如下:

一种实时软件压力测试用例生成方法,包括:

利用采集的实时软件的实时相关信息,建立OPL模型;

其中,所述建立OPL模型包括:

定义常量:观察时间T、处理器个数C、任务J={j0,j1,…,jn}、在时间T内任务ji执行的最大次数exec(j)、任务ji的第k+1次执行为事件aik、任务ji的优先权p(j)、任务ji的最大时间间隔max_ia(j)、任务ji的最大和最小持续时间max_dr(j)、min_dr(j);

定义变量:事件aik的到达时间at(aik)、、事件aik的开始时间s(aik)、事件aik的结束时间e(aik)、在观察时间T内事件aik的截止时间edl(aik)、事件aik在时间t时执行active(aik);

定义约束条件:触发关系triggers:若任务j1触发任务j2,则有e(a1k)=at(a2k);依赖关系dependent:若s(a1k)<s(a2k),则s(a2k)>e(a1k);

定义目标函数:

截止时间>f1=Σi=0m-1max(0,min(1,e(ai)-edl(ai)))>

响应时间>f2=Σi=0m-1max(e(ai)-at(ai));>

利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。

优选地,所述事件aik的到达时间at(aik)满足:

at(aik)=of(i)+pe(i),其中of(i)为与任务ji对应的预设参考区间中的随机值,pe(i)为任务ji的执行周期。

优选地,定义的所述约束条件按照下述方式存储:

设定

将所有任务j之间的触发关系按照上述设定方式表示为第一矩阵;

建立触发集合T1和触发集合T0;

将所述第一矩阵中为1的元素的下标存储在所述触发集合T1中,将所述第一矩阵中为0的元素的下标存储在所述触发集合T0中;

将所述触发集合T1和/或所述触发集合T0进行存储;

设定

将所有任务j之间的依赖关系按照上述设定方式表示为第二矩阵;

建立依赖集合M1和依赖集合M0;

将所述第二矩阵中为1的元素的下标存储在所述依赖集合M1中,将所述第二矩阵中为0的元素的下标存储在所述依赖集合M0中;

将所述依赖集合M1和/或所述依赖集合M0进行存储。

优选地,所述预设算法为分支限界算法。

优选地,所述预设条件为:

优先选择使截止时间f1最大的事件到达时间序列,如果若干个事件到达时间序列使得截止时间f1值相同,则进一步选取使响应时间f2较大的事件到达时间序列。

一种实时软件压力测试用例生成装置,包括:

模型建立单元,用于利用采集的实时软件的实时相关信息,建立OPL模型,其中,建立OPL模型的过程包括:

定义常量:观察时间T、处理器个数C、任务J={j0,j1,…,jn}、在时间T内任务ji执行的最大次数exec(j)、任务ji的第k+1次执行为事件aik、任务ji的优先权p(j)、任务ji的最大时间间隔max_ia(j)、任务ji的最大和最小持续时间max_dr(j)、min_dr(j);

定义变量:事件aik的到达时间at(aik)、、事件aik的开始时间s(aik)、事件aik的结束时间e(aik)、在观察时间T内事件aik的截止时间edl(aik)、事件aik在时间t时执行active(aik);

定义约束条件:触发关系triggers:若任务j1触发任务j2,则有e(a1k)=at(a2k);依赖关系dependent:若s(a1k)<s(a2k),则s(a2k)>e(a1k);

定义目标函数:

截止时间>f1=Σi=0m-1max(0,min(1,e(ai)-edl(ai)))>

响应时间>f2=Σi=0m-1max(e(ai)-at(ai));>

模型求解单元,用于利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。

优选地,所述事件aik的到达时间at(aik)满足:

at(aik)=of(i)+pe(i),其中of(i)为与任务ji对应的预设参考区间中的随机值,pe(i)为任务ji的执行周期。

优选地,所述模型建立单元包括:

触发集合存储单元,用于设定

将所有任务j之间的触发关系按照上述设定方式表示为第一矩阵;

建立触发集合T1和触发集合T0;

将所述第一矩阵中为1的元素的下标存储在所述触发集合T1中,将所述第一矩阵中为0的元素的下标存储在所述触发集合T0中;

将所述触发集合T1和/或所述触发集合T0进行存储;

依赖集合存储单元,用于设定

将所有任务j之间的依赖关系按照上述设定方式表示为第二矩阵;

建立依赖集合M1和依赖集合M0;

将所述第二矩阵中为1的元素的下标存储在所述依赖集合M1中,将所述第二矩阵中为0的元素的下标存储在所述依赖集合M0中;

将所述依赖集合M1和/或所述依赖集合M0进行存储。

优选地,所述预设算法为分支限界算法。

优选地,所述预设条件为:

优先选择使截止时间f1最大的事件到达时间序列,如果若干个事件到达时间序列使得截止时间f1值相同,则进一步选取使响应时间f2较大的事件到达时间序列。

从上述的技术方案可以看出,本申请实施例提供的压力测试用例生成方法,利用采集的实时软件的实时相关信息建立OPL模型,其中OPL模型中的目标函数包括截止时间和响应时间,然后利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,其中所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。本申请中,将建立的OPL模型中的目标函数设置为两个,所得的压力测试用例需要使目标函数满足一定的条件才可,相比于单目标函数的方式,压力测试用例的选取更加精确。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例公开的一种实时软件压力测试用例生成方法流程图;

图2为本申请实施例公开的一种实时软件压力测试用例生成装置结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的发明人经过研究发现:任务不同的到达时间,执行的场景可能也有所不同,即任务的到达时间对截止期限具有重要影响,相同的任务实时属性,不同的到达时间,可能截止期限错失的情况有所不同。因此,需要寻找一种方法,搜索任务所有可能到达的时间,选择使待测系统失截止期的可能性更大的到达时间序列,即压力测试用例。

参见图1,图1为本申请实施例公开的一种实时软件压力测试用例生成方法流程图。

如图1所示,该方法包括:

步骤S100、利用采集的实时软件的实时相关信息,建立OPL模型;

其中,所述建立OPL模型包括:

定义常量:观察时间T、处理器个数C、任务J={j0,j1,…,jn}、在时间T内任务ji执行的最大次数exec(j)、任务ji的第k+1次执行为事件aik、任务ji的优先权p(j)、任务ji的最大时间间隔max_ia(j)、任务ji的最大和最小持续时间max_dr(j)、min_dr(j)。

定义变量:事件aik的到达时间at(aik)、、事件aik的开始时间s(aik)、事件aik的结束时间e(aik)、在观察时间T内事件aik的截止时间edl(aik)、事件aik在时间t时执行active(aik)。

其中,事件的到达时间与事件的开始时间之间的关系是,事件达到到达时间之后并不一定开始执行,而是在事件开始时间时才执行。

定义约束条件:触发关系triggers:一个任务的完成可以触发另一任务,若任务j1触发任务j2,则有e(a1k)=at(a2k);依赖关系dependent:若s(a1k)<s(a2k),则s(a2k)>e(a1k)。

其中,由于若干个任务共享一些计算资源,任务在执行时需要互斥访问资源,意味着如果j1依赖于j2,j1,j2不能同时访问共享的计算资源,但可以在一个执行释放资源后,再获得资源,这就是依赖关系。

定义目标函数:

截止时间>f1=Σi=0m-1max(0,min(1,e(ai)-edl(ai)))>

响应时间>f2=Σi=0m-1max(e(ai)-at(ai));>

步骤S110、利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。

对OPL模型进行求解的过程,其实就是求解在约束条件下,使得目标函数满足预设条件的事件到达时间序列的过程。

本申请实施例提供的压力测试用例生成方法,利用采集的实时软件的实时相关信息建立OPL模型,其中OPL模型中的目标函数包括截止时间和响应时间,然后利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,其中所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。本申请中,将建立的OPL模型中的目标函数设置为两个,所得的压力测试用例需要使目标函数满足一定的条件才可,相比于单目标函数的方式,压力测试用例的选取更加精确。

需要解释的是,上述对OPL模型进行求解时,所要满足的预设条件可以是:

优先选择截止时间f1最大的事件到达时间序列,而如果某几个不同的事件到达时间序列使得截止时间f1值相同,则可以进一步参考响应时间f2,使得响应时间f2较大的事件到达时间序列最为最终确定的压力测试用例。

其中,在求解OPL模型时,可以使用分支限界算法来求解。

进一步,考虑到在实际运行中的事件到达时间往往具有不确定性,但又不是任意的,以周期任务为例,每个任务第一次到达时间与观察时间T的开始时间有个偏移量of(i),该偏移量并非固定值,针对不同的任务ji我们均可以设定对应的参考区间,然后将of(i)确定为参考区间中的随机值。而由于任务是周期性的,因此事件aik的到达时间at(aik)满足:

at(aik)=of(i)+pe(i),其中of(i)为与任务ji对应的预设参考区间中的随机值,pe(i)为任务ji的执行周期。

更进一步的,上述定义的约束条件在模型中可以按照下述方式进行存储:

(1)设定

将所有任务j之间的触发关系按照上述设定方式表示为第一矩阵;

具体地,假设存在三个任务,分别为j0、j1、j2。其中,j0和j1存在触发关系,则表示为第一矩阵:

>010000000>

其中,元素1的下标为<0,1>,也即第0行第1列。

(2)建立触发集合T1和触发集合T0;

(3)将所述第一矩阵中为1的元素的下标存储在所述触发集合T1中,将所述第一矩阵中为0的元素的下标存储在所述触发集合T0中;

具体地,仍使用上述例子,触发集合T1中存储的信息为{<0,1>},触发集合T0中存储的信息为{<0,0>、<0,2>、<1,0>、<1,1>、<1,2>、<2,0>、<2,1>、<2,2>}。

(4)将所述触发集合T1和/或所述触发集合T0进行存储。

通过这种存储方式,在查询某两个任务之间是否存储触发关系时,直接查询触发集合T0或者T1即可。例如,查询任务j0和j1之间是否存在触发关系,直接查询其下标是否存储在T1集合中即可。

同理,对于依赖关系也可以按照上述方式进行存储,步骤如下:

设定

将所有任务j之间的依赖关系按照上述设定方式表示为第二矩阵;

建立依赖集合M1和依赖集合M0;

将所述第二矩阵中为1的元素的下标存储在所述依赖集合M1中,将所述第二矩阵中为0的元素的下标存储在所述依赖集合M0中;

将所述依赖集合M1和/或所述依赖集合M0进行存储。

通过上述存储方式,加快了查询的速度。

下面对本申请实施例提供的实时软件压力测试用例生成装置进行描述,下文描述的实时软件压力测试用例生成装置与上文描述的实时软件压力测试用例生成方法可相互对应参照。

参见图2,图2为本申请实施例公开的一种实时软件压力测试用例生成装置结构示意图。

如图2所示,该装置包括:

模型建立单元21和模型求解单元22。

其中模型建立单元21用于:

利用采集的实时软件的实时相关信息,建立OPL模型,其中,建立OPL模型的过程包括:

定义常量:观察时间T、处理器个数C、任务J={j0,j1,…,jn}、在时间T内任务ji执行的最大次数exec(j)、任务ji的第k+1次执行为事件aik、任务ji的优先权p(j)、任务ji的最大时间间隔max_ia(j)、任务ji的最大和最小持续时间max_dr(j)、min_dr(j);

定义变量:事件aik的到达时间at(aik)、、事件aik的开始时间s(aik)、事件aik的结束时间e(aik)、在观察时间T内事件aik的截止时间edl(aik)、事件aik在时间t时执行active(aik);

定义约束条件:触发关系triggers:若任务j1触发任务j2,则有e(a1k)=at(a2k);依赖关系dependent:若s(a1k)<s(a2k),则s(a2k)>e(a1k);

定义目标函数:

截止时间>f1=Σi=0m-1max(0,min(1,e(ai)-edl(ai)))>

响应时间>f2=Σi=0m-1max(e(ai)-at(ai)).>

模型求解单元22,用于利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。

可选的,所述事件aik的到达时间at(aik)满足:

at(aik)=of(i)+pe(i),其中of(i)为与任务ji对应的预设参考区间中的随机值,pe(i)为任务ji的执行周期。

可选的,所述模型建立单元包括:

触发集合存储单元,用于设定

将所有任务j之间的触发关系按照上述设定方式表示为第一矩阵;

建立触发集合T1和触发集合T0;

将所述第一矩阵中为1的元素的下标存储在所述触发集合T1中,将所述第一矩阵中为0的元素的下标存储在所述触发集合T0中;

将所述触发集合T1和/或所述触发集合T0进行存储;

依赖集合存储单元,用于设定

将所有任务j之间的依赖关系按照上述设定方式表示为第二矩阵;

建立依赖集合M1和依赖集合M0;

将所述第二矩阵中为1的元素的下标存储在所述依赖集合M1中,将所述第二矩阵中为0的元素的下标存储在所述依赖集合M0中;

将所述依赖集合M1和/或所述依赖集合M0进行存储。

可选的,所述预设算法为分支限界算法。

所述预设条件为:优先选择使截止时间f1最大的事件到达时间序列,如果若干个事件到达时间序列使得截止时间f1值相同,则进一步选取使响应时间f2较大的事件到达时间序列。

本申请实施例提供的压力测试用例生成装置,利用采集的实时软件的实时相关信息建立OPL模型,其中OPL模型中的目标函数包括截止时间和响应时间,然后利用预设算法对所述OPL模型进行求解,并依据求解结果确定压力测试用例,其中所述压力测试用例为使得目标函数满足预设条件的事件到达时间序列。本申请中,将建立的OPL模型中的目标函数设置为两个,所得的压力测试用例需要使目标函数满足一定的条件才可,相比于单目标函数的方式,压力测试用例的选取更加精确。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号