惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
S
Securelist
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Tenable Blog
NISL@THU
NISL@THU
博客园 - 三生石上(FineUI控件)
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
Google Developers Blog
Forbes - Security
Forbes - Security
月光博客
月光博客
博客园 - 叶小钗
Spread Privacy
Spread Privacy
Last Week in AI
Last Week in AI
H
Help Net Security
TaoSecurity Blog
TaoSecurity Blog
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
N
News and Events Feed by Topic
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Hacker News
The Hacker News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy International News Feed
D
DataBreaches.Net
O
OpenAI News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Latest news
Latest news
J
Java Code Geeks
Project Zero
Project Zero
V
V2EX
Security Latest
Security Latest
AI
AI

博客园 - JiaLiWei

Web、WCF和WS通过Nginx共享80端口 TFS2017持续发布中调用PowerShell启停远程应用程序 基于BUI开发Asp.net MVC项目 WebAPI应用问题整理 C#多线程顺序依赖执行控制 TFS下载文件已损坏问题 Asp.net core中使用Session 为什么使用.Net Core, Asp.net Core以及部署到云端 基于微软开发平台构建和使用私有NuGet托管库 TFS2017代码搜索功能 Python sphinx-build在Windows系统中生成Html文档 Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理 Gulp自动构建Web前端程序 TFS应用经验-大型项目数据仓库抽取导致的TFS应用无法访问 TFS实现需求工作项自动级联保存 TFS 测试用例导入、导出工具 开发团队在TFS中使用Git Repository (二) 开发团队在TFS中使用Git Repository (一) TFS Services 集成Docker
TFS 测试用例步骤数据统计
JiaLiWei · 2016-12-30 · via 博客园 - JiaLiWei

TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的。通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例AdventureWorksDW有的一比。系统本身从基础数据ETL到数据仓库再到Cube中,整个过程浑然一体,对应用户和系统管理员来说,几乎都是透明的。并且对TFS工作项的定制扩展自动支持,用户通过添加工作的相关的维度或度量元数据的属性,在最终的Cub都可以自动的加入和统计数据。

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

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

select cwv.ProjectNodeName,cwv.System_AssignedTo, cwv.System_CreatedDate, cwv.System_Id,cwv.System_Title,  wilt.words 
 from WorkItemLongTexts wilt
left join 
[Tfs_Warehouse].[dbo].[CurrentWorkItemView] cwv on wilt.ID = cwv.System_Id and cwv.System_WorkItemType = '测试用例' 
where wilt.fldid = 10181 and wilt.EndDate = '9999-01-01' and  SUBSTRING(wilt.Words,1,6) = '<steps'

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

CREATE PROCEDURE [dbo].[CalcTestSetpProg]

AS
BEGIN
SET NOCOUNT ON;  

 --Delete illegal record
  delete  [TeamProjectTestStep] where isnull(system_id,0)=0

DECLARE @temp TABLE
(
    sys_id INT,
    word ntext
)
INSERT INTO @temp(sys_id, word ) select [System_Id],words from [dbo].[TeamProjectTestStep];

DECLARE
    @sys_id AS INT,
    @word As nvarchar(max)
WHILE EXISTS(SELECT sys_id FROM @temp)
        BEGIN
               SET ROWCOUNT 1
               SELECT @sys_id= sys_id,@word = word FROM @temp;
               BEGIN Try
                UPDATE [TeamProjectTestStep] SET StepCount = Cast(@word as xml).value('count(/steps/step)','int')  WHERE System_Id=@sys_id;
               END Try
               Begin Catch 
               End Catch   
               SET ROWCOUNT 0   
               DELETE FROM @temp WHERE sys_id=@sys_id;
        END  
END

3, 使用报表进行展示