转载自:秋之川老师在小密圈里的回答
1. 按软件
开发流程
分:
(1)需求阶段:
需求测试
。比如
逻辑错误
、
需求合理性
、
需求缺失
、
需求建 议
(2)编码阶段:
单元测试
:对软件的最小组成单元进行测试。比如
某函数
、
某方法
集成测试
:即
联合
测试。在单元测试基础上,将所有
模块
按业务需求
组装
起来,进行集成测试。
(3)测试阶段:
系统测试
:将已经完成集成测试的
软件
+
硬件
+
网络
等各元素结合在一起,进行系统的
组装测试
和
确认测试
。
即对
整个产品
进行测试,目的是验证是否 "满足产品需求" 的定义
(4)发布阶段:
验收测试:
Acceptance Testing,也叫
交付测试
。在产品完成
系统测试
后,产品
发布上线
前进行的测试活动。目的是确保软件准备就绪。
α测试:
公司
内部人员
模拟各类用户对即将发布的产品进行测试。关键:
逼真模拟
真实用户。
经过α测试后的版本叫
β版本
β测试:
各方面的
典型用户
在日常工作中实际
使用β版本
,并给出“
用户报告
”异常情况、提出“
批评意见
”
2. 按
测试视角
分:
(1)外部视角:
黑盒测试:
只关注程序的
输入&输出
。一般用于
系统测试
阶段
(2)内部视角:
白盒测试:
不仅关注程序的
输入&输出
,还关注程序的
内部逻辑
。一般用于
单元测试
阶段
(3)内外兼顾:
灰盒测试:
兼顾黑白
测试。一般用于
集成测试
阶段
不关注模块内部
实现细节
(白盒关注),关注系统内部各
模块之间
如何协作(黑盒不关注)
3. 按
测试对象
分:
(1)
GUI
测试
:对APP的
图形用户界面
进行测试,包含了
UI测试
和
适配测试
(2)
功能
测试
:验证产品是否符合
需求说明书
的功能
(3)
易用性
测试:
测试APP的
交互
和
界面
对用户来说是否
友好
且
易用
(4)
接口
测试:
测试系统
组件间
的
接口
,检查模块之间的
参数传递
是否符合设计文档的要求
(5)
性能
测试:
通过根据模拟多种
正常
、
峰值
、
异常负载
的情况,测试系统各项性能指标。
包括:
负载测试、压力测试、稳定性测试
等
(6)
安全
测试:
找出系统的
安全缺陷
和
漏洞
(7)
兼容性
测试:
测试软件在不同
硬件
、
操作系统
、
浏览器
、
数据库
下是否正常运行。(C/S结构,要测
服务器&客户端
的兼容性)
(8)
国际化
测试:
测试系统对多字节
字符集
的支持、
区域
设置、
时区
设置、字符串编码等
(9)
本地化
测试:
测试
翻译后
的系统,
语言
、
UI
、
格式内容
等是否都正确
4. 按
测试对象
是否处于
运行状态
分:
(1)
静态
测试:
被测系统无需运行时的测试。如:
代码静态扫描
:利用
安全扫描工具
快速查找和修复源代码(无需编译)的
代码安全
问题。减少
代码
编写中可能出现的
安全漏洞
文档评审
:对项目
执行情况
、
未来计划
做一个评审,对项目的
财务状况
做一个总结
(2)
动态
测试:
需要被测系统运行时的测试。如
单元测试
、
集成测试
、
系统测试
等
5. 按
测试范围
分:
(1)
冒烟
测试:
对
测试包
进行
快速可用性
测试,一般只覆盖系统
核心功能
/ 所有功能的
核心测试点
(2)
全面
测试:
对系统所有功能进行测试
自动化测试
功能:
主要用于
回归测试
,一般在系统“新增功能”或“功能变更”后检测对其他旧功能的影响 —— 为
不变的功
能提供
保障
。
时间:
可以
滞后于新功能
的测试。
目的&本质:
提高产品
开发效率
。
因为自动化测试会
覆盖
到大部分场景
,
开发更关心的是测试能
覆盖更多主要功能
。
有自动化测试的保障,
开发
才能
更频繁
有效地
迭代。