51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1956|回复: 0
打印 上一主题 下一主题

[讨论] TFS 测试用例步骤数据统计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-13 14:52:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的。通过这几年的深入使用,能够感触
到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例AdventureWorksDW有的一比。系统
本身从基础数据ETL到数据仓库再到Cube中,整个过程浑然一体,对应用户和系统管理员来说,几乎都是透明
的。并且对TFS工作项的定制扩展自动支持,用户通过添加工作的相关的维度或度量元数据的属性,在最终的
Cub都可以自动的加入和统计数据。

但是,在一个大型客户使用过程中,提出了统计TFS中全部测试用例的全部测试步骤的数据,这个测试步骤的
在TFS系统中根本就没有设计成为可度量的数据,直接从TFS的数据仓库中统计这个数据,显然是不可能。通
过分析,TFS中的HTMLFieldControl的类型的数据是存储在TFS_Collection库的WorkItemLongTexts表中,测试
步骤是以XML结构组织的文本形式存储的。因此要统计这个数据也必须要从这个点进行着手,通过几次尝试,
按照下面的步骤终于统计出了各个项目的测试步骤数量。

1,跨库查询抽取全部的测试用例相关数据到一个临时的表中。

  1. [sql] view plain copy
  2. selectcwv.ProjectNodeName,cwv.System_AssignedTo, cwv.System_CreatedDate,cwv.System_Id,cwv.System_Title, wilt.words   
  3. from WorkItemLongTexts wilt  
  4. left join   
  5. [Tfs_Warehouse].[dbo].[CurrentWorkItemView] cwv on wilt.ID = cwv.System_Id andcwv.System_WorkItemType = '测试用例'   
  6. where wilt.fldid = 10181 and wilt.EndDate = '9999-01-01' and  SUBSTRING(wilt.Words,1,6) = '<steps'  
复制代码


2, 针对上面抽取出来的临时表,创建了一个存储过程,把其中XML类型的测试步骤数据进行解析,提取出步骤数据。



  1. [sql] view plain copy
  2. CREATEPROCEDURE [dbo].[CalcTestSetpProg]  
  3. AS  
  4. BEGIN  
  5. SET NOCOUNT ON;      
  6. --Deleteillegal record  
  7. delete  [TeamProjectTestStep]where isnull(system_id,0)=0  
  8. DECLARE @temp TABLE  
  9. (  
  10.     sys_id INT,  
  11. word ntext  
  12. )  
  13. INSERT INTO @temp(sys_id, word ) select[System_Id],words from [dbo].[TeamProjectTestStep];  
  14. DECLARE  
  15.     @sys_id AS INT,  
  16. @word As nvarchar(max)  
  17. WHILE EXISTS(SELECT sys_id FROM @temp)  
  18.         BEGIN  
  19.                -- 也可以使用top1  
  20.                SET ROWCOUNT 1  
  21.                SELECT @sys_id= sys_id,@word =word FROM @temp;  
  22.    
  23.                BEGIN Try  
  24.                 UPDATE [TeamProjectTestStep] SET StepCount =Cast(@word as xml).value('count(/steps/step)','int')  WHERE System_Id=@sys_id;  
  25.                END Try  
  26.                Begin Catch   
  27.                End Catch     
  28.                SET ROWCOUNT 0     
  29.                DELETE FROM @temp WHEREsys_id=@sys_id;  
  30.         END     
  31. END  
复制代码


3, 使用报表进行展示


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-2 14:35 , Processed in 0.065829 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表