什么是Goel-Okumoto(GO)模型()

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. 每当发生故障时, 立即消除引起故障的故障, 而不会在软件中引入任何新的故障。
【什么是Goel-Okumoto(GO)模型()】由于每个故障在导致故障后都得到了很好的修复, 因此在测试开始时软件中固有的故障数等于无限次测试后将出现的故障数。根据假设1, M(∞)遵循具有期望值N的泊松分布。因此, 与Jelinski Moranda模型中初始软件故障的固定数量但未知的实际数量μ0相比, N是初始软件故障的预期数量。
假设2指出时间t的失效强度为
dμ(t)/ dt =?[N-μ(t)]
就像Je??linski-Moranda模型一样, 故障强度是单个故障的恒定危险率与软件中剩余的预期故障数的乘积。但是, N本身是期望值。
穆萨的基本执行时间模型Musa的基本执行时间模型基于执行时间模型, 即建模期间花费的时间就是要建模的软件的实际CPU执行时间。该模型易于理解和应用, 并且其预测价值通常被认为是良好的。在对可靠性进行建模时, 模型的目标是失效强度。
假定故障强度随时间减小, 即, 随着(执行)时间的增加, 故障强度减小。该假设通常是正确的, 因为以下假设是关于软件测试活动的, 在此期间收集数据:在测试过程中, 如果观察到故障, 则检测到导致故障的故障, 并删除该故障。
即使可能无法成功执行特定的故障排除措施, 整体故障也可以减少软件中的故障。因此, 破坏强度降低。大多数其他模型都做出类似的假设, 这与实际观察结果一致。
在基本模型中, 考虑到每个故障都会导致相同的故障强度降低量。即, 故障强度随着故障次数而以恒定速率减小。在更复杂的Musa对数模型中, 减少量不假定为线性, 而是对数。
Musa的基本执行时间模型是1975年建立的, 它是第一个明确要求时间测量必须在执行被测应用程序中使用的实际CPU时间(简称为” 执行时间” t)中的模型。
尽管最初并不是像模型那样制定模型, 但可以通过三个特征对其进行分类:
  • 在无限时间内可以经历的故障数量是有限的。
  • 时间t注意到的故障数量的分布是泊松型的。
  • 失效强度在时间上的函数方法是指数的。
它与Goel-Okumoto模型共享这些方法, 并且两个模型在数学上是等效的。除了使用执行时间外, 不同之处还在于对每次故障的恒定危险率interpretation的解释。穆萨(Musa)用两种恒定方法分裂?, 即线性执行频率f和所谓的故障暴露率K:
dμ(t)/ dt = f K [N-μ(t)]
f可以计算为计算机的平均目标指令执行率r除以被测应用程序的源代码指令数ls乘以每个源代码指令的平均目标指令数Qx:f = r / ls Qx。
故障暴露率将故障速度f [N-μ(t)]与经历的故障强度相关联, 故障速度f [N-μ(t)](如果连续执行所有语句将通过代码的有缺陷部分的速度)。因此, 可以将其解释为在程序的一次线性执行过程中代码中剩余的每个故障所发生的平均故障数。

    推荐阅读