故意学习,故意生活,故意活的像个人!

发布新日志

  • 冒烟测试与随机测试(摘贴51)

    2007-08-08 12:09:52

    软件测试的种类何其多也,每种测试都有其要达到的目的和实现手段。本文将介绍两种不太普遍的测试类型-冒烟测试与随机测试。

    冒烟测试

    冒烟测试(smoke testing),据说是微软起的名字。在《微软项目求生法则》一书第14章“构建过程”关于冒烟测试,就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。

    冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板功基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。

    冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

    在一般软件公司,软件在编写过程中,内部需要编译多个版本(Builds),但是只有有限的几个版本需要执行正式测试(根据项目开发计划),这些需要执行的中间测试版本,在刚刚编译出来后,软件编译人员需要进行基本性能确认测试,例如是否可以正确安装/卸载,主要功能是否实现,是否存在严重死机或数据严重丢失等Bug。如果通过了该测试,则可以根据正式测试文档进行正式测试。否则,就需要重新编译版本,再次执行版本可接收确认测试,直到成功。

    新版本的基本功能确认检查的测试,有的公司成为版本健康检查(Build Sanity Check)。对于编译的本地化软件新版本,除了进行上面提到的各种测试检查,还要检查是否在新的本地化版本中正确包含了全部应该本地化的文件。可以通过采用文件和目录结构比较工具,首先比较源语言版本和本地化版本的文件和目录中的文件数目、文件名称和文件日期等,这个过程称为版本镜像检查(Build Image Check)。其次,分别安装源语言版本和本地化版本,比较安装后的文件和目录结构中的文件数目、文件名称和文件日期等,这个过程称为版本安装检查(Build Installing Check)。

    随机测试

    在软件测试中除了根据测试样例和测试说明书进行测试外,还需要进行随机测试(Ad-hoc testing),主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行样例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

    随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing)一起进行。

    理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高。
  • 单元测试培训课程大纲(C/C++)51

    2007-03-06 10:29:35

    第一章:软件详细设计评审

    一、 课程设计
    1.详细设计文档的文档格式、规范
      介绍如何根据根据概要设计文档完成详细设计文档,并且,保证详细设计文档可以指导后续的编码和单元测试工作;

    2.伪码写作注意事项
      通过实例讲解详细设计的伪码写作规范,讲解详细设计评审的要点;

    3.实践环节
      教师提供两份典型的详细设计案例给学员作为参考。并且提供一份详细设计,由学员完成详细设计的评审工作,找出详细设计中的缺陷;


    第二章:单元测试理论


    一、课程设计
    1. 测试理论基础
    2. 什么是单元测试
    3. 单元测试的基本方法
    4. 桩和驱动
    5. 单元测试策略
    6. 单元测试过程
    7. 单元测试辅助工具


    第三章:单元测试用例设计


    一、课程设计
    1、代码逻辑覆盖方法介绍

    1) 代码逻辑覆盖方法:
       重点介绍代码逻辑覆盖率的若干种方法,包括代码覆盖、分支覆盖、条件覆盖、分支条件覆盖、路径覆盖几种方法;

    2) 代码逻辑覆盖率统计工具:
      教师结合代码逻辑覆盖率统计工具,可视化的展现代码逻辑覆盖的基本思路和方法;

    3) 代码逻辑覆盖率案例和课堂练习
      教师针对每种覆盖方法提供案例讲解,并且提供课堂练习,由学员分析案例种的代码逻辑覆盖率;


    2、基于基本路径覆盖和循环覆盖的单元测试用例设计

    1) 基本路径覆盖方法介绍:
      介绍在单元测试中使用的设计方法——基本路径覆盖方法和循环覆盖方法;

    2) 基本路径覆盖方法:
      详细阐述基本路径覆盖法的使用方法和原则,教师列举案例,并且为学员提供课堂练习;

    3) 循环覆盖方法:
      详细阐述循环覆盖法中的简单循环、嵌套循环、连锁循环、非结构循环四种方法,并且针对每种方法给出案例解释,并分别提供课堂练习;

    3、黑盒用例设计方法介绍

    1) 边界值方法
       讲解边界值方法设计单元测试用例方法和步骤,教师提供案例讲解

    2) 等价类方法
       讲解等价类设计单元测试用例的方法和设计步骤,教师提供案例讲解,并且提供4种不同类型的等价类划分的课堂练习;
       总结等价类和边界值分析的优点和缺点,以及使用的场合限制;

    3) 正交试验法
      讲解正交表的原理,通过案例讲解正交试验法设计单元测试用例的具体方法;并且提供5种不同类型的正交试验法设计单元测试用例的课堂练习;

    4) 错误猜测法
      通过案例讲解错误猜测法设计单元测试用例的方法;

    4、单元测试用例设计方法的整合使用方法
       整合黑盒测试用例设计方法、基本路径覆盖法、循环覆盖法、以及测试过程中补充单元测试用例的方法,提供整合后的单元测试用例设计的基本思路;

    第四章:软件单元测试相关工具

    一、课程设计
    1、代码静态检查工具pc-lint使用
    2、代码逻辑覆盖率检测工具使用
    3、实践环节
      学员通过课堂练习,掌握代码静态检查工具、覆盖率检查工具的使用方法和技巧;

    第五章:TCL语言

    一、课程设计
    1、Tcl概述
      总体介绍Tcl脚本的特点,以及Tcl脚本在自动化测试领域里面的应用情况。
    2、Tcl基本语法
      Tcl是一门容易上手的语言,本课程通过对比C语言和Tcl脚本语言,讲解Tcl语言的使用方法,以及在使用Tcl语言时候的注意事项。
    3、Tcl实践
      结合教师提供的题目,学员完成课堂实践,通过实践学员掌握Tcl的基本使用方法。为后续的自动化测试框架搭建做好准备工作。

    第六章:单元测试执行-tcl方式

    一、课程设计
    1、Tcl扩展指令
      Tcl的扩展指令是Tcl在自动化测试领域里面应用的关键所在,本小节讲解Tcl脚本如何与C语言混合编程的方法,以及扩展指令的设计方法。
    2、结合Tcl扩展指令搭建自动化测试框架
      讲解如何结合Tcl扩展指令,搭建基于关键字的自动化测试框架搭建方法,以及类似批处理方式的自动化测试框架搭建方法
    3、结合Tcl扩展指令搭建自动化测试框架的课堂实践
      在教师的指导下,学员完成集合Tcl扩展指令搭建自动化测试框架的课堂实践
    4、基于扩展指令的数据驱动自动化测试方法
      在基于关键字驱动的自动化测试框架基础上,讲解如何实现数据驱动方式的自动化测试框架搭建方法。数据驱动的自动化测试框架可以实现测试用例和测试脚本的分离。
    5、基于扩展指令的数据驱动自动化测试方法
      在教师的指导下,学员完成基于数据驱动方式的自动化测试框架搭建活动。

    第七章:单元测试执行-CPPUNIT方式

    一、课程设计
    1、CppUnit概述
    2、CppUnit基本概念
    3、CppUnit单元测试框架
    4、利用CppUnit进行单元测试实践
      学员利用cppunit搭建单元测试环境,并结合代码覆盖率工具完成课堂练习;

     

  • 因果图法实例三

    2007-01-30 14:34:04

    因果图实例讲解

     此例子是讲解利用因果图设计测试用例的一个小例子。以中国象棋中走马的测试用例设计为例学习因果图的使用方法。
     
    分析中国象棋中走马的实际情况(下面未注明的均指的是对马的说明)
     1、如果落点在棋盘外,则不移动棋子;2、如果落点与起点不构成日字型,则不移动棋子;3、如果落点处有自己方棋子,则不移动棋子;4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;5、如果不属于1-4条,且落点处无棋子,则移动棋子;6、如果不属于1-4条,且落点处为对方棋子(非老将),则移动棋子并除去对方棋子;7如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
    根据分析明确原因和结果
    原因:
    落点在棋盘上;
    落点与起点构成日字;
    落点处为自己方棋子;
    落点方向的邻近交叉点有棋子;
    落点处无棋子;
    落点处为对方棋子(非老将);
    落点处为对方老将。
     结果:
     21、不移动棋子;
     22、移动棋子;
     23、移动棋子,并除去对方棋子;
     24、移动棋子,并提示战胜对方,结束游戏。
     
     添加中间节点11,目的是作为导出结果的进一步原因,简化因果图导出的判定表
     

    考虑结果不能同时发生,所以对其施加唯一约束O。原因5、6、7不能同时发生,所以对其施加异约束E.
    根据因果图建立判定表:(分为两表)
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
    原因 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
     2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 
     3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 
     4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 
    结果 11 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
     21 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 
    用例                  

     1 2 3 4 5 6 7 8 9 `0 11 12 13 14 15 16 
    原因 11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
     5 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 
     6 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 
     7 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 
    结果 22 0  0 1 0 0   0 0       
     23 0  0 0 0 1   0 0       
     24 0  0 0 0 0   0 1       
    用例                  
    注:1、以上判定表中由于表格大小限制没有列出最后所选的测试用例;2、第2表中部分列被合并表示不可能发生的现象;3、通过中间节点将用例的判定表简化为两个小表。减少工作量。

    四、根据判定表写测试用例表(略)

  • 因果图法--实例二

    2007-01-30 14:33:17

    邮件系统的组装测试
     本系统的组装测试是“自底向上”进行的,先测试辅助模块,再测试主控模块。测试方法为因果图法。
     1. 新用户注册页面和其他页面的消息传递
    原因和结果列表:
    原因 操作 结果 
    (1)USERNAME (14)确认 (16)个人资料显示所填内容 
    (2)密码 (15)取消 (17)登录用用户名和密码进入 
    (3)密码提示问题  (18)信箱各文件夹的用户名显示 
    (4)提示问题的回答  (19)密码更改中输入密码 
    (5)姓名  (20)忘记密码中输入用户名和提示问题的回答 
    (6)传真机号、传呼机号、手机号码   
    (7)性别   
    (8)出生年月   
    (9)最高学历、婚姻状况   
    (10)你的职业   
    (11)公司名、公司规模、公司主页   
    (12)希望加入的群组   
    (13)所在省份   
    由原因和结果列表得到的因果图:

     
    由因果图得到的判定表和测试用例:
               用例序号 1 2  3 4 5 
     
     
     

     
     
     
     

       1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13 1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 0 1 
      1 1 0 0 1 
      1 1 1 1 1 
      1 1 0 0 1 
      1 1 1 1 0 
      1 1 1 0 0 
      1 0 1 0 1 
      1 0 1 0 1 

    作 14
    15 1 1 1 1 1 
      0 0 0 0 0 

     
     
    果 16
    17
    18
    19
    20 1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 1 1 
      1 1 1 1 1 
      1  1  1  1  1  
    测试结果 N(3)(10)  N(3) N(3) N(3) N(3) 
     
    2.忘记密码页和登录页
     忘记密码页和其他部分的消息传递只有:新密码传给登录页面;新密码传给密码更改页。测试正确。
     登录页和其他部分的消息传递只有:用户名传给信箱的收件箱、发件箱、草稿箱、垃圾。测试正确。
    3.信箱首页
    原因和结果列表:
    原因 操作 结果 
    (1)输入文件夹名 (2)创建 (19)菜单中相应增加一个文件夹项 
     (3)删除 (5)产生一个浏览该文件夹信件的页面 
     (4)改名 (6)信箱首页增加一行,显示该文件夹内容 
      (7)过滤器的规则设置中转移到的选项相应增加一个 
      (8)收件箱、垃圾箱、草稿箱、发件箱中移动到的选项相应增加一个。 
      (9)菜单中相应减少一个文件夹项 
      (10)去掉浏览该文件夹信件的页面 
      (11)信箱首页减少显示该文件夹内容的一行, 
      (12)过滤器的规则设置中转移到的选项相应减少一个 
      (13)收件箱、垃圾箱、草稿箱、发件箱中移动到的选项相应减少一个。 
      (14)菜单中相应更改一个文件夹项 
      (15)更改浏览该文件夹信件的页面 
      (16)信箱首页更改一行,显示该文件夹内容 
      (17)过滤器的规则设置中转移到的选项相应更改一个 
      (18)收件箱、垃圾箱、草稿箱、发件箱中移动到的选项相应更改一个。 
      由原因和结果列表得到的因果图:

    由因果图得到的判定表和测试用例:
    注:表中-1表示创建已存在的文件夹
    用例序号 1 2 3 4 5 6 7 
    原因 (1) 1 1 1 1 0 0 0 

     
    作 (2)
    (3)
    (4) 1 0 0 -1 1 0 0 
      0 1 0 0 0 1 0 
      0 0 1 0 0 0 1 
     
     
     

     
     
     
     
     
     
    果 (19)
    (5)
    (6)
    (7)
    (8)
    (9)
    (10)
    (11)
    (12)
    (13)
    (14)
    (15)
    (16)
    (17)
    (18) 1 0 0 0 0 0 0 
      1 0 0 0 0 0 0 
      1 0 0 0 0 0 0 
      1 0 0 0 0 0 0 
      1 0 0 0 0 0 0 
      0 1 0 0 0 0 0 
      0 1 0 0 0 0 0 
      0 1 0 0 0 0 0 
      0 1 0 0 0 0 0 
      0 1 0 0 0 0 0 
      0 0 1 0 0 0 0 
      0 0 1 0 0 0 0 
      0 0 1 0 0 0 0 
      0 0 1 0 0 0 0 
      0 0 1 0 0 0 0 
    测试结果 N(7) N(12) N(17) Y Y Y Y 
     
    4.发件箱和其他页的消息传递:
    原因和结果列表:
    原因 操作 结果 
    (1)收件人 (10)地址薄 (16)收件人收到邮件 
    (2)主题 (11)寄出 (17)收件人按设定时间收到邮件 
    (3)抄送 (12)存原稿 (18)从地址薄中取得地址 
    (4)暗送 (13)附件 (19)存入发件箱 
    (5)附件 (14)取消 (20)存入草稿箱 
    (6)保存到发件箱 (15)定时发送 (21)收件箱新邮件数、邮件总数加1 
    (7)签名档使用项    (22)收件人收到暗送邮件 
    (8)信件正文    (23)收件人收到抄送邮件 
    (9)定时时间    (24)随信邮寄附件 
          (25)发件箱新邮件数、邮件总数加1 
          (26)草稿箱新邮件数、邮件总数加1 
          (28)信件阅读页面显示发件人,主题,内容 
          (29)信件阅览中显示签名信息 
      由原因结果列表得到的因果图:

    由因果图得到的判定表和测试用例:
    用例序号 1 2 3 4 5 6 7 8 9 
     

     
     
     
    因 (1)
    (2)
    (3)
    (4)
    (5)
    (6)
    (7)
    (8)
    (9) 1 1 1 1 1 1 1 1 1 
      1    1 1 1 1 1 1 1 
      0                   1    
      0                      1 
                        1       
               1                
                     1          
      1    1 1 1 1 1 1 1 
            1                   

     
     
    作 (10)
    (11)
    (12)
    (15)    1                      
      1    1 1    1 1 1 1 
                  1             
                                 
     
     
     

     
     
     
     
     
    果 (16)
    (17)
    (18)
    (19)
    (20)
    (21)
    (22)
    (23)
    (24)
    (25)
    (26)
    (27)
    (28)
    (29) 1    1 1    1 1 1 1 
            1                   
         1                      
               1                
                  1             
      1    1 1    1 1 1 1 
                           1    
                              1 
                        1       
               1                
                  1             
                                 
      1    1 1    1 1 1 1 
                     1          
    测试结果 N(21, N Y YY Y Y Y N(25 N(26 
     
    5.收件箱与其他部分的消息传递
    原因与结果列表:
    原因 操作 结果 
    (1)选定信件 (3)删除 (7)选定信件被删除 
    (2)转移到选项选择 (4)移动到 (8)选定信件移到目标文件夹 
       (5)返回 (9)信件总数减一 
       (6)POP邮件 (10)收取POP服务器上的邮件 
          (11)文件夹信件数加一 
      由原因与结果列表得出的因果图:

    由因果图得出的判定表
    用例序号 1 2 3 4 5 

    因 (1)
    (2) 1             
         1 1       

     
    作 (3)
    (4)
    (5) 1       1    
         1       1 
            1       

     
     
    果 (7)
    (8)
    (9)
    (10)
    (11) 1             
         1          
      1             
            1       
         1          
    测试结果 Y Y Y Y Y 
                    
     
    6.草稿箱和其他部分的消息传递
    原因与结果列表:
    原因 操作 结果 
    (1)选定信件 (3)删除 (7)选定信件被删除 
    (2)转移到选项选择 (4)移动到 (8)选定信件移到目标文件夹 
       (5)返回 (9)信件总数减一 
       (6)POP邮件 (11)文件夹信件数加一 
      由原因与结果列表得出的因果图:

    由因果图得出的判定表:
    用例序号 1 2 3 4 

    因 (1)
    (2) 1          
         1       

    作 (3)
    (4) 1    1    
         1    1 

     
     
    果 (7)
    (8)
    (9)
    (10) 1          
         1       
      1          
         1       
    测试结果 Y Y Y Y 
                  
     
    7.垃圾箱和其他部分的消息传递
    原因与结果列表:
    原因 操作 结果 
    (1)选定信件 (3)删除 (7)选定信件被删除 
    (2)转移到选项选择 (4)移动到 (8)选定信件移到目标文件夹 
       (5)返回 (9)信件总数减一 
       (6)POP邮件 (11)文件夹信件数加一 
      由原因与结果列表得出的因果图:

    由因果图得出的判定表:
    用例序号 1 2 3 4 

    因 (1)
    (2) 1          
         1       

    作 (3)
    (4) 1    1    
         1    1 

     
     
    果 (7)
    (8)
    (9)
    (10) 1          
         1       
      1          
         1       
    测试结果 Y Y Y Y 
                  
     
    8.发件箱和其他部分的消息传递
    原因与结果列表:
    原因 操作 结果 
    (1)选定信件 (3)删除 (7)选定信件被删除 
    (2)转移到选项选择 (4)移动到 (8)选定信件移到目标文件夹 
       (5)返回 (9)信件总数减一 
       (6)POP邮件 (11)文件夹信件数加一 
      由原因与结果列表得出的因果图:
     
    由因果图得出的判定表:
    用例序号 1 2 3 4 

    因 (1)
    (2) 1          
         1       

    作 (3)
    (4) 1    1    
         1    1 

     
     
    果 (7)
    (8)
    (9)
    (10) 1          
         1       
      1          
         1       
    测试结果 Y Y Y Y 
                  

  • 因果图法--实例一 

    2007-01-30 14:32:19

    实例[111]一:
    “第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。”

    首先根据这一规格说明画出因果图。在分析以上的要求以后,可以明确地把原因和结果分开。以下分别给出(左端数字是编号):
    原因:
      1——第一列字符是A;
     2——第一列字符是B;
     3——第二列字符是一数字。
    结果:
      21——修改文件;
      22——给出信息L;
      23——给出信息M。
    我们把原因和结果用上述的逻辑符号联结起来,画成因果图(如下)。图中左列表示原因,右列为结果,编号为11的中间结点是导出结果的进一步原因。
         因果图实例图
    考虑到原因1和原因2不可能同时为1(即第一列字符不可能是A和B),我们在因果图上可对其施加E约束,这样便得到了具有约束的因果图。
          具有E约束的因果图
    根据因果图建立如下的判定表:
     1 2 3 4 5 6 7 8 
    条件(原因) (1) 1 1 1 1 0 0 0 0 
     (2) 1 1 0 0 1 1 0 0 
     (3) 1 0 1 0 1 0 1 0 
     (11)  1 1 1 1 0 0 
    动作(结果) (22)  0 0 0 0 1 1 
     (21)  1 0 1 0 0 0 
     (23)  0 1 0 1 0 1 
    测试用例  A3
    A8 AM
    A? B5
    B4 BN
    B! C2
    X6 DY
    P; 

     

     

     

     

     

     

     

     

     

     

     

  • 等价类划分例二:电子邮件系统

    2007-01-30 14:30:53


     说明:本系统的单元测试主要以单个单元内部的消息传递和功能实现为主。测试方法为等价类划分法。
     1. 新用户注册页面
    数据项取值:
    USER NAME:长度为 3-19 ;以字母开头;非空。(没用)
    姓名:非空。
    密码:非空。
    确认密码:值和密码值相同。
    出生年份:年——四位数字;月——1-12;日——1-31。
    其余项:不要求。
    等价类的划分 :等价类表。
    数据项 有效等价类 无效等价类 
    USER NAME (1)长 3-19 ;(2)以字母开头; (1)长度<3;(2)非字母开头(3)长度>19 
    姓名 (3)非空 (4)为空 
    密码 (4)非空 (5)为空 
    确认密码 (5)值和密码值相同 (6)值和密码值不同 
    出生年份 (6)月—1-12;(7)日—1-31(没有列出年份) (7)月日中有字母(分别列出;月日中有非数字符号)(8)月数字为负(零)(9)月数字大于12(10)年数中有字母(有非数字符号,年数在合理范围)(11)日数字为负(零)(12)日数字大于31(判断大月小月) 
    其余项 (8)都填(9)都不填  

     

     


    测试用例及结果  结果陈述
       USER NAME 姓名 密码 确认密码 出生年份 其余项 所属等价类 结果 
    有效等价类 aaaaaa aaaaaa aaaaaa aaaaaa 1977.8.22 空 (1)—(7),(9) Y 
     Tttttt Tttttt tttttt Tttttt 1977.8.22 非空 (1)—(8) Y 
    无效等价类 t tttt tttt tttt 1972.8.22  (1) Y 
     qqqqqqqqqqdfasdfasdfasdfadfasdfad tttt tttt Tttt 1977.8.22  (3) N 
     111111 tttt tttt tttt 1977.8.22  (2) 提示不符 
     zzzz 空 zzzz zzzz 1977.8.23  (4) Y 
     zzzz zzzz 空 zzzz 1977.8.22  (5) Y 
     zzzz zzzz zzzz tttt 1977.8.22  (6) Y 
     ssss ssss ssss ssss 19a7.8.22  (10) Y 
     ssss ssss ssss ssss 1977.8a.22  (7) N 
     ssss ssss ssss ssss 1977.8.2a  (7) N 
     ssss ssss ssss ssss 1977.-1.22  (8) Y 
     ssss ssss ssss ssss 1977.81.22  (9) Y 
     ssss ssss ssss ssss 1977.8.-2 tt (11) Y 
     ssss ssss ssss ssss 1977.8.55  (12) Y 
     
    2.忘记密码部分
    数据项取值
    登录用户名:已存在的用户名
    用户的回答:和注册值相同
    密码:>=5
    确认密码:值和密码值相同
    等价类的划分
    数据项 有效等价类 无效等价类 
    登录用户名 (1)已存在 (1)不存在(是否正确) 
    用户的回答 (2)和注册值相同 (2)和注册值不同 
    密码 (3)>=5 (3)<5 
    密码确认 (4)值和密码值相同 (4)和密码值不同 

    测试用例及结果结果陈述
     登录用户名 用户的回答 密码 密码确认 所属等价类 结果 
    有效等价类 ttttt  aaaaa aaaaa (1)-(4) Y 
    无效等价类 Tttttta    (1) Y 
     ttttt ccc   (2) Y 
     ttttt  aa aa (3) Y 
     ttttt  aaaaa aaaaa (4) Y 
     
    3.登陆页面
    数据项取值
    用户名:已存在值
    密码:和注册值相同
    等价类的划分
    数据项 有效等价类 无效等价类 
    用户名 (1)已存在 (1)不存在 
    密码 (2)和注册值相同 (2)和注册值不同 

    测试用例及结果结果陈述
     用户名 密码 所属等价类 结果 
    有效等价类 ttttt aaaaa (1)-(2) Y 
    无效等价类 Tttttta aaaaa (1) Y 
     ttttt tttt (2) Y 
     
    4.信箱首页
    数据项取值
    待创建的文件夹名:不存在的文件夹名
    待删除的文件夹名:已存在的文件夹名
    等价类的划分
    数据项 有效等价类 无效等价类 
    待创建的文件夹名 (1) 不存在的文件夹名 (1)已存在(2)空值 
    待删除的文件夹名 (2)已存在的文件夹名 (3)不存在(4)空值(非文件夹) 

    测试用例及结果
     输入 操作 所属等价类 结果 
    有效等价类 Aa 创建 (1) Y 
     aa 删除 (2) Y 
    无效等价类 Aaa(已存在) 创建 (1) N 
      创建 (2) Y 
     ttttt 删除 (3) N 
      删除 (4) Y 
     
    5.发邮件
    数据项取值
    收件人:
    定时发送时间:年——四位数字;月——1-12;日——1-31;
    其余项:不要求
    操作:寄出,存原稿,存地址薄,加附件,取消
    等价类的划分
    数据项 有效等价类 无效等价类 
    收件人 (1) 非空寄出(3)非空存原稿(4)非空加入地址薄(5)非空加附件(6)取消 为空寄出(9)为空存原稿(10)为空加入地址薄(11)为空加附件
    (输入字符不合法) 
    定时发送时间 (2)年——四位数字;月——1-12;日——1-31 (3)月日中有字母(4)月数字为负(5)月数字大于12(6)年数中有字母(7)日数字为负(8)日数字大于31 
    其余项 (7)都填(8)都不填  
    (对于有效等价类,所有操作都要列出。)
    测试用例及结果结果陈述
     收件人 定时发送时间 其余项 操作 所属等价类 结果 
    有效等价类 aaaaa  都填 寄出 (1) Y 
     aaaaa   取消 (6)  
     aaaaa   存原稿 (3) Y 
     aaaaa   地址薄 (4) Y 
     aaaaa   加附件 (5) Y 
     aaaaa 2000/7/25 都不填 定时发送 (2) N 
    无效等价类    寄出 (1) Y 
        存原稿 (9) Y 
        地址薄 (10) Y 
        加附件 (11) Y 
     aaaaa A000/7/25  定时发送 (6) N 
     aaaaa 2000/-7/25  定时发送 (4) N 
     aaaaa 2000/7a/25  定时发送 (3) Y 
     aaaaa 2000/7/-9  定时发送 (7)  
     aaaaa 2000/7/88  定时发送 (8)  
    6.收件箱
    数据项取值
    “移动到”的位置:草稿箱,发件箱,垃圾箱
      操作:删除,移动到,返回,选邮件,选中所有邮件
    等价类的划分
    数据项或操作 有效等价类 无效等价类 
    删除 (1)选取邮件为非空 (1)选取邮件为空 
    移动到 (2)选取邮件为非空,移动到草稿箱(3)选取邮件为非空,移动到发件箱(4)选取邮件为非空,移动到垃圾箱 (2)选取邮件为空 
    返回 (5)直接执行  
    选中所有邮件 (6)直接执行  

    测试用例及结果结果陈述
     选邮件 移动到的位置 操作 所属等价类 结果 
    有效等价类 选两文件  删除 (1) Y 
     选两文件 草稿箱 移动到 (2) Y 
     选两文件 发件箱 移动到 (3) Y 
     选两文件 垃圾箱 移动到 (4) Y 
       返回 (5) Y 
       选中所有邮件 (6) Y 
    无效等价类   移动到 (2) Y 
       删除 (1) Y 
      7.草稿箱
    数据项取值
    “移动到”的位置:收件箱,发件箱,垃圾箱
      操作:删除,移动到,返回,选邮件,选中所有邮件
    等价类的划分
    数据项或操作 有效等价类 无效等价类 
    删除 (1)选取邮件为非空 (1)选取邮件为空 
    移动到 (2)选取邮件为非空,移动到收件箱(3)选取邮件为非空,移动到发件箱(4)选取邮件为非空,移动到垃圾箱 (2)选取邮件为空 
    返回 (5)直接执行  
    选中所有邮件 (6)直接执行  

    测试用例及结果结果陈述
     选邮件 移动到的位置 操作 所属等价类 结果 
    有效等价类 选两文件  删除 (1) Y 
     选两文件 收件箱 移动到 (2) Y 
     选两文件 发件箱 移动到 (3) Y 
     选两文件 垃圾箱 移动到 (4) Y 
       返回 (5) Y 
       选中所有邮件 (6) Y 
    无效等价类   移动到 (2) Y 
       删除 (1) Y 
      8.发件箱
    数据项取值
    “移动到”的位置:草稿箱,收件箱,垃圾箱
      操作:删除,移动到,返回,选邮件,选中所有邮件
    等价类的划分
    数据项或操作 有效等价类 无效等价类 
    删除 (1)选取邮件为非空 (1)选取邮件为空 
    移动到 (2)选取邮件为非空,移动到草稿箱(3)选取邮件为非空,移动到收件箱(4)选取邮件为非空,移动到垃圾箱 (2)选取邮件为空 
    返回 (5)直接执行  
    选中所有邮件 (6)直接执行  

    测试用例及结果结果陈述
     选邮件 移动到的位置 操作 所属等价类 结果 
    有效等价类 选两文件  删除 (1) Y 
     选两文件 草稿箱 移动到 (2) Y 
     选两文件 收件箱 移动到 (3) Y 
     选两文件 垃圾箱 移动到 (4) Y 
       返回 (5) Y 
       选中所有邮件 (6) Y 
    无效等价类   移动到 (2) Y 
       删除 (1) Y 
      9.垃圾箱
    数据项取值
    “移动到”的位置:草稿箱,收件箱,发件箱
      操作:删除,移动到,返回,选邮件,选中所有邮件
    等价类的划分
    数据项或操作 有效等价类 无效等价类 
    删除 (1)选取邮件为非空 (1)选取邮件为空 
    移动到 (2)选取邮件为非空,移动到草稿箱(3)选取邮件为非空,移动到发件箱(4)选取邮件为非空,移动到收件箱 (2)选取邮件为空 
    返回 (5)直接执行  
    选中所有邮件 (6)直接执行  

     测试用例及结果
     选邮件 移动到的位置 操作 所属等价类 结果 
    有效等价类 选两文件  删除 (1) Y 
     选两文件 草稿箱 移动到 (2) Y 
     选两文件 发件箱 移动到 (3) Y 
     选两文件 收件箱 移动到 (4) Y 
       返回 (5) Y 
       选种所有邮件 (6) Y 
    无效等价类   移动到 (2) Y 
       删除 (1) Y 
     10.地址本结果陈述
     11.配置
    本模块包括八部分:个人资料,签名,密码,参数设置,POP3邮件,过滤器,自动转信,定时发信。其中个人资料是用来修改注册信息的,其测试和新用户注册相同。该部分测试结果如下:
    “个人资料”测试用例及结果结果陈述(等价类划分同最前面)
       USER NAME 姓名 密码 确认密码 出生年份 其余项 所属等价类 结果 
    有效等价类 aaaaaa aaaaaa aaaaaa aaaaaa 1977.8.22 空 (1)-(7),(9) Y 
     Tttttt Tttttt tttttt Tttttt 1977.8.22 非空 (1)-(8) Y 
    无效等价类 t tttt tttt tttt 1972.8.22  (1) Y 
     qqqqqqqqqqdfasdfasdfasdfadfasdfad tttt tttt Tttt 1977.8.22  (3) N 
     111111 tttt tttt tttt 1977.8.22  (2) 提示不符 
     zzzz 空 zzzz zzzz 1977.8.23  (4) Y 
     zzzz zzzz 空 zzzz 1977.8.22  (5) Y 
     zzzz zzzz zzzz tttt 1977.8.22  (6) Y 
     ssss ssss ssss ssss 19a7.8.22  (10) Y 
     ssss ssss ssss ssss 1977.8a.22  (7) N 
     ssss ssss ssss ssss 1977.8.2a  (7) N 
     ssss ssss ssss ssss 1977.-1.22  (8) Y 
     ssss ssss ssss ssss 1977.81.22  (9) Y 
     ssss ssss ssss ssss 1977.8.-2 tt (11) Y 
     ssss ssss ssss ssss 1977.8.55  (12) Y 
     其余部分测试如下:
     1) 密码
    数据项取值
    现用密码:和用户名的密码相同
    新密码:>=5
    确认密码:值和密码值相同
    密码提示问题:非空
    用户的回答:非空
    等价类的划分
    数据项 有效等价类 无效等价类 
    现用密码 (1) 和用户名的密码相同 (1) 和用户名的密码不同 
    新密码 (2)>=5 (2)<5 
    密码确认 (3)值和密码值相同 (3)和密码值不同 
    密码提示问题 (4)非空 (4)为空 
    用户的回答 (5)非空 (5)为空 

    测试用例及结果结果陈述
     现用密码 新密码 密码确认 密码提示问题 用户的回答 所属等价类 结果 
    有效等价类 ttttt aaaaa aaaaa HELLO AAAAA (1)-(5) Y 
    无效等价类 Tttttt他 aaaaa aaaaa HELLO AAAAA (1) Y 
     ttttT aaa aaa HELLO AAAAA (2) Y 
     ttttt aaaaa aaaaY HELLO AAAAA (3) Y 
     Ttttt aaaaa aaaaa  AAAAA (4) N 
     ttttt aaaaa aaaaa HELLO  (5) N 
      2) 签名
    数据项取值
    签名提示:非空
    签名内容:非空
      等价类划分
    数据项 有效等价类 无效等价类 
    签名提示 (1)非空 (1)为空 
    签名内容 (2)非空 (2)为空 

      测试用例及结果结果陈述
     签名提示 签名类容 所属等价类 结果 
    有效等价类 tttt I love this game (1),(2) Y 
    无效等价类  I love this game (1) Y 
     tttt  (2) Y 
      3)参数设置
    数据项取值
    信头显示:全部显示,显示基本部分,全部不显示;
    每页最多显示邮件数: 10,20,50,无限
    回复时是否加入原件:加入,不加入;
    回复信头显示:>,Re:,回复:
    是否显示HZ中文过滤器:是,否
    每封邮件的最大字节数::2M,500K,100K,20K
    E—MAIL转传呼规则:每封邮件都显示,符合过滤规则的才显示
    删除邮件后的操作:跳转到文件夹,跳转到下一封信 
    操作:确定,取消
     等价类划分
    数据项或操作 有效等价类 无效等价类 
    信头显示 (1)全部显示,(2)显示基本部分,(3)全部不显示 无 
    每页最多显示邮件数 (4)10,(5)20,(6)50,(7)无限  
    回复时是否加入原件 (8)加入,(9)不加入  
    回复信头显示 (10)>,(11)Re:,(12)回复:  
    是否显示HZ中文过滤器 (13)是,(14)否  
    每封邮件的最大字节数 (15)2M,(16)500K,(17)100K,(18)20K  
    E—MAIL转传呼规则 (19)每封邮件都显示,(20)符合过滤规则的才显示  
    删除邮件后的操作 (21)跳转到文件夹,(22)跳转到下一封信  
    取消 (23)直接执行  
     
     测试用例及结果结果陈述
       信头显示 每页最多显示邮件数 回复时是否加入原件 回复信头显示 是否显示HZ中文过滤器 每封邮件的最大字节数 EMAIL转传呼规则 删除邮件后的操作 操作 所属等价类 结果 
    有效等价类 (1)Y (4)N (8)Y (10)Y (13) (15) (19) (21) 确定 每行各值之集合 记录再等价类后面 
     (2) (5) (9) (11) (14) (16) (20) (22) 确定   
     (3) (6) (8) (12) (14) (17) (20) (22) 确定   
     (3) (7) (9) (11) (14) (18) (20) (22) 确定   
                             取消   
    注:可开两个页面进行测试
      4)POP3邮件
    数据项取值
    用户邮箱:有@的字符串
    用户密码:非空
    响应超时时间:0-999
    端口号:0-9999
    在POP服务器上保留文件:是,否
      操作:确定,取消
     等价类划分
    数据项或操作 有效等价类 无效等价类 
    用户邮箱 (1)有@的字符串 (1)无 @的字符串(2)为空 
    用户密码 (2)非空 (3)为空 
    响应超时时间 (3)0-999 (4)为负(5)有字母(6)大于999 
    端口号 (4)0-9999 (7)为负(8)有字母(9)大于9999 
    在POP服务器上保留文件 (5)是,(6)否  
    取消 (7)直接执行  

    测试用例及结果结果陈述
     用户邮箱 用户密码 响应超时时间 端口号 在POP服务器上保留文件 操作 所属等价类 结果 
    有效等价类 upupup@21cn.com tttttt 90 110 是(选中) 确定 (1)-(5),  
     upupup@21cn.com tttttt 90 110 否(不选中) 确定 (1)-(4),(6)  
          取消   
    无效等价类 upupup21cn.com tttttt 90 110 是(选中) 确定 (1) y 
      tttttt 90 110 是(选中) 确定 (2) y 
     upupup@21cn.com  90 110 是(选中) 确定 (3) y 
     upupup@21cn.com tttttt -90 110 是(选中) 确定 (4) N 
     upupup@21cn.com tttttt a90 110 是(选中) 确定 (5) N 
     upupup@21cn.com tttttt 9000 110 是(选中) 确定 (6) Y 
     upupup@21cn.com tttttt 90 -110 是(选中) 确定 (7) N 
     upupup@21cn.com tttttt 90 A110 是(选中) 确定 (8) N 
     upupup@21cn.com tttttt 90 11000 是(选中) 确定 (9) Y 

      5)过滤器结果陈述
      6)自动转信结果陈述
      7)定时发信结果陈述
      12.查找结果陈述
      13.帮助结果陈述
      14.退出结果陈述
    该部分只有“确定退出”和“重新登陆”两个超级连接。
      15.信件阅览窗口结果陈述
    本部分只有四个有效等价类操作:回复,删除,返回。
    操作
    下一封:不是最后一封信
    上一封:不是第一封信
       等价类划分
    操作 有效等价类 无效等价类 
    下一封 (1)不是最后一封信 (1)是最后一封信(无信件) 
    上一封 (2)不是第一封信 (2)是第一封信 

    测试用例及结果结果陈述
     操作 条件 所属等价类 结果 
    有效等价类 下一封 不是最后一封信 (1) Y 
     上一封 不是第一封信 (2) Y 
    无效等价类 下一封 是最后一封信 (1) Y 
     上一封 是第一封信 (2) Y 
      16.填加附件结果陈述

  • 等价类划分例一

    2007-01-30 14:29:58

    实例一:
    原题:某程序规定:“输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形及等边三角形时,分别做计算…”。试用等价类划分方法为该程序的构成三角形部分进行测试用例设计。

    分析:
    本题的输入条件要求的关键之处有:
    整数;
    三个数;
    非零数;
    正数。
    输出条件的关键之处有:
    (5)应满足两边之和大于第三边边长;
    等腰;
    等边。
    其中,(3)(4)(5)并没有在题目上明显给出,但这些条件是必要的。
    以下分两步进行:
    列出等价类表(见表1)
    列出覆盖上述等价类的测试用例。


    制表:
    等价类表。
    覆盖有效等价类的测试用例。
    覆盖无效等价类的测试用例。

     

     

    表1:例1的等价表

      有效等价类 号码 无效等价类 号码 
     
     


    整数 



    一边为非整数 a为非整数
    b为非整数
    c为非整数 12
    13
    14 
        
    两边为非整数 a,b为非整数
    b,c为非整数
    a,c为非整数 15
    16
    17 
        三边a,b,c均为非整数 18 
      


    三个数 



    只给一边 只给a
    只给b
    只给c 19
    20
    21 
        
    只给两边 只给a,b
    只给b,c
    只给a,c 22
    23
    24 
        给出三个以上 25 
      


    非零数 



    一边为零 A为0
    b为0
    c为0 26
    27
    28 
        
    二边为零 a,b为0
    b,c为0
    a,c为0 29
    30
    31 
        三边a,b,c均为0 32 
      


    正数 


    4 一边<0 a<0
    b<0
    c<0 33
    34
    35 
        两边<0 a<0且b<0
    a<0且c<0
    b<0且c<0 36
    37
    38 
        三边均<0:a<0且b<0且c<0 39 
     
    构成一般三角形 a+b>c 5 a+b<c
    a+b=c 40
    41 
      b+c>a 6 b+c<a
    b+c=a 42
    43 
      a+c>b 7 a+c<b
    a+c=b 44
    45 
     
    构成等腰三角形 a=b 两边之
    b=c 和大于
    a=c 第三边 8
    9
    10   
     构成等边三角形 a=b=c 11   


     
     
     
     表2:覆盖有效等价类的测试用例
     
    a b c 覆盖等价类号码 
    3 4 5 1——7 
    4 4 5 1——7,8 
    4 5 5 1——7,9 
    5 4 5 1——7,10 
    4 4 4 1——7,11 

     


    表3:覆盖无效等价类的测试用例

    a b c  覆盖等价类号码 a b c 覆盖等价类号码 
    2.5
    3
    3 4
    4.5
    4 5
    5
    5.5  12
    13
    14 0
    3
    0
    0 0
    0
    4
    0 5
    0
    0
    0 29
    30
    31
    32 
    3.5
    3
    3.5
    3.5 4.5
    4.5
    4
    4.5 5
    5.5
    5.5
    5.5  15
    16
    17
    18     
         -3
    3
    3 4
    -4
    4 5
    5
    -5 33
    34
    35 

    5  19
    20
    21 -3
    -3
    3
    -3 -4
    4
    -4
    -4 5
    -5
    -5
    -5 36
    37
    38
    39 
    3

    3
    3 4
    4


    5
    5


    6 22
    23
    24
    25     
         3
    3
    3
    3
    1
    3 1
    2
    1
    2
    4
    4 5
    5
    1
    1
    2
    1 40
    41
    42
    43
    44
    45 
    0
    3
    3 4
    0
    4 5
    5
    0  26
    27
    28     
             
             

  • 边界值法举例

    2007-01-30 14:28:31


    找零钱最佳组合
    假 设 商 店 货 品 价 格 (R) 皆 不 大 於 100 元 ( 且 为 整 数 ) , 若 顾 客 付 款 在 100 元 内 (P) , 求 找 给 顾 客 之 最 少 货币 个(张) 数 ? ( 货 币 面 值 50 元 (N50) , 10 元 (N10) , 5 元 (N5) , 1 元 (N1) 四 种 )
    一、 分 析 输 入 的 情 形 。
    R > 100
    0 < R < = 100
    R <= 0
    P > 100
    R<= P <= 100
    P < R
    二、 分 析 输 出 情 形 。
    N50 = 1
    N50 = 0
    4 > N10 >= 1
    N10 = 0
    N5 = 1
    N5 = 0
    4 > N1 >= 1
    N1 = 0
    三、 分 析 规 格 中 每 一 决 策 点 之 情 形 , 以 RR1, RR2, RR3 表 示 计 算 要 找 50, 10, 5 元 货 币 数 时 之 剩 余 金 额 。 R > 100R <= 0P > 100P < RRR1 >= 50RR2 >= 10RR3 >= 5
    四、 由 上 述 之 输 入 / 输 出 条 件 组 合 出 可 能 的 情 形 。
    R > 100
    R <= 0
    0 < R <= 100, P > 1000 < R <= 100, P < R0 < R <= 100, R <= P <= 100, RR = 500 < R <= 100, R <= P <= 100, RR = 490 < R <= 100, R <= P <= 100, RR = 100 < R <= 100, R <= P <= 100, RR = 90 < R <= 100, R <= P <= 100, RR = 50 < R <= 100, R <= P <= 100, RR = 40 < R <= 100, R <= P <= 100, RR = 10 < R <= 100, R <= P <= 100, RR = 0
    五、 为 满 足 以 上 之 各 种 情 形 , 测 试 资 料 设 计 如 下 :
    1. 货品价格 = 101
    2. 货品价格 = 0
    3.货品价格 = -1
    4. 货品价格 = 100, 付款金额 = 101
    5. 货品价格 = 100, 付款金额 = 99
    6. 货品价格 = 50, 付款金额 = 100
    7. 货品价格 = 51, 付款金额 = 100
    8. 货品价格 = 90, 付款金额 = 100
    9. 货品价格 = 91, 付款金额 = 100
    10. 货品价格 = 95, 付款金额 = 100
    11. 货品价格 = 96, 付款金额 = 100
    12. 货品价格 = 99, 付款金额 = 100
    13. 货品价格 = 100, 付款金额 = 100
  • 边界值分析法实例

    2007-01-30 14:27:26

    实例:
    “某一为学生考试试卷评分和成绩统计的程序,其规格说明指出了对程序的要求:
    程序的输入文件由80个字符的一些记录组成,这些记录分为三组:
    (1)标题:这一组只有一个记录,其内容为输出报告的名字。
    (2)试卷各题标准答案记录:每个记录均在第80个字符处标以数字“2”。该组的第一个记录的第1至第3个字符为题目编号(取值1—999)。第10至59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3,等等记录相应为第51至第100,第101至第150,等等题的答案。
    (3)每个学生的答卷描述:该组中每个记录的第80个字符均为数字“3”。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则其第2,第3,等等记录分别给出他的第51至第100,第101至150,等等题的解答。然后是学生乙的答案记录。
    若学生最多为200人,输入数据的形式如下图所示:
    该程序应给出4个输出报告,即:
    按学生学号排序,每个学生的成绩(答对的百分比)和等级报告。
    按学生得分排序,每个学生的成绩。
    平均分数,最高与最低分之差。
    按题号排序,每题学生答对的百分比。
    以下两个表分别针对输入条件和输出条件,根据其边界值设置了测试用例。(共43个测试用例)
    输入条件 测试用例 
    输入文件 空输入文件 

    标题 无标题记录
    只有1个字符的标题
    具有80个字符的标题 

     

    出题个数 出了1个题
    出了50个题
    出了51个题
    出了100个题
    出了999个题
    没有出题
    题目数是非数值量 

    答案记录 标题记录后没有标准答案记录
    标准答案记录多1个
    标准答案记录少1个 


    学生人数 学生人数为0
    学生人数为1
    学生人数为200
    学生人数为201 

    生答题 某学生只有1个答卷记录,但有2个标准答案记录
    该学生是文件中的第1个学生
    该学生是文件中的最后1个学生 

    学生答题 某学生有2个答卷记录,但仅有1个标准答案记录
    该学生是文件中的第1个学生
    该学生是文件中最后1个学生 

    输出条件 测试用例 

    学生得分 所有学生得分相同
    所有学生得分都不同
    一些学生(不是全部)得分相同(用以检查等级计算)
    1个学生得分0分
    1个学生得分是100分 
    输出报告
    (1)(2) 1个学生编号最小(检查排序)
    1个学生编号最大
    学生数恰好使报告印满1页(检查打印)
    学生人数使报告1页打印不够,尚多1人 
    输出报告
    (3) 平均值最大值(所有学生均得满分)
    平均值为0(所有学生都得0分)
    标准偏差取最大值(1学生得0分,1学生得100分)
    标准偏差为0(所有学生得分相同) 
    输出报告
    (4) 所有学生都答对第1题
    所有学生都答错第1题
    所有学生都答对最后1题
    所有学生都答错最后1题
    报告打印完1页后,恰剩1题未打
    题数恰好使得报告打印在1页上 

  • Bugs 的有效交流和管理

    2006-12-28 11:41:13Digest 1

    • 转载自51
    • [原创]Bugs 的有效交流和管理[翻译]

      Communicating and Managing Bugs Efficiently
      By Jitu Borah
      (jborah@adobe.com)
      3rd September 2003

      Bugs 的有效交流和管理

      原著:Jitu Borah  翻译:smartbaby
      版权归Jitu Borah  所有

      有效的bug报告(enough is good)
      1.好的标题
      2.简短而明确的总结
      3.再现的步骤是否足够
      4.观察结果
      5.预期结果
      6.其他信息
      7.注释/历史
      8.适当的附件
      9.集中体现里程碑
      10.bug严重性和优先级的分析

      质量分析报告(just do)               
      1.简明的bug描述
      2.bug的隔离
      3.挑选bug与覆盖bug
      4.bug的比较分析
      5.区别重要的bug

      认真的思考(how much and why)
      1.重复的bug
      2.没有得到修复的bug
      3.不是bug而是设计问题
      4.自动修复的bug
      5.bug往返
      6.个人和情感状态
      7.提出立即的警告
      8.整理所有可测试的bug
      9.bug搜索
      10.学习以前的bug报告

      不必要的工作流(why)                 
      1.后期的发现
      2.低bug数
      3.发现已经修复停止的bug
      4.你漏掉而用户发现了的bug


      标题
      标题的名称顾名思义,很简单,我就不多说了。要注意的是下面两个方面:
      1.从标题上知道它所要说的内容。理想状态下,bug标题不应超过50-60个字符
      2.关于bug另外一个重要的方面是,它不应有任何主观色彩的缺陷描述。

      总结
      总结在于简明扼要的说清楚问题即可。太过冗长的句子,会让人看不懂而心生厌倦。

      再现的步骤
      提供如何再现bug的确切的信息,确切的信息的含义是指, 使用恰当的技术术语和命名约定,清楚的提供信息和有条理的标记相关的步骤。
      在提交bug之前,扪心自问,这个bug是否能被其他看了这个bug描述的人再现出来。

      观察结果
      所有与软件运作的结果有关的未实现的功能必须被提及,不能有任何遗漏。比如当你在做一些 明确目标时遇到一个错误的对话框的情形,你的任务不是描述错误本身而是提供错误对话的内容。

      预期结果
      无论规格说明书如何有用,它的变更是非常频繁的,在bug描述中写期望结果是非常困难的事情。测试人员必须从有相关知识和经验的开发人员处得到你所要测试的项目指导性的内容。也可以从前面已经发布了的版本中或者可以使用的商业标准应用中获取有用的信息。

      其他信息
      其他信息就是非常重要的,因为它可能会帮助开发人员建立与真实问题的某些联系。

      注释/历史
      当你需要了解一个已经离开组织的测试人员的工作时,你不得不完全依赖讨论历史,但它是否真的能让你明白如何进行下一阶段的工作吗?
      当一个已修复问题从开发人员转到你这里,你需要进行验证和关闭,不要忘了在关闭这个问题时写上注释。

      附件
      测试文件应该尽可能的付在bug描述后面。这种方法证明对于问题存在的证据是非常有效的,它同样也节省了开发人员不得不浪费在再现错误上花费的大量宝贵时间。

      里程碑
      应该关注是在哪一个阶段发现的bug。

      严重性和优先性
      严重性和优先权的客观分配在理论上是可行,而在实际中,大多数情况下,取决于个人主观理解。所以想要避免主观性似乎是行不通的。
      成熟的公司对于他们组织明确的活动相应的严重性进行定义。这些公司对于如何分配严重性有他们自己的指导方针,这些方针是提供给测试人员的,同时这些规则、方针在项目需求中是可裁减的。每天结束时,项目组的所有测试人员把所有的缺陷以严重性分类。
      级别有:
      .尽快修复
      .高
      .普通
      .低
      严重性和优先级的定义通常取决于所在组织的测试活动的本质。

      质量分析报告               
      简明的bug描述
      不要夸大所发现的任何很小的问题。
      一个非常详尽的和象说故事一样长的描述都是不适合于bug描述的。
      不必要的或不相关的信息都是不应该存在的。

      bug隔离
      测试人员应该能放大潜在的问题或原因,并提供给已经发现的缺陷逻辑理解。
      有时,bug隔离是非常难实现和理解的,因为设计到无数因素,这些因素以一种不确定的方式产生程序的问题。bug隔离需要深入考虑和理解你所要测试的应用。

      挑选bug与覆盖bug
      要善于将单个的BUG和同一类的BUG区分开来。
      每次一个bug描述应该只关注一个明确的问题。那些容易造成混淆的相同问题应该汇总在一起,而这些问题也造成重复提交问题的时间浪费。同样,如果在一个应用中有大量的问题,但是所有的解决仅仅是修改一个代码结构的细节就可以解决的,那么采取的方法是将这个bug覆盖而不是记录大量的bug。

      比较分析
      好的比较总是使你的用例更有说服力、更有效、更令人信服。有时,对于测试人员来说,用提供确切的行为来类推支持他的主张是非常必要的。当你有当前正在测试项目的较早版本就会更容易,或竞争者提供的类似产品,这种产品已经占有一定的市场份额或者已经形成一定的标准。

      区别重要的bug
      重要的bug是就算验证基本测试用例或者用例丢失时也可以找到的bug。

      认真的思考
      重复的bug
      产生许多重复的bug导致了在应用条理性方面的低效率和不成熟的思考,这种情况不可能完全避免。注意力应该放在识别重复bug上。
      将重复的bug减少到最少的一个方法是仅仅使用关键字查询数据和查找是否已经有记录在案的类似bug。

      有得到修复的bug
      依靠用户特殊的需要产生的市场,应用程序中严重性高的bug可能被延期,而小的那些bug却得到修复。要记住的是修复一个bug是一种商业决定,测试人员应该尽可能站在组织的角度来理解用户工作流。

      不是bug而是设计问题
      当你提交一个bug但开发人员把它退回,并付上“不是bug”或给出它是正确的注释。
      测试人员所要做的就是尽可能找到规格说明书提到的功能或者其他的开发文档来支持,甚至是设计的人员的支持。

      自动修复的bug
      过去存在的bug,没有进行修复就自动的正确修改,开发人员并没有对这些bug验证进行标记,但是这些bug却已经被修改了。
      其实如果知道开发人员不可避免的重写他的代码,开发人员修改代码路经,修改相关性等等,结果就产生了这些不可思议的事情。因而已经存在的bug 消失而新的bug又出现了。 测试人员需要认识到并理解这些变化的原因,同时为这些消失的bug做好准备。

      bug往返
      由于缺乏足够的信息,有时候在测试人员和开发人员之间一个bug的提交过程需要重复多次。测试人员提交bug描述,开发人员添加一些信息然后返回该bug,测试人员再添加一些信息然后再返回给开发人员,如此循环多次。这样可能会引起bug描述过程的混乱。
      如果bug在测试人员和开发人员之间多次往返,会浪费大量的时间和资源。为了避免这样的情形,测试人员应该认真地在提交bug的时候同时提交所有与bug相关的对修复bug有用的信息。测试人员需要保留关于问题的所有版本,并且随时随地的准备提供完整的信息给需要的人。

      个人和情感状态
      测试人员要避免唤起激烈的情绪,特别是生气和好斗性的情绪。另外,测试人员永远都不要轻视代码或者发表相关的批评。
      测试人员和开发人员之间有时会存在一些概念上的误会。最好的解决方法是通过口头交流进行解决而不是把这些问题反映到报告中。

      提出警告
      在一个复杂的应用程序中,由于数据库中存在大量的bug,虽然bug的优先级和严重级在bug描述中不是比较高的。测试范围的易测性和测试范围变的非常困难,需要测试立即与开发人员进行沟通。

      整理所有可测试的bug
      测试人员的职责不仅仅是在遇到缺陷的时候提交报告,也需要对每一个bug的修复进行跟踪,并随着有秩序测试活动延续,根据bug的优先级顺序进行验证。给出测试的应用程序修复质量和相应走向的一个清晰的曲线图。报告中需要紧密监控发现的bug和关闭的bug的比率。

      bug搜索
      组织多人参加的bug搜索组能够帮助找到那些隐藏的bug。

      学习以前的bug报告
      如果你的手边有可以用的有经验的测试人员以前写的bug报告,把它们拿来查看和学习是非常好的习惯。

      不必要的工作流                 
      后期的发现
      后期发现的bug永远也不应该忽略,同时如果它的bug描述是可取的,将立即引起管理层的关注。

      低bug数
      测试人员需要关注检定缺陷的质量多于简简单单的找到细小的或困难的bug。如果保证了质量,就是低bug数也是可以接受的。

      发现已经修复停止的bug
      许多软件项目中,对于所有关闭的bug来说完整回归,仅仅是确保关闭的bug不在出现。由于时间限制尽管完全回归不能实现的很好,一般地,在项目里程碑发布之前,都必须要特别注意。跟踪关闭所有的bug,如果对早期的bug有疑惑,尽早再次检查它。

      漏掉而用户发现了的bug
      注意力应该放在尽可能以有效的方式来管理你的bug上。不同的方法导致不同的想法和对不同测试环境的挑战。测试人员的目标是正确处理这些问题。
  • 软件测试术语

    2006-12-11 16:17:59



    术语:软件测试
    定义:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。
    术语:测试用例
    定义:测试用例指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略的文档;内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等。
    术语:测试计划
    定义:测试计划是指对软件测试的对象、目标、要求、活动、资源及日程进行整体规划,以保证软件系统的测试能够顺利进行的计划性文档。
    术语:测试对象
    定义:测试对象是指特定环境下运行的软件系统和相关的文档。作为测试对象的软件系统可以是整个业务系统,也可以是业务系统的一个子系统或一个完整的部件。
    术语:测试流程
    定义:测试流程是指为了保证测试质量而精心设计的一组科学、合理、可行的有序活动。比较典型的测试流程一般包括“制定测试计划”、“编写测试用例”、“执行测试”、“跟踪测试缺陷”、“编写《测试报告》”等活动。
    术语:测试评估
    定义:测试评估是指对测试过程中的各种测试现象和结果进行记录、分析和评价的活动。
    术语:《测试报告》
    定义:《测试报告》是一份有关本次测试的总结性文档,主要记录了有关本次测试的目的、测试结果、评估结果及测试结论等信息。
    术语:测试环境
    定义:测试环境指对软件系统进行各类测试所基于的软、硬件设备和配置。一般包括硬件环境、网络环境、操作系统环境、应用服务器平台环境、数据库环境以及各种支撑环境等。
    术语:白盒测试
    定义:白盒测试是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,白盒测试又叫“结构测试”
    术语:黑盒测试
    定义:黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试又叫“功能测试”。
    术语:单元测试
    定义:单元测试是指针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作,单元测试又称模块测试。
    术语:集成测试
    定义:集成测试是指对程序模块采用一次性或增值方法组装起来,对模块间接口进行正确性检验的测试工作,集成测试又称组装测试。
    术语:系统测试
    定义:系统测试是指将通过集成测试的软件系统或子系统,作为基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素组合在一起所进行的测试工作;目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。
    术语:确认测试
    定义:确认测试是指在模拟(或正式)的生产环境下,运用黑盒测试的方法,验证所测软件是否满足用户需求说明书中所列出的需求,确认测试又称有效性测试。
    术语:功能测试
    定义:功能测试是指为了保证软件系统功能实现的正确性、完整性及其他特性而进行的测试。
    术语:性能测试
    定义:性能测试是指为了评估软件系统的性能状况和预测软件系统性能趋势而进行的测试和分析。
Open Toolbar