案例:如何评价代码走查的效果?
某嵌入式软件开发公司在代码提交系统测试之前,开发人员做了单元测试,项目组中的技术负责人对所有的代码进行了评审,对代码也通过工具做了静态扫描,系统上线后仍然存在比较多的问题,因此提升质量是其过程改进的一个重要目标。开发人员对代码进行单元测试时,对发现的缺陷直接进行了修改,没有保留缺陷的度量数据。技术负责人代码走查时,有代码走查记录,积累了代码走查的缺陷数据。系统测试的数据记录比较完备。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工具绘制。
案例:如何评价代码走查的效果?相关推荐
- 自定义动画 animate || 案例:王者荣耀手风琴效果分析
自定义动画 animate <!DOCTYPE html> <html lang="en"><head><meta charset=&qu ...
- 案例:鼠标精灵跟随效果
案例:鼠标精灵跟随效果 代码: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...
- 3dmax:3dmax三维VR渲染设置之高级灯光渲染(经典案例—利用泛光灯制作台灯效果)图文教程
3dmax:3dmax三维VR渲染设置之高级灯光渲染(经典案例-利用泛光灯制作台灯效果)图文教程 目录 利用泛光灯制作台灯 利用泛光灯制作台灯
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- 如何让页面停止加载_Axure 案例:数值加载效果
今天要说到的数值加载效果,我们在使用App和网站的时候是经常见到的,尤其是金融类的产品.借贷类的产品等. 在我们打开某个页面,比如我的财富时,账户当中的金额会进行不断往上叠加,直到叠加到账户中的金额数 ...
- b站pink老师JavaScript的PC端网页特效 案例代码——仿京东放大镜效果
目录 原理讲解: 代码段: 1. detail.html部分(重点在标红区) 2. detail.js部分(全部都是重点) 3. detail.css部分(重点在标红区) 4. base.css部分( ...
- 【硬件专题】案例:热敏打印效果差?为什么是多个因素造成的?
案例背景:我们收到异常反馈是海外客户说产品的热敏打印在有的位置会比较模糊.因为我们产品在生命周期内有做过打印机部品的替代,所以市面上会有两种品牌打印机混用的情况.同事在海外的初步分析后发现异 ...
- 如何评价广告营销效果
广告营销的目的 广义上的营销,2个主要目的:达成销售和建设品牌,其实后者的终极目的还是前者.销售是短期达成,品牌建设是长期管理. 广告是营销的一部分,广告的效果评估也应该从目的出发探寻方法. 网络广告 ...
- 【jQuery】前端项目实践案例6——制作产品放大镜效果(仿京东淘宝图片效果)
使用jQuery制作产品放大镜效果实现效果: 使用jQuery制作产品放大镜效果实现原理: 通过设置图像的 CSS 属性( left 和 top ),来实现图像的移动. 使用jQuery制作产品放大镜 ...
- jQuery基本使用_选择器_淘宝服饰切换案例_样式操作_效果_王者荣耀手风琴
文章目录 一.基本使用 1.jquery入口函数 2.$符 3.DOM对象和jQuery对象的转换 二.jquery选择器 1.基础选择器 2.隐式迭代 3.筛选选择器 4.筛选方法 5.排他思想 淘 ...
最新文章
- 如何消除摄影中的运动模糊?
- 解表化饮什么意思_为什么有人动不动就一身汗,有人再热也不出汗?中医告诉真实原因...
- Ubuntu下非常规方法安装绿色软件(压缩包)
- Apache的Rewrite规则详细介绍
- 2000亿次开放学习后,DeepMind的智能体成精了
- moa 35 批量删除
- linux命令提示符不同,Linux命令提示符如何按照自己的习惯修改?
- mysql 1067 win7,大师练习win7系统无法启动MySQL服务错误1067的设置教程
- RPC和MQ对比及其适用/不适用场合
- manjaroLinux下安装mysql时初始化mysql出错解决办法
- python实现给定一个列表判断里面是否有重复元素
- TCP-IP协议详解(2) 以太网与WiFi协议
- 软考高项优秀范文——论信息系统项目的风险管理
- 设置了普通密码的excel打不开怎么办
- DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided
- 诛仙斩龙墨雪服务器怎么找不到了,《诛仙3》5月13日服务器数据互通公告
- OSError: exception: access violation writing 0x000000003F800000
- certificate expired
- 局域网共享一键修复(转载)
- codesensor:将代码转化为ast后再转化为文本向量
热门文章
- python画五子棋棋盘_python 五子棋-文字版(上)
- python拟合曲线求方程,曲线拟合方程python
- java生成pdf表格_java生成pdf文件 --- Table
- 你了解软件测试吗?软件测试和调试有什么区别??
- Ubuntu14.04(LTS)gitHub客户端安装
- html 360 浏览器图片自适应,360浏览器看图模式 一键保存高清套图
- 怎么修改android内存,安卓内存修改器怎么用?
- idea中XML注释与取消注释快捷键
- anaconda利用sns或plt画图中文乱码问题
- 宏杉MacroSan存储开局指导-流程