- 按研发阶段划分:
- 单元测试
- 集成测试
- 系统测试
- 回归测试
- 冒烟测试
- 验收测试
- 按测试实施组织划分:
- α测试
- β测试
- 第三方测试
- 按是否运行划分:
- 静态测试
- 动态测试
- 按是否手工划分:
- 手工测试
- 自动化测试
- 按是否查看代码划分:
- 黑盒测试
- 白盒测试
- 灰盒测试
- 按测试地域划分:
- 国际化测试
- 本地化测试
- 按测试对象划分:
- 业务测试
- 界面测试
- 容错性测试
- 文档测试
- 兼容性测试
- 易用性测试
- 安装测试
- 安全测试
- 性能测试
- 内存泄漏测试
1. 按研发阶段划分:
单元测试(Unit Testing
):对软件组成最小单位(模块)进行测试,别名叫做模块测试。
TDD
:测试驱动开发(开发人员先不写代码,测试人员写完测试用例,开发人员按照测试用例进行开发)
测试阶段:编码后或编码前(TDD
)
测试对象:最小的模块
测试人员:白盒测试工程师或开发人员
测试依据:详细设计文档+代码
测试方法:白盒测试(就是要写代码的)
测试内容:针对一个模块
① 模块接口测试:有几个接口、需要传入什么数据(传入错误数据)
② 局部数据结构测试:一个模块变量作用域只是限于这个模块
③ 路径测试:例如if
判断、for
循环等
④ 错误处理测试:接口、模块内部
⑤ 边界测试:传入的参数长度、for
循环次数等等
集成测试(Integration Testing
):对系统的接口及集成后的功能进行测试,别名有联合测试、联调测试、组装测试。主要目的是检查软件单元之间的接口是否正确。
- 接口:用到的是白盒测试
- 功能:用到的是黑盒测试
测试阶段:单元测试之后
测试对象:模块间的接口
测试人员:白盒测试工程师或开发人员
测试依据:概要设计文档+单元测试的模块
测试方法:黑盒+白盒(加起来有个新名字叫灰盒测试)
测试内容:
① 模块之间数据传输
② 模块之间功能冲突
③ 模块组装功能正确性:黑盒测试、功能测试
④ 全局数据结构:单元测试是局部数据结构,集成测试是全局数据结构
⑤ 单模块缺陷对系统的影响:单独其中一个模块,比如注册模块有bug,则后面的功能都用不了
单元测试和集成测试相比:
测试阶段、测试依据、测试内容都是不一样的,只有测试人员是一样的
系统测试(system Testing
):对功能、性能以及软件所运行的软件和硬件环境进行测试,包括回归测试和冒烟测试。
测试阶段:集成测试之后
测试对象:整个系统(软件和硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明书
测试方法:黑盒测试
测试内容:(涉及面最广的)
功能、界面、可靠性、易用性、性能、兼容性、安全性
回归测试(Regression Testing
):把出问题的地方验证完之后,也要把核心功能验证,验证其他功能有无问题
担心修改一个bug
之后又引起了其他的bug
工作量特别大的时候,由自动化测试工具完成
冒烟测试(Smoke Testing
):对核心主要流程进行测试
冒烟测试的结果是判断是否接手系统测试的标准
隐含的流程:冒烟测试 -> 系统测试 -> 回归测试
单元测试、集成测试和系统测试的区别:
单元测试只是对一个模块(一个接口)进行测试,而集成测试强调的是接口之间,系统测试针对整个系统
验收测试(Acceptance Testing
):用户测试,目的是验证软件是否满足了用户的原始需求,别名交付测试
测试阶段:系统测试之后
测试对象:整个系统(软件和硬件)
测试人员:最终用户或需求方
测试依据:用户需求+验收标准
测试方法:黑盒测试
测试内容:(同系统测试)
功能、界面、可靠性、易用性、性能、兼容性、安全性
2. 按测试实施组织划分:
α
测试:由一个用户在开发环境下进行测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试
功能、局域化、可使用性、可靠性、性能、支持
不能由测试人员和开发人员参与
类似于是在预发布环境下进行测试,介于测试环境和生产环境之间的一个环境
β
测试:在客户的环境下进行测试,由最终用户进行测试
α测试先于β测试执行,α测试比β测试周期要长
第三方测试:介于开发方和用户方间的组织的测试
3. 按是否运行划分:(了解)
静态测试:不运行代码,看看语法、结构等有没有错误
检查项:代码风格、规则审核、程序设计、结构审核、业务逻辑审核、走查、审查与技术复审手册
除了对代码的测试之外,还包含对文档的测试
动态测试:对程序的测试(同系统测试)
组成:测试用例、执行程序、分析程序的输出
大多数软件测试都属于动态测试
4. 按是否手工划分:
手工测试:
优点:可替代探索性测试、发散性思维结果的测试
缺点:执行效率慢,量大易出错
自动化测试:帮我们进行回归测试,提高测试效率
优点:执行效率快
缺点:无法替代探索性测试、发散性思维结果的测试
自动化测试不能完全代替手工测试,结合起来使用最好
一般所说的都是功能自动化测试
不是所有的项目都可以进行自动化测试,也不是所有的阶段都能进行自动化测试
5. 按是否查看代码划分:
黑盒测试:又称功能测试。
针对于软件进行测试,看软件结果与实际结果是否一致
白盒测试:又称结构测试、透明盒测试、逻辑驱动测试、基于代码的测试。
对代码进行测试,观察代码内部语法、结构等有没有错误
灰盒测试:介于黑盒测试和白盒测试之间,大多用于集成测试阶段
既关注功能,又关注代码内部结构
6. 按测试地域划分:
国际化测试:
本地化测试:
本地化和国际化测试与其他类型的测试存在很多不同之处。下面是本地化和国际化测试的一些要点:
① 本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否墼齐、不走样。
② 是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等。
③ 在不同的屏幕分辨率下界面是否正常显示。
④ 是否存在不同的字体大小,字体设置是否恰当。
⑤ 日期、数字格式、货币等是否能适应不同国家的文化习俗。例如,中文是年月日,而英文是月日年。
⑥ 排序的方式是否考虑了不同语言的特点。例如,中文按照第一个字的汉语拼音顺序排序,而英文按照首字母排序。
⑦ 在不同的国家采用不同的度量单位,软件是否能自适应和转换。
⑧ 软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上。
⑨ 软件是否能在Windows
或者其他操作系统的当地版本上正常运行。
⑩ 联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当, 是否有语法错误。
软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。它要求测 试人员具备一定的翻译能力、语言文化,同时具备测试人员的基本技能。
7. 按测试对象划分:
业务测试:测试人员把各个孤立的功能点串起来运行,模拟真实用户实际的工作流程
界面测试:页面上可以看到的元素的可用性,颜色搭配、布局、位置、文字大小、命名等
Web
端和App
页面排放是不一样的
没有一个统一的标准,只要符合大众(99%)审美就行
容错性测试:输入非规定的合理的数据,看系统如何处理
包含两方面内容:容错测试和灾难恢复性测试(实际上是两个内容,只不过有关联关系)
灾难恢复性测试:当系统发生故障后,在第一时间恢复使用,不让用户感知,验证系统已保存的用户数据是否丢失(一般是自动化测试,不需要人工干预)
文档测试:
国家有关计算机软件产品开发文件编制指南中共有14 种文档,可分为3大类。
① 开发文档:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。
② 用户文档:用户手册、操作手册。
用户文档的作用:改善易安装性;改善软件的易学性与易用性;改善软件可靠性;降低技术支持成本。
③ 管理文档:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。
文档测试的关注点:文档的术语、文档的正确性、文档的完整性、文档的一致性、文档的易用性(可读性)
编写测试用例的时候就是对需求文档的测试
兼容性测试:
WEB:浏览器、平台、向前兼容或者向后兼容、测试软件与其他相关软件的兼容、数据兼容性测试(数据类型之间)
APP:手机品牌、系统版本(Android、ios版本)
易用性测试:跟界面测试一样,没有唯一的标准,范围比较大,别名叫体验测试
菜单一般不超过三层
能异步完成的绝对不两步完成
安装测试:测试程序的安装、卸载,典型的是APP的安装、卸载
安全测试:相对独立的领域,一般的测试人员不涉及此领域
网络、操作系统、黑客技术
性能测试:检查系统是否满足需求规格说明书中规定的性能
关注的方面:资源的利用率(内存、CPU)、执行间隔、响应时间、吞吐量、缓存区的大小、磁盘读取
内存泄漏测试:性能测试里的一部分
产生原因:
分配完内存之后忘了回收
程序写法有问题,造成没办法回收
某些API函数的使用不正确,造成内存泄露
没有及时释放