今天为客户的质量管理部门人员提供TFS咨询过程中,客户的质量管理专家基于TFS提出了一个比较棘手的数据统计需求。需求是这样,客户的数十个软件项目通过质量管理部按照年度版本计划进行软件产品系统的发布,因此对需求的管理有一个基线跟踪的过程,也就是说,当产品发布后,质量管理部门希望统计出与该版本发布后相关的需求、Bug、任务等工作项是否发生变更,以及变更的什么数据。

初始讨论这个需求时,根据对TFS的了解,第一判断出这个数据是可以统计出来了,但是可能要费一番周折。实现的过程确时如此:

首先从TFS的数据Warehouse数据库入手,查询WIT之间的关联关系以及变更历史数据,管理关系的数据查询sql如下:

1、根据工作项ID查询出该工作项所有相关联的其他工作项目

select * from FactWorkItemLinkHistory wh
left join CurrentWorkItemView cwv on wh.SourceWorkItemID = cwv.System_Id
where cwv.System_Id ='25429'

  

2、从工作项历史记录数据中统计出1中的相关工作项的变更历史

select  cwv.System_Title as versionTitle , linkCWV.System_Title as targetTitle,linkCWV.ProjectNodeName from FactWorkItemLinkHistory wh

left join CurrentWorkItemView cwv on wh.SourceWorkItemID = cwv.System_Id  and cwv.TeamProjectCollectionSK = wh.TeamProjectCollectionSK

left join CurrentWorkItemView linkCWV on  wh.TargetWorkItemID = linkCWV.System_Id and  linkCWV.TeamProjectCollectionSK = wh.TeamProjectCollectionSK

where  cwv.System_Id ='25429'

  

3、通过添加过滤条件查询出工作项相关的工作项数据在某个基线后是否发生了变化

select  cwv.System_Title as versionTitle , linkCWV.System_Title as targetTitle,linkCWV.ProjectNodeName from FactWorkItemLinkHistory wh

left join CurrentWorkItemView cwv on wh.SourceWorkItemID = cwv.System_Id  and cwv.TeamProjectCollectionSK = wh.TeamProjectCollectionSK

left join CurrentWorkItemView linkCWV on  wh.TargetWorkItemID = linkCWV.System_Id and  linkCWV.TeamProjectCollectionSK = wh.TeamProjectCollectionSK

where  cwv.System_Id ='25429'

and wh.TargetWorkItemID   in (
select distinct System_Id from WorkItemHistoryView group by System_Id having max(LastUpdatedDateTime) >= cwv.LastUpdatedDateTime
)

  

通过上述统计,本以为已经统计出所需数据了,但是经过仔细的分析,TFS中的工作项任何的变更,比如添加了新的相关关联项,但其内容,比如需求说明、bug症状、测试步骤并没有方式变化,这样的数据就不应该是基线的变化,因此这样统计出的数据是有出入的,不准确。

基于这样的考虑,仅仅在TFS的Warehouse数据库中是统计不出相关报表的,必须从Collection数据库中来进行统计,Collection库结构是很复杂,如果仅仅是读取数据,分析一下,是没问题的,但如果是想直接修改里面的数据,就别考虑了,说不定就搞出问题,特别是在客户的大型生产环境中。

通过目测、查询、和搜索网络,终于找到了在Collection库中工作项各个字段修改历史记录的数据:

基于上面在两个数据库中的查询,终于统计出所需的数据。

网上搜到一个详细介绍TFS数据库的Blog,分析的很透彻。

https://visualstudiomagazine.com/articles/2009/03/09/inside-the-tfs-databases-an-occasional-series.aspx

TFS工作项数据统计及相关数据库结构分析的更多相关文章

  1. TFS 测试用例步骤数据统计

    TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...

  2. 自定义TFS工作项“所有链接”列表中的列

    这个功能只有使用团队资源管理器查看工作项才有

  3. 如何彻底删除TFS的工作项字段

    TFS的工作项字段可以在所有工作项类型之间共享.例如自定义了一个字段"验证迭代"(Mycompany.IterationValidation)那么在需求.Bug中都可以添加这个字段 ...

  4. TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...

  5. TFS代码变更和工作项关联,为系统变更提供完美的跟踪轨迹

    TFS是微软的应用软件生命周期管理(ALM)的解决方案产品,相比我们常见的一些ALM产品,例如HP ALM, IBM Rational, Atlanssian Jira等,其最大的区别在于TFS将软件 ...

  6. TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...

  7. 如何修改TFS 2013中工作项附件大小限制

    默认情况下,TFS工作项的附件大小限制为4MB.我们可以通过调用TFS提供的Web Service将这个限制调整最高到2GB. 调整这个设置的必备条件是你需要拥有TFS应用层管理员的权限.下面来看看如 ...

  8. TFS API : 四、工作项查询

    TFS API : 四.工作项查询 本节将讲述如何查询工作项,将用户统计数据. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] f ...

  9. [转载]基于TFS实践敏捷-工作项跟踪

    工作项跟踪(1) 可跟踪性是软件过程的重要能力,TFS主要是以工作项来实现过程的可跟踪性.曾有人问:"你们实际项目里的工作项是怎么样的?能不能让我们看看?"我也一直很好奇别的公司T ...

随机推荐

  1. ABP文档 - Mvc 视图

    文档目录 本节内容: 简介 AbpWebViewPage 基类 简介 ABP通过nuget包Abp.Web.Mvc集成到Mvc视图里,你可以像往常那样创建常规的视图. AbpWebViewPage 基 ...

  2. PHP源码分析-变量

    1. 变量的三要素变量名称,变量类型,变量值 那么在PHP用户态下变量类型都有哪些,如下: // Zend/zend.h #define IS_NULL 0 #define IS_LONG 1 #de ...

  3. 三分钟学会用 js + css3 打造酷炫3D相册

    之前发过该文,后来不知怎么回事不见了,现在重新发一下. 中秋主题的3D旋转相册 如图,这是通过Javascript和css3来实现的.整个案例只有不到80行代码,我希望通过这个案例,让正处于迷茫期的j ...

  4. Web大前端时代之:HTML5+CSS3入门系列

    准备来一波新技术,待续.... Old: 联系源码:https://github.com/dunitian/LoTHTML5 文档下载:https://github.com/dunitian/LoTD ...

  5. 当web.config文件放置在共享目录下(UNC),启动IIS会提示有错误信息500.19,伴随有错误代码0x80070003和错误代码0x80070005的解决办法

    最近遇到一个很有意思的使用环境,操作人员将所有的网站应用内容投放到共享存储里面,并且使用微软的SMB协议将其以CIFS的方式共享出来,使用Windows Server 2008 R2的IIS将其连接起 ...

  6. OEL上使用yum install oracle-validated 简化主机配置工作

    环境:OEL 5.7 + Oracle 10.2.0.5 RAC 如果你正在用OEL(Oracle Enterprise Linux)系统部署Oracle,那么可以使用yum安装oracle-vali ...

  7. Discuz NT 架构剖析之Config机制

    接触了Discuz NT! 一段时间了,是时候做个总结了,标题好霸气,有木有? 都是托园子里的大牛代振军的福啊,哈哈哈哈. 首先论坛的信息不是完全存储在数据库里面的,一部分信息存储在config文件里 ...

  8. 基于window7+caffe实现图像艺术风格转换style-transfer

    这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...

  9. bzoj3207--Hash+主席树

    题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...

  10. Maven安装

    开发分布式的商场系统,用到了一些新的技术,做一个记录和分享 这里讲一下maven安装 首先什么是Maven Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平 ...