软件测试¶
- 早期定义(Bill Hetz,1973):软件测试是对程序能够按预期运行建立起的一种信心。
- 经典定义(Myers,1979):测试是为发现错误而执行程序的过程。
- IEEE定义:使用人工或自动手段来运行或测量软件系统的的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
说白了就是找Bug,但请不要称之为捉虫...
宗旨:在有限的时间和资源内,尽可能的发现问题,发现至今未发现的问题,尽早的暴露出来,并且协助开发尽快解决。
测试原则¶
- 测试对象不止是程序,还有各种文档等
- 测试显示缺陷的存在,但经过软件测试不能证明系统不存在缺陷
- 穷尽测试是不可能的,应设定及时终止的条件
- 测试依赖于测试场景
- 统计表明,大多数的Bug来自于对需求的错误理解,所以测试要尽早介入,尽可能降低修复成本
- Bug的分布遵循二八法则,即Bug往往会集中在某一模块
- 测试的杀虫剂悖论,同一功能,不能总是用同一条Case反复验证
分类¶
关于软件测试的分类,个人习惯按不同阶段来划分,因为阶段是比较明确的,在不同的阶段可以采用不同的手段,比如静态动态,黑盒白盒,手动自动等。
不同手段可以任意搭配变换,以适应各种不那么稳定的因素。
- 单元测试
- 集成测试
- 冒烟测试
- 系统测试
- 回归测试
- 验收测试
- 探索性测试
- 随机测试
其中系统测试可以包括
- 接口测试
- 功能测试
- 兼容性测试
- 本地化测试
- 性能测试
- 安全测试
验收测试通常可以分为(主要针对移动端)
- α版本测试
- β版本测试
- Release版本测试
兼容性测试¶
- 不同系统:Mac、Windows、Android(热门品牌)、iOS
- 不同机型:不同分辨率、不同系统版本
- 不同浏览器:Chrome、Safari、Edge
- 不同版本:向上/向下兼容
- 不同网络环境
- 不同语言
- 不同主题:夜间/日间、背景等
- 分享功能:分享到主流APP
- 其它:标准规范等
关于向上向下兼容
- 向上兼容,渐进增强:业务优先,新版本老功能不会受影响
- 向下兼容,优雅降级:新特性优先,新版本老功能可能失效
比如做网站,向上兼容,则会更关注内容本身。向下兼容,则会优先考虑那些最高级、最完善的浏览器来设计网站。
兼容性测试比较枯燥,最好采用自动化方式来做,比如移动端
- Appium + Selenium Grid + OpenSTF
- 云测平台:Testin、SauceLab
软件测试模型¶
- V模型
- W模型
- X模型
- H模型
测试左移¶
- 单元测试
- 研发自测
- 代码评审(Code Review)
- 代码审计
- 自动化冒烟测试
测试右移¶
线上监控
- 线上问题闭环:验证问题-反馈结果-状态更新等
- 更便捷丰富的日志查看,方便定位问题
- 关键指标每日监控
- 生产数据监控
- 业务监控:比如短信邮件等收发
精准化测试¶
- 根绝代码变更自动分析影响范围
- 代码调用链与黑盒测试用例关联
- 代码流程分析与覆盖率统计
- 黑盒测试过程中借助代码流程覆盖数据指导探索式测试
- 利用线上数据推导有效测试用例
最后更新:
2022-08-05