3)次边界条件

  普通的边界条件是容易找到的。它们在产品说明书中有定义,或者在使用软件的过程中明显。而有些边界在软件内部,终用户几乎看不到,但是软件测试员仍有必要进行检查。这样的边界条件或者内部边界条件。

  寻找这样的边界不要求软件测试员成为程序员或者具有阅读源代码的能力,但是确实要求大体了解软件的工作方式。

  4)非法、错误、不正确和垃圾数据

  数据测试的后一种类型是垃圾数据。这是失效性测试的对象。经过边界测试、次边界测试和默认值测试等通过性测试证实软件能够工作之后,该进行垃圾数据测试了。

  非法、错误、不正确和垃圾数据测试时很有意思的。如果软件要求输入数字,输入字母。如果软件只接受正数,输入负数。如果软件对日期敏感,看它在公元3000年是否还能正常工作。假装有“肥胖的手指”,同时按下多个键。

  此类测试没有实际的规则,只是设法破坏软件。要发挥创造力,要会走偏门。在此工作中寻找乐趣吧。

  五、状态测试

  软件测试的另一方面是通过不同的状态验证的程序的逻辑流程。软件状态是指软件当前所处的条件或者模式。

  注意: 软件测试员必须测试程序的状态及其转换

  1)测试软件的逻辑流程

  测试软件的状态和逻辑流程有同样的问题。访问所有状态通常是可以实现的。困难在于除了极其简单的程序之外,基本上不可能走遍所有分支,达到所有状态。对于软件测试,解决方法是运用等价划分技术选择状态和分支。因为选择不做完全测试,所以要承担一定的风险,但是通过合理选择减少风险。

  2)建立状态转换图

  状态转意图应该表示出以下项目:

  1、软件可能进入的每一种独立状态。

  2、从一种状态转入另一种状态所需的输入和条件。

  3、进入或者退出某种状态时的设置条件及输出结果。

  提示: 因为正在进行黑盒测试,所以不必了解代码中设置的底层变量。从软件用户的角度建立状态图即可。

  3)减少要测试的状态及转换的数量

  正如对数据进行等价划分一样,需要将大量的可能性减少到可以操作的测试用例集合。 有以下5种实现方法:

  1、每种状态至少访问一次。如何到达的没关系,但是每一种状态必须测试。

  2、测试看起来是常见和普通的状态转换。尽管听起来很主观,但是其根据是进行产品说明书的静态黑盒子分析时收集到的信息。某些用户情况很可能比其它更常见。

  3、测试状态之间不常用的分支。这些分支时容易被产品设计者和程序员忽视的。软件测试员也许是第一个测试它们的人。

  4、测试所有错误状态及其返回值。出错条件通常难以建立。程序员常常编写代码处理某些错误,但不会测试自己的代码。错误没有得到正确处理、错误提示信息不正确、修复错误时未正确恢复软件的功能情况通常会发生。

  5、测试随机状态转换。如果打印了状态图,可以在上面任意作各种标记。

  4)怎样进行具体测试

  确定要测试的状态极其转换之后,可以定义测试用例了。

  测试状态极其转换包括检查所有的状态变量--与进入和退出状态相关的静态条件、信息、值、功能等。

  5)失败状态测试

  以上探讨的状态测试都属于通过性测试,测试包括审查软件、描绘状态、尝试各种合法可能性、确认状态及其转换正常。和数据测试一样,相反地做法是找到使测试软件失败的案例。