前言

日常开发测试可能会遇到这样一种情况,有一个接口或方法概率触发,那么需要多少次抽样落在一个什么区间内,才能断定是否按照设定概率进行呢?

本文将以二项分布作为研究手段,分两种情况求解此类问题的置信区间范围,并结合实际案例进行分析。

背景

某一天,测试同学在验证一个接口时遇到了一个问题。

该接口设定为50%概率触发,测试同学写了自动化脚本进行多次调用。

但是问题来了,他并不知道应该调用多少次,然后落在一个什么区间内才算测试通过。

极大的扩大样本容量,然后给一个模糊的范围边界确实能解决这个问题,但是测试同学并不满足于此,他要一个精确的数字

因此我只能满足他任性的要求,提笔拯救测试同学。

解题思路

在这种情况下,触发 or 不触发 此类概率问题可以看作一个二项分布,我们的目的在于经过一定量的样本测试之后判断测试出来的概率是否落在置信区间内

那么就需要考虑这几种极端情况:

1.概率太小

2.概率太大

3.样本数很小

4.样本数很大

在二项分布中,可以将样本数与事件概率综合起来考虑,合并为以下两种情况

(a) 概率比较正常或样本数较大 —— np > 5 and n(1-p) > 5

(b) 概率比较极端或样本数较小 —— np <= 5 or n(1-p) <= 5

(n :样本总数,p:概率)

二项分布的置信区间估计方法常用的有两种,一是正态分布近似方法,即 Normal Approximation Method;二是精确置信区间法,即 Clopper-Pearson Method。

对于这两种情况可分别应用这两种方法进行求解。

Normal Approximation Method

很容易可以想象出当样本数足够大的情况下,二项分布的曲线分布会愈发趋向于近似正态分布。

因此在情况a中适用于正态分布近似。

置信区间计算公式:

因此使用了正态分布近似,因此Z value用的也是正态分布的Z value。

p: 样本中所测得的事件发生概率

a: I类错误率

Z: Z value常量,可查表得知

n: 样本总数

该方法的优点在于简单易于理解,但是在极端情况中精度会很差。

Clopper-Pearson Method

在情况b中适用于精确置信区间法

置信区间计算公式(贼复杂,网上大多数贴的都是这个):

但是可以发现上述公式是基于Binomial Cumulative Distribution Function,可以通过Beta Distribution来计算,因此经过简化可得如下置信区间计算公式。

置信区间计算公式(经过简化):

n: 样本总数

k: 成功数量

a: I类错误率

BetaInv: 一个算法函数,完全不用理解具体细节,找个别人实现的直接调用即可(包括excel)

这样一来就简单的多了,我甚至可以拿excel解出来。

该方法的优点就在于可以处理极端情况,p是0或1的情况也阔以。

实际案例

案例一(正态分布近似法)

问题:一个50%概率的接口,测试50次,成功28次,判断是否正常。

p = 28/50 = 0.56

np = 0.56* 50 = 28 > 5

n(1-p) = 0.45 * 50 = 22 > 5

因此使用正态分布近似法。

置信度假设为95%,因此查表得知Z值为1.96

Z = 1.96

p = 28/50 = 0.56

n = 50

代入可得,置信区间为[0.56 - 0.14, 0.56 + 0.14]这个范围,因此0.5确实落入这个置信区间,所以可以暂时认为这个我这个接口没问题!

案例二(精确置信区间法)

问题:一个17%概率的接口,测试50次,成功3次,判断是否正常。

p = 3 / 50 = 0.06

np = 0.06* 50 = 3 < 5

适用于精确置信区间法。

假设置信度为95%

a = 0.05

n = 50

k = 3

使用Excel或其他方法

计算可得:

Pub = 0.1655

Plb = 0.0125

置信区间为[0.0125, 0.1655],所以17%概率的接口没有落在置信区间内,可以认为在95%置信度的情况下,该接口出现了问题。

总结

测试概率是测试过程中一个比较模棱两可的事情,如何进行概率事件的测试并有效的发现问题是非常必要的。

因此在上文中我主要将此类问题模拟成二项分布进行求解,求得置信区间从而进行较为准确的判断。

但是有一点要注意的是在上文两个案例中都是以95%置信度作为前提,实际上是存在发生I类错误的可能性,所以测出了问题只能说大概率可能出现了问题,而不能立马给一个绝对性的结论,这样是不科学的。

个人建议是根据统计学经验,先测个30+次,能用正态分布近似覆盖就尽量先使用正态分布近似。

