b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一
些常用字符对应的ASCII码值。 字符
ASCII码值 字符
0
A a Z
ASCII码值 65 97 90
96
空 (null) 斜杠 ( / ) 0
冒号 ( : ) @ 实例
现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:
①标题:这一组只有一个记录,其内容为输出成绩报告的名字。
②试卷各题标准答案记录:每个记录均在第80个字符处标以数字\。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3??个记录相应为第51至第100,第101至第150,?题的答案。
③每个学生的答卷描述:该组中每个记录的第80个字符均为数字\。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3??纪录分别给出他的第51至第100,第101至第150??题的解答。然后是学生乙的答卷记录。 ④学生人数不超过200,试题数不超过999。 ⑤程序的输出有4个报告:
a)按学号排列的成绩单,列出每个学生的成绩、名次。 b)按学生成绩排序的成绩单。 c)平均分数及标准偏差的报告。
d)试题分析报告。按试题号排序,列出各题学生答对的百分比。 解答:分别考虑输入条件和输出条件,以及边界条件。 给出下表所示的输入条件及相应的测试用例。
空格 (space) 32
47
z 58 48 64
122
单引号 ( ‘ )
输出条件及相应的测试用例表。
用例设计之错误推测
定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
用例设计之判定表/因果图
步骤:
1.分析程序规格说明的描述中,哪些是原因(c),哪些是结果(e)。
2.分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的因果图,就是如第一个图所示的因与果基本关系
3.在因果图上使用若干个特殊的符号标明特定的约束条件,就是第二个图表示的各种原因之间的如互斥/关联等等的约束关系的图表表述
4.把因果图转换成判定表,就是将各种原因全部排列组合(原因数N,所有排列组合将有2的N次方,然后根据原因的约束关系,去除无效的原因(无效原因不用考虑结果)) 5.把判定表中每一列表示的情况写成测试用例
用例设计之路径覆盖
熟悉测试理论的人都知道,路径覆盖是白盒测试中一种很重要的方法,广泛应用于单元测试。
那么基于路径覆盖的分析方法是不是只能应用于单元测试呢,能不能将其推而广之呢。一般而言,在单元测试中,路径就是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来设计测试用例。采用路径分析的方法设计测试用例有两点好处:一是降低了测试用例设计的难度,只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验;二是在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍。下面就具体的介绍一下如何用路径分析的方法编写测试用例。
首先是将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,这样既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。完成所有流程的图表化后就完成了所有路径的设定。
找出了所有的路径,下面的工作就是给每条路径设定优先级,这样在测试时就可以先测优先级高的,再测优先级低的,在时间紧迫的情况下甚至可以考虑忽略一些低优先级的路径。优先级根据两个原则来选取:一是路径使用的频率,使用越频繁的优先级越高;二是路径的重要程度,如果失败对系统影响越大的优先级越高。将根据两个原则所分别得到的优先级相加就得到了整个路径的优先级。根据优先级的排序就可以更有针对性的进行测试。
为每条路径设定好优先级后,接下来的工作就是为每条路径选取测试数据,构造测试用例。一条路径可以对应多个测试用例,在选取测试数据时,可以充分利用边界值选取等方法,通过表格将各种测试数据的输入输出对应起来,这样就完成了测试用例的设计。
对于测试人员而言,测试用例的设计是一件非常困难的工作,而同时测试用例的设计好坏又直接关系到整个系统的设计质量。本文介绍了一种更理论化的设计方法来尽量简化这种工作,将一般应用于单元测试的路径分析方法推广到集成测试、系统测试等后续测试过程中,希望能给大家一点启示。
用例设计之功能图
功能图方法是一种黑盒、白盒混合用例设计方法,是功能图FD形式化地表示程序的功能说明,并机器地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成。 状态迁移图用于表示输入数据序列以及相应的输出数据。在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。
逻辑功能模型用于表示在状态输入条件和输出条件之间的对应关系。逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。测试用例则由测试中的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成。
(1)功能图:功能图由状态迁移图和布尔函数组成。状态迁移图用状态和迁移来描述。一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变,同时要依靠判定表或是因果图表示的逻辑功能。例如,一个简化的自动出纳ATM机的功能图。
(2)测试用例生成方法:从功能图生成测试用例,得到的测试用例数是可以接受的。问题的关键是如何从状态迁移图中选取测试用例。若用节点代替状态,用弧线代替迁移,则状态迁移图就可转化成一个程序的控制流程图形式。问题就转化为程序的路径测试问题了。
(3)测试用例生成规则:为了把状态迁移的测试用例与逻辑模型的测试用例相组合起来,从功能图生成生成实用的测试用例,需定义下面的规则。在一个结构化的迁移(SST)中,定义三种形式的循环:顺序、选择和重复。但分辨一个状态迁移中的所有循环是有困难的。