跳转至

软件测试

  • 早期定义(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