软件测试
软件测试:使用人工或者自动的手段来运行或测试整个软件产品的过程。
目的在于检验软件是否满足规定的需求,尽可能地发现其中存 在的错误(缺陷)。
所有的产品或者服务上线都需要进行测试
从不同的角度,可以将软件测试分为不同的类别
• 按是否关注代码划分,即软件内部实现的结构和算法
• 按阶段划分
• 按是否运行划分
• 按是否自动化划分
• 按测试中关注的重点划分
以下用一张思维导图带你了解软件测试的分类
是否关注源代码
• 黑盒测试:不关注代码逻辑,只关注输入输出。一般需要依据需求说明书。
• 白盒测试:看代码的具体实现逻辑。又称结构测试
• 灰盒测试:既关注输入输出,也关注实现逻辑,多用于集成测试阶段
基于测试的不同阶段
• 单元测试(unit testing):在底层进行的测试,又称模块测试(module testing)。对软件中最
小可测单元进行检查和验证。
• 集成测试:通常是在单元测试基础上,对所有程序模块进行有序、递增的测试。重点测试不同模 块的接口部分。又称组装测试。
• 系统测试:将整个软件系统看成一个整体进行测试,有可能同时覆盖软件和硬件侧面。测试依据 软件需求说明书。
• 验收测试:用户检验产品是否满足预期
• α测试:内测版本,bug多
• β测试:公测版本
• γ测试:候选发布版本
按是否运行被测程序划分
• 静态测试:不执行被测试的软件,类似于汽车检查。典型的测试对象包括文
档和代码。
• 动态测试:实际运行被测程序,输入相应的测试数据,记录输出结果和预期 结果,类似于试车
按是否自动化
• 手工测试:手动点击,肉眼观察结果
• 自动化测试:利用代码或者工具代替人进行测试的过程
按测试中关注的重点
• 功能测试
• 性能测试
• 安全性测试
按测试中关注的重点
• 功能测试:测试软件是否能实现规定的功能。是软件最重要的一方面的测试。
• 性能测试:对软件性能进行测试,常用的性能测试指标包括:响应时间、并
发用户/并发、内存占用、CPU占用等
• 安全性测试:针对系统可能存在的安全漏洞进行测试,比如敏感数据是否加
密
更多
• 冒烟测试:针对最基本的功能和流程(如用户正常登录、电商购买商品全过程)进行测试, 保证基本的功能和流程走通。一般开发提交一个版本后,先进行冒烟测试,如果不通过,就 无需再进行接下来的测试
• 回归测试:修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产 生错误