4.测试的价值主要在于支撑代码改变以后仍能捕获 bug的能力。 5如果我们一点也不了解支撑代码,无法知道测试 是否能捕获bug?如何估计测试是否有助于我们 捕获bug 6可以认为与被测试的代码进行交互的其他代码大 多数是支撑代码,支撑代码的变化也会产生自动 测试所能捕获的bug。 注意:高价值的测试不可能是特征驱动测试而是任 务驱动测试。 分析被测试代码的结构
4.测试的价值主要在于支撑代码改变以后仍能捕获 bug的能力。 5.如果我们一点也不了解支撑代码,无法知道测试 是否能捕获bug?如何估计测试是否有助于我们 捕获bug? 6.可以认为与被测试的代码进行交互的其他代码大 多数是支撑代码,支撑代码的变化也会产生自动 测试所能捕获的bug。 注意:高价值的测试不可能是特征驱动测试而是任 务驱动测试。 一、分析被测试代码的结构
例子:被测试的是一段处理从银行账户里提款的代 码。(例子详见教材) 把被测试的代码分成两部分: ①功能代码( (feature code),它直接实现被测试代 码所完成的功能。测试会专门对其进行调用。功 能代码( support code)可以完成用户所进行的操 作(通过使用用户界面的关联代码)。 ②支撑代码( support code),它起到支持功能代码 ( support code)的作用。测试代码会对其进行调用, 但并没有针对这些代码的特殊测试
例子:被测试的是一段处理从银行账户里提款的代 码。 (例子详见教材) 把被测试的代码分成两部分: ①功能代码(feature code),它直接实现被测试代 码所完成的功能。测试会专门对其进行调用。功 能代码(support code)可以完成用户所进行的操 作(通过使用用户界面的关联代码)。 ②支撑代码(support code),它起到支持功能代码 (support code)的作用。测试代码会对其进行调用, 但并没有针对这些代码的特殊测试
图7-2功能代码和支撑代码示意图 在这里,支撑代码位于水平线以下。功能代码位于 水平线以上,共有五种不同的功能,我们只针对其中 的两个功能进行测试
图7-2 功能代码和支撑代码示意图 在这里,支撑代码位于水平线以下。功能代码位于 水平线以上,共有五种不同的功能,我们只针对其中 的两个功能进行测试
被测试代码的变化所带来的影响。 主要考虑这样一些问题 1.就给定的结构而言,代码的变化将会产生什么样 的影响? 2.什么样的变化具有测试价值? 假设一些功能代码发生了变化,如图7-3中灰色 图形所示: 这种变化极有可能会导致调用功能代码的测试中 止。因此,如果希望使用自动化测试的方法在发 生变化的功能代码( feature code)中找到bug, 就必须终止原有测试。如果测试的成本很高,这 样做是很不经济的
二、被测试代码的变化所带来的影响。 主要考虑这样一些问题: 1.就给定的结构而言,代码的变化将会产生什么样 的影响? 2.什么样的变化具有测试价值? 假设一些功能代码发生了变化,如图7-3中灰色 图形所示: 这种变化极有可能会导致调用功能代码的测试中 止。因此,如果希望使用自动化测试的方法在发 生变化的功能代码(feature code)中找到bug, 就必须终止原有测试。如果测试的成本很高,这 样做是很不经济的
为了使原有的测试行为仍然能够保留,通常采用 的做法是更改支撑代码( support code)以便 能够支持其他功能代码的变动。请看图7-4: 图 4
为了使原有的测试行为仍然能够保留,通常采用 的做法是更改支撑代码(support code)以便 能够支持其他功能代码的变动。请看图7-4: 图 7- 3 图 7- 4