如何测试概率性事件-二项分布置信区间相关推荐

  1. 【得物技术】如何测试概率性事件 - 二项分布置信区间

    前言  日常开发测试可能会遇到这样一种情况,有一个接口或方法概率触发,那么需要多少次抽样,落在一个什么区间内,才能断定是否按照设定概率进行呢?  本文将以二项分布作为研究手段,分两种情况求解此类问 ...

  2. 2021-03-17 RK3288 接PHILIPS 4K显示器HDMI开机概率性不显示的问题

    RK3288 接PHILIPS 4K显示器HDMI开机概率性不显示的问题 一.测试发现在philips显示器休眠的情况下,rk3288 开机后hmdi无法唤醒显示器.  cat /d/dw-hdmi/ ...

  3. MT6853/MT6873 视频彩铃概率性无图像

    [Description] 最近客户经常提问,使用CMCC测试会出现概率性下发视频彩铃无图像的情况. [SOLUTION] 归纳发现,当彩铃中心下发480*640分辨率的彩铃时,网络会将视频端口置为i ...

  4. Android App接入Facebook分享SDK,概率性无法启动Facebook客户端的问题分析

    问题来源 由于我司的android app产品主要是面向海外,因此,app中的分享功能接入facebook分享是必不可少的.最近在接入facebook android sdk进行分享时,发现一个非常奇 ...

  5. 王式安概率论与数理统计基础课手写笔记-第一章概率与事件-第二章随机变量及其分布

    写在前面:做题还是要做的,但是课本上基础理论不能忘,比如每章前言,告知本章研究的内容及研究的方法.走过的路都算数. 文章目录 第一章 概率与事件 第二章 随机变量及其分布 第一章 概率与事件 第二章 ...

  6. ios html 全选文本框,【前端】IOS input输入框按删除键删除字符,删除最后一个字符时,概率性出现光标前面多余一个字符...

    IOS input输入框按删除键删除字符,删除最后一个字符时,概率性出现光标前面多余一个字符,并且placeholder文字也能显示出来 回答 删除最后一个字符时延迟一毫秒 我用了vue,input[ ...

  7. Camera 驱动 读取摄像头ID失败问题、低温下Camera打开花屏或者读不到id、概率性读取不到id

    底层驱动读不到摄像头的ID,可以从以下几个方面做检查 首先检查硬件方面,多拿几个摄像头模组来做试验.因为会存在打样模组有问题的情况,在原理图上对清摄像头的各个脚是否都对应上了.模组是否都扣好等.这个是 ...

  8. DTI预处理及概率性纤维束追踪

    一.什么是DTI? 弥散张量成像(DTI)是在弥散加权成像(DWI)基础上发展而来的一种新的磁共振成像技术,它主要利用大脑中水分子弥散信息来成像.弥散张量成像(DTI)是在弥散加权成像基础上发展而来的 ...

  9. 待机时反复按Power键概率性重启-定位问题

    现象: 待机时反复按power键休眠会有概率性重启,概率 >= 50%,但连接USB线情况下不会出现,所有怀疑是系统进入休眠才发生了异常,取出mtklog看到有db产生,确实发生了KE(kern ...

最新文章

  1. python 2/3 joblib.dump() 和 joblib.load()
  2. 区块链浏览器_区块链FBI——如何用区块链浏览器追踪链上数据
  3. vscode regex previewer插件怎么用_分享五款开挂神器!助你效率倍增!做PPT怎么能不会用插件?...
  4. Windows Server 林功能级别详解
  5. java day59【 AOP 的相关概念[理解] 、 Spring 中的 AOP[掌握] 、 Spring 整合 Junit[掌握] 】...
  6. 个人作业——案例分析
  7. 如何知道一个exe或者dll是用什么语言编译的
  8. 自然语言处理(NLP):08-05 TextCNN短文本分类案例分享
  9. 火箭08-09赛程列表
  10. ide是什么,IDE是什么,ide,IDE
  11. 共阳极数码管显示0~9_《显示器件应用分析精粹》之(3)数码管静态显示
  12. 前后端分离使用Spring Boot + el-upload 完成图片上传
  13. 利用HTML完成用户注册界面设计,以及性别复选框、按钮链接跳转的实现
  14. HTML5前端开发入门之H系列标签,P标签和Hr标签
  15. python清华源 断流_V2Ray断流异常
  16. UE4 4.27像素流公网布置教程
  17. CST—电磁及EMC仿真工具
  18. TensorFlow进阶--实现学习率随迭代次数下降
  19. x3650 m5U盘安装Linux,x3650 m5 u盘安装win10u盘驱动修复失败怎么办
  20. 精算与金融建模行业解决方案白皮书,不要错过!

热门文章

  1. DSP芯片CSL的使用
  2. 机房收费系统总结之5——抽象工厂+反射+配置文件
  3. Python 网络爬虫:Selenium 好买基金网
  4. 对比学习 ——simsiam 代码解析。
  5. SpectralFormer: Rethinking Hyperspectral Image Classification with Transformers
  6. [演讲]北大鄂维南院士:智能时代意味着什么?
  7. 做个网站要多少钱,怎么收费的?
  8. 电磁波的加上Mur吸收边界条件的FDTD算法
  9. ASEMI整流二极管MUR60120PT并联电容有什么用
  10. OrCAD Capture CIS 怎样修改Title_Block