单元测试像房屋建筑的监理员,他监察房屋的各个内部系统,如地基、构架、供电系统和管道设备等。房屋每部分工作都安全、正常。 单元测试是从开发者的角度来编写的。它们确保类的每个特定方法成功执行一系列特定的任务。每一个测试都要保证对于给定的一个已知的输入应该得到所期望的输出。

功能测试像房主,他假设内部系统将正常运作,并假定建筑监理员在执行其任务。房主关心的是住在这所房子里将会怎样。他关心房子的外观如何,各个房间的大小是否合适,房子能否满足家庭的需要,以及窗户的位置是否有利于采光。

ST(System Test)主要采采用功能测试(Functional Test)(推荐一款功能测试工具AutoRunner,地址是http://www.spasvo.com/autorunner/),关注系统提供的功能特征及其不同的处理条件;测试功能的不同处理流程(包括正常处理的和异常处理);一个功能测试用例仅用于测试一个功能,一个功能可能需要多个功能测试用例来覆盖。

UAT(User Acceptance Test 用户确认测试)主要采纳场景测试(Scenario Test)场景测试关注于不同场景、事务、业务流程等;跨功能;仅用到各个功能的一部分处理流程;一个场景测试用例仅测试一个场景、事务或业务流程。

三者的关系:房主对房子执行功能测试。他从用户的角度考虑问题。建筑监理员对房子执行单元测试。他从建筑工人的角度考虑问题。功能测试是场景测试的先决条件,只有功能测试已经完成并且其发现的问题得到解决,场景测试才可能较有效地得到实施;如果在场景测试中发现了大量本应在功能测试中发现的问题,那么说明功能测试急需加强。