软件测试用例经验大全.docx

上传人:b****6 文档编号:4998609 上传时间:2022-12-12 格式:DOCX 页数:16 大小:84.90KB
下载 相关 举报
软件测试用例经验大全.docx_第1页
第1页 / 共16页
软件测试用例经验大全.docx_第2页
第2页 / 共16页
软件测试用例经验大全.docx_第3页
第3页 / 共16页
软件测试用例经验大全.docx_第4页
第4页 / 共16页
软件测试用例经验大全.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

软件测试用例经验大全.docx

《软件测试用例经验大全.docx》由会员分享,可在线阅读,更多相关《软件测试用例经验大全.docx(16页珍藏版)》请在冰豆网上搜索。

软件测试用例经验大全.docx

软件测试用例经验大全

如何设计编制软件测试用例

      

  随着中国软件业的日益壮大和逐步走向成熟,软件测试也在不断发展。

从最初的由软件编程人员兼职测试到软件公司组建独立专职测试部门。

测试工作也从简单测试演变为包括:

编制测试计划、编写测试用例、准备测试数据、编写测试脚本、实施测试、测试评估等多项内容的正规测试。

测试方式则由单纯手工测试发展为手工、自动兼之,并有向第三方专业测试公司发展的趋势。

一、测试用例是软件测试的核心

软件测试的重要性是毋庸置疑的。

但如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。

每个软件产品或软件开发项目都需要有一套优秀的测试方案和测试方法。

影响软件测试的因素很多,例如软件本身的复杂程度、开发人员(包括分析、设计、编程和测试的人员)的素质、测试方法和技术的运用等等。

因为有些因素是客观存在的,无法避免。

有些因素则是波动的、不稳定的,例如开发队伍是流动的,有经验的走了,新人不断补充进来;一个具体的人工作也受情绪等影响,等等。

如何保障软件测试质量的稳定?

有了测试用例,无论是谁来测试,参照测试用例实施,都能保障测试的质量。

可以把人为因素的影响减少到最小。

即便最初的测试用例考虑不周全,随着测试的进行和软件版本更新,也将日趋完善。

因此测试用例的设计和编制是软件测试活动中最重要的。

测试用例是测试工作的指导,是软件测试的必须遵守的准则。

更是软件测试质量稳定的根本保障。

二、什么叫测试用例

测试用例(TestCase)目前没有经典的定义。

比较通常的说法是:

指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。

内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。

不同类别的软件,测试用例是不同的。

不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。

笔者主要从事企业管理软件的测试。

因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。

测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。

对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。

三、编制测试用例

着重介绍一些编制测试用例的具体做法。

1、测试用例文档

编写测试用例文档应有文档模板,须符合内部的规范要求。

测试用例文档将受制于测试用例管理软件的约束。

软件产品或软件开发项目的测试用例一般以该产品的软件模块或子系统为单位,形成一个测试用例文档,但并不是绝对的。

测试用例文档由简介和测试用例两部分组成。

简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。

测试用例部分逐一列示各测试用例。

每个具体测试用例都将包括下列详细信息:

用例编号、用例名称、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。

以上内容涵盖了测试用例的基本元素:

测试索引,测试环境,测试输入,测试操作,预期结果,评价标准。

2、测试用例的设置

我们早期的测试用例是按功能设置用例。

后来引进了路径分析法,按路径设置用例。

目前演变为按功能、路径混合模式设置用例。

按功能测试是最简捷的,按用例规约遍历测试每一功能。

对于复杂操作的程序模块,其各功能的实施是相互影响、紧密相关、环环相扣的,可以演变出数量繁多的变化。

没有严密的逻辑分析,产生遗漏是在所难免。

路径分析是一个很好的方法,其最大的优点是在于可以避免漏测试。

但路径分析法也有局限性。

在一个非常简单字典维护模块就存在十余条路径。

一个复杂的模块会有几十到上百条路径是不足为奇的。

笔者以为这是路径分析比较合适的使用规模。

若一个子系统有十余个或更多的模块,这些模块相互有关联。

再采用路径分析法,其路径数量成几何级增长,达5位数或更多,就无法使用了。

那么子系统模块间的测试路径或测试用例还是要靠传统方法来解决。

这是按功能、路径混合模式设置用例的由来。

3、设计测试用例

测试用例可以分为基本事件、备选事件和异常事件。

设计基本事件的用例,应该参照用例规约(或设计规格说明书),根据关联的功能、操作按路径分析法设计测试用例。

