1、竞争条件和时序错乱

  竞争条件测试难以设计,好是首先仔细察看状态转换图中的每一个状态,以找出哪些外部影响会中断该状态。考虑到使用数据如果没有准备好,或者在用到时发生了变化,状态会怎样。数条弧线或者直线同时相连的情形如何?

  2、重复、压迫和重负

  另外三个失效性状态测试时重复、压迫和重负。这些测试的目标是那些处理程序员每考虑到,但在极端恶劣条件下可能发生的状态。

  重复测试 是不断执行同样的操作。要想找出一个软件缺陷,可能只需重复几次操作,也可能需要成千上万次尝试。

  进行这种反复测试的主要原因是检查是否存在内存泄漏。如果计算机内存被分配进行某些操作,但是操作完成时没有完全释放,会产生一个常见的软件问题。结果是后程序耗尽了它赖以工作的内存空间。如果以前使用的某个程序在开始启动时工作状态良好,但是随后变得越来越慢,或者经过一段时间表现不稳定,原因可能使内存泄漏缺陷。重复测试能暴露这些问题。

  压迫测试:是使软件在不够理想的条件下运行--内存小、磁盘空间少、cpu速度慢、调制解调器速率低等。观察软件对外部资源的要求和依赖的程度。压迫测试是将支持敬爱能感到低限度,目的在于尽可能的限制软件的必要条件。

  重复测试:与压迫测试相反,压迫测试是尽量限制软件。、,而重复测试是尽量提供条件任其发挥。让软件处理尽可能大的数据文件。如果软件对打印机或者通信端口之类的外设进行操作,把能连的都连上。

  时间也是一种重负测试,

  注意: 重复、压迫和重复测试应联合使用,同时进行,这是找出以其它方式难以发现的严重缺陷的一个可靠的方法。

  对于重复、压迫和重负测试有两个重要事项:

  1) 项目经理和小组程序员可能不完全接受软件测试员这样破坏软件的做法。

  2)无数次打开和关闭程序对于手工操作时不可能的。因此,要进行自动化测试。


  六、其它黑盒测试技术

  余下的黑盒测试技术不像已经描述的数据测试和状态测试那样独立,而是他们的变形。如果对整个程序数据进行了完整的等价划分,创建了详细的状态图,并且开发完成了相关的测试用例,会发现大多数能有用户发现的软件缺陷。

  剩下的是找出缺陷中的漏网之鱼的技术。假如这些软件缺陷是有生命的,应该有自己的思想和行为方式。要找出它们也需要有一点主观,没有实实在在的理由根据,但是如果要找出所有的软件缺陷,必须得有点创造力。

  1)像笨拙的用户那样做

  即无经验的用户或新用户,一个不熟悉软件的人面对程序时,他会做出令人永远想不到的举动。他们会输入程序员无从想象的数据。他们不遵循任何规则,也不做任何假定。

  2)在已经找到的软件缺陷的地方再找找

  原因:1、找到的软件缺陷越多,说明那里的软件缺陷越多。如果发现在不同的特性中找出了大量的边界条件软件缺陷,那么明智的做法是对所有特性着重测试上边界条件。当然无论如何要进行此类测试的,但是还应该投入一些案例来保证这个问题不是普遍存在的。

  2、许多程序员倾向于只修复报告出来的软件缺陷,不多也不少。

  3、 像黑客一样考虑问题

  会找软件的漏洞并利用这些漏洞。作为测试员,需要从另一个角度考虑问题。想想软件里面有哪些有价值的东西,为什么有人要想获得其访问权限,黑客进入的地方有哪些,不要太绅士,黑客不会绅士。