案例:缺陷状态数据分析

          有网友询问如表1所示的原始数据如何分析,发现问题,我觉得很有代表性,试着分析进行了分析,供大家参考。

                      表1: 11个项目的缺陷状态原始数据

产品名称

未解决

设计如此

重复Bug

外部原因

已解决

无法重现

延期处理

不予解决

转为需求

总计

A产品

148

52

5

62

1701

20

14

8

8

2018

B产品

52

11

1

16

515

12

3

6

0

616

C产品

31

75

22

40

1621

37

38

103

33

2000

D产品

25

7

0

2

223

2

0

0

1

260

E产品

13

7

2

4

263

4

5

0

4

302

F产品

7

2

0

8

269

4

6

3

0

299

G产品

3

0

0

0

26

0

0

0

0

29

H产品

0

17

0

3

273

1

4

4

0

302

I产品

0

0

0

0

98

0

24

0

0

122

J产品

0

0

4

14

223

4

17

8

0

270

K产品

0

6

1

8

381

3

22

10

0

431

 

第1步:澄清数据的含义

问:设计如此是指设计缺陷吗?

答:设计如此包含了产品设计如此和技术设计如此。

 

问:B到J列的数据,没有包含的关系,是可以累加得到最后一列,对吧?

答:是的,B到J列没有包含关系。

 

问:这11个项目是已经完成的项目,还是当前正在进行的项目?

答:大部分是完成95%的项目。后面就是新的迭代了。

 

问:不予解决是什么意思?

答:不予解决就是接受这个问题存在。

 

问:你这个产品是项目级么?

答:产品级。

 

第2步:对数据做变换

            为了确保不同项目之间的数据具有可比性,将绝对的数值,转换为相对的数值。

           把每列与合计列相除得到缺陷状态的%,参见表2:

                                                                                      表2: 归一化的数据

产品名称

问题解决%

未解决%

设计%

重复bug%

外部原因%

无法重现%

延期处理%

不解决%

转为需求%

A产品

0.8429 

0.0733 

0.0258 

0.0025 

0.0307 

0.0099 

0.0069 

0.0040 

0.0040 

B产品

0.8360 

0.0844 

0.0179 

0.0016 

0.0260 

0.0195 

0.0049 

0.0097 

0.0000 

C产品

0.8105 

0.0155 

0.0375 

0.0110 

0.0200 

0.0185 

0.0190 

0.0515 

0.0165 

D产品

0.8577 

0.0962 

0.0269 

0.0000 

0.0077 

0.0077 

0.0000 

0.0000 

0.0038 

E产品

0.8709 

0.0430 

0.0232 

0.0066 

0.0132 

0.0132 

0.0166 

0.0000 

0.0132 

F产品

0.8997 

0.0234 

0.0067 

0.0000 

0.0268 

0.0134 

0.0201 

0.0100 

0.0000 

G产品

0.8966 

0.1034 

0.0000 

0.0000 

0.0000 

0.0000 

0.0000 

0.0000 

0.0000 

H产品

0.9040 

0.0000 

0.0563 

0.0000 

0.0099 

0.0033 

0.0132 

0.0132 

0.0000 

I产品

0.8033 

0.0000 

0.0000 

0.0000 

0.0000 

0.0000 

0.1967 

0.0000 

0.0000 

J产品

0.8259 

0.0000 

0.0000 

0.0148 

0.0519 

0.0148 

0.0630 

0.0296 

0.0000 

K产品

0.8840 

0.0000 

0.0139 

0.0023 

0.0186 

0.0070 

0.0510 

0.0232 

0.0000 

 

第3步 对数据进行横向或纵向对比分析

           该数据表中的产品是同时进行的项目,没有时间的先后顺序数据,所以不做纵行对比分析,可以进行横向对比分析,即对同一时间段的项目进行对比分析。比如可以对问题解决%进行对比分析。对这11个项目可以采用柱状图分析,分析时要先排序:

                                                                                      表3: 排序后的问题解决%

产品名称

问题解决%

I产品