而对孤立的功能则直接按功能设计测试用例。

基本事件的测试用例应包含所有需要实现的需求功能,覆盖率达100%。

设计备选事件和异常事件的用例,则要复杂和困难得多。

例如,字典的代码是唯一的,不允许重复。

测试需要验证:

字典新增程序中已存在有关字典代码的约束,若出现代码重复必须报错,并且报错文字正确。

往往在设计编码阶段形成的文档对备选事件和异常事件分析描述不够详尽。

而测试本身则要求验证全部非基本事件,并同时尽量发现其中的软件缺陷。

可以采用软件测试常用的基本方法:

等价类划分法、边界值分析法、错误推测法、因果图法、逻辑覆盖法等设计测试用例。

视软件的不同性质采用不同的方法。

如何灵活运用各种基本方法来设计完整的测试用例,并最终实现暴露隐藏的缺陷,全凭测试设计人员的丰富经验和精心设计。

四、测试用例在软件测试中的作用

1、指导测试的实施

测试用例主要适用于集成测试、系统测试和回归测试。

在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。

并对测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。

根据测试用例的测试等级,集成测试应测试那些用例,系统测试和回归测试又该测试那些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。

2、规划测试数据的准备

在我们的实践中测试数据是与测试用例分离的。

按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。

尤其象测试报表之类数据集的正确性,按照测试用例规划准备测试数据是十分必须的。

除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。

3、编写测试脚本的"设计规格说明书"

为提高测试效率,软件测试已大力发展自动测试。

自动测试的中心任务是编写测试脚本。

如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。

4、评估测试结果的度量基准

完成测试实施后需要对测试结果进行评估,并且编制测试报告。

判断软件测试是否完成、衡量测试质量需要一些量化的结果。

例:

测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。

以前统计基准是软件模块或功能点,显得过于粗糙。

采用测试用例作度量基准更加准确、有效。

5、分析缺陷的标准

通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。

漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。

而已有相应测试用例,则反映实施测试或变更处理存在问题。

五、相关问题

1、测试用例的评审

测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。

测试用例在设计编制过程中要组织同级互查。

完成编制后应组织专家评审,需获得通过才可以使用。

评审委员会可由项目负责人、测试、编程、分析设计等有关人员组成,也可邀请客户代表参加。

2、测试用例的修改更新

测试用例在形成文档后也还需要不断完善。

主要来自三方面的缘故:

第一、在测试过程中发现设计测试用例时考虑不周,需要完善;第二、在软件交付使用后反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成;第三、软件自身的新增功能以及软件版本的更新,测试用例也必须配套修改更新。

一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。

软件的版本升级更新,测试用例一般也应随之编制升级更新版本。

3、测试用例的管理软件

运用测试用例还需配备测试用例管理软件。

它的主要功能有三个:

第一、能将测试用例文档的关键内容,如编号、名称等等自动导入管理数据库,形成与测试用例文档完全对应的记录;第二、可供测试实施时及时输入测试情况;第三、最终实现自动生成测试结果文档,包含各测试度量值,测试覆盖表和测试通过或不通过的测试用例清单列表。

有了管理软件,测试人员无论是编写每日的测试工作日志、还是出软件测试报告,都会变得轻而易举

为什么要使用测试用例?

其实,测试用例不是必须的。

如果你是一个特别有想法的人,或者在软件测试方面很有天赋,每天都能找到其他人几天时间才能找到的Bug,那么你可以不用测试用例,如果我是TestManager的话,就会让你做一个Ad-hocTester,因为我已经觉得你足够好了,不需要测试用例来指导你了,因为你很有想法,有自己的测试思路。

就像陈宏刚博士在Microsoft公司做Tester的时候,就是一个Ad-hocTester,因为他有自己的测试思路,他每天找到的Bug比他们小组其他所有Tester测试出来的Bug总和还要多,所以Testmanager根本就不管他,也不给他什么要求,就让他每天测好了。

 

    但是不幸的是,你可能不是这样的人,或者你身上存在着几种情况,就最好使用测试用例。

1.   你工作不主动,你需要测试用例来催着你去工作;

2.   你测试时总感觉思维很混乱,或者总感觉有些功能没有测到,而一些功能已经测过好几遍了,这样测试用例能够帮你理清头绪,进行比较系统的测试,不会有太多的重复,也不会让你的测试工作产生遗漏;

