黑盒测试(二)
本文接黑盒测试(一)。
1.3 黑盒测试的常用技术
功能测试意味着测试数据的选择和测试结果的解释是以软件的功能属性为基础的。黑盒测试不应当由程序的作者来执行,因为他知道太多的程序内部知识。在新的测试方法中,软件系统在内部白盒测试完成后由一个第三方来执行黑盒测试。
尽管黑盒测试是围绕着用户需求文档进行的,但是黑盒测试不一定必须要用户来参与测试。在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试,容量测试,安全性测试,负载测试,恢复性测试,标杆测试,稳定性测试,可靠性测试等。此外,有两个类型的测试必须要有用户参与,它们是外场测试和实验室测试。
1.3.1 没有用户参与的黑盒测试
有不同途径的功能测试方法。一种是顺序测试每个程序特性或功能。
另一种途径是一个模块一个模块的测试,即每个功能在其最先调用的地方被测试。
容量测试的目的是检测软件在处理海量数据时的局限性。容量测试能发现系统效率方面的问题,例如,不正确的缓冲区规模,消耗太多内存空间等。
负载测试检测系统在一个很短时间内处理一个巨大的数据量或执行许多功能调用上的能力。例如检测一个网站在某个时间段内接受100万用户的访问。
恢复性测试主要保证系统在崩溃后能够恢复外部数据的能力。系统能够完全恢复还是部分恢复这些数据?尤其对于需要高可靠性的系统。
标杆测试包含程序效率的测试。一段程序的有效性很大程度上依赖于硬件环境,因此标杆测试总是考虑软件和硬件的组合。然而,对于大部分软件工程师,标杆测试关注特定操作的量化数据。有些也考虑用户测试,比较不同软件系统作为标杆测试的有效性。
有关这些测试的详细内容将后面有详细描述。
1.3.2 有用户介入的黑盒测试
对于包含用户的测试,在软件工程(SE)文献中方法性的考虑是很少的。
比较实际的测试报告是大致的在外场测试(类似Beta测试)和实验室测试(类似Alpha)之间的区别。
在外场测试中,观察用户在他们正常的工作地点使用软件的情况。除了一般的与可用性相关方面的特点,外场测试对评价软件系统的可交互性特别有用,例如系统工作的技术综合性如何等等。此外外场测试是阐明系统到已有过程中的综合性能的仅有实际手段(即系统与实际环境的结合能力)。尤其在NLP环境中,这个问题通常被低估。在实现一个翻译存储器的综合性问题的一个典型的例子是一个大的汽车制造商的语言服务,在这里主要的实现问题不是技术环境,而是实际上许多客户仍旧提交印刷件的订货单,这样原始文本和目标文本都无法被适当的组织和存储,最终导致单个的翻译器根本无法激起人们工作习惯的改变。
实验室测试一般用来评价系统的可用性方面的问题。由于实验室测试的高额成本,该测试一般只有在大型的软件机构才被进行,如IBM、Microsoft等。由于实验室测试给测试人员提供了许多技术可能性,因此其数据收集和分析比外场测试要容易的多。
1.4 黑盒测试的优缺点
优点:
-
- 对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率更高
- 测试人员不需要了解实现的细节,包括特定的编程语言
- 测试人员和编码人员是彼此独立的
- 从用户的视角进行测试,很容易被大家理解和接受
- 有助于暴露任何规格不一致或有歧义的问题
- 测试用例可以在规格完成之后马上进行
缺点:
-
- 只有一小部分可能的输入被测试到,需要测试每个可能的输入流几乎是不可能的
- 没有清晰的和简明的规格,测试用例是很难设计的
- 如果测试人员不被告知开发人员已经执行的用例,在测试数据上会存在不必要的重复
- 会有很多程序路径没有被测试到
- 不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)