一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf

上传人:奻奴 文档编号:975648 上传时间:2018-03-22 格式:PDF 页数:26 大小:592.90KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110314538.6

申请日:

2011.10.17

公开号:

CN102360332A

公开日:

2012.02.22

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20111017|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

北京航空航天大学

发明人:

李秋英; 陆民燕; 王健; 罗磊

地址:

100191 北京市海淀区学院路37号

优先权:

2011.09.28 CN 201110301319.4

专利代理机构:

北京永创新实专利事务所 11121

代理人:

周长琪

PDF下载: PDF下载
内容摘要

本发明提出一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具,属于软件可靠性工程领域。所述方法提出构建一种畸化操作剖面,基于该剖面对被测软件进行软件可靠性增长与验证加速测试与评估。所述工具通过传统操作剖面构造模块构造传统操作剖面,进一步通过畸化操作剖面构造模块构造畸化操作剖面,根据用户选择执行可靠性验证加速测试模块和可靠性增长加速测试模块,由测试用例自动生成模块进行测试中的用例生成。本发明实现了畸化操作剖面与传统Musa操作剖面之间的可靠性参数的无偏估计,具有较好的测试效率,相比传统测试方法,测试时间短,测试结果也准确,便于工程人员的理解和实际操作。

权利要求书

1: 一种畸化操作剖面的构建方法, 其特征在于, 所述畸化操作剖面有两种实现方法 : (1) 方法 1 : 首先确定普通操作和关键操作在畸化操作剖面的发生概率, 具体是 : 将普 通操作的发生概率置为 0, 关键操作的发生概率依据下面式子得到 : 其中, pci 代表第 i 个关键操作在传统操作剖面上的发生概率, k 代表关键操作的个数, pc′ i 代表第 i 个关键操作在畸化操作剖面上的发生概率, 将各关键操作在传统操作剖面 上的发生概率之和 pc1+pc2+… +pck 作为整个畸化操作剖面加速因子, 各关键操作的加速因 子和整个畸化操作剖面的加速因子相同 ; 所述的关键操作是指需要重点测试的操作, 所述 的普通操作是指不需要重点测试的操作 ; (2) 方法 2 : 利用操作发生概率值对所有操作的发生概率值进行大小翻转, 则第 i 个操 作在畸化操作剖面上的发生概率为 : 则整个畸化操作剖面的加速因子 Λ 为 : 第 i 个关键操作的加速因子 Λi 为 : 其中, n 表示操作的总个数, pmax 代表传统操作剖面中所有操作之中最大的发生概率, pi 代表第 i 个操作在传统操作剖面上的发生概率, p′ i 代表第 i 个操作在畸化操作剖面上的 发生概率。
2: 基于权利要求 1 所述的方法构建的畸化操作剖面的软件可靠性增长加速测试与评 估方法, 其特征在于, 具体通过以下步骤实现 : 步骤一、 构造畸化操作剖面, 确定各操作的加速因子和整个畸化操作剖面的加速因 子; 步骤二、 根据所构造的畸化操作剖面进行随机抽样生成测试用例 ; 步骤三、 判断被测软件为离散型软件还是连续型软件, 若是离散型软件, 则执行步骤 四, 若是连续型软件, 则执行步骤五 ; 步骤四、 构建软件测试环境, 执行步骤二生成的测试用例, 收集失效间隔用例数, 然后 确定引起失效的输入所对应的操作, 并利用该操作的加速因子进行失效用例数的转化处 理, 所述的转化处理具体是 : 用收集到的失效间隔用例数除以对应操作的加速因子, 得到的 数据就是转化处理后的数据 ; 本步骤执行完毕后执行步骤六 ; 步骤五、 构建软件测试环境, 执行步骤二生成的测试用例, 收集失效间隔时间, 然后确 定引起失效的输入所对应的操作, 并利用该操作的加速因子进行失效间隔时间的转化处 理, 所述的转化处理具体是 : 用收集到的失效间隔时间除以对应操作的加速因子, 得到的数 2 据就是转化处理后的数据 ; 本步骤执行完毕后执行步骤六 ; 步骤六、 选择适当的软件可靠性增长模型, 进行可靠性参数的估计 ; 步骤七、 判断此时被测软件是否满足规定的可靠性要求, 若是, 则停止测试和评估, 结 束该方法, 若否, 转步骤二执行。
3: 基于权利要求 1 所述的方法构建的畸化操作剖面的软件可靠性验证加速测试与评 估方法, 其特征在于, 具体包括如下步骤 : 步骤 1、 构造畸化操作剖面, 并确定整个剖面的加速因子 ; 步骤 2、 确定被测软件的测试量 ; 步骤 3、 根据步骤 2 确定的测试量, 并基于步骤 1 生成的畸化操作剖面, 生成可靠性测试 用例, 执行生成的测试用例, 收集失效信息 ; 步骤 4、 结合验证测试方案和收集的失效信息, 得到接收软件或拒收软件的结论 ; 步骤 5、 根据实际的实验结果, 给出当前的软件可靠性参数的评估结果。
4: 根据权利要求 3 所述的基于畸化操作剖面的软件可靠性验证加速测试与评估方法, 其特征在于, 步骤 2 中所述的测试量, 具体是 : (1) 被测软件为离散型软件, 对于定数结尾测试方案和无失效验证测试方案事先确 定验证加速测试所需的测试用例量, 对于无失效验证测试方案, 确定所需的测试用例量 其中, [.] 表示对 . 取整, FU 表示失效概率的上限值, α 代表显著性水 平; (2) 被测软件是连续型软件, 对于定时结尾测试方案和无失效验证测试方案事先确定 验证加速测试所需的连续执行时间, 对于无失效验证测试方案, 确定所需的连续执行时间 t′= tΛ, 其中, t 代表在传统操作剖面下需要执行的测试时间, Λ 代表整个畸化操作剖面 的加速因子。
5: 根据权利要求 1 或 3 所述的基于畸化操作剖面的软件可靠性验证加速测试与评估方 法, 其特征在于, 步骤 5 中所述的软件可靠性参数的评估结果, 具体是 : (1) 针对离散型软件, 评估结果是指失效概率或成功率, 在采用方法 1 不包含普通操作 所构建的畸化操作剖面时, 被测软件的失效概率点估计值 F′为 : 其中, Λ 表示整个畸化操作剖面的加速因子, n′为畸化操作剖面下的测试用例中发生 失效的总个数, N′为畸化操作剖面下总的测试用例数目 ; 被测软件的成功率为 p = 1-F′; 对应得到失效概率的区间估计如下 : F′的置信水平为 1-α 的置信下限 F′ L 和置信上限 F′ U 分别为 : 式 (6) 中 : v1 = 2(N′ -n′ +1), v2 = 2n′ ; 式 (7) 中 : v1 = 2(N′ -n′ ), v2 = 2(n′ +1) ; 3 由式 (6) 和式 (7) 得到成功率 p 的置信水平为 1-α 的置信下限 pL 和置信上限 pU 分别 为: 式 (8) 中 : v1 = 2(N′ -n′ ), v2 = 2(n′ +1), 式 (9) 中 : v1 = 2(N′ -n′ +1), v2 = 2n′ ; 式 (6)- 式 (9) 中的 F1-α(v2, v1) 表示 F 分布值 ; 在采用方法 2 包含所有操作所构建的畸化操作剖面时, 被测软件的失效概率点估计值 F′为 : 其中, pi 为传统操作剖面中操作 oi 的发生概率, n 表示操作的总个数, n′ i 为落入操作 oi 中的测试用例中发生失效的用例数目, N′ i 为落入操作 oi 中的测试用例的总数目 ; (2) 针对连续型软件, 评估结果是指失效率, 在采用方法 1 不包含普通操作所构建的畸 化操作剖面时, 被测软件的失效率 λupp 为 : λupp = Λλ′ upp (11) 其中, α 代表显著性水平, 是卡方分布, 用来评估失效率的上限, t′为在畸化操作剖面上的测试时间, n′为畸化操作剖面下的测 试用例中发生失效的总个数 ; 在采用方法 2 包含所有操作所构建的畸化操作剖面时, 被测 软件的失效率为 2λupp。
6: 根据上述任一所述的权利要求的一种基于畸化操作剖面的软件可靠性加速测试与 评估的计算机辅助工具, 其特征在于, 包括传统操作剖面构造模块、 畸化操作剖面构造模 块、 测试用例自动生成模块、 可靠性验证加速测试模块和可靠性增长加速测试模块 ; 所述的传统操作剖面构造模块接收用户输入操作模式信息和操作信息, 建立传统操作 剖面, 并将所建立的操作剖面信息数据包括操作概率、 变量类型和取值范围, 传送给畸化操 作剖面构造模块 ; 所述的畸化操作剖面构造模块根据用户对畸化操作剖面的构造方法的选择, 生成不包 含普通操作的第一种畸化操作剖面或者包含所有操作的第二种畸化操作剖面, 并保存各操 作的加速因子和整个畸化操作剖面的加速因子 ; 所述的测试用例自动生成模块接收畸化操作剖面构造模块发生过来的畸化操作剖面 的信息数据包括在畸化操作剖面上的操作概率、 变量类型和取值范围, 结合接收到的可靠 性验证加速测试模块输入的测试量和验证测试方案生成测试用例, 或者结合接收到的可靠 性增长加速测试模块输入的增长测试方案生成测试用例, 并将测试用例输出给待测软件。 所述的可靠性验证加速测试模块, 接收畸化操作剖面构造模块发生过来的畸化操作剖 面的信息数据包括在畸化操作剖面上的操作概率、 变量类型、 取值范围以及加速因子, 实现 如下具体功能 : 首先根据用户输入的验证测试指标为被测试的离散型软件或连续型软件生 4 成验证测试方案, 并确定测试量, 将生成的测试量和验证测试方案输出给测试用例自动生 成模块, 然后接收用户在所构建的软件测试环境中运行测试软件执行测试用例所收集的失 效数据, 结合验证测试方案, 决定接收或拒绝接收该被测软件, 并根据实验结果得到当前的 软件可靠性参数的评估结果 ; 所述的可靠性增长加速测试模块, 接收畸化操作剖面构造模块发生过来的畸化操作剖 面的信息数据包括在畸化操作剖面上的操作概率、 变量类型、 取值范围以及加速因子, 实现 如下具体功能 : 首先根据用户输入的增长测试指标为被测试的离散型软件或连续型软件生 成增长测试方案, 将增长测试方案输出给测试用例自动生成模块, 接收用户在所构建的软 件测试环境中运行测试软件执行测试用例所收集的失效数据, 确定引起失效的输入所对应 的操作, 利用该操作的加速因子进行失效数据的转化处理, 并将测试结果的数据转化结果 进行输出。
7: 根据权利要求 6 所述的一种基于畸化操作剖面的软件可靠性加速测试与评估的计 算机辅助工具, 其特征在于, 所述的传统操作剖面构造模块采用 Musa 操作剖面的构造方法 来构造传统操作剖面。

说明书


