51Testing软件测试论坛
标题:
系统测试用例设计方法
[打印本页]
作者:
dailrui2002
时间:
2008-1-3 10:32
标题:
系统测试用例设计方法
目 录
一、测试用例格式以及写作要点
二、系统测试用例设计方法
1、等价类划分法
2、边界值分析法
3、判定表法
4、因果图法
5、状态迁移图法
6、流程分析法
7、正交试验法
8、错误推测法
测试用例格式以及写作要点
测试用例编号
测试项目
测试标题
重要级别
预置条件
输入
操作步骤
预期输出
以上是一般的测试用例格式,可以根据公司具体要求删除一些或加入其它项。
测试用例编号
测试用例编号是由字母和数字组合而成的,用例的编号应该具有唯一性,易识别性。比如可以采用统一的约定,产品编号—ST—系统测试项名—系统测试子项名—编号。这样看到编号就可以知道是做的什么测试,测试的对象是什么。也方便维护。
测试项目
你现在这个测试用例所测的项目名,可以是测试用例所属的大类,被测需求,被测的模块,或者是被测的单元。例如:计算器加法功能。
测试标题
测试标题是对测试用例的简单描述。用概括的语言描述该测试用例的测试点。每个测试用例的标题不能够重复,因为每个测试用例的测试点是不一样的。例如:手机在没有SIM卡的情况下,拨打119。
重要级别
重要级别分为高中底三等:
高:保证系统基本功能、重要特性、实际使用频率比较高的用例;
中:重要程度介于高和底之间的测试用例;
底:实际使用频率不高、对系统业务功能影响不大的模块或功能的测试用例。
注:一般情况下,重要级别为高的测试用例,一个测试子项里有且尽有一个,大多数都是重要级别为中的测试用例。因为一般我们会进行一个系统测试预测试,如果重要级别为高的太多,则就失去了预测试的实际意义。
预置条件
就是执行当前测试用例的前提条件,如果不满足这些条件,则无法进行测试。
输入
测试用例执行时,需要输入的外部信息。例如某一个文件,数据记录等。
操作步骤
执行当前测试所要经过的操作步骤,需要给出每一步操作的描述,测试人员根据测试用例操作步骤,完成测试用例的执行。
预期输出
当前测试用例的预期输出结果。用来与实际结果比较,如果相同则该测试用例通过,否则该测试用例失败。
等价类划分法
何为等价类,某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不可能发现错误。
等价类分为有效等价类和无效等价类,有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是那些对程序的规格说明不合理的或无意义的输入数据所构成的集合。
划分等价类的方法:下面给出六条确定等价类的原则。
1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
3、在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
根据等价类划分原则,将等价类填如下表。
根据等价类表,然后从划分出的等价类中按以下三个原则设计测试用例:
1、为每一个等价类规定一个唯一的编号。
2、设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
3、设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
举例:
拿PowerPoint的打印功能界面做例子,用等价类方法,划分等价类。
边界值分析法
测试经验丰富的前辈们公司我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对个中边界情况设计测试用例,可以查处更多的错误。
首先来了解一下边界点的定义,边界点分为上点、内点和离点。如图:
结合上面的图示。
上点,就是边界上的点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,那上点就在域范围内,如果该点是开放的,那上点就在域范围外;
内点,就是在域范围内的任意一个点;
离点,就是离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点。
现在大家都知道边界点了,那接下来就讲一下,边界值分析方法的原则:
1、 如果输入(输出)条件规定了取值范围,则应该以该范围的边界值及边界附近的值作为测试数据;
2、 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;
3、 如果程序规格说明书中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据;
4、 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据。
举例:
闭区间[50,100]的上点为50和100,离点是49和101,在域范围内的都是内点;
半开半闭区间(50,100]的上点为50和100,离点是49和101,在域范围内的都是内点;
开区间(50,100)的上点为50和100,离点是49和99,在域范围内的都是内点;
测试用例略。在下面的流程分析法里,我会将等价类、边界值和流程分析法一起举例,一起写测试用例。
判定表法
现在我们先讲判定表法,再讲因果图法,因为判定表法经常和因果图法一起用,先进行因果图分析,再结合判定表,最后完成测试用例。
在多个条件决定多个动作,并且每个条件的取值只有两种情况下,我们就可以采用因果图和判定表方法。
注:条件和动作之间的逻辑关系是明确的,可以直接使用判定表法;如果条件和动作关系不明确,则要先使用因果图法。
判定表通常由四部分组成,如图:
每一个部分之间用双线或粗条线分开,左上部称条件桩,它列出决定一组条件的对象;右上部称条件项,它列出各种可能的条件组合;左下部称动作桩,它列出所有的操作,右下部为动作项,它列出在对应的条件组合下的动作。
表的右部一般有很多列。
举例:
订购单的检查。如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但过期了,则不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
将这段需求进行判定表分析,可以得到如下判定表。
在很多情况下,一个判定表写出来以后,是很复杂的,我们需要对其进行简化。如果表中有两条或多条规则具有相同的动作,并且其条件项之间存在极为相似的关系,我们就可以将其合并。
比如表中,条件:>500、未过期;<=500、未过期。这两个条件项导致的结果是一样的,并且条件项之间很相似,我们就可以将它们合并。结果如下:
这里在引入一个概念,规则,以上判定表里,右部的每一列(条件项和对应的动作项)都是一条规则。以上判定表里每一条规则都可以转化为测试用例。
因果图法
接下来我们讲因果图法。前面说过在多个条件决定多个动作,并且每个条件的取值只有两种情况下,我们就可以采用因果图和判定表方法。
因果图法就是从程序规格说明书的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表,最后为判定表中的每一列设计一个测试用例。
首先我们来了解一下因果图的基本符号,我会在边上加些注解以帮助大家理解。
接着我们讲一下使用因果图法的步骤:
1、根据程序规格说明书描述的语义内容,分析并确定“因”和“果”,将其表示成连接各个原因与各个结果的“因果图”。需要注意的是,由于语法或环境的限制,某些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,需要在因果图上使用若干个约束符号来标明约束条件;
2、将得到的因果图转换成判定表;
3、为判定表中每一列所表示的情况设计一个测试用例。
对于较为复杂的为体,这个方法常常是十分有效的。具体我们来举个例子来讲,可以更好的理解。
举例:
以中国象棋中马的走法为例子,具体说明:
1、如果落点在棋盘外,则不移动棋子;2、如果落点与起点不构成日字型,则不移动棋子;3、如果落点处有自己方棋子,则不移动棋子;4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;5、如果不属于1-4条,且落点处无棋子,则移动棋子;6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子;7如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
作者:
dailrui2002
时间:
2008-1-3 10:32
状态迁移图法
许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等。
构造能导致状态迁移的事件,来测试状态之间的转换。
状态迁移图的步骤:
1、 画出状态迁移图;
2、 列出状态——事件表;
3、 得到状态转换树;
4、 推出测试路径;
5、 根据测试路径编写测试用例。
下面我们结合一个例子来理解。
举例:
手机中MP3播放功能状态-事件表如下,请用状态迁移法设计用例。其中没有选择MP3曲目时不能按任何键,并且当MP3曲目在起点时不能按R键,当MP3曲目在末端时不能按P、F键。
流程分析法
流程分析法是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到。
这里拿一个最简单的流程来做分析。用户登陆操作的流程。这个大家都应该很熟悉的,需求如下(这里只简单举个例子说明用例设计方法,具体需求应该还要详细。)
1、 用户执行程序,弹出登陆对话框;
2、 用户输入用户名,格式要符合如下规范:
a. 2-16个字长,英文或数字;
b. 用户名中不可出现空格符;
c. 可以使用这些字符:“横线-”,“下划线_”,“点.”;
d. 不可以使用“&、%、$”等其它字符。
用户名出错处理:
1)、用户名为空:提示用户:“请输入用户名!”;
2)、用户名错误:提示用户:“用户名错误,请重新输入用户名!”。
3、用户输入密码,格式要符合如下规范:
a. 密码为字符串;
b. 字符串为0~9之间的阿拉伯数字组合,密码长度为6位。
密码出错处理:
1)、密码为空:提示用户:“请输入密码!”;
2)、密码错误:提示用户:“密码错误,请重新输入密码!”。
4、确定登陆,系统验证用户登陆;
5、取消登陆,退出系统。
提取需求信息,得到流程图:
正交试验法
正交试验法,是一种成对测试交互的系统的统计方法。它提供了一种能对所有变量对的组合进行典型覆盖(均匀分布)的方法。可以从大量的试验点中挑出适量的、有代表性的点,利用“正交表”,合理的安排试验的一种科学的试验设计方法。
一些概念:
指标:通常把判断试验结果优劣的标准叫做试验的指标;
因子:所有影响试验指标的条件;
因子的状态:影响试验因子的,叫做因子的状态。
概念不多说了,下面说下正交试验发的步骤,再通过实战,让大家熟悉正交试验法。
错误推测法
错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例方法。
错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的错误。以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.
作者:
fishy
时间:
2008-1-4 09:55
感谢楼主无私奉献
作者:
hmx1211
时间:
2009-2-18 16:38
归纳的不错,谢谢!
作者:
涙の雾雨
时间:
2010-4-22 13:36
标题:
感谢
先谢过,呵呵
作者:
八月
时间:
2010-6-29 16:28
谢了
作者:
楠族开心果
时间:
2010-6-29 16:31
非常经典的帖子~~
作者:
zselny
时间:
2010-7-29 17:17
谢谢
作者:
牛粪
时间:
2010-8-7 15:38
先谢再看
作者:
mousepai163
时间:
2013-1-8 16:25
太感谢了,O(∩_∩)O谢谢
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2