玩手机,旅游、散步、听音乐、疯狂购物显示出女人最本色的一面,累了在网络的一端任意的放肆,呵呵…………

发布新日志

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

    shilinglin 发布于 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.填加附件结果陈述

  • 也谈测试用例

    xuanyan 发布于 2007-03-13 11:53:40

     也谈测试用例

     

    xuanyan356@163.com

     

    【摘要】  测试用例英文名叫Test case,测试用例是开展测试工作的重要一项,测试用例是否完善、质量高低以及执行的情况如何是影响软件测试结果的一个重要方面。可以说测试用例是软件测试中一个举足轻重的因素。本文就有关问题进行阐述。

    【关键词】测试用例

     

    概述

    用例文档(checklist),是关于具体测试步骤的文档,它描述了测试的输入参数、条件及配置、预期的输出结果等,以判断被测软件的工作是否正常。从表现形式上而言,测试用例可以是纯文本的说明文档,也可以是用脚本语言或高级语言编写的一段代码。

     

    测试用例文档由简介和测试用例两部分组成。简介部分编制测试目的、测试范围、定义术语以及测试背景等。测试用例部分逐一列示各测试用例,测试用例应当包括测试标识、测试用例名称、目标、测试条件、测试设置、输入数据要求、步骤、以及预期的结果等。

     

    好测试用例的特点

     

    1.完整

    完整性是对测试用例最基本的要求,尤其是一些基本功能项上,如果有遗漏,那将是不可原谅的。完整性还体现在中断测试、临界测试、压力测试、性能测试等方面,这方面测试用例也要能够涉及到。

     

    2.准确

    测试者按照测试用例的输入一步步测试完成后,要能够根据测试用例描述的输出得出正确的结论,不能出现模糊不清的语言。

     

    3.简洁  

    好的测试用例每一步都应该有响应的作用,有很强的针对性,不应该出现一些冗繁无用的操作步骤。测试用例不应该太简单,也不能够太过复杂,最大操作步骤最好控制在10-15步之间。

     

    4.清晰

         清晰包括描述清晰,步骤条理清晰,测试层次清晰(由简而繁,从基本功能测试到破坏性测试)。清晰简洁对测试用例编写者的逻辑思维和文字表达能力提出了较高的要求。

     

    5.可维护性

    由于软件开发过程中需求变更等原因的影响,常常需要对测试用例进行修改、增加、删除等,以便测试用例符合相应测试要求。测试用例应具备这方面的功能。

     

    6.适当性

    测试例应该适合特定的测试环境以及符合整个团队的测试水平,如纯英语环境下的测试用例最好使用英文编写。

     

    7.可复用性

       要求不同测试者在同样测试环境下使用同样测试用例都能得出相同结论。

     

    8.其他

    如可追朔性、可移植性也是对编写测试用例的一个要求。

     

    测试用例的编写

     

    首先,要充分搜集有关软件需求文档、软件规格等有关资料,充分了解软件的功能特点,在编写测试用例时按照完整准确、清晰简洁的原则,做到有的放矢。

     

    其次,一般而言,具体的测试用例在内容上都包括以下信息:用例编号、用例名称、测试等级、预置条件、操作步骤、预期输出、实际输出、注释等。这也是很多大公司的测试用例的都有包括这些方面内容。

     

    再者,如果有同类产品的测试用例、测试报告等,可以拿来进行参考,参考不是抄袭,而是对比发现自己设计测试用例的不完整之处,以便及时充实、弥补。尤其是开展自己不太熟悉的产品测试的时候,这样做尤为重要,这样可以避免测试用例编写的盲区。

     

    第四,编写测试用例时,应将常用测试方法,如临界测试、等值测试、中断测试等包含进来,这些方法技巧有助于发现更多潜在的问题。

     

    第五,测试用例要根据不同测试阶段有所差异,一套测试用例不应该用于不同阶段的测试,最好能够为不同测试阶段设计不同的测试用例。当然也可以在一套测试用例上进行有关标注,以便区别。

     

    编写测试例的常见错误

     

     (1)    单个测试例太长(一般不要超过15步);

    (2)    不完善,错误,或者杂乱无章的操作步骤.

    (3)    不清楚什么样的结果是通过和出错(要多熟悉软件需求以及软件规格);

    (4)    描述不清,测试员或者测试系统不清楚实际要测试的步骤及内容.

    (5)    不方便维护(添加,删除,更改等).

     

    其他相关问题

    1.用例评审

    测试用例编写完成后,最好做测试用例评审工作,测试用例的评审可以现在测试组内部进行,然后再进行正式评审,通常由开发代表、测试代表以及项目负责人进行,条件允许的情况下也可开展同行评审。测试用例评审是个很重要的一个环节,也是不太容易开展的一个环节。

     

    2.用例管理

       目前测试用例的管理工具很多,有TDBugfreeExcel等,不管哪种工具,只要适合自己就好。

     

    3.可以不写测试用例吗?

     

    有时候对于一些测试经验丰富的测试者而言,在进行一些小项目(一个人足以应付)的测试时,可能会觉得自己经验丰富,项目也小,根本用不着写测试用例。其实,这是个错误的想法,不管测试者经验如何丰富,项目多么小,测试用例该写还是一定要写的,要知道测试用例不光是给自己看的,也是给别人看的,同时也是公司积累有关文档资料所要求的。

     

  • Windows系统智能手机测试之hopper测试介绍

    xuanyan 发布于 2007-02-13 22:59:58

    hopper测试介绍

    【摘要】 进行wince/winmobile系统智能手机测试时,其中最重要的一项就是hopper测试,也叫MTTF测试,本文就有关问题将给予详细介绍。

     

    【关键词】  hopperMTTF

              

    一、认识hopper

    Hopper test听起来很神秘,那么究竟什么是hopper呢?

    实际上,Hopper就是一个可执行文件——hopper.exe,该文件是可以在PPC/SPWindows嵌入式操作系统上自动运行的一个可执行文件。

    Hopper test正式的说法为MTTF TestMean Time To Failure Test,即平均失败时间测试,或称平均无故障时间测试,也有人将其称为压力测试(stress test)、稳定性测试(Stability test)、可靠性测试(Reliability Test),总之,hopper就是一个测试系统的稳定性和可靠性的一个自动化测试工具。

    二、Hopper测试

    Hopper运行后会不间断的无规律的快速地对被测设备执行一系列的操作,如按键/运行程序/数据输入等,1分钟内hopper执行的动作可超过80个。

    hopper测试的内容包括:

    1.应用程序,如Media playerMobile WordMobile Excelwindows自带的应用程序或者第三方软件;

    2.菜单项,Hopper会对菜单项进行一些打开关闭等任意操作;

    3.UI(用户界面);

    4.数据输入,如电话号码输入、电话薄创建、任务创建等;

    5.驱动部分。

    总之,hopper测试为完全任意性,触角可以伸到系统的任何部分,进行hopper测试时,可以选择以下两种方式:一、连接KITL进行测试;二、独立设备测试。

    每种方式各有自己的优缺点,使用KITL时可以对运行状态进行查看、控制等,通过进行有关参数设置来改变hopper运行状态,KITL是进行debug的最佳选择。

    独立设备测试的好处在于测试出的结果比较准确。缺点就是不便于状态的跟踪、问题的分析。在此,我们使用使用第二种方式进行进行测试。

     

    Stabilization

    发现并修改一些影响到系统集成后稳定性的问题。         退出标准: 25小时

    Integration

    集成所有应用程序测试系统的稳定性.退出标准: 达到25小时

    Core

    验证核心组件如射频、拨号及其他基本程序的稳定性.退出标准:达到25小时

    Base Line

    验证平台驱动和基本系统组件的稳定性.
    退出标准:达到25小时

    上图为开发阶段运行Hopper测试示意图。由上图知,hopper测试贯穿整个软件开发整个过程。

    Notes

    1.关于通过KITL连接使用hopper中涉及到很多方面,如参数的设置等,本文未进行相关介绍;

    2.hopper运行的时候,也可以手动参与进行测试,如进行有关按键,同样这些按键也为有效操作。

     

    三、关于logger

    hopper对应的有一个logger.exe文件,logger的作用是记录hopper运行时一些信息,以便开发人员查看有关记录,分析失败原因。Loggerhopper往往是一起使用。

    Logger的使用是将logger.exe文件拷贝到被测设备上,然后运行该文件,然后运行hopperlogger所产生的信息就会自动生成一个debug.txt文本。Debug文本是一个很大的文件,运行hopper一天所生成的debug.txt文件大约有60M,因此在运行logger时应将debug文件存放在外置存储卡上,这样避免出现内存不足的问题。

    *开发人员可以将文件拷贝到PC上进行查看、分析。实际上本工具也很少使用,其记录信息没有多大价值。

     

     

    四、hopper计算

    微软对hopper测试的时间问题有两个要求,一个是平均时间,一个是中值时间,平均时间要求超过20个小时,中值时间要求达到25小时,二者需同时通过才能满足微软要求。

    NSTL在进行CIT测试时,共做10台机器10casehopper测试,如果运行时间超过25个小时,则按照25个小时计算,否则按照实际运行时间计算。

    平均时间就是10台机器的运行时间加总除10.

    中值时间:10个测试结果按照时间从短到长的顺序排列,取中间两个case,56的时间的平均,这样得到的值既为中值时间。

     

        为了测试结果更可靠、准确,我们在测试过程中可以多些case

     

    五、其他工具

     

    为避免在进行hopper测试时拨出一些紧急号码,微软开发了以下相关工具:dialrequest.dll, noemesetup.exe and restoreEME.lnk.

    使用dialrequest.dll, noemesetup.exe可以跳过紧急号码拨叫,用restoreEME.lnk可以恢复(呼叫)。

    使用时,先将设备重新启动,然后将dialrequest.dll, noemesetup.exe拷贝到被测设备\Windows 文件夹中,运行noemesetup.exe文件,10s内有关系统配置将生效,之后无法进行紧急号码呼叫。

    恢复时将restoreEME.lnk文件拷贝到\Windows\Start Menu\Accessories\ folder中,然后选择运行它,10s内可以恢复,之后又可以进行紧急号码呼叫。

     

    Notes:对设备进行恢复也可以通过reflashing or clean registry进行。这些工具在实际测试中很少用到,在此仅做了解。

     

     

    六、注意事项

    1.Hopper执行的时间应该从程序可以跑起来的时候就执行,执行的越早,发现问题越早,解决问题越容易,否则到后期等系统功能等都实现的时候发现问题,再去解决,所耗费的时间、精力会大得多得多。

    2.Hopper测试应从系统可以跑起来一直到RTM整个开发过程,如果在后期测试发现发现有问题,应逐个模块的关闭来分析造成问题的原因,如关闭Radio可以避开Radio的影响;

    3.测试时最好不加入第三方软件,首先确保系统本身的无问题,然后再逐渐加入第三方软件进行集成测试、系统稳定性测试;

    4.不要在连接USB的情况下进行测试,这样会破坏PCoutlook等数据;

    5.不要使用有效的SIM卡进行测试,以免hopper拨出号码,造成不必要的影响;

    6.运行时不要存储有关数据,hopper测试可能是破坏性的,以免破坏有关数据,进行hopper测试时最好将有文件进行备分,重新启动系统两遍再测,最好是恢复出厂值后再进行测试!

     7.在测试时要接入充电器,以免测试中途电池电量不足自动关机。

  • 性能测试经验分享

    leaf840404 发布于 2007-03-09 12:10:12

    性能测试经验分享


    性能测试目标 鼀T﹉4町?  
    • 
    系统是否满足预期的性能要求 絎E?猭珡a  
    • 
    作为对系统进行调优的参考 锽淦3^裤<? 
    • 
    系统的可扩展性 檝F?才j(? 
    • 
    用性能测试手段发现系统存在的问题 ]Q芏耝g? 
    • 
    提供部署方案的参考

    性能指标 )?ψ?8?  
    • 
    常用的性能指标如下: N紑?活抖  
    • CPU
    利用率 髽f磿]?褕  
    • 
    内存占用率 ?咺 ? 
    • 
    磁盘I/O Rn餂? Ll7  
    • 
    响应时间

    影响性能的因素 ~W崞琚悩  
    • 
    网络状况(隔离的网络环境) 镹O鉉\>? 
    • 
    硬件设备(CPU数、内存大小、总线速度) -帑躵#5>  
    • 
    系统/应用服务器/数据库配置 ?z肠??  
    • 
    数据库设计和数据库访问实现(SQL语句) Z稝嚩铍蠀  
    • 
    系统架构(同步/异步)

    6dt塏NG昂  
    性能测试步骤 v徤摥?^}  
    • 
    分析性能需求(需求规格说明书) 嬗EX馰緿y%  
    • 
    性能测试计划 冪r颚+M蕽? 
    • 
    性能测试方案 ?牋lD圮? 
    • 
    建立数据模型 椎??芬悥  
    • 
    性能测试报告

    性能测试方案应包含的内容 `?>蓝  
    • 
    对软件系统架构的分析(了解输入、输出数据的类型、数据量) LR 昒耵? 
    • 
    性能测试组网图(网络环境说明) ?輠岑!  
    • 
    硬件环境说明 蘓璯酌菌? 
    • 
    测试范围、目的与方法 Uα匳?? 
    • 
    性能测试工具的选型

    [测试工具组成图]

    麻熣嚶  
    <9??薅揓  
    • 
    测试的启动/退出条件 =@&ЦuX? 
    • 
    测试场景详细说明 pE罟3棋{鷧  
    • 
    测试执行及测试结果分析

    性能测试场景的选取 ょ邉雪0P? 
    • 
    分析性能测试需求 斾袣B舗L  
    • 
    选择关键场景 豈瓰fp?  
    • 
    分析输入、输出数据

    大数据量的产生 计:螄e? 
    • 
    在详细分析性能需求的基础上 _靵27讆  
    • 
    数据量尽量与实际情况一致

    腙?$/-7俘  
    8
    、性能测试经验 ?s>渨? 
    • 
    测试开始前与产品/开发人员充分协商 {廢=逃态緸  
    • 
    测试过程中与开发人员紧密合作 e.崝岟 膆`  
    • 
    测试工具:不要迷信LoadRunner 昙7??语  
           1
    、针对特定系统的加压工具比LoadRunner更加实用 岪z韖v駷?  
           2
    尽量考虑使用操作系统本身要点的命令来监测系统资源、完成性能测试 瘶b?:q? 
    • 
    对测试人员的要求: ︼J?跃衠T  
    •        1
    、熟悉系统架构 罈棿o伊  
    •        2
    、熟悉数据库 饔?r?y枨  
    •        3
    、熟悉操作系统

  • 接口类产品测试指南

    leaf840404 发布于 2007-03-09 15:41:13

    接口类产品测试指南
      这是接口类产品制定的测试指南,文中列出了对于函数库、组件等对象(下文统称函数接口)的测试过程。这里描述的属于确认测试过程,但由于从形式上类似于单元测试,而且也基本适用于单元测试的过程,所以放到单元测试栏目中。

    1.1 概述

      函数接口(或称API)是公司的一个产品类型。目前包括:TRS Database为各类平台提供的接口,以及TRS CKM工具包,以后有可能会继续增加。本部分的测试指南,描述了对这类产品进行测试时的参考过程。

    下面首先给出整体的测试过程,然后针对每个子过程需要进行的工作进行具体描述,最后是几点补充说明。

    1.2 测试过程
    函数接口的整体测试过程如下:
      * 制定测试计划
      * 设计测试用例
      * 执行测试
      * 编写可复用的测试代码
      * 增强测试
      * 结束测试

    1.3 过程说明
    下面是对各个子过程的具体说明:

    1.3.1 制定测试计划
      分析被测试对象的具体情况,制定测试计划,形成文档。测试计划至少要包括以下内容:
        测试范围:测试要覆盖哪些库以及库中的哪些函数,要覆盖哪些文档,包含哪些测试类型等等。
        测试工具:选择什么工具组织测试代码,是否还需要其它的辅助性测试工具。
        测试环境:都需要在什么环境下执行测试,环境指硬件类型、OS、DB等等。
        测试数据组织:对于测试代码所需要的测试数据,以什么方式来组织和保存。
        进度安排:各个阶段的工作内容、时间安排。
        测试尺度:测试的深度和广度是什么。根据现有的资源情况,在计划中设定一个标准,避免测试的盲目性和随意性。


    1.3.2 设计测试用例
      按照函数接口说明文档,依据测试计划中的测试尺度来设计测试用例,形成文档。
      函数接口的测试用例设计,与传统GUI界面产品的用例设计思路是一样的,包括测试输入(正常、异常输入)和预期输出两部分,等价划分、边界值等设计方法也同样适用,只是这时的界面变成了函数接口的输入参数,而不再是GUI元素。


    1.3.3 执行测试

      依据测试用例设计文档,编写调试代码,执行测试。这是函数接口测试中最为耗时的过程,Bug也主要是在这个过程中被发现的。开发人员修正Bug,测试人员进行回归测试,直至Bug被关闭。
    1.3.4 编写可复用的测试代码

      当一个函数的bug修正基本完成后,整理调试代码,将其转化为可复用测试代码。
    函数接口最后的测试代码与其测试用例设计应该是一致的,测试代码是测试用例的具体实现。如果测试代码需要独立的测试数据,则要详细记录下这些数据的相关信息。测试用例设计文档、测试代码、测试代码所需测试数据,这三者构成完整的测试程序。
     
      在编写测试代码的时候需要注意:不同测试部分的测试数据应该互不干扰,各部分的测试代码,在测试结束时要负责恢复测试环境,以使下一个测试能正常运行,也便于测试代码的维护。

    1.3.5 增强测试
     
      这是一个可选项目,不是必须的。是否进行这项工作,在制定测试计划的时候就要考虑清楚。
     
      对于函数接口的增强测试,可以考虑的测试内容包括(但不限于):代码测试覆盖率的统计、函数接口的Run-time错误检测。这类测试工作需要工具的支持,可选的工具如:Compuware的Devpartner,IBM的PurifyPlus等。

    1.3.6 结束测试
     
      结束测试阶段的工作包括:编写测试报告、测试资料整理。
      完成测试计划中罗列的所有工作,达到预期的测试目标后,进行测试报告的编写。
      对于测试过程中产生的测试资源——测试计划、测试用例设计、测试代码,这些是以后测试复用的基础。如果这些资源本身不能说明自己,则需要整理一份单独的说明文档,供以后参考使用。

    1.4 补充说明
    1.4.1 测试过程的补充说明
     
      对于上面描述的测试过程中的‘设计测试用例’、‘执行测试’、‘编写可复用的测试代码’这三个步骤,不是完成一项后,才开始进行下一项,而通常是一个交替进行、逐步迭代的过程。先制定好测试用例文档的整体结构,然后设计一个函数接口的测试用例,接着执行对其的测试,最后整理成可复用的测试代码。针对每个函数接口都重复这个过程,直至完成所有函数接口的测试。

    1.4.2  测试过程中产生的测试资源
      测试过程中产生,测试结束后需要存档的测试资源包括:

      测试计划(文档);
      测试用例设计(文档);
      测试代码及相关数据(代码、数据);
      测试报告(文档);
      其它的相关说明文档(如果有的话);
      测试框架的介质(如果选用了第三方测试框架的话)。

    1.4.3 函数接口测试的自动化
      函数接口产品的一个特点就是对外表现比较稳定,因此一旦实现了对其测试过程的自动化,积累起可复用的测试资源,就会大大缩短以后该产品的测试周期。所以对于函数接口的测试,建议都能以测试自动化的过程进行组织。

      为了实现函数接口的测试自动化,就需要选择一个稳定、可靠的测试框架来组织测试代码,在这里建议使用XUnit工具。
      (注:针对不同的开发语言,Xunit提供了不同的版本,如Junit(for Java),CppUnit(for C/C++),Nunit(for MS .Net)等等,每种主流的语言都有其对应的Xunit框架。Xunit是Open Source的工具,可以从http://sourceforge.net上下载。)


    1.4.4 测试代码的维护

      测试代码并不是写完后一次后就一劳永逸了。随着被测产品的升级,测试代码也需要作出相应的调整,以适应被测产品的变化。

  • 常用的功能测试方法

    leaf840404 发布于 2007-03-09 16:41:31

    常用的功能测试方法
     
     
    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:
    1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。
    2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。
    3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。
    4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
    6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
    7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
    8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致
    9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
    10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.
    11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.
    12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.
    13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。
    14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.
    15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.
    16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.
    17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。
    18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*
    19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
    20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.
  • 软件测试,从零开始:测试新手入门必读

    leaf840404 发布于 2007-03-12 15:05:36

    软件测试,从零开始:测试新手入门必读

     引言

     几年前,从学校毕业后,第一份工作就是软件测试。那时候,国内的软件企业大多对软件测试还没有什么概念,书店里除了郑人杰编写的《计算机软件测试技术》之外,几乎没有其它的软件测试相关书籍,软件测试仅仅在软件工程的教材中作为一个章节列出来,因此,我对软件测试一无所知。不过,在正式走上工作岗位之前,公司提供了为期两周的系统的软件测试技术专题培训,对接下来的软件测试工作有很大的指导意义。现在,我继续从事软件测试的培训与咨询服务,在这个过程中,亲眼目睹了很多软件测试新手面对的困惑,他们初涉软件测试行业,没有接受系统的培训,对软件测试一无所知,既不知道该测试什么,也不知道如何开始测试。下面针对上述情况,给出若干解决办法。

     o 测试准备工作

     在测试工作伊始,软件测试工程师应该搞清楚软件测试工作的目的是什么。如果你把这个问题提给项目经理,他往往会这样回答: " 发现我们产品里面的所有 BUG ,这就是你的工作目的 " 。作为一名软件测试新手,如何才能发现所有的 BUG ?如何开始测试工作?即便面对的是一个很小的软件项目,测试需要考虑的问题也是方方面面的,包括硬件环境、操作系统、产品的软件配置环境、产品相关的业务流程、用户的并发容量等等。该从何处下手呢?

     o 向有经验的测试人员学习

     如果你进入的是一家运作规范的软件公司,有独立的软件测试部门、规范的软件测试流程、软件测试技术有一定的积累,那么,恭喜你!你可以请求测试经理委派有经验的测试人员作为你工作上的业务导师,由他列出软件测试技术相关书籍目录、软件测试流程相关文档目录、产品业务相关的文档目录,在业务导师的指导下逐步熟悉软件测试的相关工作。其实,在很多运作规范的软件公司,已经把上述的师父带徒弟的方式固化到流程中。

     如果你进入的是一个软件测试一片空白的软件企业,那么,也恭喜你!你可以在这里开创一片自己的软件测试事业,当然,前提是老板确实认识到软件测试的重要性,实实在在需要提高产品的质量。这时候,可以到国内的软件测试论坛和相关网站上寻找软件测试资源,这种情况下,自学能力和对技术的悟性就至关重要了。

     o 阅读软件测试的相关书籍

     现在,中文版的软件测试书籍越来越多,有的是国人自己写的,有的是翻译国外经典之作。可以到 www.chinapub.com 或者 www.cnforyou.com 等网络购书的站点查找软件测试相关的书籍。目前,从国外引入的软件测试书籍有很多经典之作,但是,翻译成中文后,翻译质量对阅读效果有很大的影响。

     o 走读缺陷跟踪库中的问题报告单

     如果您所在的公司已经有软件缺陷跟踪库了,无论采用的是商用工具,如 ClearQuest 、 TestDirecter 等工具,还是采用的 Bugzilla 、 Mantis 等开源工具,这都无关紧要,缺陷跟踪库中的缺陷报告单才是有价值的。缺陷跟踪库中的问题报告单是软件测试工程师工作绩效的集中体现,同时也是软件产品问题的集中体现。一般来说,缺陷报告单中最关键的几个部分包括:第一部分是发现缺陷的环境,包括软件环境、硬件环境等;第二部分是缺陷的基本描述;第三部分是开发人员对缺陷的解决方法。通过对上述缺陷报告单的三个部分作仔细分析,不知不觉你已经吸收了其他软件测试人员的工作经验,并掌握了软件产品常见的基本问题。这是迅速提高软件测试经验的好方法。

     o 走读相关产品的历史测试用例

     如果你所在的公司有测试用例管理系统,那么,走读相关产品的软件测试用例是迅速提高测试用例设计水平的一条捷径。走读测试用例也是有技巧的。测试用例写作一般会包括测试用例项和根据测试用例项细化的测试用例,下面举例说明。 " 测试用户登录的功能 " 是一个测试项,该测试项的目的是测试用户登录功能是否正确,是否能够完成正常的登录功能,是否能够对非法用户名和密码做异常处理等等。因此,根据该用例项,可以设计出若干个测试用例,大多数情况下,测试用例项和测试用例是一对多的关系。

     通过走读测试用例项目,你可以掌握应该从哪些功能点着手未来的测试工作;通过走读软件测试用例,你可以了解如何根据被测试的功能点开展软件测试用例的设计工作,包括如何确定测试用例的输入、测试用例的操作步骤和测试用例的输出结果等。

     总之,走读其他软件测试人员设计的优秀软件测试用例,是提高自身用例设计水平的好方法。

     o 学习产品相关的业务知识

     软件测试人员不仅要掌握软件测试技术相关知识,对产品相关的业务知识也要学习。这很好理解,如果从事财务软件的测试工作,一定要学习财务知识;如果从事通讯产品测试工作,那么相关的通讯理论知识也是必须的;如果从事银行软件的测试,银行的业务流程也是不可或缺的知识点。

     因此,在学习软件测试技术的同时,千万不要忽略产品相关业务知识的学习。如果你是一个软件测试技术专家,但是对产品业务知识一无所知,那么也只能测试出来纯粹的软件缺陷,而面对眼前出现的产品业务相关的缺陷,很可能是视而不见,如此这般,软件测试的效果会大打折扣。

     o 识别测试需求

     识别测试需求是软件测试的第一步。如果开发人员能够提供完整的需求文档和接口文档,那固然好。可以根据需求文档中描述的每个功能项目的输入、处理过程和输出,来设计测试用例。如果开发人员没有提供软件需求文档,那该如何是好?下面给出几个有效的方法:

     o 主动获取需求

     开发人员通常不会更好地考虑软件测试,如果没有开发流程的强制规定,他们通常是不愿意提供任何开发文档,即便有强制规定,需求文档也未必能够真正指导软件系统测试工作。因此,需要测试人员发挥主观能动性,与相关的软件开发项目经理和软件开发人员保持沟通,了解软件实现的主要功能是什么,并记录得收集到的信息。一般来说,开发人员即便没有提供相关需求文档,也会保存一些简单的过程文档,主动向开发人员索要这些文档,可以作为测试的参考。此外,可以与公司的技术支持人员交流,技术支持人员是最贴近用户的人,因此,通过交流可以获取第一手的用户使用感受,在测试的过程中会更加贴近用户。

     当拿到相关的资料后,从哪些方面分析需求?如何与开发人员交流需求?其实,只要把握需求分析的几个关键的点就可以解决问题:输入、处理过程、输出、性能要求、运行环境,下面针对每一个项目逐一分析:

     软件输入: 与该需求相关的一切可能输入,可以从这几方面考虑,输入来源、输入参数的数量、输入参数的度量单位、输入参数的时间要求、输入参数的精度和输入参数的有效输入范围。在测试用例设计中,这部分内容作为测试用例输入的依据。

     处理过程: 描述对输入数据所执行的所有操作和如何获得输出的过程。测试人员了解处理过程即可,在测试过程中发现 BUG 时候,如果对处理过程了解的深入,对定位问题根源有很大的帮助。

     软件输出: 描述每个需求的输出结果,包括输出的位置(如计算机显示器、打印机,文件),输出参数的数量、输出参数的度量单位、输出参数的时序、输出参数精确度、输出参数的有效输出范围、错误消息。在测试用例设计中,这部分内容作为测试用例的预期输出。

     性能要求: 与该需求相关的性能要求,比如 " 插入 ATM 取款卡后, 3 秒钟内弹出提示用户取款的图形界面 " 。 3 秒钟这一限制,就是对需求的基本性能要求。

     运行环境: 软件的运行所需的环境,包括硬件平台的要求、操作系统的要求、数据库的要求,以及其它相关支撑软件的要求。

     o 确认需求的优先级

     确认需求的优先级是很必要的,如果在产品进度比较紧的情况下,测试人员可以考虑优先测试优先级高的需求项,如果进度允许,那么在测试优先级低的需求项,如果进度不允许,那么就放弃测试优先级低的需求项。如果软件公司有规范的流程支撑,开发人员在提供软件需求文档的时候,应该在文档中确定需求的优先级。但是,如果开发人员连基本的软件需求文档都没有提供,又怎能指望他们确定软件需求的优先级?如果是这样,需求的优先级只能由测试人员完成了。

     o 加入开发小组的邮件群组

     测试人员需要通晓被测试产品,但是,产品在开发的过程中往往是不断变化的。如果软件开发团队有一套变更控制流程,测试人员会对产品的变更了如指掌。如果没有变更控制,那就要采用其他的土方法了。如果公司里面有自动化办公系统,也许采用的是 Lotus Notes 系统,也许使用的是 E-mail 系统,测试人员应该加入到开发人员的邮件群组中。当开发人员通过邮件讨论问题、通知召开技术会议的时候,测试人员可以及时知晓,如果必要,可以参加开发人员的技术会议。即便公司里面有了软件变更控制流程,加入到开发邮件群组也是一个很好的习惯。

     o 与开发人员为邻

     建议测试人员与开发人员为邻。我所在的测试组曾经与开发组是在相邻的写字间里,开发人员与测试人员的关系非常融洽,抛去同事关系,大家还是不错的朋友。不管开发人员有什么样的活动,测试人员都能第一时间获得信息。无论从事软件测试工作,还是从事其它的工作,与工作中上下游环节的同事保持良好的个人关系对工作有很大便利。一般的公司内部都存在部门墙,良好的人际关系是打通部门墙的手段之一。向领导建议测试人员与开发人员为邻,这很必要。

     o 测试用例设计

     测试需求收集完毕后,开始测试设计。测试用例是什么?测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。设计测试用例需要考虑以下问题:

     o 测试用例的基本格式

     软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果,下面逐一介绍。

     用例编号: 测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则: PROJECT1-ST-001 ,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。

     测试标题: 对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如 " 测试用户登录时输入错误密码时,软件的响应情况 " 。

     重要级别: 定义测试用例的优先级别,可以笼统的分为 " 高 " 和 " 低 " 两个级别。一般来说,如果软件需求的优先级为 " 高 " ,那么针对该需求的测试用例优先级也为 " 高 " ;反之亦然,

     测试输入: 提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。

     操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。

     预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。

     软件测试用例的设计主要从上述 6 个域考虑,结合相应的软件需求文档,在掌握一定测试用例设计方法的基础上,可以设计出比较全面、合理的测试用例。具体的测试用例设计方法可以参见相关的测试书籍,白盒测试方法和黑盒测试方法在绝大多数的软件测试书籍中都有详细的介绍,这里不作赘述。

     o 重用同类型项目的测试用例

     如果我看得远,那是因为我站在巨人的肩上 --牛顿。

     一般来说,每个软件公司的项目可以分为固定的几大类。可以按业务类型划分,比如 ERP 软件、产品数据管理软件、通信软件、地理信息系统软件等等;可以按软件结构来划分,比如 B/S 架构的软件、 C/S 架构的软件、嵌入式软件等等。参考同类别软件的测试用例,会有很大的借鉴意义。如果,公司中有同类别的软件系统,千万别忘记把相关的测试用例拿来参考。如果,系统非常接近,甚至经过对测试用例简单修改就可以应用到当前被测试的软件。 " 拿来主义 " 可以极大的开阔测试用例设计思路,也可以节省大量的测试用例设计时间。

     o 利用已有的软件 Checklist

     在上面一个小节中,按照不同的规则划分了不同的软件类型。每种类型的软件都有一定的测试规范,比如, WEB 软件系统在系统测试过程中,会有一系列的范式,比如针对 Cookie 就会有很多测试点。在设计测试用例的时候,不妨到网上去搜索相关的 Checklist ,不过国内外的网站很少有这方面的资料,即便有,也不是特别系统。可以先找一份粗糙的 Checklist ,然后,在设计测试用例的时候不断的去完善它,以作为下次测试用例设计的基础。

     o 加强测试用例的评审

     测试用例设计完毕后,最好能够增加评审过程。同行评审是 CMM3 级的一个 KPA ,如果因为公司没有通过 CMM3 级,就不开展同行评审是不恰当的。测试用例应该由产品相关的软件测试人员和软件开发人员评审,提交评审意见,然后根据评审意见更新测试用例。 如果认真操作这个环节,测试用例中的很多问题都会暴露出来,比如用例设计错误、用例设计遗漏、用例设计冗余、用例设计不充分等等;如果同行评审不充分,那么,在测试执行的过程中,上述本应在评审阶段发现的测试用例相关问题,会给测试执行带来大麻烦,甚至导致测试执行挂起。

     o 定义测试用例的执行顺序

     在测试用例执行过程中,你会发现每个测试用例都对测试环境有特殊的要求,或者对测试环境有特殊的影响。因此,定义测试用例的执行顺序,对测试的执行效率影响非常大。比如某些异常测试用例会导致服务器频繁重新启动,服务器的每次重新启动都会消耗大量的时间,导致这部分测试用例执行也消耗很多的时间。那么在编排测试用例执行顺序的时候,应该考虑把这部分测试用例放在最后执行,如果在测试进度很紧张的情况下,如果优先执行这部分消耗时间的异常测试用例,那么在测试执行时间过了大半的时候,测试用例执行的进度依然是缓慢的,这会影响到测试人员的心情,进而导致匆忙地测试后面的测试用例,这样测试用例的漏测、误测就不可避免,严重影响了软件测试效果和进度。因而,合理地定义测试用例的执行顺序是很有必要的。

     o 测试用例执行

     测试用例设计完毕后,接下来的工作是测试执行,测试执行中应该注意以下几个问题:

     o 搭建软件测试环境,执行测试用例

     测试用例执行过程中,搭建测试环境是第一步。一般来说,软件产品提交测试后,开发人员应该提交一份产品安装指导书,在指导书中详细指明软件产品运行的软硬件环境,比如要求操作系统系统是 Windows 2000 pack4 版本,数据库是 Sql Server 2000 等等,此外,应该给出被测试软件产品的详细安装指导书,包括安装的操作步骤、相关配置文件的配置方法等等。对于复杂的软件产品,尤其是软件项目,如果没有安装指导书作为参考,在搭建测试环境过程中会遇到种种问题。

     如果开发人员拒绝提供相关的安装指导书,搭建测试中遇到问题的时候,测试人员可以要求开发人员协助,这时候,一定要把开发人员解决问题的方法记录下来,避免同样的问题再次请教开发人员,这样会招致开发人员的反感,也降低了开发人员对测试人员的认可程度。

     o 测试执行过程应注意的问题

     测试环境搭建之后,根据定义的测试用例执行顺序,逐个执行测试用例。在测试执行中需要注意以下几个问题:

     全方位的观察测试用例执行结果: 测试执行过程中,当测试的实际输出结果与测试用例中的预期输出结果一致的时候,是否可以认为测试用例执行成功了?答案是否定的,即便实际测试结果与测试的预期结果一致,也要查看软件产品的操作日志、系统运行日志和系统资源使用情况,来判断测试用例是否执行成功了。全方位观察软件产品的输出可以发现很多隐蔽的问题。以前,我在测试嵌入式系统软件的时候,执行某测试用例后,测试用例的实际输出与预期输出完全一致,不过在查询 CPU 占用率地时候,发现 CPU 占用率高达 90 %,后来经过分析,软件运行的时候启动了若干个 1ms 的定时器,大量的消耗的 CPU 资源,后来通过把定时器调整到 10ms , CPU 的占用率降为 7 %。如果观察点单一,这个严重消耗资源的问题就无从发现了。

     加强测试过程记录: 测试执行过程中,一定要加强测试过程记录。如果测试执行步骤与测试用例中描述的有差异,一定要记录下来,作为日后更新测试用例的依据;如果软件产品提供了日志功能,比如有软件运行日志、用户操作日志,一定在每个测试用例执行后记录相关的日志文件,作为测试过程记录,一旦日后发现问题,开发人员可以通过这些测试记录方便的定位问题。而不用测试人员重新搭建测试环境,为开发人员重现问题。

     及时确认发现的问题: 测试执行过程中,如果确认发现了软件的缺陷,那么可以毫不犹豫的提交问题报告单。如果发现了可疑问题,又无法定位是否为软件缺陷,那么一定要保留现场,然后知会相关开发人员到现场定位问题。如果开发人员在短时间内可以确认是否为软件缺陷,测试人员给予配合;如果开发人员定位问题需要花费很长的时间,测试人员千万不要因此耽误自己宝贵的测试执行时间,可以让开发人员记录重新问题的测试环境配置,然后,回到自己的开发环境上重现问题,继续定位问题。

     与开发人员良好的沟通: 测试执行过程中,当你提交了问题报告单,可能被开发人员无情驳回,拒绝修改。这时候,只能对开发人员晓之以理,做到有理、有据,有说服力。首先,要定义软件缺陷的标准原则,这个原则应该是开发人员和测试人员都认可的,如果没有共同认可的原则,那么开发人员与测试人员对问题的争执就不可避免了。此外,测试人员打算说服开发人员之前,考虑是否能够先说服自己,在保证可以说服自己的前提下,再开始与开发人员交流。

     o 及时更新测试用例

     测试执行过程中,应该注意及时更新测试用例。往往在测试执行过程中,才发现遗漏了一些测试用例,这时候应该及时的补充;往往也会发现有些测试用例在具体的执行过程中根本无法操作,这时候应该删除这部分用例;也会发现若干个冗余的测试用例完全可以由某一个测试用例替代,那么删除冗余的测试用例。

     总之,测试执行的过程中及时地更新测试用例是很好的习惯。不要打算在测试执行结束后,统一更新测试用例,如果这样,往往会遗漏很多本应该更新的测试用例。

     o 提交一份优秀的问题报告单

     软件测试提交的问题报告单和测试日报一样,都是软件测试人员的工作输出,是测试人员绩效的集中体现。因此,提交一份优秀的问题报告单是很重要的。软件测试报告单最关键的域就是 " 问题描述 " ,这是开发人员重现问题,定位问题的依据。问题描述应该包括以下几部分内容:软件配置、硬件配置、测试用例输入、操作步骤、输出、当时输出设备的相关输出信息和相关的日志等。

     软件配置: 包括操作系统类型版本和补丁版本、当前被测试软件的版本和补丁版本、相关支撑软件,比如数据库软件的版本和补丁版本等。

     硬件配置: 计算机的配置情况,主要包括 CPU 、内存和硬盘的相关参数,其它硬件参数根据测试用例的实际情况添加。如果测试中使用网络,那么网络的组网情况,网络的容量、流量等情况。硬件配置情况与被测试产品类型密切相关,需要根据当时的情况,准确翔实的记录硬件配置情况。

     测试用例输入 \ 操作步骤 \ 输出: 这部分内容可以根据测试用例的描述和测试用例的实际执行情况如实填写。

     输出设备的相关输出信息: 输出设备包括计算机显示器、打印机、磁带等等输出设备,如果是显示器可以采用抓屏的方式获取当时的截图,其他的输出设备可以采用其它方法获取相关的输出,在问题报告单中提供描述。

     日志信息: 规范的软件产品都会提供软件的运行日志和用户、管理员的操作日志,测试人员应该把测试用例执行后的软件产品运行日志和操作日志作为附件,提交到问题报告单中。

     根据被测试软件产品的不同,需要在 " 问题描述 " 中增加相应的描述内容,这需要具体问题具体分析。

     o 测试结果分析

     软件测试执行结束后,测试活动还没有结束。测试结果分析是必不可少的重要环节, " 编筐编篓,全在收口 " ,测试结果的分析对下一轮测试工作的开展有很大的借鉴意义。前面的 " 测试准备工作 " 中,建议测试人员走读缺陷跟踪库,查阅其他测试人员发现的软件缺陷。测试结束后,也应该分析自己发现的软件缺陷,对发现的缺陷分类,你会发现自己提交的问题只有固定的几个类别;然后,再把一起完成测试执行工作的其他测试人员发现的问题也汇总起来,你会发现,你所提交问题的类别与他们有差异。这很正常,人的思维是有局限性,在测试的过程中,每个测试人员都有自己思考问题的盲区和测试执行的盲区,有效的自我分析和分析其他测试人员,你会发现自己的盲区,有针对性的分析盲区,必定会在下一轮测试用避免盲区。

     总结:

     限于文章的篇幅,本文不可能给出一个类似于 checklist 的指导性的软件测试新手入门。无论从事软件测试还是从事其它的工作,技术上的和技巧上的问题都可以通过查询相关的软件测试技术书籍获取,掌握一套基本的方法论是最重要的。以上文字,都是作者从事软件测试工作积累的经验之谈,如发现谬误之处请不吝指出。

  • 终于可以上51了

    carywang 发布于 2007-04-05 15:50:21

    我的51日志开通了,希望大家多多来交流。
carywang

carywang

本人有三年多的测试工作经验,希望能够继续在这个行业里打拼,不断的提高自己的测试能力,所以希望能够抽出更多的时间能够与大家多交流,多分享。

我的栏目

数据统计

  • 访问量: 3487
  • 日志数: 5
  • 图片数: 1
  • 建立时间: 2007-04-05
  • 更新时间: 2009-08-25

RSS订阅

Open Toolbar