在实际项目测试过程中,选择并确定测试模型只是我们实施测试的第一步。除此之外,还要弄清楚整个测试过程中需要做哪些类型的测试,并根据不同的测试类型进行相应的测试,比如我们耳熟能详的功能测试、性能测试等,这样我们的测试工作才能有效进行。
那么软件测试按照什么分类?又是怎么分类的呢?简单来讲,软件测试可以按照开发阶段、是否查看代码、是否运行、是否手工操作四个方向分类的。
按照开发阶段分类
(1)单元测试
单元测试也可以叫做模块测试——对软件的组成单位进行测试,目的是为了检验软件基本组成单位的正确性。测试的对象是软件测试的最小单位:模块。单元测试一般都是开发人员或者专业的白盒测试人员(这些需要对代码有很深的研究)来测试的。
(2)集成测试
单元测试是一个模块内部的测试,当有多个单独的模块测试完成后,我们需要把这些模块放到一起进行整体的测试,这个测试叫做集成测试。集成测试也称联调测试、组装测试,即将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成测试主要关注的是关联处比较复杂,容易发生错误的模块。集成测试是在模块之间进行测试(至少两个),将2个或者2个以上的模块进行组装。
(3)系统测试
系统测试指的是在真实或模拟系统运行的环境下,验证完整的程序系统是否可以正确的运行,并满足用户的功能需求,这里完整的程序系统可以理解为把整个软件系统看作一个整体,包括软件和硬件。举个例子,当下公司正在开发一个新的支付系统,要求测试团队对它做系统测试。那我们的测试目的,就是要把各种功能模块全部搭建并运行起来,对它进行整体的功能测试、安全测试、性能测试等,以验证它的功能,安全性,性能等各方面表现是否满足用户需求。
(4)验收测试
验收测试是技术测试的最后一个阶段,也称为交付测试。验收测试是部署软件之前的最后一个测试阶段。验收测试的目的是确保软件准备就绪,向软件购买者展示该软件系统能够满足用户的需求,一般是以用户为主的测试。验收测试的常用策略有两种,正式验收和非正式验收。
按照是否查看代码分类
(1)黑盒测试
我们不需要去关心被测试软件里面的结构及实现逻辑如何,只需要关注测试软件的输入数据是什么,以及输出结果是否符合预期就可以了,这样的测试就叫做黑盒测试。黑盒测试又称为数据驱动测试,它只检查程序是否能接收输入数据并产生正确的输出信息。
(2)功能测试
功能测试主要是检查实际功能是否符合用户的需求,因此测试的大部分工作也是围绕软件的功能进行的。功能测试又可以细分为界面测试、逻辑功能测试、易用性测试、安装测试以及兼容性测试等,每种测试的测试目的及复杂程度又有所不同。
(3)性能测试
性能测试拆开来看就是性能与测试。软件的性能包括很多方面,主要是时间性能和空间性能。性能测试是通过自动化的测试工具来模拟多种正常的,不正常的,或者是极限情况下,针对系统的各项性能指标进行的测试,以验证软件性能是否符合要求。
(4)白盒测试
白盒测试与黑盒测试正好相反,就是不关注外面只关注里面,也就是说盒子是透明的,我们可以清楚的看到盒子内部的东西以及内部的运作逻辑,针对内部逻辑进行的测试。
(5)灰盒测试
灰盒测试是介于白盒测试与黑盒测试之间的一种测试,它既关注内部也关注外部的验证。
按照是否运行分类
(1)动态测试
动态测试是指通过运行被测程序,输入相应的测试数据来验证运行结果与预期结果的是否一致。目前动态测试也是企业实施项目测试的主要方式。根据动态测试在软件开发过程中所处的阶段和作用,我们可以将其划分为以下几个步骤:单元测试、系统测试、集成测试和验收测试。
(2)静态测试
静态测试就是不实际运行被测软件,只是静态地检查程序代码、界面或文档中可能存在的错误的过程。测试内容主要是代码测试、界面测试和文档测试三个方面。
按照是否手工操作分类
(1)手工测试
手工测试,指的用手一个一个去执行编写好的测试用例。通过手动操作键盘鼠标来输入一些内容,例如测试登录功能时,要根据用例手动输入用户名/密码,点击按钮等,执行完功能之后,再查看返回结果,验证其是否符合预期的结果。
(2)自动化测试
自动化测试的目的是提高测试效率,把以人为驱动的测试行为转化为机器执行的一种过程。使用工具或代码的方式来实现手工操作。
这一关我们按照是否运行软件将测试分为了静态测试和动态测试,又基于是否手工操作将测试分成了手工测试和自动化测试,除此之外,还有冒烟测试,回归测试以及安全测试等等。
通过学习我们可以知道,每一种测试都有自己的特点和适用场景,我们通过这样的系统学习理解每种测试的方式和意义,做到心中有数,这对我们后续的测试技术学习以及实际测试工作有着深远的指导作用。