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工具绘制。


本文转载自: https://blog.csdn.net/dylanren/article/details/126686890
版权归原作者 麦哲思科技任甲林 所有, 如有侵权,请联系我们删除。

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

还没有评论