1、软件测试系统测试用例设计方法系统测试用例设计方法 -王永安目 录一、测试用例格式以及写作要点3二、系统测试用例设计方法41、等价类划分法52、边界值分析法63、判定表法74、因果图法95、状态迁移图法156、流程分析法207、正交试验法348、错误推测法41一、 测试用例格式以及写作要点测试用例编号测试项目测试标题重要级别预置条件输入操作步骤预期输出以上是一般的测试用例格式,可以根据公司具体要求删除一些或加入其它项。测试用例编号测试用例编号是由字母和数字组合而成的,用例的编号应该具有唯一性,易识别性。比如可以采用统一的约定,产品编号ST系统测试项名系统测试子项名编号。这样看到编号就可以知道是做
2、的什么测试,测试的对象是什么。也方便维护。测试项目你现在这个测试用例所测的项目名,可以是测试用例所属的大类,被测需求,被测的模块,或者是被测的单元。例如:计算器加法功能。测试标题测试标题是对测试用例的简单描述。用概括的语言描述该测试用例的测试点。每个测试用例的标题不能够重复,因为每个测试用例的测试点是不一样的。例如:手机在没有SIM卡的情况下,拨打119。重要级别重要级别分为高中底三等:高:保证系统基本功能、重要特性、实际使用频率比较高的用例;中:重要程度介于高和底之间的测试用例;底:实际使用频率不高、对系统业务功能影响不大的模块或功能的测试用例。注:一般情况下,重要级别为高的测试用例,一个测
3、试子项里有且尽有一个,大多数都是重要级别为中的测试用例。因为一般我们会进行一个系统测试预测试,如果重要级别为高的太多,则就失去了预测试的实际意义。预置条件就是执行当前测试用例的前提条件,如果不满足这些条件,则无法进行测试。输入测试用例执行时,需要输入的外部信息。例如某一个文件,数据记录等。操作步骤执行当前测试所要经过的操作步骤,需要给出每一步操作的描述,测试人员根据测试用例操作步骤,完成测试用例的执行。预期输出当前测试用例的预期输出结果。用来与实际结果比较,如果相同则该测试用例通过,否则该测试用例失败。二、系统测试用例设计方法1、等价类划分法何为等价类,某个输入域的集合,在这个集合中每个输入条
4、件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不可能发现错误。等价类分为有效等价类和无效等价类,有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是那些对程序的规格说明不合理的或无意义的输入数据所构成的集合。划分等价类的方法:下面给出六条确定等价类的原则。1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。3、在输入条件是一个布尔量的情况下,可确定一个有效等价类。4、在规定了输入
5、数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。根据等价类划分原则,将等价类填入下表。等价类表输入条件有效等价类无效等价类根据等价类表,然后从划分出的等价类中按以下三个原则设计测试用例:1、为每一个等价类规定一个唯一的编号。2、设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有
6、效等价类都被覆盖为止。3、设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。举例:拿PowerPoint的打印功能界面做例子,用等价类方法,划分等价类。根据原则划分等价类,填入等价类表。输入条件有效等价类无效等价类打印机名称可选择的打印机打印到文件TRUE、FALSE打印范围全部、当前幻灯片、幻灯片幻灯片不大于幻灯片总数的自然数集合小于1的整数打印份数1,32767小于1的整数,大于32767的整数逐份打印TRUE、FALSE打印内容幻灯片、讲义、备注页、大纲视图颜色/灰度颜色、灰度、纯黑白每页幻灯片数1、2、3、4、6、9除了1、2、3
7、、4、6、9以外 整数顺序水平、垂直根据纸张调整大小TRUE、FALSE幻灯片加框TRUE、FALSE测试用例略。等价类划分是最常用的方法,通常和边界值分析法一起用,在下面的流程分析法里,我会将等价类、边界值和流程分析法一起举例,一起写测试用例。2、边界值分析法测试经验丰富的前辈们公司我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对个中边界情况设计测试用例,可以查处更多的错误。首先来了解一下边界点的定义,边界点分为上点、内点和离点。如图:闭区间半开半闭区间开区间离点离点离点离点离点离点上点上点上点上点上点上点内点内点内点结合上面的图示。上点,就是边界上的
8、点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,那上点就在域范围内,如果该点是开放的,那上点就在域范围外;内点,就是在域范围内的任意一个点;离点,就是离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点。现在大家都知道边界点了,那接下来就讲一下,边界值分析方法的原则:1、 如果输入(输出)条件规定了取值范围,则应该以该范围的边界值及边界附近的值作为测试数据;2、 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;3、 如果程序规格说明书中提到的输入或输出是一个
9、有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据;4、 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据。举例:闭区间50,100的上点为50和100,离点是49和101,在域范围内的都是内点;半开半闭区间(50,100的上点为50和100,离点是51和101,在域范围内的都是内点;开区间(50,100)的上点为50和100,离点是51和99,在域范围内的都是内点;测试用例略。在下面的流程分析法里,我会将等价类、边界值和流程分析法一起举例,一起写测试用例。 3、判定表法现在我们先讲判定表法,再讲因果图法,因为判定表法经常和因果图法一起用,先
10、进行因果图分析,再结合判定表,最后完成测试用例。在多个条件决定多个动作,并且每个条件的取值只有两种情况下,我们就可以采用因果图和判定表方法。注:条件和动作之间的逻辑关系是明确的,可以直接使用判定表法;如果条件和动作关系不明确,则要先使用因果图法。判定表通常由四部分组成,如图:条件桩动作桩条件项动作项每一个部分之间用双线或粗条线分开,左上部称条件桩,它列出决定一组条件的对象;右上部称条件项,它列出各种可能的条件组合;左下部称动作桩,它列出所有的操作,右下部为动作项,它列出在对应的条件组合下的动作。表的右部一般有很多列。举例:1、主持人对甲、乙、丙三人说:这里有三顶红帽子,两顶白帽子,现在用布蒙上
11、你们的眼睛,给你们每人戴上一顶帽子,然后请你们依次睁开眼睛,能正确说出自己帽子颜色的有奖。戴完帽子后,甲拿下布后看了其他两人的帽子说:“我不知道”。然后,乙揭开布看了其他两人的帽子说:“我也不知道”。轮到丙时,丙没有揭开布就说出了自己帽子的颜色。请问:丙戴的帽子是什么颜色的?他是怎样得出结论的。解:12345678甲RRRRWWWW乙RRWWRRWW丙RWRWRWRW甲判断不知道不知道不知道知道不知道不知道不知道乙判断(甲判断后)不知道知道不知道不知道知道知道丙判断红帽子红帽子红帽子红帽子2、订购单的检查。如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但过期了,则
12、不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。将这段需求进行判定表分析,可以得到如下判定表。金额500500=500500、未过期;500500,状态为已过期重要级别中预置条件无输入501操作步骤1、输入金额:5012、选择已过期3、点击确定预期输出批准单、提货单和通知单都不发出3、测试用例编号ORDER_ST_CHECK_003测试项目订购单的检查测试标题金额 输入用户名密码 进入系统任何测试用例都会采用这条基本测试路径,只是测试结果不同。下面我们来设计测试用例,首先进行等价类的划分:输入条件有效等价类无效等价类用户名2-16个字长,英
13、文或数字或“横线-”、“下划线_”、“点.”;字长为0、1和大于16;空格;“&、%、$”等其它字符;密码字符串为09之间的阿拉伯数字组合,密码长度为6位长度不是6位的09之间的组合;含有不是阿拉伯数字的字符;再进行边界值分析输入内点上点离点用户名Abc、ab-12_34.ABmU15Qq、16ab-12_34ABmU16P、17ab-12_34.ABmU17密码000001、999998000000、99999911111、0000000可以看到,我在进行边界值分析的时候,内点和上点已经覆盖了所有有效等价类。下面根据等价类测试用例设计原则和边界值分析法设计测试用例的原则,进行用例的编写。注:
14、用例设计完后,对照流程图分析是否有遗漏的路径没有覆盖到。如果有,设计用例覆盖这些路径。用例:1、测试用例编号XXXX_ST_XXX_LOGIN_001测试项目LOGIN测试标题输入合法用户名和密码,按确认,内点小重要级别高预置条件系统数据库内存在该用户及密码输入Abc,000001操作步骤1、启动系统;2、输入用户名:Abc;3、输入密码:000001;4、点击确定。预期输出进入系统。2、测试用例编号XXXX_ST_XXX_LOGIN_002测试项目LOGIN测试标题输入合法用户名和密码,按确认,内点大重要级别中预置条件系统数据库内存在该用户及密码输入ab-12_34.ABmU15,99999
15、8操作步骤1、启动系统;2、输入用户名: ab-12_34.ABmU15;3、输入密码:999998;4、点击确定。预期输出进入系统。3、测试用例编号XXXX_ST_XXX_LOGIN_003测试项目LOGIN测试标题输入合法用户名和密码,按确认,上点小重要级别中预置条件系统数据库内存在该用户及密码输入Qq,000000操作步骤1、启动系统;2、输入用户名: Qq;3、输入密码:000000;4、点击确定。预期输出进入系统。4、测试用例编号XXXX_ST_XXX_LOGIN_004测试项目LOGIN测试标题输入合法用户名和密码,按确认,上点大重要级别中预置条件系统数据库内存在该用户及密码输入1
16、6ab-12_34.ABmU16,999999操作步骤1、启动系统;2、输入用户名:16ab-12_34.ABmU16;3、输入密码:999999;4、点击确定。预期输出进入系统。5、测试用例编号XXXX_ST_XXX_LOGIN_005测试项目LOGIN测试标题用户名为空重要级别中预置条件输入“”,000000操作步骤1、启动系统;2、输入用户名: ;3、输入密码:000000;4、点击确定。预期输出提示用户“请输入用户名!”。6、测试用例编号XXXX_ST_XXX_LOGIN_006测试项目LOGIN测试标题用户名字长为1重要级别中预置条件输入P,000000操作步骤1、启动系统;2、输入
17、用户名:P;3、输入密码:000000;4、点击确定。预期输出提示用户:“用户名错误,请重新输入用户名!”7、测试用例编号XXXX_ST_XXX_LOGIN_007测试项目LOGIN测试标题用户名字长为17重要级别中预置条件输入17ab-12_34.ABmU17,000000操作步骤1、启动系统;2、输入用户名:17ab-12_34.ABmU17;3、输入密码:000000;4、点击确定。预期输出提示用户:“用户名错误,请重新输入用户名!”8、测试用例编号XXXX_ST_XXX_LOGIN_008测试项目LOGIN测试标题用户名含有空格重要级别中预置条件输入123 456,000000操作步骤
18、1、启动系统;2、输入用户名:123 456;3、输入密码:000000;4、点击确定。预期输出提示用户:“用户名错误,请重新输入用户名!”9、测试用例编号XXXX_ST_XXX_LOGIN_009测试项目LOGIN测试标题用户名含有“&、%、$”等其它字符重要级别中预置条件输入123$4,000000操作步骤1、启动系统;2、输入用户名:123$4;3、输入密码:000000;4、点击确定。预期输出提示用户:“用户名错误,请重新输入用户名!”10、测试用例编号XXXX_ST_XXX_LOGIN_010测试项目LOGIN测试标题用户名合法,密码不合法,离点小重要级别中预置条件输入Qq,11111操作步骤1、启动系统;2、输入用户名: Qq ;3、输入密码:11111;4、点击确定。预期输出提示用户:“密码错误,请重新输入密码!”11、测试用例编号XXXX_ST_XXX_LOGIN_011测试项目LOGIN测试标题用户名合法,密码不合法,离点大重要级别中预置条件输入Qq,0000000操作步骤1、启动系统;2、输入用户名: Qq ;3、输入密码:0000000;