Goel-Okumoto (GO) 模型

2024年8月28日 | 阅读 4 分钟

Goel 和 Okumoto 于 1979 年开发的模型基于以下假设

  1. 时间 t 经历的故障数量遵循均值函数 μ (t) 的泊松分布。 此均值方法具有边界条件 μ(0) = 0 且 Limt→∞μ(t) = N < ∞
  2. (t, t+Δt] 中发生的软件故障数量,其中 Δt → 0,与预期未检测到的错误数量 N - μ(t) 成正比。 比例常数为 ∅。
  3. 对于任何有限的时间集合 t1 < t2 < < tn,在每个不相交的区间 (0, t1 ),(t1, t2)... (tn-1,tn) 中发生的故障数量是独立的。
  4. 每当发生故障时,导致故障的错误会被立即删除,并且不会在软件中引入任何新的错误。

由于每个故障在导致故障后都得到了完美的修复,因此在测试开始时软件中固有的故障数量等于在无限量测试后将出现的故障数量。 根据假设 1,M (∞) 服从期望值为 N 的泊松分布。因此,与 Jelinski Moranda 模型中固定但未知的初始软件故障实际数量 μ0 相比,N 是初始软件故障的预期数量。

假设 2 表明,时间 t 的故障强度由下式给出

                dμ(t)/dt = ∅[N - μ(t)]

就像在 Jelinski-Moranda 模型中一样,故障强度是单个故障的恒定风险率与软件中剩余的预期故障数量的乘积。 但是,N 本身是一个期望值。

Musa 的基本执行时间模型

Musa 的基本执行时间模型基于执行时间模型,即建模期间所花费的时间是被建模软件的实际 CPU 执行时间。 该模型易于理解和应用,并且通常发现其预测值良好。 该模型的目标是在建模可靠性时关注故障强度。

它假设故障强度随时间降低,也就是说,随着(执行)时间的增加,故障强度会降低。 此假设通常是正确的,因为假设软件测试活动(在此期间收集数据)如下:在测试期间,如果观察到故障,则检测到导致该故障的错误,并且该错误被删除。

即使特定的错误删除操作可能不成功,但总体故障会导致软件中的错误减少。 因此,故障强度降低。 大多数其他模型都做出了类似的假设,这与实际观察结果一致。

在基本模型中,认为每个故障都会导致故障强度降低相同的量。 也就是说,故障强度随着故障数量的增加而以恒定的速率降低。 在更复杂的 Musa 的对数模型中,减少量不被假定为线性而是对数的。

Musa 的基本执行时间模型建立于 1975 年,是第一个明确要求时间测量以实际 CPU 时间(以简写形式命名为“执行时间”t)用于执行被测应用程序的模型。

尽管最初并非如此制定,但该模型可以通过三个特征进行分类

  • 在无限时间内可以经历的故障数量是有限的。
  • 时间 t 注意到的故障数量的分布属于泊松类型。
  • 故障强度在时间方面的函数方法是指数的。

它与 Goel-Okumoto 模型共享这些方法,并且这两个模型在数学上是等效的。 除了使用执行时间之外,一个区别在于解释每个故障的恒定风险率 ∅。 Musa 将 ∅ 分解为两种恒定方法,线性执行频率 f 和所谓的故障暴露率 K

                dμ(t)/ dt= f K [N - μ(t )]

f 可以计算为计算机的平均对象指令执行率 r 除以被测应用程序的源代码指令数 ls 乘以每个源代码指令的平均对象指令数,Qx : f = r / ls Qx

故障暴露率将故障速度 f [N - μ(t)](如果所有语句都连续执行,则代码中有缺陷的部分将被传递的速度)与所经历的故障强度相关联。 因此,它可以解释为在程序的一次线性执行期间,代码中剩余的每个故障发生的平均故障数量。