• TFS 测试用例步骤数据统计


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

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

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

    1
    2
    3
    4
    5
    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类型的测试步骤数据进行解析,提取出步骤数据。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    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, 使用报表进行展示

     

  • 相关阅读:
    Hadoop、Spark和Storm
    bro安装过程(纪念其中遇到的坑)
    tensorflow中出现{TypeError}unhashable type: 'numpy.ndarray'
    Python高级函数(map,reduce,cmp,filter,闭包,lambda )
    Java中设置百分数保留两位小数
    查看python支持的whl文件类型
    js 图表转图片
    dorado 7 使用总结
    Socket 接收本地短连接并转发为长连接 多线程
    java Socket 长连接 心跳包 客户端 信息收发 demo
  • 原文地址:https://www.cnblogs.com/zhaodahai/p/6824472.html
Copyright © 2020-2023  润新知