小王学习录
- 测试分类
- 按测试对象划分
- 1. 界面测试
- 2. 可靠性测试
- 3. 容错性测试
- 4. 文档测试
- 5. 兼容性测试
- 6. 易用性测试
- 7. 安装卸载测试
- 8. 安全测试
- 9. 性能测试
- 10. 内存泄露测试
- 按是否查看代码划分
- 1. 黑盒测试
- 2. 白盒测试
- 3. 灰盒测试
- 按开发阶段分
- 1. 单元测试
- 2. 集成测试
- 3. 系统测试
- 4. 回归测试
- 5. 冒烟测试
- 6. 验收测试
- 按测试实施组织划分
- 1. α测试和β测试的区别
- 2. 第三方测试
- 按是否运行划分
- 1. 静态测试
- 2. 动态测试
- 按是否手工划分
- 1. 手工测试
- 2. 自动化测试
- 按测试地域划分
- 1. 国际化测试
- 2. 本地测试
测试分类
测试的分类可以分为以下几类. 本篇文章将大致介绍这几类测试.
按测试对象划分
1. 界面测试
界面是软件与用户进行交流的工具, 是软件提供给用户的可视化界面, 用户可以通过界面与软件进行交互. 一个美观的界面可以给用户留下良好的印象.
界面测试又称为UI测试, 测试的依据是UI设计稿, 测试的内容主要有以下几点:
- 界面内容的完整性, 一致性, 准确性, 友好性. 比如屏幕的大小自适应, 自动换行, 内容是否清晰展示等.
- 验证整个界面布局和排版是否合理, 包括图片的位置和大小, 字体的颜色和大小等.
- 对界面所有控件的测试, 如: 文本框, 滚动条, 选择按钮等是否可以正常使用.
- 界面的布局和色调也要符合当前时事的发展.
2. 可靠性测试
可靠性指的是系统正常运行的能力. 又称可用性, 用正常运行时间/(正常运行时间+非正常运行时间)*100%
来表示
可用性指标一般要求达到4个或5个9, 即99.99%或99.999%. 对于不同的应用系统, 可用性要求不一样.
- 99.99% : 对于一个全年不中断运行(7*24)小时运行的系统, 99.99%意味着全年不能正常工作的时间只有52min, 不到一个小时.
- 99.999%: 同样的系统, 可用性达到99.999意味着一年不能正常工作的时间只有5分钟.
对于可靠性测试, 需要使用测试工具.
3. 容错性测试
容错性是指系统对于用户输入了一个非法数据, 或用户操作错误, 不会使系统奔溃.
对于容错性测试可以采用下面的方法.
- 输入非法数据或进行异常操作, 看系统的反应. 如果容错性好, 系统会给出提示或内部捕获处理, 而不会导致系统奔溃.
- 灾难恢复性测试, 强制使软件发生故障, 验证系统恢复的时间以及数据是否发生丢失. (将数据存储到多台服务器中, 这些服务器分布在不同的地方, 当一处的服务器由于外部原因被损坏, 可以从其他服务器中获取到用户数据)
4. 文档测试
文档测试是测试文档的专业术语, 文档的正确性, 完整性, 一致性, 易用性等.
软件开发中的文档有开发文档, 用户文档, 管理文档等.
5. 兼容性测试
兼容性测试主要涉及以下几个方面:
- 系统版本的兼容, 新发布版本是否能兼容之间版本的用户数据
- 应用环境的兼容, 在不同设备(手机, 电脑, 平板), 不同型号, 不同操作系统版本, 不同的浏览器版本下系统能否正常运行.
- 第三方系统与本系统的兼容. 本系统是否会因为有第三方系统运行而无法正常启动的情况.
6. 易用性测试
易用性测试验证用户使用起来是否方便流畅
- 标准性和规范性. 比如要开发一个已经被开发出来的同类型平台, 应该遵守已经开发出来的平台的规范, 因为用户在潜意识中已经将早开发出来的系统作为标准, 已经习惯了之前的用法.
- 直观性. 用户界面的直观性, 要求软件功能特性清晰. 不需要用户进行繁琐的操作.
- 灵活性. 软件应该有不同的选项以满足不同使用习惯的用户.
- 舒适性. 强调界面友好, 美观, 操作顺畅, 色彩恰当.
7. 安装卸载测试
- 软件是否能以不同的方式进行安装或卸载. 比如在软件商店中安装或卸载, 在网页中安装或卸载, 使用命令进行安装或卸载等.
- 软件是否能在不同的系统和版本下进行安装或卸载.
- 软件安装或卸载过程中是否能手动停止和取消.
- 安装空间不足时是否会提示.
- 安装或卸载过程中突然断电, 死机如何处理等
8. 安全测试
安全测试属于非功能测试中很重要的一个方面
- 在输入框中输入恶意脚本
- sql攻击, xss攻击等.
- 数据加密存储, 加密展示, 加密传输.
- 严格的权限分配.
9. 性能测试
软件运行过程中越来越慢, 查询数据时的响应速度长等问题都属于性能问题. 常见性能问题有如下几种:
- 资源泄露
- 线程死锁
- 接口响应速度慢
- 系统受外部系统影响越来越大
- 系统cpu占用率过大
衡量一个系统性能好坏的关键性指标有, 响应用户时间, 事务平均响应时间, 吞吐率, 内存和cpu使用率.
10. 内存泄露测试
内存泄露问题对于缺乏自动垃圾回收机制的语言编写的系统中更为常见, 内存泄露是可积累的, 当耗尽所有内存之后, 软件的执行就会越来越慢, 最后奔溃.
对于内存泄露的测试方法:
- 人工静态法. 人工观察代码, 发现内存泄漏.
- 自动工具法. 使用一些测试内存泄露的工具, 如Visual Leak Detector.
按是否查看代码划分
1. 黑盒测试
按是否查看代码可以划分为黑盒测试和白盒测试.
黑盒测试, 又叫数据驱动测试, 只注重系统的功能, 而忽略代码的内部逻辑和结构. 直接按照需求说明测试软件功能是否符合功能描述.
黑盒测试的优点:
- 黑盒测试不需要关注代码的内部结构和逻辑, 对代码要求较低.
- 黑盒测试基于需求文档, 不容易遗漏需求文档中需要测试的功能.
- 黑盒测试是从用户的角度出发设计测试用例, 很容易知道用户使用哪些功能, 在使用这些功能时会遇到什么问题, 锻炼测试人员的产品思维.
黑盒测试的缺点: 不能覆盖所有代码.
2. 白盒测试
白盒测试又称为逻辑测试 / 结构测试, 关注代码内部结构和逻辑, 忽略业务功能, 针对程序的逻辑结构来设计测试用例.
白盒测试的测试目的是, 通过检查软件内部的逻辑结构, 对软件中的逻辑结构进行覆盖测试.
白盒测试有六种测试方法: 语句覆盖, 判定覆盖, 条件覆盖, 判定条件覆盖, 条件组合覆盖, 路径覆盖.
白盒测试的优点: 代码覆盖率高
白盒测试的缺点: 业务逻辑覆盖率低
3. 灰盒测试
灰盒测试是介于白盒和黑盒测试之间的一种测试, 灰盒测试多用于集成测试阶段. 不仅关注业务逻辑, 同时也关注着代码内部的情况.
按开发阶段分
测试金字塔
从上到下依次是ui测试, 业务测试, 单元测试. 越靠下的排查成本越低. 越靠上越靠近用户.
1. 单元测试
单元测试是对软件最基本的组成单元进行测试. 测试的对象是软件设计的最小单位:函数/方法. 又称为模块测试.
测试阶段: 编码后或这编码前
测试对象: 函数/方法等最小模块
测试人员: 白盒测试工程师或软件开发工程师
测试依据: 代码, 注释, 详细设计文档
测试方法: 白盒测试
2. 集成测试
单元测试完之后, 对多个单元结合起来所对应的接口进行测试. 主要是检查软件单位之间的接口是否正确.
测试阶段: 单元测试之后
测试对象: 模块间的接口
测试人员: 白盒测试工程师或开发工程师
测试依据: 概要设计文档.
测试方法: 黑盒测试和白盒测试
测试内容: 模块之间的数据传输, 功能冲突等.
3. 系统测试
系统测试是对整个软件系统的测试, 包括了功能, 性能, 环境等的测试.
测试阶段: 集成测试完成之后
测试对象: 整个系统
测试人员: 黑盒测试人员
测试依据: 需求规格说明书.
测试方法: 黑盒测试
测试内容: 功能, 性能, 兼容, 安全, 界面, 易用性, 可靠性等
4. 回归测试
回归测试是指修改了代码之后, 重新进行测试确认修改没有引入新的错误或导致其他代码产生了错误. 软件开发的各个阶段会多次进行回归测试, 随着系统的逐步完善, 回归测试的成本也会逐渐扩大.
5. 冒烟测试
冒烟测试的对象是每一个新编译的正式测试的软件版本, 也就是测试此次开发新加的需求, 目的是确认软件本次新加的主要功能和核心流程正常. 回归测试和冒烟测试都属于系统测试, 但是冒烟测试在正式进行系统测试之前进行, 由开发人员先进行冒烟测试, 然后由测试人员进行冒烟测试. 冒烟测试通过之后, 测试人员开始正式的系统测试.
6. 验收测试
验收测试通常由产品经理或运营进行, 是产品上线之前最后的一个测试流程. 又称为交付测试. 目的是确保软件准备就绪.
测试阶段: 系统测试之后
测试对象: 整个系统
测试人员: 最终用户或需求方.
测试依据: 用户需求, 验收标准(由测试人员编写)
测试方法: 黑盒测试
按测试实施组织划分
1. α测试和β测试的区别
- 环境: α测试在公司内部进行, β测试的测试环境是不确定的
- 测试人员类型: α测试是由公司的内部人员进行测试的, β测试是由用户进行测试(类似于公测)
- 测试人员数量: α测试人员较少, β测试人员较多
- 阶段: α测试是在β测试之前进行的
- 测试周期: α周期较短, β测试周期较长.
2. 第三方测试
介于开发方和用户方间的组织(公司中单独的组织)的测试
按是否运行划分
1. 静态测试
不运行代码, 静态分析检查源代码, 检查程序的正确性.
2. 动态测试
运行被测试系统, 输入测试用例, 检查输出结果是否与预期结果相符合.
按是否手工划分
1. 手工测试
手工测试由人工手动输入一个个的测试用例. 执行效率慢, 手工测试出错率大, 但是可以进行探索性测试, 具有发散性思维.
2. 自动化测试
自动化测试是将以人为手工的测试行为转化为机器执行.
按照功能划分分为功能测试自动化, 性能测试自动化, 安全测试自动化
按照测试对象可以分为接口测试, UI测试等.
下篇文章将具体介绍自动化测试.
按测试地域划分
1. 国际化测试
如果系统不止国内使用, 则需要进行国际化测试, 要有与对应国家相适应的语言, 日期, 界面风格等.