一种软件可靠性加速测试与评估方法及其计算机辅助工具

    技术领域 本发明属于软件可靠性工程领域, 尤其涉及软件可靠性测试和评估领域, 具体地 说, 是指一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具。
     背景技术 软件可靠性测试对于软件的质量保证具有极其重要的意义, 一方面需要通过软件 可靠性增长测试不断排除对软件可靠性具有重要影响的软件缺陷, 实现软件可靠性水平的 不断增长以满足用户对软件可靠性的要求 ; 另一方面则需要通过软件可靠性验证测试来判 断软件是否已经达到要求的可靠性水平, 进而决定软件能否接收或者发布。
     但目前, 软件可靠性测试的应用并不理想, 在传统可靠性测试理论和方法指导下 的数量庞大的测试用例是导致其裹足不前的一个重要原因, 对于高可靠软件来说, 这样的 问题尤为突出, Butler 曾认为利用传统的软件可靠性验证测试方法不可能完成对高可靠软 件的评估要求。 如何提高传统软件可靠性测试的效率, 加速软件可靠性测试的进程, 在有限 的时间和资源消耗的条件下实现相同的可靠性测试目标, 即实现软件可靠性加速测试, 成 为摆在软件可靠性领域研究人员面前的一个热点和难点问题。
     当前传统的可靠性测试及评估方法主要有两种, 一种是基于马尔可夫使用模型的 统计测试方法, 另一种是基于 Musa 操作剖面的可靠性测试方法。上述两种方法的基本思想 都是基于统计学的基本原理, 即根据软件的实际使用情况的统计规律的描述, 对软件进行 随机测试, 利用失效数据进行软件可靠性评估。上述特点也决定了软件可靠性测试过程时 间长、 费用高、 资源耗费大, 导致软件可靠性测试的效率低下。
     H.Hecht 分别于 1993 年在其论文 《Rare conditions-an important cause of failures》和 1994 年 在 其 论 文 《Rare Conditions and Their Effect on Software Failures》 中通过收集到的大量的数据, 总结出高可靠软件失效的一个重大原因, 即在高可 靠软件中, 小概率事件的失效是导致系统失效的主要原因, 这一数据的发布和原因分析为 后续一系列以重要度抽样为加速机理的方法的提出提供了依据。B.Cukic、 H.Alam、 D.Tang 等人均在 H.Hecht 数据的基础上, 提出了基于重要度抽样的思想, 对小概率事件的发生概 率进行提升, 对重要度抽样原理进行了描述, 并在基于 Markov 链构建操作剖面的软件上进 行了实验。以上都是基于重要度原理对软件可靠性加速方法进行了非常好的诠释, 但均以 Markov 使用模型作为阐述对象, 且基本上都是在假设软件出现失效不剔除软件缺陷、 从而 保证软件失效概率或失效率不变, 即以软件可靠性验证测试为研究对象, 而对于软件可靠 性增长加速测试没有进行阐述。因此与目前软件可靠性测试的两种类型结合不紧密, 并且 由于 Markov 链本身构建的复杂性, 影响了其在实践中的应用。因此, 如何在以 Musa 操作剖 面为基础的情况下研究软件可靠性加速测试, 且对软件可靠性验证加速测试和软件可靠性 增长加速测试进行全面的研究和考虑, 具有重要的研究意义和应用价值。
     发明内容本发明为了解决基于传统 Musa 操作剖面的软件可靠性测试效率低的问题, 提供 了一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具。
     本发明提供的畸化操作剖面的构建方法, 分以下两种 :
     方法 1 : 将普通操作的发生概率置 0, 关键操作的发生概率之和作为加速因子。所 述的关键操作是指需要重点测试的操作, 所述的普通操作是指不需要重点测试的操作。
     方法 2 : 利用操作发生概率值对所有操作的发生概率值进行大小翻转。
     本发明的一种基于畸化操作剖面的软件可靠性增长加速测试与评估方法, 具体步 骤为 :
     步骤一、 构造畸化操作剖面, 确定各操作的加速因子和整个畸化操作剖面的加速 因子 ;
     步骤二、 根据所构造的畸化操作剖面进行随机抽样生成测试用例 ;
     步骤三、 判断被测软件为离散型软件还是连续型软件, 若是离散型软件, 则执行步 骤四, 若是连续型软件, 则执行步骤五 ;
     步骤四、 构建软件测试环境, 执行步骤二生成的测试用例, 收集失效间隔用例数, 然后确定引起失效的输入所对应的操作, 并利用所确定的操作的加速因子进行失效用例数 的转化处理 ; 本步骤执行完毕后执行步骤六 ; 步骤五、 构建软件测试环境, 执行步骤二生成的测试用例, 收集失效间隔时间数 据, 然后确定引起失效的输入所对应的操作, 并利用所确定的操作的加速因子进行失效间 隔时间的转化处理 ; 本步骤执行完毕后执行步骤六 ;
     步骤六、 选择适当的软件可靠性增长模型, 进行可靠性参数的估计 ;
     步骤七、 判断此时被测软件是否满足规定的可靠性要求, 若是, 则停止测试, 若否, 转步骤二执行。
     本发明的一种基于畸化操作剖面的软件可靠性验证加速测试与评估方法, 具体步 骤为 :
     步骤 1、 构造畸化操作剖面, 并确定整个剖面的加速因子 ;
     步骤 2、 确定被测软件的测试量 :
     若被测软件为离散型软件, 对于定数结尾测试方案和无失效验证测试方案可以事 先确定加速测试所需的测试用例量, 例如对于无失效验证测试方案可以确定加速测试所需
     的测试用例量其中, [.] 表示对 . 取整, FU 表示失效概率的上限值, α代表显著性水平 ;
     若被测软件是连续型软件, 对于定时结尾测试方案和无失效验证测试方案可以事 先确定加速测试所需的连续执行时间, 例如对于无失效验证测试方案可以确定加速测试所 需的连续执行时间 t′= tΛ, 其中, t 代表在传统操作剖面下需要执行的测试时间, Λ 代表 整个畸化操作剖面的加速因子 ;
     步骤 3、 根据步骤 2 确定的测试量, 并基于步骤 1 生成的畸化操作剖面, 生成测试用 例, 执行生成的测试用例, 收集失效信息 ;
     步骤 4、 结合验证测试方案和实验结果, 得到接收或拒收结论 ;
     步骤 5、 根据实际的实验结果, 给出当前的软件可靠性参数的评估结果。本发明的一种实现上述方法的计算机辅助工具, 包括传统操作剖面构造模块、 畸 化操作剖面构造模块、 测试用例自动生成模块、 可靠性验证加速测试模块和可靠性增长加 速测试模块。
     传统操作剖面构造模块接收用户输入操作模式信息和操作信息, 建立传统操作剖 面, 并将所建立的操作剖面信息数据包括操作概率、 变量类型和取值范围, 传送给畸化操作 剖面构造模块 ; 畸化操作剖面构造模块根据用户对畸化操作剖面的构造方法的选择, 生成 不包含普通操作的第一种畸化操作剖面或者包含所有操作的第二种畸化操作剖面, 并保存 各操作的加速因子和整个畸化操作剖面的加速因子。 测试用例自动生成模块接收畸化操作 剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、 变 量类型和取值范围, 结合接收到的可靠性验证加速测试模块输入的测试量和验证测试方案 生成测试用例, 或者结合接收到的可靠性增长加速测试模块输入的增长测试方案生成测试 用例, 并将测试用例输出给待测软件。 可靠性验证加速测试模块, 接收畸化操作剖面构造模 块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、 变量类型、 取 值范围以及加速因子, 实现如下具体功能 : 首先根据用户输入的验证测试指标为被测试的 离散型软件或连续型软件生成验证测试方案, 并确定测试量, 将生成的测试量和验证测试 方案输出给测试用例自动生成模块, 然后接收用户在所构建的软件测试环境中运行测试软 件执行测试用例所收集的失效数据, 结合验证测试方案, 决定接收或拒绝接收该被测软件, 并根据实验结果得到当前的软件可靠性参数的评估结果。可靠性增长加速测试模块, 接收 畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操 作概率、 变量类型、 取值范围以及加速因子, 实现如下具体功能 : 首先根据用户输入的增长 测试指标为被测试的离散型软件或连续型软件生成增长测试方案, 将增长测试方案输出给 测试用例自动生成模块, 接收用户在所构建的软件测试环境中运行测试软件执行测试用例 所收集的失效数据, 确定引起失效的输入所对应的操作, 利用该操作的加速因子进行失效 数据的转化处理, 并将测试结果的数据转化结果进行输出。
     本发明与现有技术相比, 具有明显的优势和有益效果 :
     (1) 本发明提出的软件可靠性加速测试方法和评估方法, 是基于传统操作剖面基 础上生成的畸化操作剖面展开的, 解决了以操作剖面生成测试用例方面的可靠性加速测试 问题, 而且从原理、 方案、 执行过程、 结果评估全过程对加速测试方法进行了覆盖, 并围绕可 靠性验证和增长两种可靠性测试类型展开, 实现了对软件的可靠性测试, 完全覆盖了软件 可靠性测试过程, 具有重要的指导意义。
     (2) 本发明能够利用原有的可靠性测试方面的理论和成果, 例如软件可靠性增长 测试模型, 通过失效数据转化, 实现加速测试与传统模型的对接以及在传统验证测试方案 基础上的改进, 这些都使得本发明提出的方法与现有的研究成果实现了很好的延续, 而不 是完全抛弃原有的研究成果的重头研究。
     (3) 通过实例应用, 本发明具有较好的测试效率, 相比传统测试技术, 测试时间短, 测试结果也准确, 便于工程人员的理解和实际操作。 附图说明
     图 1 为本发明的软件可靠性增长加速测试和评估方法的流程示意图 ;图 2 为软件的操作剖面及缺陷空间的表达示意图 ;
     图 3 为本发明的软件可靠性验证加速测试和评估方法的流程示意图 ;
     图 4 为本发明的计算机辅助工具的模块结构图。
     其中,
     1- 传统操作剖面构造模块, 2- 畸化操作剖面构造模块, 3- 测试用例自动生成模 块, 4- 可靠性验证加速测试模块, 5- 可靠性增长加速测试模块。 具体实施方式
     以下结合附图和实施例对本发明进行详细说明。
     本发明的畸化操作剖面的构建方法有两种, 下面对两种方法具体说明。
     方法 1 : 将普通操作的发生概率置为 0, 将关键操作的发生概率之和作为加速因 子。具体为 : 将需要重点测试的操作作为关键操作, 不需要重点测试的操作作为普通操作, 设未发现的对可靠性有重大影响的缺陷多存在于关键操作中。 对于关键操作与普通操作的 划分, 一种方法是从小概率事件入手, 原因如下 : 1) 小概率操作在传统测试阶段中由于自 身发生概率较低, 予以分配的测试用例较少, 因此错误暴露相对较晚或者还没有暴露完全 ; 2) 很多对软件持续运行起着重大作用的操作, 如失效恢复、 异常处理等操作, 都属于小概率 操作 ; 3) 虽然关键操作主要存在于小概率操作中, 但并非所有的小概率操作都属于关键操 作, 某些操作虽然发生概率不高, 但对整体软件功能的实现无直接影响, 也不列入关键操作 之中。在方法 1 中, 令畸化操作剖面中只包含关键操作, 也就是设未发现的缺陷主要存在于 关键操作中, 因此可以忽略普通操作的影响, 然后按照等比例提高和归一化的方法来实现 操作概率的重新分配, 则有 :
     其中, k 代表关键操作的个数,pci 代表第 i 个关键操作在传统操作剖面pc1+pc2+… +pck 上的发生概率, pc′ i 代表第 i 个关键操作在畸化操作剖面上的发生概率, 为传统操作剖面上的关键操作之和。
     因此, 剖面的加速因子 Λ 为 :
     Λ = pc1+pc2+…+pck (2)
     第 i 个关键操作的加速因子 Λi 为 : Λi = pc1+pc2+…+pck (3) 即任意关键操作的加速因子均同于整个剖面的加速因子。 方法 2 : 利用操作发生概率值对所有操作的发生概率值进行大小翻转。具体为 :式中, pmax 代表传统操作剖面中所有操作之中的最大发生概率, pi 代表传统操作剖 面上第 i 个操作的发生概率, p′ i 代表畸化操作剖面上第 i 个操作的发生概率, n 表示传 统操作剖面上的操作的个数, 畸化操作剖面上的操作个数比传统操作剖面上的操作个数少 1 个。
     此时, 整个剖面的加速因子 Λ 为 :第 i 个关键操作的加速因子 Λi 为 :显然, 方法 1 的运用需要具备较丰富的经验信息或具有一定的先验信息, 并且具 有较高的信心, 认为残存的、 对可靠性具有较大影响的缺陷只存在于小概率和指定的关键 操作中, 方法本身具有一定的风险性。当不具备这样的先验信息时, 优选采用方法 2。既然 前期的软件测试中已经对普通操作进行了比较充分的测试, 因此大概率的操作已经得到了 较充分的测试, 此时利用最大操作发生概率值实现对所有操作的发生概率值的大小翻转, 这样畸化操作剖面中不仅包含关键操作, 也包含普通操作, 能够弥补方法 1 中确定关键操 作时的主观性, 实现对所有操作的补偿性测试。
     基于本发明提出的畸化操作剖面, 本发明提供一种基于畸化操作剖面的软件可靠 性加速测试与评估方法及其计算机辅助工具。软件可靠性加速测试与评估方法分别针对 软件可靠性增长测试和验证测试两种类型展开, 每一种又分别针对离散型软件和连续型软 件, 即具体包含以下 4 种方法 : 1) 基于畸化操作剖面的离散型软件可靠性增长加速测试与 评估方法 ; 2) 基于畸化操作剖面的连续型软件可靠性增长加速测试与评估方法 ; 3) 基于畸 化操作剖面的离散型软件可靠性验证加速测试与评估方法 ; 4) 基于畸化操作剖面的连续 型软件可靠性验证加速测试与评估方法。具体分为 (1) 软件可靠性增长加速测试与评估方 法和 (2) 软件可靠性验证加速测试与评估方法分别进行具体说明。
     如图 1 所示, 本发明提供的基于畸化操作剖面的软件可靠性增长加速测试与评估 方法, 具体步骤如下 :
     步骤一、 构造畸化操作剖面, 确定各操作的加速因子和整个畸化操作剖面的加速 因子。具体为 : 首先按照传统的可靠性测试及评估方法中操作剖面的构造, 例如采用 Musa 操作剖面的构造方式, 构造传统操作剖面, 然后依据上述构造畸化操作剖面的方法 1 或者 方法 2, 构造畸化操作剖面, 并得到各操作的加速因子和整个畸化操作剖面的加速因子。
     步骤二、 根据步骤一构造的畸化操作剖面进行随机抽样生成测试用例, 具体过程 为: 首先确定被测软件的操作中每个输入变量的具体值, 通过抽取操作和抽取各输入变量 的取值这两个步骤的抽样, 生成测试用例。
     步骤三、 判断被测软件为离散型软件还是连续型软件, 若是离散型软件, 则执行步 骤四, 若是连续型软件, 则执行步骤五。
     步骤四、 根据被测软件特点和可靠性测试要求搭建可靠性测试环境, 在可靠性测 试环境中运行软件, 执行步骤二中生成的测试用例, 并收集记录失效数据。针对离散型软 件, 收集的失效数据就为失效间隔用例数。
     然后确定引起失效的输入所对应的操作, 并利用所确定的操作的加速因子进行失 效用例数的转化处理, 针对离散型软件, 就用收集到的失效间隔用例数乘以确定的对应操 作的加速因子, 得到的数据就是转化处理后的数据。本步骤执行完毕后执行步骤六。
     针对离散型软件, 本发明提供的基于畸化操作剖面的可靠性增长加速测试的原理如下 : 假设 α 为操作 Oi 中会引发软件失效的某一缺陷, 这样的缺陷还有 β、 γ、…、 μ 等, 如图 2 所示, 其中, 会导致缺陷 α 被触发的输入域用 Sα 来表示, 用 |Sα| 表示输入域 Sα 中所含输入数据的个数, 称为 Sα 的模。因为在可靠性增长测试过程中, 每一次失效都是由 某一个缺陷引起的, 且在增长测试过程中, 缺陷一旦被发现就立即被排除, 因此, 每一个缺 陷导致的失效只会发生一次, 并且假设缺陷之间彼此独立, 因此, 在传统操作剖面下, 对于 离散型软件来说, 当执行了 n 个测试用例, 发生了一次失效时, 此处设该失效是由缺陷 α 引 起的, 则由缺陷 α 引起的软件失效的概率 Pfα 可以表示为 :
     式中, pi 是操作 Oi 在传统操作剖面中的发生概率, |Sα| 表示会导致缺陷 α 被触 表示操作 Oi 对应的输入域 中所含输入数据发的输入域 Sα 中所含输入数据的个数,的个数。
     实际测试中, 当测试了 n 个用例发生了一次由于缺陷 α 引起的失效, 以此作为式 (7) 的估计值, 则有 :
     联立上面两式, 则有 :同理, 在畸化操作剖面下, 也有下式存在 :虽然操作 Qi 在传统操作剖面和本发明的畸化操作剖面下的发生概率发生了变化, 因此有 : pi/p′ i = n′ /n (11) 即有 : n = n′ p′ i/pi = n′ /Λi (12) 也就是说, 畸化操作剖面下测试 n′个用例发现一次失效, 相当于传统操作剖面下 个用例发现一次失效。但该操作对应的输入域不变, 即
     测试
     步骤五、 根据被测软件特点和可靠性测试要求搭建可靠性测试环境, 在可靠性测 试环境中运行软件, 执行步骤二中生成的测试用例, 并收集记录失效数据。针对连续型软 件, 收集的失效数据为失效间隔时间。
     然后确定引起失效的输入所对应的操作, 并利用所确定的操作的加速因子进行失 效间隔时间的转化处理, 针对连续型软件, 用收集到的失效间隔时间乘以确定的对应操作 的加速因子, 得到的数据就是转化处理后的数据。本步骤执行完毕后执行步骤六。
     针对连续型软件, 本发明提供的基于畸化操作剖面的可靠性增长加速测试的原理如下 :
     设第 i 个缺陷使软件出故障的概率为 Pi, 设该缺陷为 α, 不失一般性, 有 Pi = Pfα, Pfα 为由缺陷 α 引起的软件失效的概率, 针对连续型软件, 式 (7) 同样适用。设软件在单位时间 ( 单位时间可以是分、 时、 天、 周等等 ) 内执行 次任务, 即任务时间为 k, 则单位时间第 i 个缺陷使软件出现故障的概率 λi 为 : λi = Pi/k = Pfα/k (13)
     软件在随机输入条件下投入运行, 到出现失效的时间称为失效前时间 (time to failure), 该失效前时间是一个随机变量, 其期望值为平均失效前时间 (mean time to failure, 简称 MTTF), 记作 θ。利用传统操作剖面下测试了 t 时间发生了一次由于缺陷 α 引起的失效, 来作为式 (13) 的估计值, 则有 :
     则有 : Pfα/k = 1/t 即有 :(15)同理, 在畸化操作剖面下, 测试了 t′时间发生了一次由于缺陷 α 引起的失效, 有 下式存在 :
     虽然传统操作剖面和畸化操作剖面下操作 Qi 的发生概率发生了变化, 但该操作对 因此有 : pi/p′ i = t′ /t (18) 即有 : t = p′ it′ /pi = t′ /Λi (19) 也就是说, 畸化操作剖面下测试 t′时间发现一次失效, 相当于传统操作剖面下测应的输入域不变, 即
     试时间发现一次失效。步骤六、 利用适合的软件可靠性增长模型进行可靠性参数的估计。 一般, 针对离散 型软件, 可靠性增长模型推荐选择相应的离散型 NHPP 模型进行可靠性参数的估计 ; 针对连 续型软件, 可靠性增长模型可以从 GO、 MO 等连续型 NHPP 模型中选择, 进行可靠性参数的估 计。
     步骤七、 判断此时被测软件是否满足规定的可靠性要求, 如果满足规定的可靠性 要求, 则停止测试 ; 否则转步骤二执行, 根据步骤一中构造的畸化操作剖面追加生成测试用 例, 重复步骤二到步骤七, 直至可靠性参数的估计值满足规定的可靠性要求时停止测试。
     本发明提供的基于畸化操作剖面的软件可靠性验证加速测试的原理为 :
     软件可靠性验证测试的特点是, 在软件测试的过程中, 当发生失效时, 不对引发失 效的软件缺陷进行剔除, 同理, 在畸化操作剖面下的软件可靠性验证加速测试也不会进行 软件缺陷的剔除, 因此, 希望通过加速测试, 能够在畸化操作剖面下得到同传统操作剖面一 致的对软件失效概率 / 失效率的无偏估计。按照传统操作剖面的定义, 软件的输入空间 D
     可以表示成 :
     D = {(x1, x2,…, xn) : Ф(xi) = Oor1, i = 1, 2,…, n, xi ∈ Di, P(Di) = pi} (20)
     式中, xi 表示取自输入域 Di 的输入数据, n 表示传统操作剖面中的操作的个数, Di 表示与传统操作剖面中的操作 Oi 相对应的输入域, 因此 P(Di) 等同于传统操作剖面中的操 作 Oi 的发生概率, 即 P(Di) = pi。Ф(x) 是一个 0-1 分布的函数, 且具有如下特征 : 当软件 在输入 x 上发生失效时, Ф(x) 取值为 1 ; 当软件在 x 上不发生失效时, Ф(x) 取值为 0, 所 以 Ф(x) 又被称为失效的指示函数。 令 Y = Ф(x), 则软件的失效概率可以表示为随机变量 的函数 Y 的数学期望, 即失效概率 F 为 :
     式中 P(x) = pi, 当 x ∈ Di 时, 且 设 Q(x) 是任何一个定义在 D 上的离散分布, 且若 P(x) ≠ 0, 则 Q(x) ≠ 0, 则令Y′= Ф(x)Λ(x), Q(x) = p′ i, 当 x ∈ Di 时, 且则F = E(Y) = E(Y′ ) (23)
     即软件的失效概率表示为畸化操作剖面上的随机变量的函数的数学期望, 则软件 的失效概率可以通过随机变量的函数 Y′= Ф(x)Λ(x) 的数学期望来获得, 即在畸化操作 剖面下, 各个操作的发生概率由 pi 变成了 p′ i, 为了弥补在 p′ i 概率分布下分配测试用例 的差异, 引入加速因子 进行无偏转化, 在同样的测试用例条件下, 通过概率分布 Q(x) 的改变, 对需关注的操作进行重点抽样, 通过加速因子 Λ(x) 完成 Y′与 Y 之间的无偏转化, 进 而完成对软件失效概率的无偏估计。 如图 3 所示, 本发明基于畸化操作剖面的软件可靠性验证加速测试与评估方法, 具体步骤如下 :
     步骤 1、 构造畸化操作剖面, 并确定整个剖面的加速因子。本步骤中采用本发明提 出的畸化操作剖面的构造方法来实现。
     步骤 2、 确定被测软件的测试量, 区分被测软件为离散型软件还是连续型软件两种 情况。对于连续型软件, 利用基于畸化操作剖面的连续型软件可靠性验证加速测试方法确 定加速测试所需的连续执行时间 ; 对于离散型软件, 利用基于畸化操作剖面的离散型软件 可靠性验证加速测试方法确定加速测试所需的测试用例量。
     步骤 3、 根据步骤 2 确定的测试量, 并基于步骤 1 生成的畸化操作剖面, 生成测试用 例, 执行测试用例, 并收集失效信息。
     步骤 4、 结合验证测试方案中给出的接收、 拒收的判据和实际测试中收集到的结果 数据, 能够得到接收或拒收结论。
     步骤 5、 根据实际收集到的结果数据, 给出当前的软件可靠性参数的评估结果。针 对离散型软件和连续型软件采用不用的可靠性评估方法进行软件可靠性参数评估。
     步骤 2 中所述的基于畸化操作剖面的离散型软件可靠性验证加速测试方法为 :
     常见的离散型软件可靠性验证测试方案有 : 定数截尾测试、 序贯测试和无失效运 行测试等。由于无失效运行测试方案适用于高可靠软件, 因此本发明仅以无失效运行测试 为例进行说明, 方法原理可推广至其它类型的测试方案。
     一般认为, 离散型软件失效是服从二项分布的, 由于二项分布的共轭分布为 Beta(a, b) 函数, 借鉴贝叶斯分布的思想, 本发明中用 Beta(a, b) 函数作为离散型软件的先 验分布, 在下面式子中采用 B(a, b) 的形式来表示, 根据置信度的要求, 得到 :
     P(F < FU) ≥ 1-α (24)
     式中 : FU 表示失效概率的上限值。1-α 是用户给出的置信度要求, 通常 α 取一个 小于 1 的数, 例如 0.1、 0.2 等。
     失效概率 F 的概率密度函数为
     式中 : r 表示失效的数目, N 表示测试用例数目, 因此有 :可知, 在传统操作剖面下的需要的最少测试用例数目为 :式中 : [.] 表示对 . 取整。 在加速条件下计算测试用例时, 传统操作剖面下的测试用例数目 N 相当于畸化操 因此将 N 替换为 代入, 即:作剖面下的测试用例数目
     可得在畸化操作剖面下所需的最少测试用例数目为 :由于畸化操作剖面的加速因子 Λ < 1, 由式 (27) 和式 (29) 可知, 在畸化操作剖面 条件下所需要的测试用例量小于普通操作剖面下所需要的测试用例量。
     步骤 2 中所述的基于畸化操作剖面的连续型软件可靠性验证加速测试方法为 :
     常见的连续型软件验证测试方案有 : 定时截尾测试、 序贯测试和无失效运行测试 等。由于无失效运行测试适用于高可靠软件, 本发明仅以无失效运行测试为例进行说明。
     对于连续型软件, 一般是通过计算连续执行时间来实现验证测试的, 由于连续型 软件的失效次数是服从泊松分布的。 同时, 为了缩短测试时间, 本发明借鉴贝叶斯分布的思 想来实现, 泊松分布的共轭先验分布为 Gamma 分布, 根据 Gamma 分布和置信度等条件, 可以 有如下等式 :
     式中 : a0, b0 为固有的 Gamma 分布参数, 可以通过先验信息得到, t 代表在传统操作剖面下需要执行的测试时间, β 为使用方风险, λ0 表示失效率的上限值。
     在加速条件下计算需要执行的测试时间时, 由于传统操作剖面下的测试时间 t 相 当于畸化操作剖面下的测试时间
     因此, 将 t 替换为 代入, 即:t′= tΛ (31)
     计算出的 t′即为在畸化操作剖面下所需要的测试时间, 由于畸化操作剖面的加 速因子 Λ < 1, 可知 t′< t, 即在畸化操作剖面条件下所需要的连续执行时间小于传统操 作剖面下所需要的连续执行时间。
     本发明步骤 5 中所述的针对离散型软件可靠性验证加速测试的可靠性评估方法 为:
     离散型软件的可靠性评估是通过失效概率 ( 或成功率 ) 来完成的, 畸化操作剖面 下的失效概率点估计值 F′可以表示为 :
     式中 : n′ i 为落入操作 oi 中的测试用例中发生失效的用例数目, N′ i 为落入操作oi 中的测试用例的总数目。此外, 如果设 n′为畸化操作剖面下的测试用例中发生失效的 总的用例数, N′为总的测试用例数目, 则当利用本发明的方法 1 生成畸化操作剖面时, 由 (32) 得被测软件失效概率的点估计为 :
     因此, 软件的成功率为 : p = 1-F′ (34) 即在不包含普通操作的畸化操作剖面下, p 便是整个软件的成功率的点估计值。 若采用方法 2 生产畸化操作剖面, 则有被测软件的失效概率的点估计 :式中 : pi 为传统操作剖面中操作 oi 的发生概率。
     但在包含普通操作的畸化操作剖面下, 由于各个操作的加速因子 Λi 并不相同, 因 此失效概率满足式 (35)。
     以下给出当利用本发明的方法 1 生成畸化操作剖面时的失效概率的区间估计。 F′的置信水平为 1-α 的置信下限 F′ L 和置信上限 F′ U 分别为 :式中 : v1 = 2(N′ -n′ +1), v2 = 2n′。式中 : v1 = 2(N′ -n′ ), v2 = 2(n′ +1)。 由式 (36)、 (37) 可得成功率 p 的置信水平为 1-α 的置信下限 pL 和置信上限 pU 分别为 :式中 : v1 = 2(N′ -n′ ), v2 = 2(n′ +1), F1-α(v2, v1) 表示 F 分布值。式中 : v1 = 2(N′ -n′ +1), v2 = 2n′。 当 n′= 0 时, 成功率 p 的单侧置信下限为 : 本发明步骤 5 中所述的针对连续型软件可靠性验证加速测试的可靠性评估方法为: 连续型软件的可靠性评估是通过失效率来完成的, 本发明借鉴了下面的公式来评 估失效率的上限值 λ′ upp :
     式 中: α 代 表 显 著 性 水 平 (1-α 代 表 置 信 度 ),是 卡 方 分 布,可以用来评估失效率的上限, t ′为在畸化操作剖面上的测试时 间。n′为畸化操作剖面下的测试用例中发生失效的总个数。
     当 n′= 0 时, 式 (41) 可以被简化为 :
     因此被测软件的失效率 λupp 为 : λupp = Λλ′ upp (43) 在不包含普通操作的畸化操作剖面下, (43) 式的 λupp 是整个软件的失效率评估结果。 在包含普通操作的畸化操作剖面下, 由于普通操作在之前的测试中已经比较充 分, 所以可以假设普通操作中残留的失效率上限不会高于关键操作的失效率, 进而可以用 2λupp 来作为包含普通操作的畸化操作剖面下的失效率评估值。
     本发明还提供了一种计算机辅助工具, 它是实现本发明上述方法的装置, 它能够 支持畸化操作剖面的建立, 关键操作的选择, 根据本发明构建畸化操作剖面的两种方法构 建两种畸化操作剖面, 操作的加速因子和整个畸化操作剖面的加速因子的确定, 并按照本 发明中软件可靠性增长加速测试和可靠性加速验证测试的流程和方法, 分别提供针对离散 型软件和连续型软件的可靠性加速验证测试方案的确定、 失效结果的导入、 接收或拒收结 果的判定及可靠性参数的点估计和区间估计, 同时提供针对离散型软件和连续型软件的可 靠性增长加速测试失效数据导入、 失效数据转化及转化结果导出模块。如图 4 所示, 本发明 提供的计算机辅助工具具体包括 : 传统操作剖面构造模块 1、 畸化操作剖面构造模块 2、 测 试用例自动生成模块 3、 可靠性验证加速测试模块 4、 可靠性增长加速测试模块 5。
     传统操作剖面构造模块 1 接收用户输入操作模式信息和操作信息, 建立传统操作 剖面, 并将所建立的操作剖面信息数据, 包括操作概率、 变量类型和取值范围等, 传送给畸 化操作剖面构造模块 2。畸化操作剖面构造模块 2 根据用户对畸化操作剖面的构造方法的
     选择, 生成第一种畸化操作剖面或者第二种畸化操作剖面, 并保存各操作的加速因子和整 个畸化操作剖面的加速因子。可靠性验证加速测试模块 4 对待测试的离散型软件或连续型 软件进行软件可靠性验证加速测试与评估, 可靠性增长加速测试模块 5 对待测试的离散型 软件或连续型软件进行软件可靠性增长加速测试与评估。测试用例自动生成模块 3 用于生 成测试用例, 并输出给可靠性验证加速测试模块 4 或可靠性增长加速测试模块 5。
     所述的传统操作剖面构造模块 1 用于接收用户输入操作模式和对应模式下的操 作信息以建立传统操作模式剖面, 并且接收用户输入操作信息, 包括变量类型及取值范围, 结合所建立的传统操作模式剖面建立传统操作剖面, 并对传统操作模式剖面中的剖面信息 以及传统操作剖面中的整合信息进行存储。一般传统操作剖面构造模块 1 采用 Musa 操作 剖面的构造方法, 来构造传统操作剖面。
     所述的畸化操作剖面构造模块 2 根据用户对畸化操作剖面的构造方法的选择自 动生成第一种畸化操作剖面或者第二种畸化操作剖面, 在生成第一种畸化操作剖面时, 因 只考虑关键操作, 故还需要用户对于关键操作进行选择, 在生成畸化操作剖面后, 将确定的 各操作的加速因子和整个畸化操作剖面的加速因子存储起来。 所述的第一种畸化操作剖面 采用本发明所述的第一种畸化操作剖面的构建方法, 第二种畸化操作剖面采用本发明所述 的第二种畸化操作剖面的构建方法。
     所述的测试用例自动生成模块 3 用于根据输入的测试方案生成测试用例, 进行数 据生成前的错误检查、 测试用例的生成与保存, 将生成的测试用例输出待测软件 6。测试用 例自动生成模块 3 接收畸化操作剖面构造模块 2 发生过来的畸化操作剖面的信息数据, 包 括在畸化操作剖面上的操作概率、 变量类型和取值范围等, 根据可靠性验证加速测试模块 4 输入的验证测试方案生成测试用例, 或者根据可靠性增长加速测试模块 5 输入的增长测试 方案生成测试用例。
     所述的可靠性验证加速测试模块 4 接收畸化操作剖面构造模块 2 发送过来的畸化 操作剖面的信息数据包括在畸化操作剖面上的操作概率、 变量类型、 取值范围以及加速因 子, 实现接收离散型软件和连续型软件的验证指标输入、 畸化操作剖面选择、 验证加速测试 方案输出以及测试结果导入、 接收或拒收判定模型以及可靠性参数评估的功能。 具体, 可靠 性验证加速测试模块 4 实现的功能为 : 首先根据用户输入的验证测试指标为被测试的离散 型软件或连续型软件生成验证测试方案, 并确定测试量, 将生成的测试量和验证测试方案 输出给测试用例自动生成模块 3, 测试用例自动生成模块 3 根据验证测试方案生成测试用 例, 保存并输出给待测软件 6。用户在所构建的软件测试环境中运行待测软件 6, 执行测试 用例, 收集失效数据, 并将失效数据输入给可靠性验证加速测试模块 4, 可靠性验证加速测 试模块 4 结合验证测试方案, 决定接收或拒绝接收该被测软件, 并根据实验结果得到当前 的软件可靠性参数的评估结果。针对离散型软件, 测试量指测试用例量, 针对连续型软件, 测试量指连续执行时间。
     所述的可靠性增长加速测试模块 5 接收畸化操作剖面构造模块 2 发送过来的畸化 操作剖面的信息数据包括在畸化操作剖面上的操作概率、 变量类型、 取值范围以及加速因 子, 实现用于接收离散型软件和连续型软件的增长测试指标输入、 畸化操作剖面选择以及 测试结果导入、 测试结果数据转化和输出等功能。具体, 可靠性增长加速测试模块 5 实现的 功能为 : 根据用户输入的增长测试指标为被测试的离散型软件或连续型软件生成增长测试方案, 将增长测试方案输出给测试用例自动生成模块 3, 测试用例自动生成模块 3 根据增长 测试方案生成测试用例, 保存并输出给待测软件 6, 用户在所构建的软件测试环境中运行待 测软件 6, 执行测试用例, 收集失效数据, 并将失效数据输入到可靠性增长加速测试模块 5, 可靠性增长加速测试模块 5 确定引起失效的输入所对应的操作, 利用该操作的加速因子进 行失效数据的转化处理, 并将测试结果的数据转化结果进行输出。
     针对软件可靠性增长加速测试的评估, 选择现有技术中适当的软件可靠性增长模 型进行可靠性参数的估计, 并判断被测软件是否满足规定的可靠性要求。
     本发明实施例仅以连续型软件为代表, 分别进行软件可靠性增长加速测试和验证 加速测试的方法说明。
     实施例 1 : 下面通过某软件 S 的测试实验来对本发明提供的软件可靠性增长加速 测试和评估方法进行说明。表 1 为软件 S 建立的现有技术中传统操作剖面的表达示意。
     表 1 软件 S 的传统操作剖面
     操作 输入域 发生概率 P(x)
     o1 D1 p1 o2 … D2 … p2 … oi … Di … pi … om Dm pm表 2 为软件 S 建立的本发明畸化操作剖面的表达示意。 表 2 软件 S 的畸化操作剖面
     本实验采用某商品销售管理系统软件来构建被测软件, 首先利用 Musa 操作剖面 的构造方法搭建传统的操作剖面, 如表 3 的第 1 列和第 2 列所示 :
     表 3 构建商品销售管理系统的操作剖面
     依据本发明提供的构建畸化操作剖面的方法 1 构建第一种畸化操作剖面, 依据本 发明提供的构建畸化操作剖面的方法 2 构建第二种畸化操作剖面, 如表 3 中的第 3 列和第 5 列所示, 其中关键操作用加黑字体标明。由表 3 可以看出, 畸化操作剖面中的所有操作概 率之和都为 1, 但第一种畸化操作剖面中只包含关键操作, 普通操作概率全部为 0 ; 而第二 种畸化操作剖面中既包含关键操作又包含普通操作。
     分别基于第一种畸化操作剖面、 第二种畸化操作剖面生成测试用例并进行测试, 收集失效数据, 并根据失效数据的输入对应的操作的加速因子进行失效数据的转化, 得到 表 5 和表 6 所示的失效数据。
     表 5 基于第一种畸化操作剖面测试得到的失效数据和转化后的数据
     缺陷序号 1 2 3 4 5 失效间隔时间 (s) 702 1164 1080 3168 882 加速因子 0.036601 0.036601 0.036601 0.036601 0.036601 转化后的失效间隔时间 (s) 19179.8 31802.41 29507.39 86555.01 24097.719102360332 A CN 102360349 6 7 8
     缺陷序号 1 2 3 4 5 6 7 8
     失效间隔时间 (s) 666 180 2718 900 31482 68616 5508 32562 10512 13536 5400说明书287205.3 369826 14753715/18 页0.036601 0.036601 0.036601表 6 基于第二种畸化操作剖面测试得到的失效数据和转化后的数据加速因子 0.096383 0.096383 0.096383 0.079889 0.096383 0.079889 0.096383 0.096383 转化后的失效间隔时间 (s) 6909.946 1867.553 28200.05 11265.56 326635 858886.4 57147.12 337840.4通过软件可靠性评估工具, 选用合适的模型进行可靠性参数的评估, 可以得到如 表 7 所示的结果。
     表 7 不同畸化操作剖面下的软件可靠性增长结果对比
     所选模型 第一种畸化操作剖面 第二种畸化操作剖面 GO GO 失效率评估值 0.00000281 0.00000172 剔除缺陷数 8 8 总测试时间 (h) 10.12 39.62可见, 当利用畸化操作剖面使得失效率达到 10-6 数量级时, 利用方法 1 获得的第一 种畸化操作剖面下需要测试 10.12h, 而利用方法 2 获得的第二种畸化操作剖面下需要测试 39.62h。并把上述结果同传统操作剖面下的测试结果进行对比。利用传统操作剖面生成测 试用例, 运行测试用例得到的失效数据如表 8 所示。
     表 8 普通操作剖面的失效数据
     缺陷序号 1 2 3 4 5 6 7 8
     失效间隔时间 (s) 1231.2 9705.6 13960.8 3960 128181.6 305496 97477.2 120434.4利用表 8 的失效数据通过可靠性评估工具, 选用合适的模型进行可靠性参数的评 估, 可以得到如表 9 所示的结果。
     表 9 传统操作剖面下的可靠性增长测试结果
     模型 传统操作剖面
     GO 失效率 0.00000405 剔除缺陷数 8 总测试时间 (h) 189.01可见, 当利用传统操作剖面使得失效率达到 10-6 数量级时, 需要测试 189.01h, 是 利用本发明的第一种畸化操作剖面下所需测试时间的 18.68 倍, 是利用本发明的第二种畸 化操作剖面下所需测试时间的 4.77 倍。可见, 达到同样测试效果的时间远远大于基于本发 明的畸化操作剖面可靠性加速测试所需的时间。
     实施例 2 : 下面再通过某软件测试实验来对本发明提供的软件可靠性验证加速测 试方法和评估方法进行举例说明。为简化说明, 依然采用上面提及的软件 S。
     同样利用传统操作剖面构造方法、 畸化操作剖面构建方法 1、 方法 2 分别构造传统 操作剖面、 第一种畸化操作剖面、 第二种畸化操作剖面, 所构造的操作剖面如表 3 所示。
     分别利用无失效验证测试方案失效时间 MTTF θ1 = 27.78, 使用方风险 β = 0.1 和无失效验证测试方案 θ1 = 2.78 β = 0.1 进行软件可靠性验证测试。依据本发明针对 连续型软件提供的基于畸化操作剖面的可靠性验证加速测试和评估方法, 对于无失效验证测试方案 θ1 = 27.78 β = 0.1, 传统可靠性验证测试所需的时间是 63.96h, 根据第一种 畸化操作剖面的加速因子为 0.036601, 第二种畸化操作剖面的加速因子为 0.091144, 利用 公式 (31) 计算出各自所需的验证测试时间为 2.34h 和 5.83h, 即在第一种畸化操作剖面下 连续测试 2.34h 不发生失效就可以得到接收该软件的结论, 否则拒收该软件 ; 同理, 在第二 种畸化操作剖面下连续测试 5.83h 不发生失效就可以得到接收该软件的结论, 否则拒收该 软件。
     在验证测试方案确定后, 分别依据各自的操作剖面通过随机抽样得到测试用例, 利用测试用例运行软件得到失效数据, 如表 10 给出的是无失效验证测试方案 θ1 = 27.78 β = 0.1 下的测试结果, 可见在要求的验证测试时间内, 在第一种畸化操作剖面下和第二 种畸化操作剖面下都发现了失效, 因此结论为拒收该软件, 同理, 可以根据表 10 看出, 在传 统操作剖面下也发现了失效, 因此结论为拒收该软件, 即不同操作剖面下的测试结论相同, 均为拒收 ; 根据公式 (41), 可以得到各自剖面下的可靠性参数估计值, 此处得到的失效率 的估计值如表 10 所示, 可见畸化操作剖面下的可靠性估计值与传统操作剖面下的可靠性 参数估计值的误差很小。
     表 10 无失效验证测试方案 θ1 = 27.78 β = 0.1 结论为拒收情况的测试数据对 比
     同理, 得到如表 11 所示的对于无失效验证测试方案 θ1 = 2.78 β = 0.1 时的测 试结果, 传统可靠性验证测试所需的时间是 6.4h, 根据第一种畸化操作剖面的加速因子为 0.036601, 第二种畸化操作剖面的加速因子为 0.091144, 利用公式 (31) 计算出各自所需的 验证测试时间为 0.23h 和 0.58h, 即在第一种畸化操作剖面下连续测试 0.23h 不发生失效就 可以得到接收结论, 否则拒收 ; 在第二种畸化操作剖面下连续测试 0.58h 不发生失效就可 以得到接收结论, 否则拒收。
     在验证测试方案确定后, 分别依据各自的操作剖面通过随机抽样得到测试用例, 利用测试用例运行软件得到失效数据, 如表 11 给出的是无失效验证测试方案 θ1 = 2.78 β = 0.1 下的测试结果, 可见在要求的验证测试时间内, 在第一种畸化操作剖面下和第二 种畸化操作剖面下都没有发现失效, 因此结论为接收, 同理, 可以据表 11 看出, 在传统操作 剖面下也没有发现失效, 因此结论为接收, 即不同操作剖面下的测试结论相同, 均为接收 ; 根据公式 (43), 可以得到各自剖面下的可靠性参数估计值, 此处得到的失效率的估计值如 表 11 所示, 可见畸化操作剖面下的可靠性估计值与传统操作剖面下的可靠性参数估计值 得误差很小。
     表 11 无失效验证测试方案 θ1 = 2.78 β = 0.1 结论为接收情况的测试数据对比
     22102360332 A CN 102360349 操作剖面 传统操作剖面 第一种畸化操作剖面 第二种畸化操作剖面
     说需要的测试时间 (h) 6.4 0.23 0.58明书失效率的估计值 (/s) 0.00009994 0.0001018 0.000100518/18 页 误差 0 1.9% 0.6%结论 接收 接收 接收从上面给出的基于畸化操作剖面的软件可靠性增长加速测试和软件可靠性验证 加速测试的实例中可以看出, 基于畸化操作剖面的可靠性加速测试方法确实利用更少的测 试时间达到了同样的软件可靠性增长或验证测试目标, 即实现了测试效率的提高, 并在一 定置信度上保证了可靠性参数估计结果的相对稳定性。
     本发明实现了畸化操作剖面与传统 Musa 操作剖面之间的可靠性参数的无偏估 计, 并且按照传统软件可靠性测试的流程、 执行方法和软件可靠性评估方法, 类比提出了可 靠性加速测试的流程、 执行方法和软件可靠性评估方法, 使得软件可靠性加速测试方法与 传统可靠性测试方法之间建立起联系, 方便对测试过程的控制。其中可靠性加速测试中的 运行测试为黑盒测试, 因此本发明提供的加速测试方法同传统可靠性测试方法 1 样依然是 一种黑盒测试方法, 不需要增加对软件内部信息等白盒测试所需要的信息的了解。 最后应说明的是 : 以上实施例仅用以说明本发明而并非限制本发明所描述的技术 方案 ; 因此, 尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明, 但是, 本 领域的普通技术人员应该理解, 仍然可以对本发明进行修改或等同替换 ; 而一切不脱离本 发明的精神和范围的技术方案及其改进, 其均应涵盖在本发明的权利要求范围当中。
    

