单元测试是对软件最小的可测试元素(单元)实施的,并涉及测试内部结构(例如逻辑和数据流)以及该单元的功能和可以观察的行为。对专注于单元的内部结构的测试进行设计和实施依赖于对该单元实施的了解(白匣方法)。为核实单元的可观测行为和功能而进行的测试设计和实施并不依赖于对实施情况的了解,因而被称为黑匣方法。
为了成功和全面地对单元进行测试,需要使用这两种方法设计和实施不同类型的测试(请参阅技术:测试类型)。
关于从单元测试中生成测试用例的其他信息,另请参阅技术:测试用例。
应使用白匣测试方法验证单元的内部结构。从理论上说,您应该测试通过该代码的每个可能路径,但这仅在非常简单的单元的情况下是可能的。至少,您应试验每个决策到决策路径(DD
路径)至少一次,因为这样您就至少执行了一次所有语句。决策一般为 if 语句,DD 路径是指两个决策之间的路径。
要获取这个级别的测试覆盖,建议您选择的测试数据能使每个决策都以每种可能的方式求值。
使用代码覆盖工具确定白匣测试未曾执行的代码。可靠性测试应与白匣测试同时进行。
关于其他信息,请参阅技术:测试用例。
黑匣测试的目的是在无需了解单元如何实施其功能和行为的情况下验证单元的指定功能和可观察行为。黑匣测试着重并依赖于单元的输入和输出。
基于黑盒方法得出单元测试利用了该单元操作的输入和输出实参,和/或求值的输出状态。例如,该操作可能包含一个算法(需要两个值作为输入并返回第三个值作为输出),或发起对对象或组件状态的更改,例如添加或删除数据库记录。它们都必须完整测试。
要测试一个操作,您应得出足够的测试用例以验证以下各项:
-
对于每个用作输入的有效值,该操作都返回一个相应的值
-
对于每个用作输入的无效值,该操作都返回一个相应的值
-
对于每个有效的输入状态,都会出现一个相应的输出状态
-
对于每个无效的输入状态,都会出现一个相应的输出状态
使用代码覆盖工具确定白匣测试未曾执行的代码。可靠性测试应与黑盒测试同时进行。
关于其他信息,请参阅技术:测试用例。
|