@<font color="red”> 本文为"software testing"一书的读书笔记 @</font>

动态黑盒测试

动态,因为运行程序来测试。黑盒,因为看不到代码。还有一个名字:behavioral testing.

test case,测试用例,是你在测试软件的时候定义的特定输入。一般根据产品说明 书来制定测试用例。

test-to-pass and test-to-fail

有2种方法来测试软件

  1. 测试它通过
  2. 测试它不通过

就像测试一辆车一样,先要测试一下轮胎大小合不合适,刹车有没有问题等,再开足马 力上路,看有没有问题。前者是测试它通过,后者是测试它不通过。如果不先测试它通 过,则一上路你就会死掉。所以: @<font color="red”> 测试软件,一定要先测试它通过,always run the test-to-pass cases first. @</font>

等价划分(equivalence partitioning)

把很多测试用例划分成很多等价的集合,每个集合里面的测试用例测试的是相同的内容, 反映出来的是相同的bug。也叫equivalence classing。

数据测试(data testing)

把一个软件分成两个部分:数据和程序。 数据包括键盘输入,鼠标点击,磁盘文件,终端输出等。

边界情况

如果一个程序在边界情况都正确,则它在正常情况下也基本正确。 在测试边界情况的时候,一般制定2个等价划分,一个测试在数据范围内,目的是让它 通过,一个在数据范围外,目的是让它不通过。 比如:如果一个程序的作用是把一个文件保存到磁盘上,则第一个等价划分是

{保存一个非常小的文件,保存一个非常大的文件}

第二个等价划分是:

{保存一个空文件,保存一个超出磁盘空间的文件}

子边界情况

这种情况一般是不会被明显看出来的,或者是领域的专业边界问题,比如2的多少 次幂这种边界问题,一般只有程序员知道,软件测试师可能不知道。 要给default, empty, blank, null, zero, none划为同一个等价划分。 要给invalid, wrong, incorrect, garbage划分为同一个等价划分,因为 当你的软件出名的时候,就会有很多人不会正确地使用它。

状态测试

前面讲的是测试数据,现在是测试程序。 @<font color="red”> 一个软件测试师一定要测试软件的状态和它们之间的转换 @</font>

测试软件的逻辑

我们需要画一个转换图,一般情况下,这个图在产品说明书中可能会有,如果没有, 则需要软件测试师来画,可以像程序流程图一样的东西,也可以像编译原理里面的 有穷状态机的状态图一样的东西。 减少测试状态的个数的方法:

  • 至少遍历一次每个状态。
  • 测试那些看起来经常要经过的状态。
  • 测试状态之间的最小公共路径。
  • 测试所有的错误状态。
  • 测试随机状态转换。

测试不通过的状态

  1. 竞争条件:比如使用同一台打印机,通信端口或者其它外设;使用不同的程序访问同一

个数据库。

  1. 重复:比如重复提交表单,分配内存不释放导致的内存泄露
  2. 压力测试:在低内存,低磁盘,低CPU等情况下测试,目的就是要饿死那个软件
  3. 加载测试:和压力测试相反,比如打开一个很大的很大的文件,同时进行成千上万的

连接

其它的黑盒测试技术

  • 把自己变成傻瓜用户
  • 像骇客一样思考
  • 相信自己的直觉

@<font color="red”> experience is the name everyone gives to their mistakes. –Oscar Wilde @</font>