测试女巫紧跟时代脉搏之大数据分析系列之五总结篇

发表于:2021-2-22 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王平平    来源:51Testing软件测试网原创

  前言
  前四期我们学习了大数据分析的理论基础知识(第一期&第二期)以及给大家演示了如何将其应用到自己的工作中,为自己的工作增加价值(第三期&第四期),女巫在写这篇文章的时候正是2020年的圣诞节,魔幻般的2020终于就要接近尾声,女巫的大数据分析系列也快要接近尾声,其实这个系列也只是大数据分析的初阶篇,很多复杂的统计学理论,例如:假设检定,单边检定,双边检定等并没有涉及;因为担心会把大家的学习热情浇灭,所以希望尽量将一些较为简单的理论,重点在实践,希望大家学了这个系列,真的可以对自己的工作带来价值,课程的终点就是起点,因为大数据分析真的值得学习的内容太多了,还是那句话:路漫漫其修远兮,吾将上下而求索~~~~
  我这次先给大家展示一个非常有实际意义的分析方法:失败率分析,然后再帮助大家一起总结一下,我们这2020年学习的大数据分析的模式是什么,我们这个系列虽然是一个大数据分析的初阶课程,但是并不妨碍我们将其总结一个分析模式,应将其应用到我们的实际工作中。
  闲聊结束,让我们赶紧进入实战之旅吧!
  推论统计学之失败率
  为什么失败率对我们这样重要
  我们在实际工作中会遇到这样的情况:工程师在实验室测试的结果都是Pass,为什么到了工厂会Fail?有时是环境问题:即同样的待测物在研发阶段为Pass但是到工厂会Fail。
  往往出了这样的问题后,会造成额外的厘清问题的成本产生,我们有没有办法用数据分析的方式,尽量在RD端就能把这些问题cover住?
  我们再保证我们的产品符合spec的基础上,是不是可以计算一下,它小于spec或者大于spec的机率。
  如果这个机率比较大,工程师是不是可以再努力一下,让测试数据margin更大一些?以免到了工厂量产时会因为margin不大,加上一些环境等变异因素,最后导致测试结果Fail,而无法量产。
  失败率就可以帮助我们解决这个问题。
  累积分布(Cumulative Distribution)
  定义
  是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。一般以大写CDF标记,,与概率密度函数probability density function(小写pdf)相对。
  我们经常可以看到cdf以及pdf都是成对出现,我们看一下熟悉的minitab中也是将cdf和pdf成对出现,如下图1:
  它的函数如下图2:
  使用原理
  基于它的定义以及函数可以看出,它实际上计算的就是数据为常态分布的spec的左边的部分,如果我们要计算spec的下界的分布机率,即小于某个spec的机率如下图3:
  如果我们要计算spec的上界的分布机率,即大于某个spec的机率如下图4,如果计算上界需要1-%,因为它计算的永远是小于当前设定spec数值,左边分布的机率:
  代码实现
  画出Cumulative Distribution的chart。
  1.使用statsmodels模块+matploylib模块组合画图
  有一个好处,因为statsmodels中有ECDF函数供我们调用。
 from statsmodels.distributions.empirical_distribution import ECDF
import pandas as pd
import matplotlib.pyplot as plt
excel_data_1 = pd.read_excel('5GACLR.xlsx',sheet_name = 'N350150_aclr')
trace_aclr_1 = excel_data_1['Tx ACLR (dB)']
ecdf = ECDF(trace_aclr_1 )
plt.plot(ecdf.x,ecdf.y)
  运行结果如下图5:
  使用numpy模块+matploylib模块组合画图 画图所使用的x,y需要自己写算法即函数def ecdf。
  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  excel_data_1 = pd.read_excel('5GACLR.xlsx',sheet_name = 'N350150_aclr')
  trace_aclr_1 = excel_data_1['Tx ACLR (dB)']
  def ecdf(data):
  """Compute ECDF for a one-dimensional array of measurements."""
  # Number of data points: n
  n = len(data)
  # x-data for the ECDF: x
  x = np.sort(data)
  # y-data for the ECDF: y
  y = np.arange(1, n+1) / n
  return (x,y)
  a,b = ecdf(trace_aclr_1)
  plt.scatter(x=a,y=b)
  plt.xlabel("x",fontsize =16)
  plt.ylabel("y",fontsize=16)
  运行结果如下图6:
  使用scipy的norm的cdf计算小于某个数的机率。
  import numpy as np
  import pandas as pd
  from scipy.stats import norm
  import matplotlib.pyplot as plt
  excel_data_1 = pd.read_excel('5GACLR.xlsx',sheet_name = 'N350150_aclr')
  trace_aclr_1 = excel_data_1['Tx ACLR (dB)']
  mymean = trace_aclr_1.mean()
  std =trace_aclr_1.std()
  norm(mymean, std).cdf(33)
  运行结果如下:
  即小于33的机率是2.27%
  0.022710578250867305
  如果我们从开发阶段要求比较严格,不是达到spec.就万事大吉,而是还要继续分析,无法达到标准的机率,如果机率比较大,还是需要继续调整,确保量产万无一失,这样的工作模式一旦形成真的可以大大降低cost。
  总结
  激动人心的时刻终于来临了,我们完成了数据分析系列之后,终于可以尝试建立属于我们测试人自己的Pattern了!甚至可以Pattern会写到我们自己公司的系统中,给大家带来便利的统计学应用的服务!!



版权声明:本文出自《51测试天地》第六十期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号