目录
1、按照开发阶段分类
(1)单元测试
单元测试也可以叫做模块测试——对软件的组成单位进行测试,目的是为了检验软件基本组成单位的正确性。测试的对象是软件测试的最小单位:模块。单元测试一般都是开发人员或者专业的白盒测试人员(这些需要对代码有很深的研究)来测试的。
针对程序源代码进行测试(开发)
(2)集成测试
单元测试是一个模块内部的测试,当有多个单独的模块测试完成后,我们需要把这些模块放到一起进行整体的测试,这个测试叫做集成测试。集成测试也称联调测试、组装测试,即将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成测试主要关注的是关联处比较复杂,容易发生错误的模块。集成测试是在模块之间进行测试(至少两个),将2个或者2个以上的模块进行组装。
又称为接口测试,主要是针对模块与模块之间或系统与系统之间的接口进行验证
(3)系统测试
系统测试指的是在真实或模拟系统运行的环境下,验证完整的程序系统是否可以正确的运行,并满足用户的功能需求,这里完整的程序系统可以理解为把整个软件系统看作一个整体,包括软件和硬件。举个例子,当下公司正在开发一个新的支付系统,要求测试团队对它做系统测试。那我们的测试目的,就是要把各种功能模块全部搭建并运行起来,对它进行整体的功能测试、安全测试、性能测试等,以验证它的功能,安全性,性能等各方面表现是否满足用户需求。
针对软件全面进行验证(功能、兼容、文档)
(4)验收测试
验收测试是技术测试的最后一个阶段,也称为交付测试。验收测试是部署软件之前的最后一个测试阶段。验收测试的目的是确保软件准备就绪,向软件购买者展示该软件系统能够满足用户的需求,一般是以用户为主的测试。验收测试的常用策略有两种,正式验收和非正式验收。
使用内测、公测来实现(内测:公司内部进行测试---不一定是测试;公测:让玩家进行测试---试用)
2、按照是否查看代码分类
(1)黑盒测试
我们不需要去关心被测试软件里面的结构及实现逻辑如何,只需要关注测试软件的输入数据是什么,以及输出结果是否符合预期就可以了,这样的测试就叫做黑盒测试。黑盒测试又称为数据驱动测试,它只检查程序是否能接收输入数据并产生正确的输出信息。
又称功能测试
(2)白盒测试
白盒测试与黑盒测试正好相反,就是不关注外面只关注里面,也就是说盒子是透明的,我们可以清楚的看到盒子内部的东西以及内部的运作逻辑,针对内部逻辑进行的测试。
又称单元测试
(3)灰盒测试
灰盒测试是介于白盒测试与黑盒测试之间的一种测试,它既关注内部也关注外部的验证。
又称接口测试
(4)补充--测试分类小结:
1.系统测试和⿊盒测试重点核⼼是 ** 功能测试 **2. 集成测试和灰盒测试⼜称 ** 接⼝测试 **3. 单元测试和⽩盒测试是对 ** 代码 ** 进⾏测试4. ⾃动化测试归属 ** 功能测试 **5. 性能测试、安全测试归属 ** 专项测试 **
3、按照是否运行分类
(1)动态测试
动态测试是指通过运行被测程序,输入相应的测试数据来验证运行结果与预期结果的是否一致。目前动态测试也是企业实施项目测试的主要方式。根据动态测试在软件开发过程中所处的阶段和作用,我们可以将其划分为以下几个步骤:单元测试、系统测试、集成测试和验收测试。
(2)静态测试
静态测试就是不实际运行被测软件,只是静态地检查程序代码、界面或文档中可能存在的错误的过程。测试内容主要是代码测试、界面测试和文档测试三个方面。
4、 按照是否手工操作分类
(1)手工测试
手工测试,指的用手一个一个去执行编写好的测试用例。通过手动操作键盘鼠标来输入一些内容,例如测试登录功能时,要根据用例手动输入用户名/密码,点击按钮等,执行完功能之后,再查看返回结果,验证其是否符合预期的结果。
(2)自动化测试
自动化测试的目的是提高测试效率,把以人为驱动的测试行为转化为机器执行的一种过程。使用工具或代码的方式来实现手工操作。
这一关我们按照是否运行软件将测试分为了静态测试和动态测试,又基于是否手工操作将测试分成了手工测试和自动化测试,除此之外,还有冒烟测试,回归测试以及安全测试等等。
5、按测试地域划分
软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。要求测试人员具备一定的翻译能力、语言文化,同时具备测试人员的基本技能。
本地化和国际化测试的一些要点:
- 本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否整齐等
- 是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等。
- 在不同的屏幕分辨率下界面是否正常显示。
- 是否存在不同的字体大小,字体设置是否恰当。
- 日期、数字格式、货币等是否能适应不同国家。如,中文年月日,英文是月日年。
- 排序的方式是否考虑了不同语言的特点。
- 在不同的国家采用不同的度量单位,软件是否能自适应和转换。
- 软件是否能在不同类型的硬件上正常运行,尤其注意在当地市场销售的流行硬件上。
- 软件是否能在Windows或者其他操作系统的当地版本上正常运行。
- 联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当。
6、按测试实施组织划分
alpha内测版本、Beta公测版本、gamma接近于正式发布的版本(第三方测试)
- alpha测试是用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试,大型通用软件正式发布前,通常需要执行α和β测试。α测试不能由程序员或测试员完成
- Beta测试是一种验收测试。Beta测试由软件的最终用户在一个或多个场所进行。
- 介于开发方和用户方间的组织的测试
α测试与Beta测试的区别:
- 测试的场所不同:Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。
- 测试的环境不同:Alpha测试的环境是受开发方控制的,用户数量相对比较少,时间较集中。beta测试的环境则相反,是不受开发方控制,用户数量相对比较多,时间不集中。
- 测试的时间不同:alpha先于beta测试。通用的软件产品需要较大规模的beta测试,测试周期比较长。
7、按测试对象划分
(1)业务测试
测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。关注需求和用户
(2)界面测试
界面测试(UI测试),测试用户界面的功能模块的布局(文字、图片、控件)是否合理、整体风格是否一致、各控件放置位置是否符合人体工学;关注整体的协调,整体布局清晰
响应式测试:系统页面随屏幕分辨率不同而自适应,需注意:
- 页面文字随屏幕分辨率变化的时候不会重叠、遮挡、消失
- 页面图片随屏幕分辨率变化的时候不会重叠、遮挡、消失、模糊
- 页面功能随屏幕分辨率变化的时候没有消失
- 页面功能随屏幕分辨率变化的时候可以正常使用
- 严格遵循UI设计图
- 页面在不同的屏幕分辨率进行衔接、衔接是否四化、不出现断层
(3)容错性测试
当系统由于外部环境的影响或用户的误操作导致系统发生错误,但系统可以进行自我处理,使其正常稳定运行。
容错性测试包括两个方面:
- 环境容错处理:系统运行时出现断电、断网,服务器故障的时候,可以随时切换电源、网络、备用服务器,而用户无感知。
- 界面容错处理:进行一些危险或用户禁止操作时,有无提示或者把功能屏蔽
输入异常数据或进行异常操作,检验系统的保护性:如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。
比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
(1)数据级别:日期、货币、时间
(2)验证级别:查询信息前后空格,trim(),验证码输入错误,同一个系统前后信息的容错处理
(4)文档测试
测试文档和软件系统的一致性:文档的术语、正确性、完整性、一致性、易用性
(5)兼容性测试
包括平台测试、浏览器测试、软件本身能否向前或者向后兼容、数据兼容性、测试软件能否与其它相关的软件兼容的测试。最常见的是浏览器的兼容性测试,不同浏览器内核不一样,在css,js解析上的不同,会导致页面的显示不同。
(6)易用性测试
是交互的适应性、功能性和有效性的集中体现,符合标准和规范、直观性、灵活性、舒适性、实用性,易用性属于人体工程学。
(7)安全测试
web的安全测试,需要熟悉各种网络协议TCP\HTTP,防火墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等;
从软件来说,熟悉各种攻击手段,例如SQL注入、Xss等。作为web入门测试,可以IBM的appscan。
(8)性能测试
检查系统是否满足需求规格说明书中规定的性能。通常表现在以下几个方面:
- 响应时间:3/5/10s
- 吞吐量(TPS):每秒处理的事务(消息)数量,系统在单位时间内处理的信息量
- 点击率:每秒向服务器发送HTTP请求的个数
- 系统在运行时占用资源的情况:CPU、内存、磁盘、网络带宽、耗电量
为什么进行性能测试?
- 希望用户体验好,系统能快速响应用户的需求
- 系统能处理预期的用户负载、事务数量
- 在满足以上指标的情况下,可以稳定运行
(9)内存泄漏测试
内存泄露是会累积的,只要执行的次数足够多,最终会耗尽可用内存,使软件的执行越来越慢,最后停止响应。造成内存泄露最常见的有以下几种:
- 分配完内存之后忘了回收。
- 程序写法有问题,造成没办法回收。
- 某些API函数的使用不正确,造成内存泄露。
- 没有及时释放
(10)功能测试
功能测试主要是检查实际功能是否符合用户的需求,因此测试的大部分工作也是围绕软件的功能进行的。功能测试又可以细分为界面测试、逻辑功能测试、易用性测试、安装测试以及兼容性测试等,每种测试的测试目的及复杂程度又有所不同。