发布新日志

  • +++软件测试之中文网络资源总汇V2.0+++

    2008-06-06 09:51:47

    +++软件测试之中文网络资源总汇V2.0+++
    (更新日期:2007年4月12日)

    51Testing软件测试网  www.51testing.com
    CSDN——软件测试频道  testing.csdn.net
    希赛网——软件测试频道  testing.csai.cn
    中国软件测试联盟  www.iceshi.com
    一起测试网  www.17testing.com
    北大测试  www.btesting.com
    中国软件测试基地 www.cntesting.com
    中国软件评测中心  www.cstc.org.cn
    中国软件质量网  www.rjzl.gov.cn


    更新说明:
    1.去除了不可用的链接和更新较慢的网站
    2.添加了几个网站的链接


    下列网站中,部分已经不可访问,但作为V1.0的内容仍保留了下来

    软件测试之中文网络资源总汇(顺序是我随意排的,不分先后)

    中国软件测试社区 http://www.sztest.net/forum/

    海松宝的小屋  http://www1.testage.net/haisongbao/

    Alan工作室  http://alanzhou.nease.net/index.htm

    软件工程专家网  http://www.51cmm.com/

    51testing软件测试网(慧谷-博为峰软件测试工作室)  www.51testing.com

    中国软件测试在线  http://www.softtest.cn/

    杨柳清风论坛  http://www.kaiyuanlaw.com/dvbbs/

    天极网的软件测试板块  

    http://www.yesky.com/SoftChannel/72342393369657344/index.shtml

    测试工程师  http://opentest.51.net/index.htm

    自由龙(好像是珠海的)   http://www.freedragon.net/
  • 使用 IBM Rational ClearQuest 创建缺陷分析报告图

    2008-06-05 23:03:24

    2. 缺陷分析报告图信息收集

            软件开发过程中,我们通常会为项目建立一个缺陷或者包括缺陷在内的所有变更的管理库。在项目的整个生命周期中,该管理库记录项目相关的所有缺陷信息,从提交、分派、修复、验证到关闭。利用它可以追踪缺陷状态,缺陷相关任务分派,同时它也是缺陷分析的数据来源。比如IBM Rational ClearQuest就提供了这样的管理功能。

            缺陷分析报告是通过提取缺陷管理库中的数据,进行归纳总结绘制而成的,由于缺陷管理库不仅仅用于缺陷分析,因此我们在开始制作分析报告图以前,就应该对提取什么样的字段数据做好准备工作。

            举一个简单的例子,假如我们想了解测试团队中对某个产品组件在某个工作阶段内每个人的工作量(可以是提交缺陷的数量)如何,那么就应该提取出该产品组件在该时间段内所有的缺陷,并且按照提交人加以分类,从而查询出每个人的缺陷提交量绝对值或者百分比。那么这个分析报告的制作,涉及到缺陷的多个属性:所属产品组件,所属开发周期的阶段,以及提交人。所以我们要制定出这个报告图,就必须保证缺陷的这几个属性是存在的,并且不是空值。Rational ClearQuest对于缺陷跟踪的管理,提供了多套样式(schema), 对于很多常用的属性已经默认设置完成,用户可以方便地使用。但是如果用户想要定制更复杂的分析报告,比如对缺陷产生原因的分析,就要自己定义特定字段(在这个例子中可以是“原因”字段),来满足分析的需求。

            这里给出一些常用的用于缺陷分析的字段,供参考。除了要保证这些字段的存在外,最好还能通过在一定状态下关键字的形式,保证其值非空。

            状态(state):常见的状态有新提交的,修复了的,已经关闭了的。 
            优先级(Business Priority): 用于衡量缺陷对用户使用该产品的影响程度,通常设定值为1-3,数值越低说明对商务的影响越严重。 
            阶段(Iteration): 作为RUP迭代开发的阶段划分,它可以方便地定位缺陷被发现的时期,利于阶段性缺陷分析。 
            原因(Root Cause): 用于标记缺陷被引入的原因,其值可以通过字符串列表的形式加以设定,目的是有的放矢地加以改善,以期达到理想的产品质量。 
            状态改变的日期:包括提交日期,修复日期,关闭日期等等。便于观察缺陷状态演变的行进效率。
    3. 常见的几种缺陷分析报告图

            由于缺陷分析报告图比报告表更为常用,这里介绍几种常见的ClearQuest支持的报告图。ClearQuest支持3种缺陷分析报告图:分布图(Distribution Chart)、趋势图(Trend Chart)和回顾图(Aging Chart)。ClearQuest的报告图功能通过在windows客户端的图表(chart)创建来实现,目前仅在windows客户端实现了这一功能。

    3.1 缺陷分析分布图

            分布图在缺陷分析中最为常用,它用于观察有多少缺陷属于用户指定的某类或者满足用户指定的某值。在这类图表中,又有3种比较常见:等级分布图,产品组件分布图以及缺陷产生原因分布图。

            等级分布图是指按照严重等级将缺陷分类,比较各种严重等级下缺陷的分布比例,严重等级高的缺陷数量越少越好,以此来衡量某一阶段该产品的健康度,以及指定下一阶段的策略。

            产品组件分布图,顾名思义,就是将缺陷数量按照产品的各个组件分类,进行比较。这种方法既可以反映出各个开发模块的难度或者质量,也可以用来评估不同开发模块的测试效果。

            缺陷产生原因分布图是缺陷分析中有利于质量控制的最为重要的一类图,它将缺陷按照产生原因分类,各种原因类别需要事先定制,可以是软件工程各阶段中可能引入缺陷的各种因素,而且原因分类越细致,越能够精确定位缺陷产生点。 项目经理或者质量管理人可以据此了解影响软件质量的最为薄弱的环节,并加以干预促进改善。

            图1给出了这3种分布图的示例图。


            图1 三种常见的缺陷分析分布图

    三种常见的缺陷分析分布图

     

        除了以上3种常见的缺陷分布图之外,在开发进程中,项目经理还可以随时通过分布图来掌握工作状态,比如查看一组记录的当前状态;查看谁当前被分配了最多/最少的缺陷;以及查看哪些缺陷具有最高优先级。

    3.2 缺陷分析趋势图

            趋势图反映一定时期内,缺陷数量在某种状态下的动态分布。可以是累计的缺陷计数,也可以是不累计的。我们常用趋势图来查看新缺陷的增长趋势,以及关闭缺陷的趋势。观察是否新缺陷的数量在逐渐下降?是否缺陷的关闭比较及时?这些结果对于影响相关的进度推进决策有相当的参考价值。

            比如图2所示的某产品在发布前的一段测试周期内,新发现缺陷数量的趋势图,随着测试的开展,越来越多的缺陷被发现,随着缺陷的及时修复,发现新缺陷的数量也在一定时间点后逐渐减少。可见,该趋势图反映的产品质量基本符合发布标准。


    图2 某产品新提交缺陷趋势图

    某产品新提交缺陷趋势图

    3.3 缺陷分析回顾图

            回顾图是一种特殊类型的缺陷分析报告图。显示在多长时间内有多少缺陷记录处于所选状态。龄期图回答像下面这样的问题: 在不到1周时间内提交了多少个缺陷? 在3周多的时间内提交了多少个缺陷? 在2个月多的时间内延迟了多少个缺陷?

            图3表示了某时间段内,按优先级(BP)分类的缺陷通常多久被修复。读图可以看出,在这段时间内,缺陷按照优先级归类,分别为13,19,17个,这些缺陷在大于一周内时间的被修复的个数分别为9,10,17;大于两周被修复的分别是6,10,14个,等等。这里曲线下降的快慢反映了修复的速率,从图中可见,大多数的缺陷在5周内得以修复。根据不同优先级对缺陷修复时间的要求,项目经理可以据此判断修复时间是否达到标准,是否需要推进对缺陷的修复进度。


    图3 修复缺陷回顾图

    修复缺陷回顾图


    4. 使用ClearQuest制作缺陷分析报告图

            在介绍了缺陷分析图表的3种分类后,我们将遵循不同类别,来了解ClearQuest中制作缺陷分析报告图的关键点。

            首先,通过主菜单上的“查询”,选择“新建图表”。对于我们想要创建的缺陷这种记录类型的分析图表,选择图表的类型—分布图、趋势图或者回顾图,注意在此窗口清除“运行查询”选项,因为我们将在定制报告图后,手动添加查询条件,并以查询结果为源数据,绘制报告图。

    4.2 趋势图的制作

            以某开发阶段内提交的缺陷和修复的缺陷统计为例,我们来了解如何查看缺陷的历史趋势信息。

            在选择新建趋势图后,趋势图的参数定制窗口显示出来。如图7所示,起始日期(Start date)和结束日期(End date)定义了在该时间范围内进行趋势分析,时间间隔(interval)可以选择天、周、月、年。状态(state)在本例中选择提交(submitted)和修复(resolved)。统计方式选择显示该时间段内的总量(Show totals in each time period)。


    图7 趋势图参数设置

    趋势图参数设置


     

            同样,在进行了图表标签定制、展示类型和风格的定制后,通过查询确定源数据,最终的缺陷分析报告图如图8所示。


    图8 缺陷分析报告图—趋势图例

    缺陷分析报告图—趋势图例


     

            该图表示在所示时间区间内,每个月提交和修复的缺陷数量趋势变化。红色曲线表示新提交缺陷数量趋势变化,随着该阶段测试工作的开展,新发现的缺陷呈上升趋势,接近迭代周期的后期,由于大多数的缺陷被修复,发现的新缺陷迅速下降。蓝色曲线表示修复缺陷的数量变化趋势,起初由于缺陷修复在时间上滞后于缺陷提交,所以少于缺陷的提交数量,随着修复的进行,越来越多的缺陷得以修复,包括前段时间累积的缺陷,最后,随着新提交缺陷数量的减少,修复缺陷的数量也呈下降趋势。这张趋势图基本符合一个迭代周期内缺陷的理想状态分布,表明该产品的质量以及团队工作效率比较合适。

    4.3 回顾图的制作

            最后,我们来介绍回顾图的制作。比如我们想查看一批缺陷一般在多长时间内关闭,图9为参数定制界面,选择时间间隔以及间隔数量,并且选定所要查看的状态—关闭。


    图9 回顾图参数设置

    回顾图参数设置


     

            最终的回顾图如图10所示。


    图10 缺陷分析报告图—回顾图例

    缺陷分析报告图—回顾图例


     

            通过图表可见,绝大多数的缺陷通常在1-2个月内关闭,其次在1个月内关闭。项目经理结合缺陷关闭进度标准,可以判断当前的缺陷关闭进度是否满足项目要求。

    总结

            利用ClearQuest出色的缺陷管理、查询和报告图的功能,不同角色的用户可以根据各自的需求方便地绘制报告图,提取出所需的信息,从而对项目、产品的管理做出科学的决策。

    更多缺陷管理相关的软件测试文章:http://www.51testing.com/?action_category_catid_104.html

  • 使用 IBM Rational ClearQuest 创建缺陷分析报告图

    2008-06-05 23:00:07

     

    使用 IBM Rational ClearQuest 创建缺陷分析报告图

            在软件开发中,缺陷是衡量软件产品质量的重要指数,同时,它也为评估开发测试团队的工作效率提供了一个非常有效的参考。因此对缺陷的分析,就成为软件开发生命周期中必不可少的工作。IBM Rational ClearQuest作为一个灵活的工作流程以及变更管理的工具,提供了对缺陷的分析报告图制作的无缝集成,开箱即用的操作大大方便了用户的定制和作图。本文将在介绍缺陷分析报告基本制作方法的基础上,结合ClearQuest工具,详细阐述制作缺陷分析报告图的方法和技巧。
    1. 缺陷分析报告简介

            我们首先通过一个简单的实例,对缺陷分析有个直观的理解。

            报告需求:在A产品构建阶段,项目经理想要通过缺陷的严重度和数量来了解目前产品的各个开发模块(a,b,c)的质量水平。

    报告分析:

            输入数据范围界定:构建阶段的A产品的所有缺陷。可以通过缺陷的字段 “缺陷发现阶段=构建阶段” 过滤提取出输入数据。 
            分类方式:有两种分类方式—缺陷严重度和缺陷数量。首先将缺陷按照开发模块划分,方法是通过缺陷字段“模块”组织分类。在一个模块内部再按照缺陷严重度划分,方法是通过字段“严重度”来分类。 
            输出:缺陷数量。

            报告结果数据:A 产品构建阶段所有缺陷是470个,其中模块a-120(非常严重30,严重70,不严重20);模块b-230(略);模块c-120(略)。

    报告表:

    A 产品构建阶段缺陷数量报告表
    模块 a 模块 b 模块 c 总共
    非常严重 30 50 10 90
    严重 70 80 60 210
    不严重 20 100 50 170
    总共 120 230 120 470

     

    A 产品构建阶段缺陷报告图

    A 产品构建阶段缺陷报告图

    报告结论:

            在构建阶段内,模块b的质量问题较为突出,非常严重的缺陷数量大大超过其它两个组件,而且模块b整体的缺陷数量也最多。因此需要对模块b的质量加强管理与监督。相比之下,模块c的质量问题比较理想,主要集中在不严重的小缺陷上,但也应该提醒相关人员加以改进。

            通过这个例子,我们可以看出,缺陷分析就是从一组缺陷数据中,提取具有某些属性的一类或者多类缺陷,利用统计的方法对其数量或者其它特征加以分析和对比,制作出分析表格或者图形,从而得出一定的结论。而这里的表格和图形就是缺陷分析报告的不同形式。

            从这个例子我们还可以看出,报告图较表格更为直观,能够一目了然地反映报告结果。也正因如此,报告图在实际工作中更为常用。但是报告图通常是以报告表为数据源,再次加工而成。通常情况下,报告人先生成报告表,然后再利用excel等工具,完成报告图的制作。如果需要频繁大量地生成报告图,这种手工操作无疑增加了相当的工作量。而ClearQuest不仅在缺陷管理方面功能强大,而且集成了报告图的制作功能,用户只需要组织报告分析字段,查询、报告功能就能同时完成。另外ClearQuest还支持报告图的旋转、缩放等动态显示效果。

  • QuickTestProfessional基本使用示例(原创)

    2008-06-05 22:57:35

    QuickTestProfessional基本使用示例(原创)

    1          设置脚本间的间隔时间

    Wait(2),单位:秒

    2          循环语句while

    i=0

    do while(i<10)

    Window("Opera").Restore

    Window("Opera").WinObject("OperaWindowClass").Click 446,232

    Window("Opera").WinObject("OperaWindowClass").Click 461,278

    i=i+1

    loop

    3         循环语句for

    For i=1 to 3

           Window("Opera").Restore

    Window("Opera").WinObject("OperaWindowClass").Click 446,232

    Window("Opera").WinObject("OperaWindowClass").Click 461,278

    Next

    4          判断语句

    Do while(i<20)

    Browser("XX项目").Page("XX项目").Frame("wap").Link("啤酒").Click

    wait(2)

    Browser("XX项目").Page("XX项目").Frame("wap_2").Link("商铺详情").Click

    wait(2)

    i=i+1

    If i=5 Then

           Exit do

    End If

    Loop

    5          With语句

    Do while(i<20)

    With Browser("XX项目")

    .Page("XX项目").Frame("wap").Link("生活家居").Click

    .Page("XX项目").Frame("wap_5").Link("出租(火爆招租中)").Click

    .Page("XX项目").Sync

    With .Page("XX项目")

    .Frame("wap_6").Image("image").Check CheckPoint("image")'检查点

    .Frame("wap_6").Link("返回XX首页").Click

    .Sync

    .Frame("wap").Check CheckPoint("生活家居")'检查点

    End with

    End with

    i=i+1

    If i=3 Then

        i=21

    End If

    Loop

    6         检查点

    Browser("XX项目").Page("XX项目").Frame("wap").Link("生活家居").Click

    Browser("XX项目").Page("XX项目").Frame("wap_5").Link("出租(火爆招租中)").Click

    Browser("XX项目").Page("XX项目").Sync

    Browser("XX项目").Page("XX项目").Frame("wap_6").Image("image").Check CheckPoint("image")'检查点

    Browser("XX项目").Page("XX项目").Frame("wap_6").Link("返回XX首页").Click

    Browser("XX项目").Page("XX项目").Sync

    Browser("XX项目").Page("XX项目").Frame("wap").Check CheckPoint("生活家居")'检查点

    7           引用函数

    Function  hjq(i)

       msgbox("hjq")

    End Function

     

    Do while(i<20)

    '开始

    Browser("XX项目").Page("XX项目").Frame("wap").Link("啤酒").Click

    wait(2)

    Browser("XX项目").Page("XX项目").Frame("wap_2").Link("商铺详情").Click

    '详情

    i=i+1

    If i=3 Then

        i=21

    End If

    Call hjq(i)

    Loop

    8           引用action

    录制action1,在step->action properties中设置该actionreuseable action

    录制action2,在inser->call to exiting action,选择action1

    OK

    9           参数化

    keyword view中设置对象的value为参数,并设置值

    With Browser("XX项目_2").Page("XX项目")

           With .Frame("wap_2")

                  .WebEdit("key").Set "1"

                  .WebButton("").Click

           End With

           .Frame("wap_3").Link("重新搜索").Click

           With .Frame("wap")

                  .WebEdit("key").Set DataTable("p_Text", dtGlobalSheet)

                  .WebButton("").Click

           End With

           .Sync

    End With

    10       Vbs随机读取一行文本内容

    '随机读取文件中的一行

    randomize 

    set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象

    set a=createobject("scrīpting.dictionary")  '类似于二维数组

    set file=fso.opentextfile("D:\hjq.txt")  '打开文件

    do while file.atendofstream<>true 

    m=m+1  'm记录文件中文本行数

    a.add m,file.readline  'file.readline读取某行记录

    loop 

    file.close  '关闭文件

    h=int(rnd*m) 

    msgbox "" & h & ":  " & a(h) ,4096,"随机内容"

    msgbox "1:  " & a(1) ,4096,"内容"

    msgbox "2:  " & a(2) ,4096,"内容"

    msgbox "3:  " & a(3) ,4096,"内容"

    11       二维数组的使用

    set a=createobject("scrīpting.dictionary")  '类似于二维数组

    a.add 0,"返回XX首页"

    a.add 1,"返回XX首页"

    a.add 2,"返回XX首页"

    a.add 3,"返回XX首页"

     

    For i=0 to 3

     

    With Browser("XX项目").Page("XX项目")

           With .Frame("wap")

                  .WebEdit("key").Set "1"

                  .WebButton("").Click

           End With

           .Frame("wap_2").Link(a(i)).Click

           .Sync

    End With

    Next

    12       从文件读取文本,并赋予参数

    set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象

    set a=createobject("scrīpting.dictionary")  '类似于二维数组

    set file=fso.opentextfile("D:\hjq.txt")  '打开文件

    wait(2)

    do while file.atendofstream<>true

    With Browser("XX项目").Page("XX项目")

           With .Frame("wap")

                  .WebEdit("key").Set  file.readline

                  .WebButton("").Click

           End With

           .Frame("wap_2").Link("返回XX首页").Click

           .Sync

    End With

    loop 

    file.close  '关闭文件

    13       读取csv文件并分割字符串

    Dim aasplit

    set fso=createobject("scrīpting.filesystemobject")  '创建文件系统对象

    set file=fso.opentextfile("D:\hjq.csv")  '打开csv文件

    wait(2)

    Do while file.atendofstream<>true

        aasplit=split(file.readline,",")',分割字符串

     

           For i=0 to UBound(aasplit)

     

                  With Browser("XX项目").Page("XX项目")

                         With .Frame("wap")

                                .WebEdit("key").Set  aasplit(i)

                                .WebButton("").Click

                         End With

                         .Frame("wap_2").Link("返回XX首页").Click

                         .Sync

                  End With

                 

           Next

     

    loop 

    file.close  '关闭文件

    14       怎样识别弹出的web窗口和对象

    1,  进入object identification

    2,  enviroment中选择web

    3,  选择某个test object class,如browser

    4,  添加mandatory properties

    5,  确定

    6,  重新录制脚本

    7,  OK

    15       Vbs写文件

    set fs =createobject("scrīpting.filesystemobject")

    if (fs.fileexists("c:\hjq.txt")) then

    set f =fs.opentextfile("c:\hjq.txt",8)

    f.write chr(13)+chr(10)

    f.write "hello"

    f.write chr(13)+chr(10)

    f.writeline "beijing"

    f.close

    else

    set f=fs.opentextfile("c:\hjq.txt",2, true)

    f.writeblanklines 2 '写入2个空行

    f.write "china"

    f.close

    end if

     

    16       基本函数

    QTP的基本使用函数:

    1, 获取对话框相应的文字: GetVisible Text

    2, 查找相应的字符串: instr (1,查找目标字符串,所查找的字符串)

    3, 随机数的获取: Randomnumber.Value() cstr(int(Rnd*10)+1)

    4, 等待函数: Wait(秒数)

    5, 获取数组下标: UBound (数组名)

    6, 拆分数组: Split(MyString, ",", -1, 1)

    7, 可执行步骤: OptionalStep

    8, 报告信息: Reporter.ReportEvent 3, "Save Step", "Out of cycle!"

    9, 判断对话框是否存在: .exist

    10,事件过滤函数:Reporter.Filter=过滤条件(0123)0代表显示所有的errorwarning,1,显示error,2,显示waining,3,任何errorwarning都不显示。

    11,循环函数:do … loop untilfor…to… then next,while.

    12,数据表格:DataTable,向外赋值,Dim aa = DataTable.value(“CellingName”,”ActionName”).

    13,获得对象属性的三种方法GetTOPropertyGetTOProperties,GetROProperty,GetTOProperty获得程序中对象当前的属性,GetTOProperties获得当前属性所有集合,GetROProperty获得的是录制时对象所获得的属性。

    14,检查点方法check和输出指定属性值output

    15,函数Descrīption,可以获得某页面同标签的属性进行操作。

    16,函数nagative可以随便跳转页面到指定的URL

    17,函数Object可以获得当前页面同属性的控件。

    18,函数Focus可以让控件获得焦点,函数Blur则是失去焦点,click单击,dbclick双击。

    19,函数setAttribute可以设置控件属性,getAttribute可以获得属性。

     

我的栏目

我的存档

数据统计

  • 访问量: 3190
  • 日志数: 4
  • 建立时间: 2008-06-05
  • 更新时间: 2008-06-06

RSS订阅

Open Toolbar