日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

统计信息

  • 访问量: 142
  • 日志数: 3
  • 建立时间: 2007-06-08
  • 更新时间: 2007-06-08

RSS订阅

我的最新日志

  • 转发朱老师的技术文章:如何定义测试用例的质量标准?

    2007-6-08

     
     在定义测试用例的质量标准之前,先要了解设计测试用例的目的。测试用例是测试工作中最重要的元素或测试件(test ware)之一,是测试执行的基础。测试用例不仅能有效地帮助实施后继的回归测试、知识的传递和测试的管理等,而且更重要的是能更快、更有效地发现缺陷,确保测试的系统性和全面性,测试的深度和广度达到所期望的目标也就是说,测试用例的质量就是满足测试目标的程度,体现在 “测试覆盖率和测试执行效率”两个方面。所以,测试用例最基本的质量标准就是:
    • 达到已定义的或所要求的测试覆盖率,如大于98%。
    • 使测试执行的效率达到最好的水平,如最有效的途径并使60%以上的测试用例被测试工具执行

     
       但是,按照这样的标准,很难在测试执行前或执行过程中评估测试用例的质量,而不得不在执行完这些测试用例之后进行度量,特别是测试覆盖率。所以,理想的情况要求在测试用例设计过程中,可以按照某种特定的质量标准对测试用例进行复审(review)、实施评估。那么,这种特定的质量标准是什么呢?
       
        根据多年的实践经验,测试用例的标准不能局限于一个层次,因为测试用例设计类似于软件设计,软件设计有架构设计(结构设计/概要设计)和详细设计,所以对于测试用例的质量标准,也应分为两个层次来考虑:

    (1)高层次——满足某一个测试目标或测试任务来整体看测试用例,衡量一组测试用例的结构、设计思路和覆盖率等指标。

        (2)低层次——从单个测试用例看,衡量其描述的规范性、可理解性和可维护性等指标。

    朱少民-软件测试和质量专栏 版权所有

    1.高层次(high-level)标准

    高层次标准是从满足某一个特定的测试目标出发来进行定义,分析一组测试用例的设计思路、设计方法和策略,包括测试用例的层次、结构等。从高层次看,测试用例设计的关键点是:始终从客户需求的角度(出发),始终围绕测试的覆盖率和执行效率不断思考,最终通过有效的技术方法完成测试用例的设计。

    对于一整套的测试用例组(集合),可定义如下的质量标准:

    (1) 测试用例的目标清楚,并能满足软件质量的各个方面,包括功能测试、性能测试、安全性测试、故障转移测试、负载测试等。

        (2) 设计思路正确、清晰。例如,通过序列图、状态图、工作流程图、数据流程图等来描述待测试的功能特性或非功能特性。

        (3) 在组织和分类上,测试用例层次清楚、结构合理。测试用例的层次与产品特性的结构/层次相一致,或者与测试的目标/子目标的分类/层次相一致,并具有合理的优先级或执行顺序。

        (4) 测试用例覆盖所有测试点、覆盖所有已知的用户使用场景(User scenario),也就是说每个测试点都有相应数量的测试用例来覆盖,而且将各种用户使用场景通过矩阵或因果图等方式列出来,找到相对应的测试用例。

        (5) 测试手段的区别对待。在设计测试用例时,就要全面考量测试的手段,哪些方面可以通过工具测试,哪些方面不得不用手工测试,对不同手段的测试用例区别对待。

        (6) 有充分的负面测试。作为测试用例,不仅要测试正确的输入和操作,还要测试各种各样的例外情况,如边界条件、不正确的操作、错误的数据输入等。

        (7) 没有重复、冗余的测试用例,满足相应的行业标准等。

    朱少民-软件测试和质量专栏 版权所有

    2.低层次(low-level) 标准

    低层次标准是考察单个测试用例是否满足测试的需求,是否能被更有效地执行。测试用例设计的结果就是交付测试用例,使测试用例被执行,所以除了覆盖率,执行的效率也是测试用例的一个重要属性。测试用例越清楚,越容易被理解和执行。执行效率越高就说明测试用例越好,如果测试用例能被机器(computer)执行,当然执行效率得到体现。

    对于具体的某个测试用例,不妨可定义如下的质量标准:

        (1) 测试用例的出发点是发现缺陷,即单个测试用例在“暴露缺陷”上具有较高的可能性。

        (2) 测试用例的单一性。一个测试用例面向一个测试点,不要将许多测试点揉在一起。例如,通过一个测试用例发现1~2个缺陷,而不能发现5~10个缺陷甚至更多的缺陷。

        (3) 符合测试用例设计规范或测试用例模板,见下面附表所示。

        (4) 描述清楚,包括特定的场合、特定的对象和特定的术语,没有含糊的概念和一般性的描述。例如,测试用例名称为“登录功能使用正常”,就是一个描述不清楚的例子,而这样的描述“登录功能中用户名大小写不敏感性验证”、“登录功能中用户名唯一性验证”和“用户帐号被锁定后再进行登录操作”等就比较好。

        (5) 操作步骤的准确性,按照步骤的操作得到唯一的测试结果。

        (6) 操作步骤的简单性。操作步骤不应该太复杂,过于复杂的操作步骤意味着测试用例需要被分解为多个测试用例或者分解为多个环节进行验证。

        (7) 所期望的测试结果是可验证的即能迅速、明确地判断测试的实际结果是否与所期望的结果相同或相匹配。例如,在测试用例中描述期望结果为“登录成功”,这实际是不可验证的。要使这个期望结果具有可验证性,我们就应该这样描述所期望的结果——“‘退出(log out)’按钮出现”。

        (8) 测试环境的正确性、测试数据的充分性。

        (9) 前提条件、依赖性被完全识别出来。

    朱少民-软件测试和质量专栏 版权所有


        这样,测试用例具有很好的可理解性和可维护性,可以提高测试执行的效率。并能保证不同的人员执行相同的用例能获得统一的结果。步骤的准确性和期望结果的可验证性,非常有助于测试执行的自动化实现。也只有实现了测试执行的自动化,测试执行的效率才是最高的,而且测试人员才有更多的时间去思考、去设计更优秀的测试用例,进入良性循环,相互促进,不断地提升测试的质量和效率。


    测试用例模板

    字段名称

    类型

    注释

    标志符

    整型

    唯一标识该测试用例的值,自动生成

    测试项

    字符型

    测试的对象,可以从软件配置库中选择

    测试目标

    字符型

    从固定列表中选择一个

    测试环境要求

    字符型

    可从列表中选择,如果没有,则直接输入新增内容

    前提

    字符型

    事先设定、条件限制,如已登录、某个选项已选上

    输入数据

    字符型

    输入要求说明、或数据列举

    操作步骤

    字符型

    1., 2., … 操作步骤的顺序,准确详细地描述。

    期望输出

    字符型

     

    所属模块

    整型

    模块标识符。

    优先级

    整型

    123 1-优先级最高)

    层次

    整型

    0123  ( 0 – 最高层)

    关联的测试用例

    整型

    上层(父)用例的标识符。

    执行时间

    实型

    分钟

    自动化标识

    布尔型

    TF

    关联的缺陷

    枚举型

    缺陷标识符列表。

    朱少民-软件测试和质量专栏 版权所有

  • 转发个人Blog的一篇文章:咨询软件测试培训后的感想

    2007-6-08

    昨天休息没有很多事情,我们这里刚设立了一个北大测试的培训机构,正好自己

    也想补充一下,所以就冒雨来到了这家地处是中心的培训机构。
    刚进门遇到他们的一个工作人员,问有什么帮忙的,我说来咨询一下,OK,将我

    带到一个女孩那里叫她安排一下,女孩先问我有没有预约,“靠,那样火,还要预

    约”心想,偶说没有,她说好吧,然后跑到里屋拿来几张纸和一只笔,让我填一下

    。我接过来看了一会,心里有很多感触,现在有些培训机构为了显示它的正规和

    火爆而故意弄一些这样的入门测试等等。第一张纸是一些个人资料登录,什么姓

    名、学历、年龄、工作单位等等,靠,不是将自己的资料完全暴露给你?第二张

    是一个什么综合能力测试,什么从事什么工作,单位规模,如何知道他们培训机

    构(这些和综合能力有什么关系,到现在我还没有弄清楚),下面是几个问答题

    ,什么你对IT行业有什么看法,对软件测试有什么了解等等之类的话题;第三张

    是一些逻辑方面的一测试,一些简单的问题,什么青蛙跳井,绳子燃烧计时,多

    人过桥,简直是一些侮辱大家的智力的问题。我浏览一遍后给她,她用异样的眼

    光看“填好了?”“我不是来向你们透露我的资料的,我也不想填你们的什么综合测

    试的,我只想了解有没有我想学的课程的!”那个女孩可能没有想到也没有遇到过

    象我这样不愿填表格而直接要求问问题的,搞的他然后又去向他们领导说明情况

    。然后来了一个小伙计,又将那几张表格那过来,还想让我填一下,我再次说明

    我只想问问有没有我关心的课程,然后告诉他他的一些问题对我来说只是浪费时

    间,我从事软件测试有一段时间没有必要填他们的调查!这时候他可能意识到他

    们的做法有一些不妥但是还是为自己声明“我们只是为新手准备的课程而不是为在

    行的培训”“哦,是这样呀,但是你们在你们的广告中并没有声明呀,这不是误导

    大家浪费大家的时间吗?”他无言以对,然后很不情愿地说“你等一下,我来叫他

    们为你介绍课程”(声明一下,我也的确想知道他们有什么课程,对我以后学习也

    有帮助,所以决定看看)不过后来给我介绍课程的小常老师和我聊的还是很愉快

    的,从天南到海北,从软件到硬件,从工作到生活,无所不谈,他给我很多启发

    我也个他很多建议。好,下面就着重说说软件测试这一块吧(这里只谈他们培训

    机构的感想,不含对他个人的感情色彩,那个小伙计我感觉还是很不错的):一

    :北大测试现在主要的课程有十门(严格地说是十本书不是十门课程)1.《搭建

    Windows测试环境》(主要是一些计算机基础知识,如软件安装卸载,系统维护,

    虚拟机,操作系统安装和一些基本的网络知识);2.《使用C语言开发简单应用》

    (一些简单的C语言基础,比一般大学的课程要简单);3.《高效设计测试用例》

    :(教你一些他们总结的故障模版以及黑盒的几种常用方法); 4.《测试计划与

    软件缺陷》:(主要讲测试的一些基础知识);5.《白盒测试》(一些简单的白

    盒测试方法和用例); 6.《沟通和职业素质培养》:(教一些在公司怎么混和管

    理自己的技巧,也就是说测试是多么多么轻松和吃香的行业);7.《操作系统及

    软件运行机制》:(主要讲WIN32);8.《用户界面规范》:(就是学VB,还简单

    地学了学VBS);9.《Linun基础及网络环境》(介绍一些Linun的基础知识);

    10.《软件测试实训》:(最后的项目实训用书,他介绍说公有十三个项目,三个

    基于BS结构的,在后期分析和学习,十个小项目的,穿插与平时的课程当中) 二

    :班级设置为全日制班和商务班,全日制班是半年,商务班是8个月;三:学费统

    一为一万六千元,外加教材五百元和考试费用四百元。四:师资力量,一些个人感

    觉不是太好的国内软件公司的员工,很多没有软件测试经验,似乎有一个是从事

    软件测试行业的,但是据我所知,他们公司测试技术不是很强,他组织过一些小

    型系统的测试没有大型软件测试经验。下面做一下性价比分析(纯属个人意见)

    :1.如果是计算机专业或者相近专业或比较感兴趣的,应该对下面课程有所了解

    ,《搭建Windows测试环境》、《使用C语言开发简单应用》、《操作系统及软件

    运行机制》、《用户界面规范》、《Linun基础及网络环境》,所以一般从事过计

    算机行业的人员不需要这样的课程,转行的看个人情况;2.《沟通和职业素质培

    养》,除非你没有上过班,没有工作经验,否则可以考虑大家都有体会;3.《高

    效设计测试用例》、《软件测试实训》、《测试计划与软件缺陷》、《白盒测试

    》,这些才是现在学校课程里面很少涉及的方面,他们这几本教材说的很浅显,

    如果你有他们的教材并具备大专以上学历(他们培训的学员至少要大专学历,按

    照他们的要求来分析),不出问题的话本个月可以自学一本,四本书共计两个月

    ,当然有可能没有培训的效果好。这样我们就得到一个结果:一个计算机专业毕

    业的大专生花上16900元和6~8个月的时间等于他自学2个月加上(4/10)

    *500=200的教材费用加上400元考试费用,不过你不去培训也就意味你买不到他们

    的教材和参加他们的考试,也就不用花200的教材费和400元的考试费用,这样我

    还剩下半年的时间,呵呵,干什么去,我给别人义务打工不知道有没有人愿意要

    我,哪怕我来工作餐也不要!这样,我们培训的总投入是:6~8个月的时间加上

    16900元,总收入是4门简单的课程和一张北大测试的证书!我们自学的总投入是2

    个月的时间加上200元的教材费用加上400元的考试费用(如果你不能买到他们的

    教材和参加他们的考试,这600元你就买相关的书籍应该够了吧),总收入是半年

    的软件测试工作经验(如果你免费为人打工的话,应该能找到一个软件测试职位

    的),这样大家可以自己看一下那哪个更划算了,呵呵!这里纯属个人感觉,当

    然有很多欠考虑的地方,比如培训能给我们带来比较系统的学习,工作可以让我

    们加强我们的动手能力等等,那就看你怎么去区别了! 

  • 开通自己的个人空间和大家一起讨论软件测试

    2007-6-08

    今天也没有什么激动的事情要写,主要是想以后和大家有一个可以交流的平台!也希望大家多多支持!
Open Toolbar