3.   在测试时间紧迫的情况下,你不知道要测什么,或者要先测试那些功能,测试用例这个时候就可以帮你分清重点,因为测试用例写完后一定要标重要程度和优先级,以防止在紧急的情况下有重点的工作。

4.   你积极的工作状态不能持续,这个时候测试用例又帮你一个大忙,因为测试用例上面操作步骤和预期结果都已经写好了,你根本不用思考,只需要照着上面做就行了。

5.   测试用例是你工作的见证,也是你每次测试以后向上级汇报的依据,有了测试用例,我知道我这次测试了那些功能,还有那些功能没有测到,对上级是一个交代,也做到了自己心中有数。

6.   测试用例可以记录你的灵感。

如果灵感突发,有一个新颖的测试思路,你可以写成测试用例,或许这个测试用例就是挽救整个软件的重大功臣。

7.   测试用例有助于不断的改进工作。

因为通过测试用例,可以知道哪些测试用例测出Bug的机率比较大,还有那些测试用例需要改进,对我们以后工作的改进提供了依据。

    以上几条如果还不能推动你写测试用例的话,那么只有通过时间来证明了。

我现在已经习惯在测试之前写测试用例了,如果测试之前没有测试用例的话,反而觉得不习惯。

当然在不同的情况下(比如时间紧迫和有充足的时间的情况),测试用例的写法是不一样的。

浅谈功能测试用例模板设计

测试用例设计和执行是测试工作的核心,也是工作量最大的任务之一,设计良好的测试用例模板能提高测试用例的设计质量,便于跟踪测试用例的执行结果,自动生成测试用例覆盖率报告。

这几年测试技术和理论有了长足的发展,就功能测试用例设计要素而言,样式上均大同小异,一般都包含主题、前置条件、执行步骤、期望结果等。

测试用例可以用数据库、Word、Excel、xml等格式进行管理,市面亦有成熟的商业软件工具和开源工具等,对于一般中小软件企业,使用文档来管理测试用例是较为方便、经济的途径。

Word格式的文档可以满足设计需要,但不利于跟踪和自动统计执行结果报告。

下面我将介绍自己在多个项目中设计和改进的Excel模版,它可以方便地设计测试用例,记录执行结果并自动统计测试用例覆盖率。

图-1为Excel模板。

具体细目说明如下:

图-1Excel模板

测试用例ID——用于唯一标识测试用例号,可根据自身需要定义规则,最好易于跟踪和维护;

测试前置条件——如果有则描述之;

测试用例等级——根据需求重要性区分测试用例等级,测试执行阶段可以根据测试用例等级安排测试任务,分为四级:

• 冒烟测试,即版本确认测试,每个测试版本需通过所有该级测试用例,否则拒绝继续测试;

• 关键路径测试,每个测试版本需执行该级测试用例,若该级测试用例均通过,意味着软件功能趋于稳定;

• 可接受级测试,该级测试用例只要执行一次通过即可,该级测试用例通过意味着可以准备发布了;

• 建议执行的用例,如果有时间,最好执行该级测试用例,但不作为发布的必要条件。

测试用例执行步骤、期望结果;

测试用例执行结果——执行时填写,分为通过、失败、警告、阻塞、忽略。

通过开发VBA脚本,可以自动统计每轮测试用例执行结果,如图-2所示,得到测试用例覆盖率结果报告,用于分析测试结果。

 

图-2测试用例覆盖率分析报告

测试用例状态转换分析

图-3显示了一个典型测试用例的生命周期,依据不同类型和规模的项目可以自行定制。

图-3测试用例生命周期

队列中(InQueue)--测试用例在排队等待中;

进程中(InProgress)--表示测试正在进行,并且可能会持续一段时间,如果一个测试花费的时间少于一天或两天,只需将它显示在处于排队状态;

阻塞(Block)--一些外部条件—如缺少部分功能—将无法执行测试;

忽略(Skip)--已经决定(或被告知)跳过这个测试用例;

通过(Pass)--终点状态,没问题;

失败(Fail)--测试用例执行出错;

警告(Warn)--结果处于Pass和Fail之间,错误严重性等级较轻,不影响功能和性能;

关闭(Closed)--以前识别出的错误都已经被修正。

实际项目中,一个测试用例有多个执行步骤,每个步骤可能有不同结果,如步骤1通过,步骤2失败,步骤3被步骤2中的失败所阻塞,那么该测试状态如何?

单纯指出这个测试用例阻塞或失败都将遗漏重要的信息。

