1.1.2 软件测试工作的分类
如果读者想要对软件测试这项工作建立全面的认知,除了理解软件测试工作的定义之外,还要了解在这项工作中可以执行哪些类型的测试。基本上,人们可以基于软件测试工作的各种不同目标和需求,在软件测试工作中执行如下测试。
● 单元测试。单元测试通常是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有明确的标准,“单元”可以是函数、方法、类、功能模块或者子系统。值得一提的是,人们往往将单元测试和白盒测试联系到一起,虽然从概念上来说,两者是有区别的,但单元测试和白盒测试通常都可被看作针对代码逻辑的测试,所以在某些语境下也可以认为这两者相同。
● 性能测试。性能测试是指通过设计一些特定的测试用例来模拟多种正常、峰值和异常负载条件等,从而对系统的各项性能进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。负载测试可用于确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时系统各项性能的变化情况。压力测试是通过确定系统的瓶颈或者不能接受的性能点来测试系统能提供的最大服务级别的。
● UI测试。在UI测试中,测试人员会通过设计一些特定的测试用例模拟用户在应用程序界面[如CUI(Command User Interface,命令行界面)、GUI(Graphical User Interface,图形用户界面)或Web界面]上进行的单击/双击、键盘输入等交互操作。在该测试过程中,这些测试用例会将模拟操作得到的反馈与一般情况下的人机交互反馈进行对比,以便找出UI的设计缺陷。
● 接口测试。接口测试是最常见的软件测试之一,它通常需要测试人员能够排除GUI的影响,并针对软件的功能进行测试。它是软件业务逻辑测试中非常关键的任务。通常在软件项目的早期,接口测试就会同步进行,以便随时找出代码中存在的各种错误。另外,由于接口测试不使用GUI,因此它主要通过字符界面与测试人员进行交互。
关于上述类型的测试工作的具体执行方式,本书第4章会详尽介绍。在这里,读者只需要先对测试工作的分类有概念性认识即可。