一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf_第1页
第1页 / 共26页
一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf_第2页
第2页 / 共26页
一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf_第3页
第3页 / 共26页
点击查看更多>>
资源描述

《一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf》由会员分享,可在线阅读,更多相关《一种软件可靠性加速测试与评估方法及其计算机辅助工具.pdf(26页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102360332A43申请公布日20120222CN102360332ACN102360332A21申请号201110314538622申请日20111017201110301319420110928CNG06F11/3620060171申请人北京航空航天大学地址100191北京市海淀区学院路37号72发明人李秋英陆民燕王健罗磊74专利代理机构北京永创新实专利事务所11121代理人周长琪54发明名称一种软件可靠性加速测试与评估方法及其计算机辅助工具57摘要本发明提出一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具,属于软件可靠性工程领域。所述方法提出构建。

2、一种畸化操作剖面,基于该剖面对被测软件进行软件可靠性增长与验证加速测试与评估。所述工具通过传统操作剖面构造模块构造传统操作剖面,进一步通过畸化操作剖面构造模块构造畸化操作剖面,根据用户选择执行可靠性验证加速测试模块和可靠性增长加速测试模块,由测试用例自动生成模块进行测试中的用例生成。本发明实现了畸化操作剖面与传统MUSA操作剖面之间的可靠性参数的无偏估计,具有较好的测试效率,相比传统测试方法,测试时间短,测试结果也准确,便于工程人员的理解和实际操作。66本国优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书18页附图3页CN102360349A1/4页。

3、21一种畸化操作剖面的构建方法,其特征在于,所述畸化操作剖面有两种实现方法1方法1首先确定普通操作和关键操作在畸化操作剖面的发生概率,具体是将普通操作的发生概率置为0,关键操作的发生概率依据下面式子得到其中,PCI代表第I个关键操作在传统操作剖面上的发生概率,K代表关键操作的个数,PCI代表第I个关键操作在畸化操作剖面上的发生概率,将各关键操作在传统操作剖面上的发生概率之和PC1PC2PCK作为整个畸化操作剖面加速因子,各关键操作的加速因子和整个畸化操作剖面的加速因子相同;所述的关键操作是指需要重点测试的操作,所述的普通操作是指不需要重点测试的操作;2方法2利用操作发生概率值对所有操作的发生概。

4、率值进行大小翻转,则第I个操作在畸化操作剖面上的发生概率为则整个畸化操作剖面的加速因子为第I个关键操作的加速因子I为其中,N表示操作的总个数,PMAX代表传统操作剖面中所有操作之中最大的发生概率,PI代表第I个操作在传统操作剖面上的发生概率,PI代表第I个操作在畸化操作剖面上的发生概率。2基于权利要求1所述的方法构建的畸化操作剖面的软件可靠性增长加速测试与评估方法,其特征在于,具体通过以下步骤实现步骤一、构造畸化操作剖面,确定各操作的加速因子和整个畸化操作剖面的加速因子;步骤二、根据所构造的畸化操作剖面进行随机抽样生成测试用例;步骤三、判断被测软件为离散型软件还是连续型软件,若是离散型软件,则。

5、执行步骤四,若是连续型软件,则执行步骤五;步骤四、构建软件测试环境,执行步骤二生成的测试用例,收集失效间隔用例数,然后确定引起失效的输入所对应的操作,并利用该操作的加速因子进行失效用例数的转化处理,所述的转化处理具体是用收集到的失效间隔用例数除以对应操作的加速因子,得到的数据就是转化处理后的数据;本步骤执行完毕后执行步骤六;步骤五、构建软件测试环境,执行步骤二生成的测试用例,收集失效间隔时间,然后确定引起失效的输入所对应的操作,并利用该操作的加速因子进行失效间隔时间的转化处理,所述的转化处理具体是用收集到的失效间隔时间除以对应操作的加速因子,得到的数权利要求书CN102360332ACN102。

6、360349A2/4页3据就是转化处理后的数据;本步骤执行完毕后执行步骤六;步骤六、选择适当的软件可靠性增长模型,进行可靠性参数的估计;步骤七、判断此时被测软件是否满足规定的可靠性要求,若是,则停止测试和评估,结束该方法,若否,转步骤二执行。3基于权利要求1所述的方法构建的畸化操作剖面的软件可靠性验证加速测试与评估方法,其特征在于,具体包括如下步骤步骤1、构造畸化操作剖面,并确定整个剖面的加速因子;步骤2、确定被测软件的测试量;步骤3、根据步骤2确定的测试量,并基于步骤1生成的畸化操作剖面,生成可靠性测试用例,执行生成的测试用例,收集失效信息;步骤4、结合验证测试方案和收集的失效信息,得到接收。

7、软件或拒收软件的结论;步骤5、根据实际的实验结果,给出当前的软件可靠性参数的评估结果。4根据权利要求3所述的基于畸化操作剖面的软件可靠性验证加速测试与评估方法,其特征在于,步骤2中所述的测试量,具体是1被测软件为离散型软件,对于定数结尾测试方案和无失效验证测试方案事先确定验证加速测试所需的测试用例量,对于无失效验证测试方案,确定所需的测试用例量其中,表示对取整,FU表示失效概率的上限值,代表显著性水平;2被测软件是连续型软件,对于定时结尾测试方案和无失效验证测试方案事先确定验证加速测试所需的连续执行时间,对于无失效验证测试方案,确定所需的连续执行时间TT,其中,T代表在传统操作剖面下需要执行的。

8、测试时间,代表整个畸化操作剖面的加速因子。5根据权利要求1或3所述的基于畸化操作剖面的软件可靠性验证加速测试与评估方法,其特征在于,步骤5中所述的软件可靠性参数的评估结果,具体是1针对离散型软件,评估结果是指失效概率或成功率,在采用方法1不包含普通操作所构建的畸化操作剖面时,被测软件的失效概率点估计值F为其中,表示整个畸化操作剖面的加速因子,N为畸化操作剖面下的测试用例中发生失效的总个数,N为畸化操作剖面下总的测试用例数目;被测软件的成功率为P1F;对应得到失效概率的区间估计如下F的置信水平为1的置信下限FL和置信上限FU分别为式6中V12NN1,V22N;式7中V12NN,V22N1;权利要。

9、求书CN102360332ACN102360349A3/4页4由式6和式7得到成功率P的置信水平为1的置信下限PL和置信上限PU分别为式8中V12NN,V22N1,式9中V12NN1,V22N;式6式9中的F1V2,V1表示F分布值;在采用方法2包含所有操作所构建的畸化操作剖面时,被测软件的失效概率点估计值F为其中,PI为传统操作剖面中操作OI的发生概率,N表示操作的总个数,NI为落入操作OI中的测试用例中发生失效的用例数目,NI为落入操作OI中的测试用例的总数目;2针对连续型软件,评估结果是指失效率,在采用方法1不包含普通操作所构建的畸化操作剖面时,被测软件的失效率UPP为UPPUPP11其。

10、中,代表显著性水平,是卡方分布,用来评估失效率的上限,T为在畸化操作剖面上的测试时间,N为畸化操作剖面下的测试用例中发生失效的总个数;在采用方法2包含所有操作所构建的畸化操作剖面时,被测软件的失效率为2UPP。6根据上述任一所述的权利要求的一种基于畸化操作剖面的软件可靠性加速测试与评估的计算机辅助工具,其特征在于,包括传统操作剖面构造模块、畸化操作剖面构造模块、测试用例自动生成模块、可靠性验证加速测试模块和可靠性增长加速测试模块;所述的传统操作剖面构造模块接收用户输入操作模式信息和操作信息,建立传统操作剖面,并将所建立的操作剖面信息数据包括操作概率、变量类型和取值范围,传送给畸化操作剖面构造模。

11、块;所述的畸化操作剖面构造模块根据用户对畸化操作剖面的构造方法的选择,生成不包含普通操作的第一种畸化操作剖面或者包含所有操作的第二种畸化操作剖面,并保存各操作的加速因子和整个畸化操作剖面的加速因子;所述的测试用例自动生成模块接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、变量类型和取值范围,结合接收到的可靠性验证加速测试模块输入的测试量和验证测试方案生成测试用例,或者结合接收到的可靠性增长加速测试模块输入的增长测试方案生成测试用例,并将测试用例输出给待测软件。所述的可靠性验证加速测试模块,接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化。

12、操作剖面上的操作概率、变量类型、取值范围以及加速因子,实现如下具体功能首先根据用户输入的验证测试指标为被测试的离散型软件或连续型软件生权利要求书CN102360332ACN102360349A4/4页5成验证测试方案,并确定测试量,将生成的测试量和验证测试方案输出给测试用例自动生成模块,然后接收用户在所构建的软件测试环境中运行测试软件执行测试用例所收集的失效数据,结合验证测试方案,决定接收或拒绝接收该被测软件,并根据实验结果得到当前的软件可靠性参数的评估结果;所述的可靠性增长加速测试模块,接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、变量类型、取值范围。

13、以及加速因子,实现如下具体功能首先根据用户输入的增长测试指标为被测试的离散型软件或连续型软件生成增长测试方案,将增长测试方案输出给测试用例自动生成模块,接收用户在所构建的软件测试环境中运行测试软件执行测试用例所收集的失效数据,确定引起失效的输入所对应的操作,利用该操作的加速因子进行失效数据的转化处理,并将测试结果的数据转化结果进行输出。7根据权利要求6所述的一种基于畸化操作剖面的软件可靠性加速测试与评估的计算机辅助工具,其特征在于,所述的传统操作剖面构造模块采用MUSA操作剖面的构造方法来构造传统操作剖面。权利要求书CN102360332ACN102360349A1/18页6一种软件可靠性加速。

14、测试与评估方法及其计算机辅助工具技术领域0001本发明属于软件可靠性工程领域,尤其涉及软件可靠性测试和评估领域,具体地说,是指一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具。背景技术0002软件可靠性测试对于软件的质量保证具有极其重要的意义,一方面需要通过软件可靠性增长测试不断排除对软件可靠性具有重要影响的软件缺陷,实现软件可靠性水平的不断增长以满足用户对软件可靠性的要求;另一方面则需要通过软件可靠性验证测试来判断软件是否已经达到要求的可靠性水平,进而决定软件能否接收或者发布。0003但目前,软件可靠性测试的应用并不理想,在传统可靠性测试理论和方法指导下的数量庞大的测试用。

15、例是导致其裹足不前的一个重要原因,对于高可靠软件来说,这样的问题尤为突出,BUTLER曾认为利用传统的软件可靠性验证测试方法不可能完成对高可靠软件的评估要求。如何提高传统软件可靠性测试的效率,加速软件可靠性测试的进程,在有限的时间和资源消耗的条件下实现相同的可靠性测试目标,即实现软件可靠性加速测试,成为摆在软件可靠性领域研究人员面前的一个热点和难点问题。0004当前传统的可靠性测试及评估方法主要有两种,一种是基于马尔可夫使用模型的统计测试方法,另一种是基于MUSA操作剖面的可靠性测试方法。上述两种方法的基本思想都是基于统计学的基本原理,即根据软件的实际使用情况的统计规律的描述,对软件进行随机测。

16、试,利用失效数据进行软件可靠性评估。上述特点也决定了软件可靠性测试过程时间长、费用高、资源耗费大,导致软件可靠性测试的效率低下。0005HHECHT分别于1993年在其论文RARECONDITIONSANIMPORTANTCAUSEOFFAILURES和1994年在其论文RARECONDITIONSANDTHEIREFFECTONSOFTWAREFAILURES中通过收集到的大量的数据,总结出高可靠软件失效的一个重大原因,即在高可靠软件中,小概率事件的失效是导致系统失效的主要原因,这一数据的发布和原因分析为后续一系列以重要度抽样为加速机理的方法的提出提供了依据。BCUKIC、HALAM、DTA。

17、NG等人均在HHECHT数据的基础上,提出了基于重要度抽样的思想,对小概率事件的发生概率进行提升,对重要度抽样原理进行了描述,并在基于MARKOV链构建操作剖面的软件上进行了实验。以上都是基于重要度原理对软件可靠性加速方法进行了非常好的诠释,但均以MARKOV使用模型作为阐述对象,且基本上都是在假设软件出现失效不剔除软件缺陷、从而保证软件失效概率或失效率不变,即以软件可靠性验证测试为研究对象,而对于软件可靠性增长加速测试没有进行阐述。因此与目前软件可靠性测试的两种类型结合不紧密,并且由于MARKOV链本身构建的复杂性,影响了其在实践中的应用。因此,如何在以MUSA操作剖面为基础的情况下研究软件。

18、可靠性加速测试,且对软件可靠性验证加速测试和软件可靠性增长加速测试进行全面的研究和考虑,具有重要的研究意义和应用价值。发明内容说明书CN102360332ACN102360349A2/18页70006本发明为了解决基于传统MUSA操作剖面的软件可靠性测试效率低的问题,提供了一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具。0007本发明提供的畸化操作剖面的构建方法,分以下两种0008方法1将普通操作的发生概率置0,关键操作的发生概率之和作为加速因子。所述的关键操作是指需要重点测试的操作,所述的普通操作是指不需要重点测试的操作。0009方法2利用操作发生概率值对所有操作的发生。

19、概率值进行大小翻转。0010本发明的一种基于畸化操作剖面的软件可靠性增长加速测试与评估方法,具体步骤为0011步骤一、构造畸化操作剖面,确定各操作的加速因子和整个畸化操作剖面的加速因子;0012步骤二、根据所构造的畸化操作剖面进行随机抽样生成测试用例;0013步骤三、判断被测软件为离散型软件还是连续型软件,若是离散型软件,则执行步骤四,若是连续型软件,则执行步骤五;0014步骤四、构建软件测试环境,执行步骤二生成的测试用例,收集失效间隔用例数,然后确定引起失效的输入所对应的操作,并利用所确定的操作的加速因子进行失效用例数的转化处理;本步骤执行完毕后执行步骤六;0015步骤五、构建软件测试环境,。

20、执行步骤二生成的测试用例,收集失效间隔时间数据,然后确定引起失效的输入所对应的操作,并利用所确定的操作的加速因子进行失效间隔时间的转化处理;本步骤执行完毕后执行步骤六;0016步骤六、选择适当的软件可靠性增长模型,进行可靠性参数的估计;0017步骤七、判断此时被测软件是否满足规定的可靠性要求,若是,则停止测试,若否,转步骤二执行。0018本发明的一种基于畸化操作剖面的软件可靠性验证加速测试与评估方法,具体步骤为0019步骤1、构造畸化操作剖面,并确定整个剖面的加速因子;0020步骤2、确定被测软件的测试量0021若被测软件为离散型软件,对于定数结尾测试方案和无失效验证测试方案可以事先确定加速测。

21、试所需的测试用例量,例如对于无失效验证测试方案可以确定加速测试所需的测试用例量其中,表示对取整,FU表示失效概率的上限值,代表显著性水平;0022若被测软件是连续型软件,对于定时结尾测试方案和无失效验证测试方案可以事先确定加速测试所需的连续执行时间,例如对于无失效验证测试方案可以确定加速测试所需的连续执行时间TT,其中,T代表在传统操作剖面下需要执行的测试时间,代表整个畸化操作剖面的加速因子;0023步骤3、根据步骤2确定的测试量,并基于步骤1生成的畸化操作剖面,生成测试用例,执行生成的测试用例,收集失效信息;0024步骤4、结合验证测试方案和实验结果,得到接收或拒收结论;0025步骤5、根据。

22、实际的实验结果,给出当前的软件可靠性参数的评估结果。说明书CN102360332ACN102360349A3/18页80026本发明的一种实现上述方法的计算机辅助工具,包括传统操作剖面构造模块、畸化操作剖面构造模块、测试用例自动生成模块、可靠性验证加速测试模块和可靠性增长加速测试模块。0027传统操作剖面构造模块接收用户输入操作模式信息和操作信息,建立传统操作剖面,并将所建立的操作剖面信息数据包括操作概率、变量类型和取值范围,传送给畸化操作剖面构造模块;畸化操作剖面构造模块根据用户对畸化操作剖面的构造方法的选择,生成不包含普通操作的第一种畸化操作剖面或者包含所有操作的第二种畸化操作剖面,并保存。

23、各操作的加速因子和整个畸化操作剖面的加速因子。测试用例自动生成模块接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、变量类型和取值范围,结合接收到的可靠性验证加速测试模块输入的测试量和验证测试方案生成测试用例,或者结合接收到的可靠性增长加速测试模块输入的增长测试方案生成测试用例,并将测试用例输出给待测软件。可靠性验证加速测试模块,接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、变量类型、取值范围以及加速因子,实现如下具体功能首先根据用户输入的验证测试指标为被测试的离散型软件或连续型软件生成验证测试方案,并确定测试量,。

24、将生成的测试量和验证测试方案输出给测试用例自动生成模块,然后接收用户在所构建的软件测试环境中运行测试软件执行测试用例所收集的失效数据,结合验证测试方案,决定接收或拒绝接收该被测软件,并根据实验结果得到当前的软件可靠性参数的评估结果。可靠性增长加速测试模块,接收畸化操作剖面构造模块发生过来的畸化操作剖面的信息数据包括在畸化操作剖面上的操作概率、变量类型、取值范围以及加速因子,实现如下具体功能首先根据用户输入的增长测试指标为被测试的离散型软件或连续型软件生成增长测试方案,将增长测试方案输出给测试用例自动生成模块,接收用户在所构建的软件测试环境中运行测试软件执行测试用例所收集的失效数据,确定引起失效。

25、的输入所对应的操作,利用该操作的加速因子进行失效数据的转化处理,并将测试结果的数据转化结果进行输出。0028本发明与现有技术相比,具有明显的优势和有益效果00291本发明提出的软件可靠性加速测试方法和评估方法,是基于传统操作剖面基础上生成的畸化操作剖面展开的,解决了以操作剖面生成测试用例方面的可靠性加速测试问题,而且从原理、方案、执行过程、结果评估全过程对加速测试方法进行了覆盖,并围绕可靠性验证和增长两种可靠性测试类型展开,实现了对软件的可靠性测试,完全覆盖了软件可靠性测试过程,具有重要的指导意义。00302本发明能够利用原有的可靠性测试方面的理论和成果,例如软件可靠性增长测试模型,通过失效数。

26、据转化,实现加速测试与传统模型的对接以及在传统验证测试方案基础上的改进,这些都使得本发明提出的方法与现有的研究成果实现了很好的延续,而不是完全抛弃原有的研究成果的重头研究。00313通过实例应用,本发明具有较好的测试效率,相比传统测试技术,测试时间短,测试结果也准确,便于工程人员的理解和实际操作。附图说明0032图1为本发明的软件可靠性增长加速测试和评估方法的流程示意图;说明书CN102360332ACN102360349A4/18页90033图2为软件的操作剖面及缺陷空间的表达示意图;0034图3为本发明的软件可靠性验证加速测试和评估方法的流程示意图;0035图4为本发明的计算机辅助工具的模。

27、块结构图。0036其中,00371传统操作剖面构造模块,2畸化操作剖面构造模块,3测试用例自动生成模块,4可靠性验证加速测试模块,5可靠性增长加速测试模块。具体实施方式0038以下结合附图和实施例对本发明进行详细说明。0039本发明的畸化操作剖面的构建方法有两种,下面对两种方法具体说明。0040方法1将普通操作的发生概率置为0,将关键操作的发生概率之和作为加速因子。具体为将需要重点测试的操作作为关键操作,不需要重点测试的操作作为普通操作,设未发现的对可靠性有重大影响的缺陷多存在于关键操作中。对于关键操作与普通操作的划分,一种方法是从小概率事件入手,原因如下1小概率操作在传统测试阶段中由于自身发。

28、生概率较低,予以分配的测试用例较少,因此错误暴露相对较晚或者还没有暴露完全;2很多对软件持续运行起着重大作用的操作,如失效恢复、异常处理等操作,都属于小概率操作;3虽然关键操作主要存在于小概率操作中,但并非所有的小概率操作都属于关键操作,某些操作虽然发生概率不高,但对整体软件功能的实现无直接影响,也不列入关键操作之中。在方法1中,令畸化操作剖面中只包含关键操作,也就是设未发现的缺陷主要存在于关键操作中,因此可以忽略普通操作的影响,然后按照等比例提高和归一化的方法来实现操作概率的重新分配,则有00410042其中,K代表关键操作的个数,PCI代表第I个关键操作在传统操作剖面上的发生概率,PCI代。

29、表第I个关键操作在畸化操作剖面上的发生概率,PC1PC2PCK为传统操作剖面上的关键操作之和。0043因此,剖面的加速因子为0044PC1PC2PCK20045第I个关键操作的加速因子I为0046IPC1PC2PCK30047即任意关键操作的加速因子均同于整个剖面的加速因子。0048方法2利用操作发生概率值对所有操作的发生概率值进行大小翻转。具体为00490050式中,PMAX代表传统操作剖面中所有操作之中的最大发生概率,PI代表传统操作剖面上第I个操作的发生概率,PI代表畸化操作剖面上第I个操作的发生概率,N表示传统操作剖面上的操作的个数,畸化操作剖面上的操作个数比传统操作剖面上的操作个数少。

30、1个。说明书CN102360332ACN102360349A5/18页100051此时,整个剖面的加速因子为00520053第I个关键操作的加速因子I为00540055显然,方法1的运用需要具备较丰富的经验信息或具有一定的先验信息,并且具有较高的信心,认为残存的、对可靠性具有较大影响的缺陷只存在于小概率和指定的关键操作中,方法本身具有一定的风险性。当不具备这样的先验信息时,优选采用方法2。既然前期的软件测试中已经对普通操作进行了比较充分的测试,因此大概率的操作已经得到了较充分的测试,此时利用最大操作发生概率值实现对所有操作的发生概率值的大小翻转,这样畸化操作剖面中不仅包含关键操作,也包含普通操。

31、作,能够弥补方法1中确定关键操作时的主观性,实现对所有操作的补偿性测试。0056基于本发明提出的畸化操作剖面,本发明提供一种基于畸化操作剖面的软件可靠性加速测试与评估方法及其计算机辅助工具。软件可靠性加速测试与评估方法分别针对软件可靠性增长测试和验证测试两种类型展开,每一种又分别针对离散型软件和连续型软件,即具体包含以下4种方法1基于畸化操作剖面的离散型软件可靠性增长加速测试与评估方法;2基于畸化操作剖面的连续型软件可靠性增长加速测试与评估方法;3基于畸化操作剖面的离散型软件可靠性验证加速测试与评估方法;4基于畸化操作剖面的连续型软件可靠性验证加速测试与评估方法。具体分为1软件可靠性增长加速测。

32、试与评估方法和2软件可靠性验证加速测试与评估方法分别进行具体说明。0057如图1所示,本发明提供的基于畸化操作剖面的软件可靠性增长加速测试与评估方法,具体步骤如下0058步骤一、构造畸化操作剖面,确定各操作的加速因子和整个畸化操作剖面的加速因子。具体为首先按照传统的可靠性测试及评估方法中操作剖面的构造,例如采用MUSA操作剖面的构造方式,构造传统操作剖面,然后依据上述构造畸化操作剖面的方法1或者方法2,构造畸化操作剖面,并得到各操作的加速因子和整个畸化操作剖面的加速因子。0059步骤二、根据步骤一构造的畸化操作剖面进行随机抽样生成测试用例,具体过程为首先确定被测软件的操作中每个输入变量的具体值。

33、,通过抽取操作和抽取各输入变量的取值这两个步骤的抽样,生成测试用例。0060步骤三、判断被测软件为离散型软件还是连续型软件,若是离散型软件,则执行步骤四,若是连续型软件,则执行步骤五。0061步骤四、根据被测软件特点和可靠性测试要求搭建可靠性测试环境,在可靠性测试环境中运行软件,执行步骤二中生成的测试用例,并收集记录失效数据。针对离散型软件,收集的失效数据就为失效间隔用例数。0062然后确定引起失效的输入所对应的操作,并利用所确定的操作的加速因子进行失效用例数的转化处理,针对离散型软件,就用收集到的失效间隔用例数乘以确定的对应操作的加速因子,得到的数据就是转化处理后的数据。本步骤执行完毕后执行。

34、步骤六。说明书CN102360332ACN102360349A6/18页110063针对离散型软件,本发明提供的基于畸化操作剖面的可靠性增长加速测试的原理如下0064假设为操作OI中会引发软件失效的某一缺陷,这样的缺陷还有、等,如图2所示,其中,会导致缺陷被触发的输入域用S来表示,用|S|表示输入域S中所含输入数据的个数,称为S的模。因为在可靠性增长测试过程中,每一次失效都是由某一个缺陷引起的,且在增长测试过程中,缺陷一旦被发现就立即被排除,因此,每一个缺陷导致的失效只会发生一次,并且假设缺陷之间彼此独立,因此,在传统操作剖面下,对于离散型软件来说,当执行了N个测试用例,发生了一次失效时,此处。

35、设该失效是由缺陷引起的,则由缺陷引起的软件失效的概率PF可以表示为00650066式中,PI是操作OI在传统操作剖面中的发生概率,|S|表示会导致缺陷被触发的输入域S中所含输入数据的个数,表示操作OI对应的输入域中所含输入数据的个数。0067实际测试中,当测试了N个用例发生了一次由于缺陷引起的失效,以此作为式7的估计值,则有00680069联立上面两式,则有00700071同理,在畸化操作剖面下,也有下式存在00720073虽然操作QI在传统操作剖面和本发明的畸化操作剖面下的发生概率发生了变化,但该操作对应的输入域不变,即因此有0074PI/PIN/N110075即有0076NNPI/PIN/。

36、I120077也就是说,畸化操作剖面下测试N个用例发现一次失效,相当于传统操作剖面下测试个用例发现一次失效。0078步骤五、根据被测软件特点和可靠性测试要求搭建可靠性测试环境,在可靠性测试环境中运行软件,执行步骤二中生成的测试用例,并收集记录失效数据。针对连续型软件,收集的失效数据为失效间隔时间。0079然后确定引起失效的输入所对应的操作,并利用所确定的操作的加速因子进行失效间隔时间的转化处理,针对连续型软件,用收集到的失效间隔时间乘以确定的对应操作的加速因子,得到的数据就是转化处理后的数据。本步骤执行完毕后执行步骤六。0080针对连续型软件,本发明提供的基于畸化操作剖面的可靠性增长加速测试的。

37、原理说明书CN102360332ACN102360349A7/18页12如下0081设第I个缺陷使软件出故障的概率为PI,设该缺陷为,不失一般性,有PIPF,PF为由缺陷引起的软件失效的概率,针对连续型软件,式7同样适用。设软件在单位时间单位时间可以是分、时、天、周等等内执行次任务,即任务时间为K,则单位时间第I个缺陷使软件出现故障的概率I为0082IPI/KPF/K130083软件在随机输入条件下投入运行,到出现失效的时间称为失效前时间TIMETOFAILURE,该失效前时间是一个随机变量,其期望值为平均失效前时间MEANTIMETOFAILURE,简称MTTF,记作。利用传统操作剖面下测试。

38、了T时间发生了一次由于缺陷引起的失效,来作为式13的估计值,则有00840085则有PF/K1/T150086即有0087同理,在畸化操作剖面下,测试了T时间发生了一次由于缺陷引起的失效,有下式存在00880089虽然传统操作剖面和畸化操作剖面下操作QI的发生概率发生了变化,但该操作对应的输入域不变,即因此有0090PI/PIT/T180091即有TPIT/PIT/I190092也就是说,畸化操作剖面下测试T时间发现一次失效,相当于传统操作剖面下测试时间发现一次失效。0093步骤六、利用适合的软件可靠性增长模型进行可靠性参数的估计。一般,针对离散型软件,可靠性增长模型推荐选择相应的离散型NHP。

39、P模型进行可靠性参数的估计;针对连续型软件,可靠性增长模型可以从GO、MO等连续型NHPP模型中选择,进行可靠性参数的估计。0094步骤七、判断此时被测软件是否满足规定的可靠性要求,如果满足规定的可靠性要求,则停止测试;否则转步骤二执行,根据步骤一中构造的畸化操作剖面追加生成测试用例,重复步骤二到步骤七,直至可靠性参数的估计值满足规定的可靠性要求时停止测试。0095本发明提供的基于畸化操作剖面的软件可靠性验证加速测试的原理为0096软件可靠性验证测试的特点是,在软件测试的过程中,当发生失效时,不对引发失效的软件缺陷进行剔除,同理,在畸化操作剖面下的软件可靠性验证加速测试也不会进行软件缺陷的剔除。

40、,因此,希望通过加速测试,能够在畸化操作剖面下得到同传统操作剖面一致的对软件失效概率/失效率的无偏估计。按照传统操作剖面的定义,软件的输入空间D说明书CN102360332ACN102360349A8/18页13可以表示成0097DX1,X2,XNXIOOR1,I1,2,N,XIDI,PDIPI200098式中,XI表示取自输入域DI的输入数据,N表示传统操作剖面中的操作的个数,DI表示与传统操作剖面中的操作OI相对应的输入域,因此PDI等同于传统操作剖面中的操作OI的发生概率,即PDIPI。X是一个01分布的函数,且具有如下特征当软件在输入X上发生失效时,X取值为1;当软件在X上不发生失效时。

41、,X取值为0,所以X又被称为失效的指示函数。令YX,则软件的失效概率可以表示为随机变量的函数Y的数学期望,即失效概率F为00990100式中PXPI,当XDI时,且0101设QX是任何一个定义在D上的离散分布,且若PX0,则QX0,则01020103令YXX,QXPI,当XDI时,且则0104FEYEY230105即软件的失效概率表示为畸化操作剖面上的随机变量的函数的数学期望,则软件的失效概率可以通过随机变量的函数YXX的数学期望来获得,即在畸化操作剖面下,各个操作的发生概率由PI变成了PI,为了弥补在PI概率分布下分配测试用例的差异,引入加速因子进行无偏转化,在同样的测试用例条件下,通过概率。

42、分布QX的改变,对需关注的操作进行重点抽样,通过加速因子X完成Y与Y之间的无偏转化,进而完成对软件失效概率的无偏估计。0106如图3所示,本发明基于畸化操作剖面的软件可靠性验证加速测试与评估方法,具体步骤如下0107步骤1、构造畸化操作剖面,并确定整个剖面的加速因子。本步骤中采用本发明提出的畸化操作剖面的构造方法来实现。0108步骤2、确定被测软件的测试量,区分被测软件为离散型软件还是连续型软件两种情况。对于连续型软件,利用基于畸化操作剖面的连续型软件可靠性验证加速测试方法确定加速测试所需的连续执行时间;对于离散型软件,利用基于畸化操作剖面的离散型软件可靠性验证加速测试方法确定加速测试所需的测。

43、试用例量。0109步骤3、根据步骤2确定的测试量,并基于步骤1生成的畸化操作剖面,生成测试用例,执行测试用例,并收集失效信息。0110步骤4、结合验证测试方案中给出的接收、拒收的判据和实际测试中收集到的结果数据,能够得到接收或拒收结论。0111步骤5、根据实际收集到的结果数据,给出当前的软件可靠性参数的评估结果。针对离散型软件和连续型软件采用不用的可靠性评估方法进行软件可靠性参数评估。0112步骤2中所述的基于畸化操作剖面的离散型软件可靠性验证加速测试方法为说明书CN102360332ACN102360349A9/18页140113常见的离散型软件可靠性验证测试方案有定数截尾测试、序贯测试和无。

44、失效运行测试等。由于无失效运行测试方案适用于高可靠软件,因此本发明仅以无失效运行测试为例进行说明,方法原理可推广至其它类型的测试方案。0114一般认为,离散型软件失效是服从二项分布的,由于二项分布的共轭分布为BETAA,B函数,借鉴贝叶斯分布的思想,本发明中用BETAA,B函数作为离散型软件的先验分布,在下面式子中采用BA,B的形式来表示,根据置信度的要求,得到0115PFFU1240116式中FU表示失效概率的上限值。1是用户给出的置信度要求,通常取一个小于1的数,例如01、02等。0117失效概率F的概率密度函数为01180119式中R表示失效的数目,N表示测试用例数目,因此有012001。

45、21可知,在传统操作剖面下的需要的最少测试用例数目为01220123式中表示对取整。0124在加速条件下计算测试用例时,传统操作剖面下的测试用例数目N相当于畸化操作剖面下的测试用例数目因此将N替换为代入,即01250126可得在畸化操作剖面下所需的最少测试用例数目为01270128由于畸化操作剖面的加速因子1,由式27和式29可知,在畸化操作剖面条件下所需要的测试用例量小于普通操作剖面下所需要的测试用例量。0129步骤2中所述的基于畸化操作剖面的连续型软件可靠性验证加速测试方法为0130常见的连续型软件验证测试方案有定时截尾测试、序贯测试和无失效运行测试等。由于无失效运行测试适用于高可靠软件,。

46、本发明仅以无失效运行测试为例进行说明。0131对于连续型软件,一般是通过计算连续执行时间来实现验证测试的,由于连续型软件的失效次数是服从泊松分布的。同时,为了缩短测试时间,本发明借鉴贝叶斯分布的思想来实现,泊松分布的共轭先验分布为GAMMA分布,根据GAMMA分布和置信度等条件,可以有如下等式01320133式中A0,B0为固有的GAMMA分布参数,可以通过先验信息得到,T代表在传统操作说明书CN102360332ACN102360349A10/18页15剖面下需要执行的测试时间,为使用方风险,0表示失效率的上限值。0134在加速条件下计算需要执行的测试时间时,由于传统操作剖面下的测试时间T相。

47、当于畸化操作剖面下的测试时间因此,将T替换为代入,即0135TT310136计算出的T即为在畸化操作剖面下所需要的测试时间,由于畸化操作剖面的加速因子1,可知TT,即在畸化操作剖面条件下所需要的连续执行时间小于传统操作剖面下所需要的连续执行时间。0137本发明步骤5中所述的针对离散型软件可靠性验证加速测试的可靠性评估方法为0138离散型软件的可靠性评估是通过失效概率或成功率来完成的,畸化操作剖面下的失效概率点估计值F可以表示为01390140式中NI为落入操作OI中的测试用例中发生失效的用例数目,NI为落入操作OI中的测试用例的总数目。此外,如果设N为畸化操作剖面下的测试用例中发生失效的总的用。

48、例数,N为总的测试用例数目,则当利用本发明的方法1生成畸化操作剖面时,由32得被测软件失效概率的点估计为01410142因此,软件的成功率为0143P1F340144即在不包含普通操作的畸化操作剖面下,P便是整个软件的成功率的点估计值。0145若采用方法2生产畸化操作剖面,则有被测软件的失效概率的点估计01460147式中PI为传统操作剖面中操作OI的发生概率。0148但在包含普通操作的畸化操作剖面下,由于各个操作的加速因子I并不相同,因此失效概率满足式35。0149以下给出当利用本发明的方法1生成畸化操作剖面时的失效概率的区间估计。0150F的置信水平为1的置信下限FL和置信上限FU分别为0。

49、1510152式中V12NN1,V22N。01530154式中V12NN,V22N1。0155由式36、37可得成功率P的置信水平为1的置信下限PL和置信上限PU分别为说明书CN102360332ACN102360349A11/18页1601560157式中V12NN,V22N1,F1V2,V1表示F分布值。01580159式中V12NN1,V22N。0160当N0时,成功率P的单侧置信下限为01610162本发明步骤5中所述的针对连续型软件可靠性验证加速测试的可靠性评估方法为0163连续型软件的可靠性评估是通过失效率来完成的,本发明借鉴了下面的公式来评估失效率的上限值UPP01640165式中代表显著性水平1代表置信度,是卡方分布,可以用来评估失效率的上限,T为在畸化操作剖面上的测试时间。N为畸化操作剖面下的测试用例中发生失效的总个数。0166当。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1