因此必须指定双重状态,如Block/Fail,Block/Warn,Skip/Pass,Skip/Closed等。

然而,如果显示十几个状态,则测试结果可能更难以解释。

如何使结果明了又能精确反映实际结果,需要精明选择包括哪些状态。

使用该模板优点:

使用维护简便,方便测试任务分配,易于与项目组其他角色交流,结果报告自动生成。

不足之处:

测试变更跟踪不方便,每个测试用例的规模不等,所以测试覆盖率结果只是作为参考,结果百分比不能精确反映工作量,需要具体分析项目情况。

这个模版没有跟踪统计缺陷,同时考虑是否使用加权评估缺陷严重性,一个测试用例往往对应几个缺陷的统计分析。

功能测试用例的书写方式(适于新手学习)

功能性测试用例

1.测试的来源,即测试的需求

 测试用例的主要来源有:

1)需求说明”及相关文档

2)相关的设计说明(概要设计,详细设计等)

3)与开发组交流对需求理解的记录(可以是开发人员的一个解释)

 4)已经基本成型的UI(可以有针对性地补充一些用例)

      简而言之,所有你能得到的项目文档,都尽量拿到。

从所得到的资料中,分解出若干小的“功能点”,理解“功能点”,编写相应的测试用例。

2.用例的组织方式

不同的公司有不同的做法,原则上,只要方便管理和跟踪,怎么组织都可以的。

用例可以按大的功能块组织,如查询功能模块的用例,可以组织在一起,打印模块的测试用例,可以另外组织在一起。

    在没有专门的测试用例管理工具的情况下,用例执行后会产生2种状态:

“通过”、“失败”——这样加上“未执行”的用例的状态,共3种状态。

   即从“未执行”用例中执行一个用例后,该用例状态应为“失败”或“通过”。

将同一状态的用例组织在一起。

 至于用例文件格式,可以是.DOC或.XLS(如果有专门的测试用例管理工具另当别论)。

3.用例与其他材料的关联方式,即如何解决用例跟踪的问题

测试用例面临的比较大的风险有:

需求的变更、设计的修改、需求的错误和遗漏等等。

由于用例的主要来源是需求和设计的说明,所以对用例的跟踪其实就是对需求和设计的跟踪,需求和设计的变更势必引起测试用例的变更。

 如前所说,将分解的功能点编号,与相应的用例联系起来。

例如,你可以列一个表格,列出各个(编号的)功能点和测试用例间的关联关系。

 这样,当需求和设计发生变化时,你只需要跟踪“功能点”是否变化,是否增加了新的功能点。

 4.一个好的用例的表述要点,即用例中应当包含的信息

一个优秀的测试用例,应该包含以下信息:

1)软件或项目的名称

2)软件或项目的版本(内部版本号)

 3)功能模块名

 4)测试用例的简单描述,即该用例执行的目的或方法

 5)测试用例的参考信息(便于跟踪和参考)

 6)本测试用例与其他测试用例间的依赖关系

 7)本用例的前置条件,即执行本用例必须要满足的条件,如对数据库的访问权限

8)用例的编号(ID),如可以是软件名称简写-功能块简写-NO.。

9)步骤号、操作步骤描述、测试数据描述

10)预期结果(这是最重要的)和实际结果(如果有BUG管理工具,这条可以省略)

11)开发人员(必须有)和测试人员(可有可无)

12)测试执行日期

5.给出一个测试用例的例子该范例已经包含一个测试用例的模板。

 备注:

本用例未考虑“企业代码”的输入情况;测试用例并未涵盖所有的非法输入,如非法输入中可能会有“user=*,pw=*”的组合,对回车的默认操作,空格输入,对输入上溢的处理的处理(可能会跳过身份验证)等等。

测试用例设计要点总结、

一、环境配置测试

  

(1)网络连接是否正常

  

(2)网络流量负担是否过重

  (3)软件测试平台是否可选

  (4)如果(3),是否在不同的软件测试平台进行软件测试

  (5)所选软件测试平台的版本(包括ServicePack)是否正确

  (6)所选软件测试平台的参数设置是否正确

  (7)所选软件测试平台上正在运行的其它程序是否会影响测试结果

  (8)画面的分辨率和色彩设定是否正确

  二、代码测试

  A.静态测试

  

(1)同一程序内的代码书写是否为同一风格

  

