软件测试之读书笔记
作者:网络转载 发布时间:[ 2013/7/26 15:41:03 ] 推荐标签:
2. 次边界条件测试
上面所讲的是普通的边界条件,在产品说明书中有定义,或者在软件的过程中确定。但有些边界在软件内部,终用户几乎看不到,但是软件测试仍有必要检查,这样的边界条件成为次边界条件或者内部边界条件。寻找这样的边界条件,不要求软件测试员成为程序员或者具有阅读源代码的能力,但是确实要求大体了解软件的工作方式。2的乘方和ASCII表是这样的两个例子: 2的乘方
术语
范围或值
位bit
0或1
双位doublebit
0~15
字节Byte
0~255
字word
0~65,535或者0~4,294,967,295
千K
1,024
兆M
1,048,576
亿
1,073,741,824
万亿
1,099,511,627,776
计算机和软件的基础是二进制数。因此二的乘方是作为边界条件的重要数据。如:在通讯软件中,带宽或者传输信息的能力总是受限制,因此软件工程师会尽一切努力在通讯字符串中压缩更多数据。其中一个方法是把信息压缩到尽可能小的单元中,发送这些小单元中常用的信息,在必要时再扩展为大一些的单元。假设某种通讯协议支持256条命令。软件将发送编码为一个双位数据的常用的15条命令;如果用到第16到256之间的命令,软件转而发送编码为更长字节的命令。这样,软件会根据双位/字节边界执行专门的计算和不同的操作。
在建立等价区间的时候,要考虑是否需要包含2的乘方边界条件。例如:软件接受1~1000范围内的数字,那么合法区间除了1和1000,也许还有2和999之外,还应该有临近2的乘方次边界:14,15,16以及254,255和256。
ASCII表
ASCII码表并不是结构良好的连续表。数字0~9对应48~57;斜杠字符(/)在0的前面,冒号(:)在9的后面;大写字母A~Z对应65~90;小写字母对应97~122。这些情况都代表次边界条件。
如果测试进行文本输入或文本转换的软件,在定义数据区间包含哪些值时,参考一下ASCII表是相当明智的。例如:测试的文本框只接受用户输入字符A~Z和a~z,应该在非法区间中包含ASCII表中这些字符前后的值——@,',[,{。 3. 默认值测试(默认、空白、空值、零值和无)
好的软件会处理这种情况,常用的方法:一是将输入内容默认为合法边界内的小值,或者合法区间内某个合理值;二是返回错误提示信息。
这些值在软件中通常需要进行特殊处理。因此应当建立单独的等价区间。在这种默认下,如果用户输入0或-1作为非法值,可以执行不同的软件处理过程。
4. 破坏测试(非法、错误、不正确和垃圾数据)
数据测试的这一类型是失败测试的对象。这类测试没有实际规则,只是设法破坏软件。不按软件的要求行事,发挥创造力吧!
状态测试
状态测试是通过不同的状态验证程序的逻辑流程。软件测试员必须测试软件的状态及其转换。软件状态是指软件当前所处的情况或者模式。软件通过代码进入某一个流程分支,触发一些数据位,设置某些变量,读取某些变量,从而转入一个新的状态。
同数据测试一样,状态测试运用等价分配技术选择状态和分支。因为选择不完全测试,所以要承担一定的风险,但是通过合理选择减少危险。
1. 建立状态转移图
使用:方框和箭头;圆圈(泡泡)和箭头。
应包含的项目:
- 软件可能进入的每一种独立状态。
如果不能断定是否独立,先认为是;以后一旦发现不是,随时剔除。
- 从一种状态转入另一种状态所需的输入和条件。
状态变化和存在的原因,是我们要寻找的对象。
- 进入或退出某种状态时的设置条件及输出结果。
包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等等。
由于是黑盒测试,因而只需从用户的角度建立状态图即可。
2. 减少要测试的状态及转换的数量
测试每一种路线的组合,走遍所有分支是不可能的事情。大量的可能性也需要减少到可以操作的测试案例集合。方法有以下5种:
- 每种状态至少访问一次。
无论用什么方法,每种状态都必须测试。
- 测试看起来常见普遍的状态转换
- 测试状态之间不常用的分支。
这些分支是容易被产品设计者和程序员忽视的。
- 测试所有错误状态机器返回值。
错误是否得到正确的处理、错误提示信息是否正确、修复错误时是否正确恢复软件等
- 测试随机状态转换。
3. 进行具体的测试——定义测试案例
测试状态及其转换包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等等。如:窗口外观、窗口尺寸定义(固定/上次使用时的尺寸)、显示的菜单、默认设定值、文档的名称等。状态无论是否可见,都必须进行状态确定。 状态变量也许不可见,但是很重要,一个常见的例子时文档涂改标志(以此判断退出时是否询问保存)。

sales@spasvo.com