bug统计分析续(一)基于SQL的Bug统计方法
本文由 @lonelyrains 出品。转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/44225533
上一篇为 bug统计分析初步
本篇重点讨论基于sql的bug统计分析方法。
1、与时间和状态的关系:
1)考察每一个时间单位(年、月、日)产生的bug量
2)考察每一个时间单位(年、月、日)解决的bug量
3)考察每一个时间单位(年、月、日)遗留的bug量
4)考察每一个bug遗留的时间单位(年、月、日)
5)考察平均bug遗留的时间单位(年、月、日)
6)通过结合1)、2)、3)考察分析发现、解决bug的时间段(月、日、时)峰值
当中6能够用来指导測试、开发效率
2、与时间、角色的关系:
1)考察每一个測试每一个月发现的bug量
2)考察每一个开发每一个月解决的bug量
3)考察每一个測试自开发提交版本号測试之后,发现每一个新bug的时延
4)考察每一个开发自測试提交bug之后。解决每一个新bug的时延
此1234均能够用来指导绩效考核
3、其它能够考虑与bug发生关系的系数:
1)基于项目划分
2)基于模块(硬件、固件、底层软件、上层应用(前端、后台)等,依据不同项目能够不同的划分情况)
3)基于功能性质划分(非致命、一般、界面、崩溃等)
4)基于重现概率划分
等等
3、高级扩展
1)推断一个bug是否是难bug,并把它找出来:依据解决时延、反复reopen的次数、測试和开发者的标注
2)定义每一个项目子模块解决本项目子模块bug最多的人为项目子模块负责人。查询每一个人所负责的项目子模块数等
4、案例:
使用bugfree。会发现一个问题,全部的bug信息都放在一张表bf_buginfo里。
ModulePath字段在项目有多个子模块时,是作为整字段中间加'/'区分层级的。
以下是我用到的一些SQL统计语句(为当中一个考察点,笔者在下一篇博客里专门抽象出一个SQL面试题):
#--查询bug整体情况
#select ProjectName,ModulePath,BugTitle,BugStatus,OpenedDate from bf_buginfo order by ProjectName,ModulePath,OpenedDate; #--查询每一个项目的bug数目(XXXX算一个项目)
#select count(*),ProjectName from bf_buginfo group by ProjectName having count(*) >= 1; #--查询XXXX项目每一个模块的bug数目
#select count(*),ModulePath from bf_buginfo where ProjectName like 'XXXX' group by ModulePath having count(*) >= 1; #select * from bf_buginfo where ProjectName like 'XXXX' and ModulePath = '/'; #select BugId,ProjectName,ModulePath,BugTitle,BugStatus,OpenedDate from bf_buginfo order by OpenedDate,ResolvedDate,ClosedDate group by DATE_FORMAT(OpenedDate,'%Y%m'); #--查询每一个月产生的bug数目
#select count(*),DATE_FORMAT(OpenedDate,'%Y-%m') from bf_buginfo group by DATE_FORMAT(OpenedDate,'%Y%m'); #--查询XXXX每一个月产生的bug数目
#select count(*),DATE_FORMAT(OpenedDate,'%Y-%m') from bf_buginfo where ProjectName like 'XXXX' group by DATE_FORMAT(OpenedDate,'%Y%m'); #--查询XXXXbug高峰期的具体内容
#select ModulePath,BugTitle,BugStatus,OpenedDate,DATE_FORMAT(OpenedDate,'%Y-%m') from bf_buginfo where ProjectName like 'XXXX' and ( DATE_FORMAT(OpenedDate,'%Y%m') = '201310' or DATE_FORMAT(OpenedDate,'%Y%m') = '201406' ); #--查询XXXXbug状态情况
#select count(*),BugStatus from bf_buginfo where ProjectName like 'XXXX' group by BugStatus #--查询全项目bug状态情况
#select count(*),BugStatus from bf_buginfo group by BugStatus #--查询重难点bug:0基础过滤方法:从已解决的bug中分析:reopen的 : 须要了解怎样获取reopen的记录 :bf_testaction和bf_buginfo
#select count(distinct(bugId)) from Bf_testaction as taction , bf_buginfo as buginfo where ActionType = 'Activated' and taction.idvalue = buginfo.bugid
#select count(distinct(bugId)) from bf_testaction as taction , bf_buginfo as buginfo where ActionType = 'Activated' and taction.idvalue = buginfo.bugid and ProjectName like 'XXXX'
#activated 226
#activated 138 #--查询重难点bug:0基础过滤方法:从已解决的bug中分析:长时间未解决
#690/1695/2715 datediff>=2-fixed/closed/all
#select count(*),BugID,ResolvedDate,ProjectName,ModulePath,BugTitle,datediff(ResolvedDate,OpenedDate) from bf_buginfo where bugstatus = 'closed' and datediff(ResolvedDate,OpenedDate) >= 2 and Resolution = 'Fixed' order by ModulePath DESC,BugID DESC
#378/927/1248 datediff>=2-fixed/closed/all
#ResolvedDate用于对照svn记录。方便查看
#select BugID,ResolvedDate,ProjectName,ModulePath,BugTitle,datediff(ResolvedDate,OpenedDate) from bf_buginfo where ProjectName like 'XXXX' and bugstatus = 'closed' and datediff(ResolvedDate,OpenedDate) >= 2 and Resolution = 'Fixed' order by ModulePath DESC,BugID DESC #--依据解决人查询bug
#select count(*),ResolvedBy from bf_buginfo where Resolution = 'fixed' and BugStatus = 'closed' group by ResolvedBy order by count(*) #--定义每一个项目子模块解决本项目子模块bug最多的人为项目子模块负责人,查询每一个人所负责的项目子模块数
select count(*),ResolvedBy from (
select B.* from (select ModulePath, ResolvedBy, count(*) as num from bf_buginfo where Resolution = 'fixed' and BugStatus = 'closed' group by ModulePath, ResolvedBy) B ,
(select A.ModulePath, MAX(A.num) as num from (
select ModulePath,ResolvedBy,count(*) as num from bf_buginfo where Resolution = 'fixed' and BugStatus = 'closed' group by ModulePath, ResolvedBy
) A group by A.ModulePath )
C where B.ModulePath = C.ModulePath and B.num = C.num order by B.ResolvedBy ) D group by ResolvedBy
bug统计分析续(一)基于SQL的Bug统计方法的更多相关文章
- 【原创】基于禅道的Bug管理操作规范
1. 禅道简介 禅道是一个基于"敏捷开发"模式的软件开发全生命周期管理软件,在国内的软件开发公司里占据了超过70%的份额,从大公司到小公司,都能适用. 禅道官网:http://ww ...
- 基于Sql Server 2008的分布式数据库的实践(五)
原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...
- BUG克星:几款优秀的BUG跟踪管理软件
Bug管理是指对开发,测试,设计等过程中一系列活动过程中出现的bug问题给予纪录.审查.跟踪.分配.修改.验证.关闭.整理.分析.汇总以及删除等一系列活动状态的管理.,最后出相应图表统计,email通 ...
- 基于SQL的日志分析工具myselect
基本介绍 程序开发者常常要分析程序日志,包括自己打印的日志及使用的其他软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令能够使用,如grep,sort,uniq,awk ...
- 数据可视化之powerBI技巧(十一)基于SQL思维的PowerBI DAX实战
本文来自于PowerBI星球嘉宾天行老师的分享,天行老师不仅DAX使用娴熟,更是精通SQL,下面就来欣赏他利用SQL思维编写DAX解决问题的一个实战案例. 基于SQL思维使用DAX解决实战问题 作者: ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结 1. Sql语言应该得到更大的范围的应用,1 1.1. 在小型系统项目中,很适合存储过程写业务逻辑2 1.2. 大型 ...
- 基于SQL Server 2008 Service Broker构建企业级消息系统
注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...
- ie7,8常见bug,共计257个bug汇总?如何解决ie的历史bug
ie7.8常见bug,共计257个bug汇总 针对web开发者来说,浏览器的bug,特备是ie的bug是很多人的噩梦,因为ie的更新换代没有ff,chrome,safari,opera那么快,而且ie ...
随机推荐
- QT5:先导篇 数据类型
一.简介 二.字符串类(QString) 三.日期类(QData) 四.时间类(QTime) 五.顺序容器类 Qt的顺序容器类有QList QLinkedList QVector QStack QQ ...
- notepad++新建文档时,会出现语法错误的红色下波浪线
notepad++新建文档时,会出现语法错误的红色下波浪线: 原因:新建文档时默认设置语言为PHP. 解决方法:修改默认语言为java或JavaScript,如下: 小结:打开文档时,也可能出现下波浪 ...
- 06网络通信udp-tcp、正则
一. udp网络程序 1. udp网络程序-发送数据 1)创建客户端套接字 2)发送/接收数据 3)关闭套接字 from socket import * # 1. 创建udp套接字 udp_so ...
- 笔试算法题(05):转换BST为双向链表 & 查找栈中的最小元素
出题:把二元查找树转变成排序的双向链表.输入一棵二元查找树,要求将该二元查找树按照中序转换成一个排序的双向链表,要求不能创建任何新的节点,只能调整指针的指向: 分析: 递归的思路,当前节点需要进行的处 ...
- *** 红包书用法 及 ubuntu全局配置
使用教程 http://go.wasai.org/sswiki https://home.maysoul.com/wiki/doku.php?id=shadowsocks ubuntu使用教程 htt ...
- JqueryValidate 修改 为根据ID验证
<!--修改validate根据ID验证 --> <script type="text/javascript"> if ($.validator) { $. ...
- CUDA_one
首先我看了讲解CUDA基础部分以后,大致对CUDA的基本了解如下: 第一:CUDA实行并行化的过程分为两部分,一个是线程块之间的并行(这是在每个线程网格中grid进行的),一个是对于每一个线程块内部各 ...
- Oracle on Azure
价格列表 https://azure.microsoft.com/en-us/marketplace/partners/msopentech/oracle-db-12c/ Oracle-Base 安装 ...
- [BZOJ2667][cqoi2012]模拟工厂
[BZOJ2667][cqoi2012]模拟工厂 试题描述 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时 ...
- [luoguP1440] 求m区间内的最小值(单调队列 || 线段树)
传送门 这种水题没必要搞线段树了,单调队列就行啊. ——代码 #include <cstdio> ; , t = ; int a[MAXN], q[MAXN]; int main() { ...