(2)代码布局是否合理、美观

  (3)程序中函数、子程序块分界是否明显

  (4)注释是否符合既定格式

  (5)注释是否正确反映代码的功能

  (6)变量定义是否正确(长度、类型、存储类型)

  (7)是否引用了未初始化变量

  (8)数组和字符串的下标是否为整数

  (9)的数组和字符串的下标是否在范围内(不“越界”)

  (10)进行数组的检索及其它操作中,是否会出现“漏掉一个这种情况”

  (11)是否在应该使用常量的地方使用了变量(例:

数组范围检查)

  (12)是否为变量赋予不同类型的值

  (13)(12)的情况下,赋值是否符合数据类型的转换规则

  (14)变量的命名是否相似

  (15)是否存在声明过,但从未引用或者只引用过一次的变量

  (16)在特定模块中所有的变量是否都显式声明过

  (17)非(16)的情况下,是否可以理解为该变量具有更高的共享级别

  (18)是否为引用的指针分配内存

  (19)数据结构在函数和子程序中的引用是否明确定义了其结构

  (20)计算中是否使用了不同数据类型的变量

  (21)计算中是否使用了不同的数据类型相同但长度不同的变量

  (22)赋值的目的变量是否小于赋值表达式的值

  (23)数值计算是否会出现溢出(向上)的情况

  (24)数值计算是否会出现溢出(向下)的情况

  (25)除数是否可能为零

  (26)某些计算是否会丢失计算精度

  (27)变量的值是否超过有意义的值

  (28)计算式的求值的顺序是否容易让人感到混乱

  (29)比较是否正确

  (30)是否存在分数和浮点数的比较

  (31)如果(30),精度问题是否会影响比较

  (32)每一个逻辑表达式是否都得到了正确表达

  (33)逻辑表达式的操作数是否均为逻辑值

  (34)程序中的Begin…End和Do…While等语句中,End是否对应

  (35)程序、模块、子程序和循环是否能够终止

  (36)是否存在永不执行的循环

  (37)是否存在多循环一次或少循环一次的情况

  (38)循环变量是否在循环内被错误地修改

  (39)多分支选择中,索引变量是否能超过可能的分支数

  (40)如果(39),该情况是否能够得到正确处理

  (41)子程序接受的参数类型、大小、次序是否和调用模块相匹配

  (42)全局变量定义和用法在各个模块中是否一致

  (43)是否修改了只作为输入用的参数

  (44)常量是否被做为形式参数进行传递

  B动态测试

  

(1)测试数据是否具有一定的代表性

  

(2)测试数据是否包含测试所用的各个等价类(边界条件、次边界条件、空白、无效)

  (3)是否可能从客户那边得到测试数据

  (4)非(3)的情况下,所用的测试数据是否具有实际的意义

  (5)是否每一组测试数据都得到了执行

  (6)每一组测试数据的测试结果是否与预期结果一致

  (7)文件的属性是否正确

  (8)打开文件语句是否正确

  (9)输入/输出语句是否与格式说明书所记述的一致

  (10)缓冲区大小与记录长度是否匹配

  (11)使用文件前是否已打开了文件

  (12)文件结束条件是否存在

  (13)产生输入/输出错误时,系统是否进行检测并处理

  (14)输出信息中是否存在文字书写错误和语法错误

  (15)控件尺寸是否大小适宜

  (16)控件颜色是否符合规约

  (17)控件布局是否合理、美观

  (18)控件TAB顺序是否从左到右,从上到下

  (19)数字输入框是否接受数字输入

  (20)(19)的情况下、数字是否按既定格式显示

  (21)数字输入框是否拒绝字符串和“非法”数字的输入

  (22)组合框是否的能够进行下拉选择

  (23)组合框是否能够进行下拉多项选择

  (24)对于可添加数据组合框,添加数据后数据是否能够得到正确显示和进行选择

  (25)列表框是否能够进行选择

  (26)多项列表框是否能够进行多数据项选择

  (27)日期输入框是否接受正确的日期输入

  (28)日期输入框是否拒绝错误的日期输入

  (29)日期输入框在日期输入后是否按既定的日期格式显示日期

  (30)单选组内是否有且只有一个单选钮可选

  (31)如果单选组内无单选钮可选,这种情况是否允许存在

  (32)复选框组内是否允许多个复选框(包括全部可选)可选

  (33)如果复选框组内无复选框可选,这种情况是否允许存在

  (34)文本框及某些控件拒绝输入和选择时显示区域是否变灰或按既定规约处理

  (35)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1