软件测试的基础知识(一)
一、软件测试的定义
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或将预期结果与实际结果之间做对比。
二、软件测试的分类
1. 以方法划分
1.1 黑盒测试
把程序看作一个不能打开的黑盒子,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
1.2 白盒测试
白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的,在弄清软件的内部结构和代码细节的基础上,逐步检查语句和条件、代码的路径、数据流、以及各种有效或无效的输入,验证程序是否能按照预期输出结果。
1.3 灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
2. 以阶段划分
2.1 单元测试
对代码块、函数、方法等进行测试(白盒测试),一般由开发人员自己进行测试。
2.2 集成测试
也可以叫接口测试,检查各个模块接口是否连接成功(一般是灰盒测试)。
2.3 系统测试
对整个完整的系统进行测试(一般是黑盒测试)。
2.4 验收测试
分为α测试(内测)和β测试(公测),在这一阶段测试人员只需协助领导或者甲方进行验收,自己并不直接参与。
3. 以方向划分
3.1 功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
3.2性能测试
3.2.1 压力测试
测试软件运行的极限(例如测试新开业的餐厅最多能容纳多少人吃饭,不断加人直到到达一个极限)。
3.2.2 负载测试
测试软件在极限情况下能持续运行多久(例如在餐厅的极限是300人的情况下,工作人员和餐厅设施能持续工作多久),当用户数据不断积累却没有空间存放就会发生内存泄漏。
3.2.3 并发测试
测试多个用户在同一时间进行同一操作时的并发问题。
3.3 安全测试
模拟黑客手段对软件进行攻击,分为渗透测试、DDOS攻击、跨域攻击、SQL注入、暴力破解等。
3.4 UI测试
- 检查界面好不好看
- 界面的风格是否保持一致
- 界面的按钮大小是否保持一致
- 界面是否和设计图保持一致等
3.5 兼容性测试
3.5.1 APP端
android:不同系统、不同屏幕、不同分辨率、不同品牌等,根据市场占有率进行选择。
ios:ios系统的手机基本类似,只测试一种即可。
3.5.2 WEB端
主要对谷歌、新的Edge、火狐、IE等浏览器进行测试。
3.6 易用性测试
- 就是用户体验测试
- 学习成本越低越好
- 功能越简洁越好
3.7 稳定性测试
后端:7*24h持续使用
前端:3-5h持续使用
3.8 APP的专项测试
3.8.1 弱网测试
APP能否在2G、3G、4G、5G、WIFI、热点等不同的网络下正常运行
3.8.2 场景交互测试
- 不同的APP互相切换
- 前后台切换
- 来电话时
- 来短信时
- 来微信语音时等
3.8.3资源争用测试
同一类型的APP同时工作(例如QQ音乐和网易云)。
3.8.4 权限测试
- 关闭权限后,是否影响其他功能的使用
- 使用对应的功能,是否提示给权限
3.8.5 离线测试
断开网络后能否正常使用。
3.8.6 安装、卸载、更新
3.8.7 消息推送
- APP关闭后能否收到推送
- 断网后再联网,之前的消息能否收到
3.8.8 资源监控
- APP大小
- 使用流量
- 使用电量
- 占用内存
- 占用CPU
4. 以对象划分
- APP测试
- WEB测试
- 小程序测试
- 接口测试
- 物联网测试
- 车联网测试
- AI测试
- 大数据测试
- ……
5. 以状态划分
- 动态测试
- 静态测试(主要是检查代码)
6.其他测试类型
6.1 冒烟测试
- 是测试前的测试
- 检查软件是否具备可测试性
6.2 回归测试
检查上次测试发现的问题有没有被修改。