0.8033 

C产品

0.8105 

J产品

0.8259 

B产品

0.8360 

A产品

0.8429 

D产品

0.8577 

E产品

0.8709 

K产品

0.8840 

G产品

0.8966 

F产品

0.8997 

H产品

0.9040 

 

                                                                      图1 问题解决%的柱状图

 

         对于上图,可以采用80-20的原则,取排名最靠后的2个产品进行原因分析,即为什么产品I或C这2个产品问题解决%那么低?这2个项目未必一定是离群点,只是最低而已。

         对于其他度量元依此类推,也可以画柱状图进行分析。

 

第4步 通过统计的方法识别离群点

         采用柱状图、条形图、饼图等是基于经验识别不合理的现象,但是未必很合理,有可能得到的结论是不科学的,此时我们可以借助统计的方法来识别离群点,即识别小概率事件,小概率事件发生的概率很小,是有别于正常事件的,是特殊原因造成的。

           对于本组数据,我们可以画箱线图来识别离群点。

 

                      图3 Minitab中问题解决%的箱线图

 

                             图4 Excel中问题解决%的箱线图

 

             对该度量元没有发现离群点,但是如果我们对其他度量元也进行分析:

 

                                                 图5 Minitab中对多个度量元进行箱线图分布分析

 

            则我们发现产品I的延期处理%是离群点,产品C和E的转为需求%是离群点,对这3个项目应该进行原因分析!是另类的产品!

            Minitab是专业的统计分析工具,简单易用,比EXCEL功能强大。

 

第5步 分析数据之间的相关性

           分析相关性是为了识别因果规律,原因决定了结果。

           可以通过散点图观察两个变量之间的相关性,对于本组数据,如果我们画出无法重现%与外部原因%的散点图,得到图6:

 

                                                           图6: 无法重现% 与 外部原因% 的散点图

           观察上图,可以发现随着外部原因%的增加,无法重现%也是增加的,二者是正相关的!意味着很可能二者之间有因果关系,或者它们都是因另外一个因子影响而同步变化的!具体是哪种情况,需要继续和组织或产品组进行更多的沟通才能判定。

         更准确的判断是否两个数据之间存在相关性可以在Minitab中计算相关性系数,进行相关性的假设检验,对上述数据,相关性检验的结果如下:

 

                                                                            图7 相关性分析结果

 

当P值小于0.05时,可以认为这2个变量是相关的。我们找到了3对相关的度量元:

外部原因% 与 重复bug%

外部原因% 与 无法重现bug%

不解决% 与 重复Bug%

由于本组数据样本点比较少,我们还需要仔细看看散点图是否真的相关。通过图6的观察与相关性检验的结果,我们可以认可外部原因%与无法重现bug%是中度相关的,相关性系数为0.684。

 

                                                          图8 重复bug%与外部原因%的散点图

          仔细观察图8,隐隐的有2个趋势在里面,由于样本点少,不能轻易下结论,需要再采集数据,再观察。

 

                                                                             图9 不解决%与重复bug %的散点图

            仔细观察图9,红圈中的样本点如果删除,相关趋势是否还那么明显呢?

            该组数据只有11个点,相关性的趋势不是特别明显,需要再继续采集数据,不好轻易下结论。

 

综述:

        1 简单的数据分析可以只做到第3步,并非要做第4、5步。

        2 根据图8,我们怀疑存在2类项目,但是原始数据中没有给出每个项目的特征,比如是否新产品,采用的是迭代还是瀑布的生命周期模型,所以我们无法进行分类分析。

        3 第4步中,如果数据记录了发生的先后顺序,我们也可以通过控制图的方法识别离群点。

        4 样本点多了,数据的分布规律与因果规律才是规律,不是偶然。

        5 如果再有各产品的规模数据(比如功能点数),就可以做产品间的质量水平对比,或算出各类bug缺陷密度的基准区间,比如延期处理的bug单位功能点有多少个是合理的。

发布了345 篇原创文章 · 获赞 148 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/dylanren/article/details/103892293
今日推荐