(1)软件有产品说明书时,对产品说明书实施测试和审查:由于软件产品说明书属于文档,因此对产品说明书的测试是黑盒测试。在实施测试时要弄清所开发软件的客户,并熟悉现有的标准和规范,基于同类软件测试的经验进行测试。除了这些,如果时间和条件允许,应该对产品说明书进行审查,按照相关的标准,看产品说明书是否符合要求。这都是通常的一些做法,当然还可以采用其他软件检测方法。?

  (2)由于当前软件开发有时不是很正规,在没有产品说明书时应使用试探性测试:首先要分步骤地弄清软件特性,记录软件运行情况,详细描述软件功能,然后运用静态和动态黑盒测试两种方式来测试软件,发现软件缺陷,在这种情况下,可以将一些非法、错误和垃圾数据作为输入数据,以检验软件的输出结果。测试时可采用反复测试、边界值测试和不合条件等方法。?

  (3)对有些软件实施状态测试:首先是熟悉软件的逻辑流程,可能的话,建立状态转换图,尽量清晰地描绘软件可能的独立状态,从一种状态到另一种状态所允许的输入和条件,以及进入或退出某种状态时的设置条件和输出结果;如果要测试的软件规模较大、复杂性较高,那么建立状态转换图将是非常艰巨的任务,这时减少要测试的状态及状态的数量,但是必须保证每种状态都必须测试一次,也可以在状态测试时选择那些不常用的分支,因为这是容易被忽略的。在此基础上,测试所有的错误状态及返回值,测试随机状态转换。?

  (4)在前述测试的基础上,对有些测试实施失败状态测试:具体在实施时,指的是几个时间对某一资源竞争使用,比如:?

  ① 两个不同的程序同时保持或打开同一个文档。?

  ② 共享同一台外围设备。?

  ③ 当软件处于读取或者修改状态时按键或者单击鼠标。?

  ④ 同时关闭或者启动同一个软件的多个实例。?

  ⑤ 使用不同的程序同时访问同一个数据库。?

  类似这样的竞争条件还有很多,不一一举例。?

  (5)在实际测试时还常用反复、压迫和重负测试,实施这些测试的目的是考验软件在恶劣条件下是否能正常运行和退出,从而验证软件的性能。反复测试指的是不断地执行同样的操作;压迫测试是使用软件在不够理想的条件下运行,从而观察软件对外部资源的要求和依赖程度,借此来测试软件的性能;重负测试是指尽量提供条件任其发挥,让软件处理尽可能大的数据文件,即大限度地发掘软件的能力,使之不堪重负,大多数情况下,用时间作为参数实施重负测试,看其在重负情况下能否正常运行。实际测试时,常将三种测试方法结合起来使用。?

  (6)测试软件的另一种有效方法是进行正式审查,其中包括以下几个方面:确定问题、制定审查规则、准备工作以及编写报告,进行审查的主要方法是组织熟悉该类软件的人员逐一检查代码,其中重要的软件还需要按能力成熟度(CMM)中的要求进行同行评审。?

  (7)在实际测试中经常采用一种称之为动态白盒测试的方法,其意义是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不需要测试,以及如何开展测试。其中不仅是查看代码,还包括直接测试和控制软件。包括以下几个部分:?

  ① 直接测试底层功能、过程、子程序和库。?

  ② 根据软件运行的实际情况不断地调整测试用例。?

  ③ 对软件中的部分变量和状态信息进行访问,确定测试与预期结果是否相符,并强制软件以正常测试难以实现的方式运行。在具体实施时应分阶段地进行测试,即遵循单元测试、集成测试、配置项测试和系统测试的步骤。目前,灰盒测试逐渐为大家认同,灰盒测试综合了白盒测试和黑盒测试的优点,模糊了两者的界限,在做法上仍然把软件当成黑盒来测试,但是通过简单地查看(不像白盒那样进行完整地查看)软件内部工作机制作为补充。现在的网页制作很适合灰盒测试。?

  3、结束语?

  软件测试的目的不是为了仅仅找出错误,而是通过它发现错误、分析错误,找到错误的分布特征和规律,从而帮助项目管理人员发现当前所采用的软件开发过程的缺陷,以便改进;同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。即使测试没有发现任何错误,也是十分有价值的,因为完整的测试不仅可以给软件质量进行一个正确的评价,而且是提高软件质量的重要方法之一。