案例:如何评价代码走查的效果?

发布于:2022-12-30 ⋅ 阅读:(278) ⋅ 点赞:(0)

某嵌入式软件开发公司在代码提交系统测试之前,开发人员做了单元测试,项目组中的技术负责人对所有的代码进行了评审,对代码也通过工具做了静态扫描,系统上线后仍然存在比较多的问题,因此提升质量是其过程改进的一个重要目标。开发人员对代码进行单元测试时,对发现的缺陷直接进行了修改,没有保留缺陷的度量数据。技术负责人代码走查时,有代码走查记录,积累了代码走查的缺陷数据。系统测试的数据记录比较完备。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工具绘制。


网站公告

今日签到

点亮在社区的每一天
去签到