bug统计分析续(一)基于SQL的Bug统计方法

上一篇为 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:初级过滤方法:从已解决的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:初级过滤方法:从已解决的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
时间: 2024-10-11 01:28:02

bug统计分析续(一)基于SQL的Bug统计方法的相关文章

BUG克星:几款优秀的BUG跟踪管理软件

Bug管理是指对开发,测试,设计等过程中一系列活动过程中出现的bug问题给予纪录.审查.跟踪.分配.修改.验证.关闭.整理.分析.汇总以及删除等一系列活动状态的管理.,最后出相应图表统计,email通知修改者等功能. 软件中的Bug是软件开发过程中的"副产品".通常,Bug会导致软件产品在某种程度上不能满足用户的需要.每一个软件组织都知道必须妥善处理软件中的Bug.这是关系到软件组织生存.发展的质量根本.可遗憾的是,并非所有的软件组织都知道如何有效地管理自己软件中的Bug. BUG管理

基于SQL的日志分析工具myselect

基本介绍 程序开发人员经常要分析程序日志,包括自己打印的日志及使用的其它软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令可以使用,如grep,sort,uniq,awk等,其中最强大的是awk,是作为一门小巧的文本处理语言存在的,但由于它是一门语言,功能强大,但在命令行下使用并不那么方便,因为awk是面向计算而不是面向统计的.awk可以定义变量,可以进行计算,命令行下就是一个包含隐式for循环的语言. awk如果很长时间不用,它的一些语法就忘了,要分析线上日志时

常见浏览器bug(针对IE6及更低版本)及其修复方法

常见bug及其修复方法有以下几种 1.双外边距浮动bug 双外边距浮动bug在IE6及更低版本中常见.所谓双外边距浮动bug是指使任何浮动元素上的外边距加倍.(见下图) 只要将元素的display属性设置成inline就行了.因为元素时浮动的,所以将display属性设置为inline实际上不会影响显示方式.但是,这似乎会阻止Windows上的IE6及更低版本将所有外边距加倍.所以每当对具有水平外边距的元素浮动时,都应该很自然的将display属性设置为inline,以备外边距将来被加大. 2.

调bug心得及一个很二的bug

有时候运行结果错误,但是vs没抛异常,这时可以用trycatch来帮我们捕捉异常. 例如:bug的情况是treeview只显示一个根节点和一个子节点,还不报错,我擦~ private void f_script_Load(object sender, EventArgs e) { List<t_scripts> parents = new t_scriptsBLL().getByParentId(0) as List<t_scripts>; try { foreach (t_scr

基于SQL脚本将数据库表及字段提取为C#中的类

开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼. 所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个敲,不但累,还有可能敲错.要保证正确,最好的办法当然是使用工具或者脚本. 这里提供一个SQL脚本的实现. 原理:获取数据库的表--->遍历每个表中的字段--->生成数据 SQL代码 DECLARE @tableName VARCHAR(MAX) DECLARE @tableCount int D

SQL优化之基于SQL特征的改写

前言 今天老K继续与大家分享第九期. 周末老K宅在家观战了两局精彩的"人狗"大战.老K既算不上科技迷,也算不上围棋迷,不过对此颇有感触:阿尔法狗不过是通过左右互博的方式不断学习围棋,然而依赖其最优的学习算法(学习方法)却能再短短的数月之内达到人类围棋水平的最顶端:而李世石在却是依赖其已有的经验结合人类特有的灵感下出"神之一手",人类终究还是可以战胜拥有超强计算能力的阿尔法狗.这些不禁让老K想起了自己在工作过程中的最有艺术性的部分---"SQL tunnin

数据库原理与应用 基于SQL Server 2005pdf

下载地址:网盘下载 <数据库原理与应用 基于SQL Server 2005>介绍数据库基本原理,并以sql server 2005为平台介绍数据库管理系统的应用.全书分为3部分,第l-5章介绍数据库的一般原理,第6-18章介绍sql server 2005的数据管理功能,第19-20章介绍以vb作为前端设计工具.以sql server 2005作为数据库平台开发数据库应用系统的技术.本书最后的附录还给出了一个数据库系统设计过程. 本书由浅入深.循序渐进地介绍各个知识点.书中提供了大量例题,有助

把传统的基于sql的企业信息中心迁移到spark 架构应该考虑的几点思考...[修改中]

把传统的基于sql的企业信息中心迁移到spark 架构应该考虑的几点 * 理由: 赶时髦,  这还不够大条么? > 数据都设计为NO-SQL模式, 只有需要search的才建立2级索引. 就可以了,未必需要rdbms结构. 搜索,和报表可以用spark sql 来进行query. 而且spark提供了内置的mlib和graphX 一般的报表都够用了. > DBA平常有做备份什么的. 那么切换到spark系统后,如何对数据进行备份? > 有没有异地备份的功能?

SQL Standard Based Hive Authorization(基于SQL标准的Hive授权)

说明:该文档翻译/整理于Hive官方文档https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authorization#SQLStandardBasedHiveAuthorization-ObjectPrivilegeCommands. Hive 0.13版本之前的授权现状   Hive默认授权(Default Hive Authorization (Legacy Mode)) 设计目的并不是为了防止恶