软件测试的方法有很多种, 其中黑箱测试方法被使用最多, 主要的原因是容易上手, 进入门坎不高. 所以很多测试人员会使用这种方法. 可是很多人对于何时该使用却不是很清楚, 因此让我们来做个简单的比较吧
1. ECT (Equivalence Class Testing)
a. 说明: 将受测软件的输入数据, 切成好几个分割(partitions), 对于每个分割, 将会有测试个案去涵盖它
b. 适用时机
比较小的功能, 或是单一 API. 或是画面某个 input control
c. partition 的选择, 是决定你测得好不好的重要关键
d. ECT and BVT 这两种方法最多人使用, 可是不见得是最系统化的方法来开个案.
2. BVT (Boundary Values Testing)
a. 说明: 因为大部分的错误都发生在极值, 所以 BVT 的测试是着重于找出代表性的边界值, 来验证系统的正确性
b. 适用时机
比较小的功能, 或是单一 API. 或是画面某个 input control
c. 这个方法最容易开出测试个案, 因为只要知道输入的值域范围, 马上就可以列出测试个案
3. UCT (User Case Testing)
a. 说明: Use cases 是一种从使用者角度, 来描述系统行为的一种方法. 它由一连串由系统执行的行为所组成, 这些行为可能会对用户产生一些价值. 所以 UCT 是测试 use case 中所有 scenario 的组合.
b. 适用时机
使用者在进行验收测试.
c. 开出来的测试个案对使用者最有意义
4. Pairwise Testing (PT)
a. 说明: 当你有很多测试环境的组合, 例如 3 个 browser, 5 个 OS, 4 个数据库, 你将会有很多环境组合要测试. PT 会利用每两两组合的方式, 而不是去测试所有的组合, 来降低索要测试的组合量
b. 适用时机
要降低测试的组合可以使用. 不过建议自己先列出最重要, 或是风险最高的组合. 之后再利用 PT 来补不足的之处.
5. STD (State Transition Testing)
a. 说明: 利用一些涵盖条件(涵盖所有 state, event 或是 transition), 展开 state transition diagram 的 scenario, 让我们可以最小集合, 测试大部份的状况
b. 适用时机
设计时间时用来验证是否所有 event 都考虑周密, 或者要对模块做自动化测试适合使用
6. DTT (Decision Table Testing)
a. 说明: 列出程序所思考的逻辑条件, 排列出所有可能情况, 并且确认其所产生的输出或是对应的系统行为是否正确
b. 适用时机
适合复杂的功能, 或者是比较 high level 的功能
c. 开出来的测试个案对使用者还算有意义, 但是对于开发团队, 可以用来厘清需求的范围和正确性
d. 通常在列逻辑条件时, 可以搭配 ECT 来使用, 让你的条件更加丰富.