• 测试数据精准对比的思考


    一.前提

    现在流行敏捷开发,版本迭代也会更快,由于每次版本迭代都是一些小更改,因此对性能上的测试灵敏度要求也会更高,而性能在版本间迭代时总是在动态变化的,因此很难有一个基准值作为判断的参考,如果老大需要一些版本时性能迭代的变化数据,比如,版本之间启动速度变化,以及浏览器加载的性能提升范围等,由于概率事件,很难说性能真的上升或者下降了,因为一切都可以解释成这只是正态分布中的某一次可能值。

    然而,还是可以引入一些数学上的方法的。不过需要用到大学学过的概率论。

    一.抽象模型

    1.其实很多场景能抽象为以下模型来坐量化:随机抽取100组数据,其中n1组数据通过检验,100-n1组不通过检验,计算一个99%的置信区间,其中均值测试结果为通过的概率。

    已知这个模型,那我们需要什么呢,

    (1)判断数据通过或者不通过的标准是什么。

    • 因为我们其实是对比测试,我们不关心这个数据的具体值是多少,而是要知道他的一个变化,因此,我们可以引入两组测试各100组,假设叫A组(旧版本)跟B组(新版本)

    那么我们可以把A组的均值mean_a跟方差var_a求出来,当作总体的均值跟方差。然后判断标准是B组的100个值里,每一个值如果在(mean_a-3*sqrt(var_a),mean_a+3*sqrt(var_a))内,则判断数据为通过检验,如果在区间外,则判断不通过检验。

    (2)针对这100组数据做计算。

    • 由1,我们得到了一个伯努利分布(n,p)作为判断标准,这个标准可以用来判断B组的100个数据。
    • 因此由B组的伯努利分布的一些已知可以计算:

        样本均值:mean=(n1*p+(100-n1)*(1-p))/100,

        样本方差:var =(n1*(1-mean)^2+(100-n1)*(0-mean)^2)/(100-1) ,

        样本标准差:s=sqrt(var)

      根据中心极限定理,任何分布的均值都服从正态分布,因此

        抽样分布均值:mean_1=mean

        抽样分布标准差: s_1 = s/sqrt(100)

      因此样本均值服从(mean_1,s_1)的正态分布,通过查询正态分布z值表,可以知道样本在某个标准误(x)范围内(mean_1-x,mean_1+x)可以达到99%的可信度,证明:

      (1)测试是通过的,证明此项测试指标在迭代过程中有99%的可能没变化

      (2)测试不通过,代表此项测试指标在迭代过程中有变化。(具体如何变化,可以用t检验或者z检验)

    二.代码实现

      先挖坑,日后填。

  • 相关阅读:
    MOOC 浙江大学 面向对象程序设计-Java笔记(5)
    MOOC 浙江大学 面向对象程序设计-Java笔记(4)
    MOOC 浙江大学 面向对象程序设计-Java笔记(3)
    String类的学习
    MOOC 浙江大学 面向对象程序设计-Java笔记(2)
    MOOC 浙江大学 面向对象程序设计-Java 笔记(1)
    案例6-1.3 哥尼斯堡的“七桥问题” (25分)---C语言
    postfix&dovecot搭建邮件服务器
    Quaoar
    zico2靶机练习
  • 原文地址:https://www.cnblogs.com/alexkn/p/5174100.html
Copyright © 2020-2023  润新知