当前位置: 首页 > news >正文

【冗余的思想】蜕变测试(二)

蜕变测试里的冗余思想,在硬件领域的测试设计里也有体现。因为硬件测试的计算资源往往很有限,如果测试集规模比较大,就很难逐个验证所有用例的执行结果。通常的手段,是把所有用例的预期结果进行整合,提取出一些统计特征值,以此作为整个测试集的测试准绳。集成电路领域常用的特征值,有奇偶特征值、“1”计数特征值、“1”概率特征值等等。特征值里的冗余信息,是从多个用例里来的,本质上也是一种蜕变关系。

我们举一个“1”概率特征值的例子。电路领域广泛采用随机测试,也就是在被测电路的各个输入管脚上,同时输入互相独立的随机01序列。这种随机测试的规模一般都比较大,输入输出的序列很长,我们很难有足够的资源,去校验输出序列每一个周期的结果。这时候我们就可以利用特征值,来做蜕变测试。假设被测电路如下图所示:

随机测试给每个输入管脚输入1的概率都是p,那么输出f3=1的概率应该是p^3\left ( 1-\left ( 1-p \right )^2 \right )。这就是“1”概率特征值。用这个特征值来做测试准绳,我们就不需要去验证测试过程中每一个周期的输出,只需要把输出记录下来,最后统计一下输出f3=1的概率。

如果被测电路有问题,比如在f1的位置存在一个固定1缺陷,那么f3=1的实际概率就会是1-\left ( 1-p \right )^2,跟特征值相差很大。这样我们就检出了缺陷。

蜕变测试还有一种特别的实施方式,即在线蜕变测试。所谓“在线”,指的就是在产品实际使用过程中开展的测试活动。一般来说,做在线测试可能有两种目的:

  ① 第一种,是为测试本身服务,利用实际使用环境的真实性和复杂性,更好地完成质量评估或缺陷检出。比如A/B测试,就是以质量评估为目的的在线测试;

  ② 另一种,是为产品可靠性服务。比如自动驾驶系统里的电路,要具备“内建自测试”的能力,系统实际运行的时候,要能够随时执行内置的测试集,确定电路有没有问题,如果发现有问题 ,就切换到备系统。有一些质量标准更高的产品,还具备“错误自修正”的能力,也就是说,不仅能发现错误,还能自动改正错误。

怎么做到这一点呢?还是靠冗余的思想。就像我们介绍过的汉明码,利用冗余信息,不仅能检错,还能纠错。在线蜕变测试,也是用来干这个的。

来看一个例子。假设我们要测试一个计算三角函数值的程序:

这个程序是用在飞机配载平衡系统里的,质量要求很高,但是留给我们的测试周期很短,尽管我们综合采用了多种充分准则,开展了尽可能全面的测试,我们仍然无法保证程序的正确性。仍然有可能,在极个别的一些测试输入点上,程序计算结果是错误的。这时候,我们可以建议项目组,给程序打一个简单的补丁,利用在线蜕变测试这种技术,让程序具备错误自修正的能力。

具体怎么做的呢?假设程序要计算sin(x):

  ①第一步,生成一个随机数x1,然后取x2=x-x1,实际上就是把输入值x转变成两个随机数x1和x2的和;

  ②第二步,调用程序分别计算sin(x1)、sin(π/2 - x2)、sin(π/2 - x1)、sin(x2)

  ③第三步,计算初步自修正结果yc = sin(x1) * sin(π/2 - x2) + sin(π/2 - x1) * sin(x2)。根据蜕变关系MR4 = {<d, e>|sin(x1 + x2) = sin(x1) * sin(π/2 - x2) + sin(π/2 - x1) * sin(x2)},yc应该等于sin(x)。

  ④把第一步到第三步重复多次,取yc的众数作为最终的自修正结果。

为什么这样就能实现错误自修正呢?我们已经知道,错误只发生在一些极个别的测试输入点上。如果只算某一个点,确实可能会算错,但是如果算很多个点,其中绝大部分的计算结果就是正确的。通过反复利用这个蜕变关系,我们可以把一个点的计算转变成很多个点的计算。这相当于从很多个点上分别提取冗余信息,再把这些信息聚合到一起,让冗余信息多到足以揭示正确的结果。这就是在线蜕变测试的原理。

相关文章:

  • 混合并行技术在医疗AI领域的应用分析(代码版)
  • 未来生态映像:杭州的科技自然协奏曲
  • Spark RDD相关概念
  • 巧记英语四级单词 Unit2-下【晓艳老师版】
  • 【前端笔记】CSS预处理语言 LESS
  • Mujoco xml模型
  • AI 提示词不会写?试试 PromptIDE
  • Linux管道 有名管道(FIFO)工作机制全解:从理论到实践
  • java导出postgis空间数据几何对象shapefile文件
  • Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-04)
  • Qt中的鼠标事件
  • React七案例中
  • 函数指针数组的用途
  • 【现代深度学习技术】循环神经网络02:文本预处理
  • powerbi制作中国式复杂报表
  • Poission 时间点过程
  • 列表之链表_C
  • 三维空间中的离散曲线段匹配方法
  • 数据库学习
  • 程序化广告行业(73/89):买卖双方需求痛点及应对策略深度剖析
  • 怎么做个人网站/网络推广是做什么工作
  • .net 导航网站模板/品牌推广软文案例
  • 湖北网站建设多少钱/网络营销包括哪些
  • 认真做门户网站迎检工作/百度seo排名优化提高流量
  • 策划公司电话/seo搜索推广费用多少
  • 注册公司需要注意什么事项/站长工具seo源码