如何编写有效测试用例.docx
《如何编写有效测试用例.docx》由会员分享,可在线阅读,更多相关《如何编写有效测试用例.docx(13页珍藏版)》请在冰豆网上搜索。
如何编写有效测试用例
测试用例,是一份关于具体测试步骤的文档,它描述了测试的输入参数、条件及配置、预期的输出结果等,以判断被测软件的工作是否正常。
设计、书写和执行测试案例是测试活动中重要的组成部分,测试案例通常由测试案例管理系统或工具进行管理。
一、编写测试用例的原则
测试用例的重要性是毋庸置疑的,它是软件测试全部过程的核心,是测试执行环节的基本依据。
测试用例编写应该遵循的原则:
1、测试用例要达到最大覆盖软件系统的功能点。
测试工程师应该测试计划编写完成之后,在开发阶段编写测试用例,参考需求规格说明书和软件功能点对每个功能点进行操作上的细化,尽可能趋向最大需求覆盖率。
2、测试用例对测试功能点、测试条件、测试步骤、输入值和预期结果应该有准确的定义。
3、 测试用例的设计应包括各种类型的测试用例。
在设计测试用例的时候,除了满足系统基本功能需求外,还应该考虑各种异常情况、边界情况和承受压力的能力等。
4、 测试用例的管理。
使用测试用例管理系统对测试用例进行管理。
一个好的测试用例应该具有较高的发现某个尚未发现的错误的可能性,而一个成功的测试案例能够发现某个尚未发现的错误,通常一个好的测试案例有以下特性:
1、 具有高的发现错误的概率
2、 没有冗余测试和冗余的步骤
3、 测试是“最佳类别”
4、 既不太简单也不太复杂
5、 案例是可重用和易于跟踪的.
6、 确保系统能够满足功能需求
测试用例不可能设计得天衣无缝,也不可能完全满足软件需求的覆盖率,测试执行过程里肯定会发现有些测试路径或数据在用例里没有体现,那么事后该将其补充到用例库里,以方便他人和后续版本的测试。
二、如何编写测试用例
测试用例的信息有很多,可以根据实际的情况进行增删,一般来说一个优秀的测试用例应该包含以下信息:
1、产品相关信息
(1) 软件产品或项目的名称
(2) 软件产品或项目的版本
(3) 功能模块名
(4) 功能描述
(5) 测试平台
这些信息建议可以在测试案例手工选择。
2、基本记录信息
(1) 测试用例入库者
(2) 测试用例入库时间
(3) 测试用例更新者
(4) 测试用例更新时间
这些信息建议可以由测试案例自动生成。
3、测试用例的属性
(1) 测试用例ID:
测试用例的ID(由案例管理系统自动生成,方便跟踪管理)
(2) 测试用例名称:
测试用例的名称
(3) 测试功能点:
测试的功能检查点
(4) 测试目的:
该测试功能点的测试目的
(5) 测试级别:
主路径测试、烟雾测试、基本功能测试、详细功能测试。
下面对这几个测试级别进行说明:
A、 主路径测试:
对照需求中重要模块和功能的最主要功能路径,主路径测试为设计探针模块,快速检查程序的可测试性(可测试性还包括安装测试是否成功)的主要依据的测试案例
B、 烟雾测试:
对照需求中所有模块的主要功能路径,主路径测试案例为烟雾测试案例的子集,烟雾测试为做回归测试的主要依据的测试案例。
C、 基本功能测试:
对照需求和总体设计中所有模块和功能的基本功能路径,基本功能测试为测试软件产品的非重要级别模块,书写完全的自动测试脚本的主要依据。
D、 详细功能测试:
对照总体设计中所有模块和功能的功能路径,测试各个模块及功能各个层次,各种类型。
详细功能测试案例为对重点模块,易发生错误的模块的主要依据。
(6) 测试类型:
功能测试、边界测试、异常测试、性能测试、压力测试、兼容测试、安全测试、恢复测试、安装测试、界面测试、启动/停止测试、文档测试、配置测试、可靠性测试、易用性测试、多语言测试。
(7) 预置条件:
对测试的特殊条件或配置进行说明
(8) 测试步骤:
详细描述测试过程,案例的操作步骤建议少于15个。
(9) 预期结果:
预期的测试结果
例如:
假设目前测试中国移动互联短信网关是否能正确发送短信给中国联通互联网关,测试用例的设计如下:
(1) 测试用例ID:
TC
(2) 测试用例名称:
中国移动全球通手机用户成功发送短信给中国联通手机用户
(3) 测试功能点:
中国移动全球通手机用户成功短信给中国联通手机用户,中国联通网关返回成功的状态报告
(4) 测试目的:
A、 中国移动互联短信网关能否正确处理全球通用户发送给中国联通用户的短信;
B、 中国移动互联短信网关能否正确处理中国联通互联短信网关返回成功的状态报告的情况。
(5) 测试级别:
基本功能测试
(6) 测试类型:
功能测试
(7) 预置条件:
各网关实体按照组网图中的关系连接好,各实体之间的连接和通信正常。
(8) 测试步骤:
A、 中国移动全球通手机用户()给中国联通手机用户()发送MO短信,内容为“测试”,目的号码填为中国联通手机号码;
B、 中国联通互联短信网关把短信下发给中国联通用户成功后,给中国移动互联短信网关返回一个标识成功的状态报告。
(9) 预期结果:
A、 中国联通手机用户()接收到了短信,内容为“测试”,源号码为中国移动全球通的用户号码();
B、 在中国移动互联短信网关上产生SMO话单,其中“短消息发送状态”填0(表示成功),“源手机号码”为,“目的手机号码”为。
三、测试案例的模版
下面是一个完整的测试用例的模版:
测试用例ID
TC
测试用例名称
非法用户登录管理网页
产品名称
互联互通网关
产品版本
V3.3.2
功能模块名
管理网页
测试平台
所有
用例入库者
smilings
用例更新者
smilings
用例入库时间
2006-5-30
用例更新时间
2006-5-30
测试功能点
输入错误的用户名和密码
测试目的
阻止非法用户登录系统
测试级别
详细功能测试
测试类型
功能测试
预置条件
登录用户名和密码为admin/test
测试步骤
1、输入用户名称为admin,密码为test%
2、按“登录”按扭登录管理页面
预期结果
1、系统拒绝该用户登录
2、提示错误信息:
“对不起,您的用户密码不正确,请重新确认再登录!
”
三、测试用例设计过程
对一个全新的产品来说,首先需要了解的是产品需求文档和产品模块之间的关系。
然后需要从需求文档中书写与所有需求相对应的主路径测试案例和烟雾测试案例,这个时候也同时会包括一定的基本路径测试案例甚至是详细测试案例。
在这个时候,因为对产品没有直接的使用感受,书写测试案例要考虑面广而不要太过精细。
继续阅读产品功能定义文档,将所有的功能定义直接对应写相关的测试案例,这个时候,最好能够对程序的本身有一定的接触,加深对程序的了解,以便写出更好,更全面的测试案例。
最后,在实际测试中,还需要不断扩充,修改以前的测试案例,得到完整的基本功能测试案例和详细测试案例。
如果对于一个已有一定或大部分案例的产品来说,不管测试者是否本身熟悉这个产品,其主要的任务就是阅读,检查需求及相关的变更,然后对原有的案例进行理解,扩充和修改。
这就是案例的重用/复用。
设计测试案例的时候,需要有清晰的测试思路,对要测试什么,按照什么顺序测试,覆盖哪些需求做到心中有数。
测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构都有比较透彻的理解。
测试用例设计一般包括以下几个步骤:
1、测试需求分析
从软件需求文档中,找出待测试软件/模块的需求,通过自己的分析、理解,整理成为测试需求,清楚被测试对象具有哪些功能。
测试需求的特点是:
包含软件需求,具有可测试性。
测试需求应该在软件需求基础上进行归纳、分类或细分,方便测试用例设计。
测试用例中的测试集与测试需求的关系是多对一的关系,即一个或多个测试用例集对应一个测试需求。
2、业务流程分析
软件测试,不单纯是基于功能的黑盒测试,还需要对软件的内部处理逻辑进行测试。
为了不遗漏测试点,需要清楚的了解软件产品的业务流程。
建议在做复杂的测试用例设计前,先画出软件的业务流程。
如果设计文档中已经有业务流程设计,可以从测试角度对现有流程进行补充。
如果无法从设计中得到业务流程,测试工程师应通过阅读设计文档,与开发人员交流,最终画出业务流程图。
业务流程图可以帮助理解软件的处理逻辑和数据流向,从而指导测试用例的设计。
从业务流程上,应得到以下信息:
A、 主流程是什么
B、 条件备选流程是什么
C、 数据流向是什么
D、 关键的判断条件是什么
3、测试用例设计
完成了测试需求分析和软件流程分析后,开始着手设计测试用例。
测试用例设计的类型包括功能测试,边界测试,异常测试,性能测试,压力测试等。
在用例设计中,除了功能测试用例外,应尽量考虑边界、异常、性能的情况,以便发现更多的隐藏问题。
黑盒测试的测试用例设计方法有:
等价类划分、边界值划分、因果图分析和错误猜测,白盒测试的测试用例设计方法有:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖。
在这里主要讨论黑盒测试。
在设计测试用例的时候可以使用软件测试用例设计方法,结合前面的需求分析和软件流程分析进行设计:
功能测试:
测试某个功能是否满足需求的定义,功能是否正确,完备。
适合的技术:
由业务需求和设计说明导出的功能测试、等价类划分
边界测试:
对某个功能的边界情况进行测试。
适合的技术:
边界值划分
异常测试:
对某些功能来说,其边界情况无法简单的了解或某些操作不完全是正确的但又是可能发生的,类似这样的情况需要书写相关的异常测试。
适合的技术:
由业务需求和设计说明导出的特殊业务流程、错误猜测法、边界值分析、内部边界值测试、
性能测试:
检查系统是否满足在需求中所规定达到的性能,性能主要包括了解程序的内外部性能因素。
内部性能因素包括测试环境的配置,系统资源使用状况;外部因素包括响应时间,吞吐量等。
适合的技术:
业务需求和设计说明导出的测试
压力测试:
压力测试又称强度测试,主要是检查系统运行环境在极限情况下软件运行的能力,比如说给一个相当大的负荷或网络流量给应用软件兼容测试:
测试软件产品在不同的平台,不同的工具,相同工具的不同版本下功能的兼容性。
4、测试用例评审
测试用例设计完成后,为了确认测试过程和方法是否正确,是否有遗漏的测试点,需要进行测试用例的评审。
测试用例评审一般是由测试leader安排,参加的人员包括:
测试用例设计者、测试leader、项目经理、开发工程师、其它相关开发测试工程师。
测试用例评审完毕,测试工程师根据评审结果,对测试用例进行修改,并记录修改日志。
5、测试用例更新完善
测试用例编写完成之后需要不断完善,软件产品新增功能或更新需求后,测试用例必须配套修改更新;在测试过程中发现设计测试用例时考虑不周,需要对测试用例进行修改完善;在软件交付使用后客户反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成,也需要对测试用例进行完善。
一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。
软件的版本升级更新,测试用例一般也应随之编制升级更新版本。
测试用例是“活”的,在软件的生命周期中不断更新与完善。
一、测试用例是软件测试的核心
软件测试的重要性是毋庸置疑的。
但如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。
每个软件产品或软件开发项目都需要有一套优秀的测试方案和测试方法。
影响软件测试的因素很多,例如软件本身的复杂程度、开发人员(包括分析、设计、编程和测试的人员)的素质、测试方法和技术的运用等等。
因为有些因素是客观存在的,无法避免。
有些因素则是波动的、不稳定的,例如开发队伍是流动的,有经验的走了,新人不断补充进来;一个具体的人工作也受情绪等影响,等等。
如何保障软件测试质量的稳定?
有了测试用例,无论是谁来测试,参照测试用例实施,都能保障测试的质量。
可以把人为因素的影响减少到最小。
即便最初的测试用例考虑不周全,随着测试的进行和软件版本更新,也将日趋完善。
因此测试用例的设计和编制是软件测试活动中最重要的。
测试用例是测试工作的指导,是软件测试的必须遵守的准则。
更是软件测试质量稳定的根本保障。
二、什么叫测试用例
测试用例(TestCase)目前没有经典的定义。
比较通常的说法是:
指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。
内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
不同类别的软件,测试用例是不同的。
不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。
笔者主要从事企业管理软件的测试。
因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。
测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。
对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。
三、编制测试用例
着重介绍一些编制测试用例的具体做法。
1、测试用例文档
编写测试用例文档应有文档模板,须符合内部的规范要求。
测试用例文档将受制于测试用例管理软件的约束。
软件产品或软件开发项目的测试用例一般以该产品的软件模块或子系统为单位,形成一个测试用例文档,但并不是绝对的。
测试用例文档由简介和测试用例两部分组成。
简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。
测试用例部分逐一列示各测试用例。
每个具体测试用例都将包括下列详细信息:
用例编号、用例名称、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。
以上内容涵盖了测试用例的基本元素:
测试索引,测试环境,测试输入,测试操作,预期结果,评价标准。
2、测试用例的设置
我们早期的测试用例是按功能设置用例。
后来引进了路径分析法,按路径设置用例。
目前演变为按功能、路径混合模式设置用例。
按功能测试是最简捷的,按用例规约遍历测试每一功能。
对于复杂操作的程序模块,其各功能的实施是相互影响、紧密相关、环环相扣的,可以演变出数量繁多的变化。
没有严密的逻辑分析,产生遗漏是在所难免。
路径分析是一个很好的方法,其最大的优点是在于可以避免漏测试。
但路径分析法也有局限性。
在一个非常简单字典维护模块就存在十余条路径。
一个复杂的模块会有几十到上百条路径是不足为奇的。
笔者以为这是路径分析比较合适的使用规模。
若一个子系统有十余个或更多的模块,这些模块相互有关联。
再采用路径分析法,其路径数量成几何级增长,达5位数或更多,就无法使用了。
那么子系统模块间的测试路径或测试用例还是要靠传统方法来解决。
这是按功能、路径混合模式设置用例的由来。
3、设计测试用例
测试用例可以分为基本事件、备选事件和异常事件。
设计基本事件的用例,应该参照用例规约(或设计规格说明书),根据关联的功能、操作按路径分析法设计测试用例。
而对孤立的功能则直接按功能设计测试用例。
基本事件的测试用例应包含所有需要实现的需求功能,覆盖率达100%。
设计备选事件和异常事件的用例,则要复杂和困难得多。
例如,字典的代码是唯一的,不允许重复。
测试需要验证:
字典新增程序中已存在有关字典代码的约束,若出现代码重复必须报错,并且报错文字正确。
往往在设计编码阶段形成的文档对备选事件和异常事件分析描述不够详尽。
而测试本身则要求验证全部非基本事件,并同时尽量发现其中的软件缺陷。
可以采用软件测试常用的基本方法:
等价类划分法、边界值分析法、错误推测法、因果图法、逻辑覆盖法等设计测试用例。
视软件的不同性质采用不同的方法。
如何灵活运用各种基本方法来设计完整的测试用例,并最终实现暴露隐藏的缺陷,全凭测试设计人员的丰富经验和精心设计。
四、测试用例在软件测试中的作用
1、指导测试的实施
测试用例主要适用于集成测试、系统测试和回归测试。
在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。
并对测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。
根据测试用例的测试等级,集成测试应测试那些用例,系统测试和回归测试又该测试那些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。
2、规划测试数据的准备
在我们的实践中测试数据是与测试用例分离的。
按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。
尤其象测试报表之类数据集的正确性,按照测试用例规划准备测试数据是十分必须的。
除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。
3、编写测试脚本的"设计规格说明书"
为提高测试效率,软件测试已大力发展自动测试。
自动测试的中心任务是编写测试脚本。
如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。
4、评估测试结果的度量基准
完成测试实施后需要对测试结果进行评估,并且编制测试报告。
判断软件测试是否完成、衡量测试质量需要一些量化的结果。
例:
测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。
以前统计基准是软件模块或功能点,显得过于粗糙。
采用测试用例作度量基准更加准确、有效。
5、分析缺陷的标准
通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。
漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。
而已有相应测试用例,则反映实施测试或变更处理存在问题。
五、相关问题
1、测试用例的评审
测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。
测试用例在设计编制过程中要组织同级互查。
完成编制后应组织专家评审,需获得通过才可以使用。
评审委员会可由项目负责人、测试、编程、分析设计等有关人员组成,也可邀请客户代表参加。
2、测试用例的修改更新
测试用例在形成文档后也还需要不断完善。
主要来自三方面的缘故:
第一、在测试过程中发现设计测试用例时考虑不周,需要完善;第二、在软件交付使用后反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成;第三、软件自身的新增功能以及软件版本的更新,测试用例也必须配套修改更新。
一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。
软件的版本升级更新,测试用例一般也应随之编制升级更新版本。
3、测试用例的管理软件
运用测试用例还需配备测试用例管理软件。
它的主要功能有三个:
第一、能将测试用例文档的关键内容,如编号、名称等等自动导入管理数据库,形成与测试用例文档完全对应的记录;第二、可供测试实施时及时输入测试情况;第三、最终实现自动生成测试结果文档,包含各测试度量值,测试覆盖表和测试通过或不通过的测试用例清单列表。
有了管理软件,测试人员无论是编写每日的测试工作日志、还是出软件测试报告,都会变得轻而易举。
所谓测试用例,就是你测试软件时所执行的动作或输入的数据,同时还要有期望的反应或输出的数据,我一般是对一个功能点用一个测试用例,一个完整的测试用例包含以下几个部分:
1、测试用例的编号;2、功能描述;3、前提条件;4、特殊规程说明;5、输入/动作;6、期望的输出/响应。
测试用例的编号是给待测试软件的所有测试用例分配一个统一的编号,以便于统计和引用。
功能描述是指对待测试功能点的一个解释说明,以便于执行测试用例人员能更好的了解业务。
前提条件是指执行这个测试用例时需要先做什么前提条件,比如说你要测试一个通知的显示,那么前提就是这条通知已经录入到系统中。
特殊规程说明是指执行这个用例时有没有什么需要注意的特殊操作,比如输入一个学生成绩时,最大值不能超过100等。
输入/动作和期望的输出/响应是一一对应的,而且测试一个功能点是会有多组输入/动作和期望的输出/响应,输入/动作就是测试时所要输入的数据或执行的操作,期望的输出/响应是指输入了这些数据或执行了这些操作后,待测试的功能正确的情况下应该会输出什么或做出什么操作。
以上就是一个测试功能点的测试用例所包含的内容,把待测试软件的所有的功能点都编写出测试用例就构成了一个完整的测试用例了。
但是写出了测试用例和写出好的测试用例之间会有很大的差距的。
那么什么是好的测试用例呢?
我认为一个好的测试用例要注意以下几点:
1、测试覆盖率要尽可能多;2、测试数据具有代表性;3、测试用例要全面、完整。
测试覆盖率要尽可能多,那么什么是测试覆盖率呢?
所谓的测试覆盖率就是指实际测试数和待测试软件的功能总数的比例,覆盖率越高就代表测试的越全面,最好是达到100%,不过实际测试中能达到100%的可能性不大,我们所要做的就是设计测试用例时让覆盖率尽可能的高。
测试数据具有代表性就是指设计测试用例时选择的测试数据要具有代表性。
比如测试一个学生成绩录入功能,其中成绩一栏可以输入的数据有无数个,我们怎么选择呢?
首先把能输入的数据分类,大体分3类,第一类是大于最大值的,第二类是小于等于最大值并且大于等于最小值的,第三类是小于最小值的,然后我们从每类中挑选几个:
最大值+1,最大值,最小值,最小值-1等等。
这种方法就是测试方法中的等价类划分和边界值分析。
关于测试方法,在以后再深入探讨。
测试用例要全面、完整是指设计测试用例是不但要考虑正常情况,还要考虑错误情况,比如说我们不但要描述输入完整的情况,还要描述什么都不输入的情况等。
最后还要考虑测试用例的冗余,不要意味的追求覆盖率和完整性,同时还要考虑测试用例的执行时间,尽量做到不要重复。
还有测试用例写好后还要经常维护、优化,比如需求变更,或者有更好的测试用例等,经常设计、优化,才能写出好的测试用例。
最好的测试用例是发现了以前别人没有发现的错误