软件质量与 Java 测试回顾
1. 存储管理故障与形式验证
存储管理故障可能包括未分配的指针、指针运算等。在静态分析和动态测试之间,有一种特殊的软件评估方式,即形式验证。它能检查系统是否按形式规范运行,将软件视为数学实体,结合不同的静态和动态评估,用逻辑运算证明其正确性。不过,由于可扩展性问题,形式方法目前未广泛应用,多在关键内核系统等较小项目中使用,因为随着系统规模增大,开发形式规范和验证的工作量会过度增加。
2. 软件测试概述
软件测试是对程序在有限测试用例集上的行为进行动态评估,这些测试用例从通常无限的执行域中适当选取,并与预期行为进行对比。其关键概念如下:
- 动态 :执行被测系统(SUT)时使用特定输入值,以发现其行为中的故障。这要求 SUT 不仅设计和代码正确,其运行环境(如库、操作系统和网络支持等)也需正确。
- 有限 :对于大多数实际程序,进行详尽测试既不可能也不实际。因为每个操作有大量允许输入,还有更多无效或意外输入,操作的可能序列通常也是无限的。测试人员需选择一定数量的测试用例,以便在可用时间内完成测试。
- 选择 :由于可能的测试用例集庞大或无限,而我们只能运行其中一小部分,所以测试的关键挑战是如何选择最有可能暴露系统故障的测试用例。
- 预期 :每次测试执行后,必须判断系统观察到的行为是否为故障。
软件测试是一个广泛的术语,涵盖多种不同概念,目前没有通用的分类方法。为清晰起见,可从三个维度对不同形式的测试进行分类,即测试级别(单元测试、集成测