某嵌入式软件开发公司在代码提交系统测试之前,开发人员做了单元测试,项目组中的技术负责人对所有的代码进行了评审,对代码也通过工具做了静态扫描,系统上线后仍然存在比较多的问题,因此提升质量是其过程改进的一个重要目标。开发人员对代码进行单元测试时,对发现的缺陷直接进行了修改,没有保留缺陷的度量数据。技术负责人代码走查时,有代码走查记录,积累了代码走查的缺陷数据。系统测试的数据记录比较完备。32个历史项目的数据如表1所示。如果要采取措施提升质量,首先应该从哪个作业环节入手呢?
表1 历史项目的缺陷数
项目序号
代码走查缺陷数
系统测试缺陷数
上线后缺陷数
1
8
15
1
2
69
134
10
3
53
87
5
4
95
149
13
5
17
8
1
6
32
49
6
7
69
110
5
8
30
23
4
9
154
278
27
10
55
71
6
11
16
18
3
12
36
58
3
13
61
72
7
14
72
134
6
15
43
59
6
16
65
91
4
17
82
154
17
18
45
96
6
19
39
42
3
20
15
11
1
21
77
145
9
22
60
105
9
23
69
52
3
24
135
206
18
25
9
8
1
26
129
216
13
27
21
33
2
28
19
18
2
29
26
29
2
30
34
36
3
31
34
48
3
32
12
11
1
由于单元测试没有历史数据积累,我们无从判断单元测试的质量。那就先从代码走查与系统测试开始分析。
我们可以计算:
代码走查缺陷逃逸率=(系统测试缺陷数+上线后缺陷数)/(代码走查缺陷数+系统测试缺陷数+上线后缺陷数)
系统测试缺陷逃逸率= 上线后缺陷数 /(系统测试缺陷数+上线后缺陷数)
于是得到表2:
表2 历史项目的缺陷逃逸率
项目序号
代码走查缺陷逃逸率
系统测试缺陷逃逸率
1
66.67%
6.25%
2
67.61%
6.94%
3
63.45%
5.43%
4
63.04%
8.02%
5
34.62%
11.11%
6
63.22%
10.91%
7
62.50%
4.35%
8
47.37%
14.81%
9
66.45%
8.85%
10
58.33%
7.79%
11
56.76%
14.29%
12
62.89%
4.92%
13
56.43%
8.86%
14
66.04%
4.29%
15
60.19%
9.23%
16
59.38%
4.21%
17
67.59%
9.94%
18
69.39%
5.88%
19
53.57%
6.67%
20
44.44%
8.33%
21
66.67%
5.84%
22
65.52%
7.89%
23
44.35%
5.45%
24
62.40%
8.04%
25
50.00%
11.11%
26
63.97%
5.68%
27
62.50%
5.71%
28
51.28%
10.00%
29
54.39%
6.45%
30
53.42%
7.69%
31
60.00%
5.88%
32
50.00%
8.33%
对上述的缺陷逃逸率画箱线图分析如图1所示:
图1 缺陷逃逸率的箱线图
通过箱线图对比我们可以发现代码走查的缺陷逃逸率中位数高达65.13%,系统测试的缺陷逃逸率中位数为9.18%,二者相比,应该先从提升代码走查的质量开始抓起!
对三个缺陷数的度量数据我们也可以做相关性分析,结果如图2所示:
图2 缺陷数的相关性分析
由上边的分析可以发现,代码走查时找到的缺陷越多、系统测试时找到的缺陷也越多、逃逸的缺陷也越多。是否这3个数都受到系统规模的影响呢?我们可以再去分析缺陷密度之间的关系。将系统规模纳入此表1中,计算出缺陷密度如表3:
表3 缺陷密度的数据
项目序号
代码走查缺陷数
系统测试缺陷数
上线后缺陷数
需求点数
代码走查缺陷密度
系统测试缺陷密度
上线后缺陷密度
1
8
15
1
31
0.2581
0.4839
0.0323
2
69
134
10
220
0.3136
0.6091
0.0455
3
53
87
5
153
0.3464
0.5686
0.0327
4
95
149
13
289
0.3287
0.5156
0.0450
5
17
8
1
18
0.9444
0.4444
0.0556
6
32
49
6
124
0.2581
0.3952
0.0484
7
69
110
5
182
0.3791
0.6044
0.0275
8
30
23
4
77
0.3896
0.2987
0.0519
9
154
278
27
318
0.4843
0.8742
0.0849
10
55
71
6
175
0.3143
0.4057
0.0343
11
16
18
3
68
0.2353
0.2647
0.0441
12
36
58
3
176
0.2045
0.3295
0.0170
13
61
72
7
113
0.5398
0.6372
0.0619
14
72
134
6
289
0.2491
0.4637
0.0208
15
43
59
6
194
0.2216
0.3041
0.0309
16
65
91
4
158
0.4114
0.5759
0.0253
17
82
154
17
243
0.3374
0.6337
0.0700
18
45
96
6
110
0.4091
0.8727
0.0545
19
39
42
3
225
0.1733
0.1867
0.0133
20
15
11
1
28
0.5357
0.3929
0.0357
21
77
145
9
274
0.2810
0.5292
0.0328
22
60
105
9
136
0.4412
0.7721
0.0662
23
69
52
3
74
0.9324
0.7027
0.0405
24
135
206
18
368
0.3668
0.5598
0.0489
25
9
8
1
40
0.2250
0.2000
0.0250
26
129
216
13
328
0.3933
0.6585
0.0396
27
21
33
2
72
0.2917
0.4583
0.0278
28
19
18
2
49
0.3878
0.3673
0.0408
29
26
29
2
70
0.3714
0.4143
0.0286
30
34
36
3
90
0.3778
0.4000
0.0333
31
34
48
3
144
0.2361
0.3333
0.0208
32
12
11
1
32
0.3750
0.3438
0.0313
对缺陷密度的度量数据进行相关性分析表图3所示:
图3 缺陷密度的相关性分析
通过图3的分析可知,无论是否排除异常点,代码走查的缺陷密度与系统测试的缺陷密度、上线后的缺陷密度都是线性正相关的,系统测试的缺陷密度与上线后的缺陷密度也是线性正相关的。为什么是线性正相关,而不是开口向下的抛物线相关呢?难道代码走查与系统测试找到的缺陷越多,逃逸的缺陷就会一直增加下去吗?肯定不应该如此!未发现的缺陷不会越来越多,只会越来越少,但是在我们的数据中却没有看到这个趋势,说明什么呢?说明我们的代码走查与系统测试找到的缺陷还是太少!还需要加大代码走查与系统测试的力度!
综上所述,我们可以得到结论:
1 先提升代码走查的质量,减少代码走查的缺陷逃逸率;
2 系统测试的质量也要提升。
如何提升代码走查与系统测试的质量呢?我们可以再继续分析影响代码走查与系统测试缺陷密度的因子,找到定量的因果规律,从而采取改进措施,事实上,该公司也进行了这方面的定量分析,本文不再赘述了。
注:本文中所有的图形均采用ZenDAS工具绘制。
版权归原作者 麦哲思科技任甲林 所有, 如有侵权,请联系我们删除。