无论是要理解测试,还是做好软件测试,都要抓住这7个核心问题:
1. 测试选择标准与测试充分性 (终止原则)
测试选择标准是选择测试集或确定?个测试集是否满足指定目标的方法。测试充分性标准可以用来决定何时测试充分或者是否完成。
2. 测试有效性与测试目标
通过一系列程序的执行对测试的效率进行分析。对将要执行的测试用例的选择因其目标而异, 即测试集的效率评价基于具体想要实现的目标。
3. 以寻找缺陷为目标的测试
在以寻找缺陷为目标的测试活动中, 是否能够导致系统失效,这是测试是否成功的标准。这与测试软件是否满足设计规约或其它属性有很大的不同, 后者的成功取决于软件在现实的测试用例和测试环境中不出现失效。
4. Oracle问题
Oracle是决定在给定的测试条件下程序运?是否正确的判断依据,以 相应地给出测试“通过”或“失效”的裁决。有许多不同种类的Oracle, 如明确的需求规约、行为模型以及代码注释。机器Oracle的自动化较为困难和昂贵。
5. 理论和实际的测试限制
测试理论反对给一系列成功的测试赋予不正当的信任。不幸的是, 大多数建立的理论是消极的, 即它们将测试难以达到的功能确立为可以达到功能的对立面。一个关于此的名言为 Dijkstra所说的“程序的测试可以表明bug的存在, 却永远无法确定bug彻底消失”。最显而易见的原因是完整的测试在现实的软件中是不可能的, 正因为如此, 测试必须由?险驱动并被视为一种风险管理策略。
6. 不可行路径的问题
不可行路径即为不可以由输?数据执行的控制流路径。这是基于路径测试的一个显著问题, 在由测试输?实行控制流路径的自动衍生中表现尤为明 显。
7. 可测性
“软件可测性”有两个相关但不同的含义: 一方面,它指满足一个给定测试,覆盖标准的难易程度;另一方面表示,当一个软件存在缺陷时,一个测试集可以暴露出缺陷的可能性。这两个含义都很重要。
作者:中科天齐软件安全中心