软件测试
- 经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试模型
V模型
- 是瀑布模型的一种改进
- V模型标明了测试过程中的不同阶段
- 优点:
既有底层测试,又有高层测试
将开发阶段清楚表现出来,便于控制开发过程 - 缺点:
1/容易让人误解为测试是在开发完成后的一个阶段
2/由于其顺序性,开发编码完成进入测试,发现的一些bug不容易找到其根源,代码修改困难
3/如果需求变更较大,导致重复变更需求/设计/编码/测试,返工量大
W模型
- 明确表示出了测试与开发的并行关系(两个V)
- W模型中测试伴随着整个软件开发周期,并且测试对象不仅仅是程序,需求和设计同样要测试。
- 优点:
1/将测试贯穿到软件的整个生命周期中
2/尽早介入到软件开发中,尽早发现bug并修复
3/测试与开发独立起来,并与开发并行 - 缺点:
1/无法支持迭代的开发模型
2/对有些项目,开发过程中根本没有文档产生,故W模型无法使用
3/对需求和设计的测试技术要求很高,实践困难
H模型
- 优点:
1/软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行
2/软件测试活动可以尽早准备,尽早执行,具有很强的灵活性 - 缺点:
1/测试就绪点分析困难
2/对于整个项目组的人员要求非常高
软件测试工作流程
传统测试流程
- 单元测试-集成测试-冒烟测试-系统测试-回归测试-验收测试
系统测试流程
- 需求分析-测试计划-测试设计-用例评审-测试执行-bug管理-发布维护
测试左移
- 左移是往测试之前的开发阶段移
- 测试团队在软件开发周期早期就介入
- 对代码进行测试
- 从发现bug到预防bug
测试左移-质量保障手段
- 代码评审
- 代码审计
- 单元测试
- 自动化冒烟测试
- 研发自测
测试右移
- 右移是往发布之后移
- 产品上线后进行线上监控
测试右移-线上监控
- 闭环的线上问题反馈-检查-解决-更新流程
- 更便捷的日志查看,回传服务
- 丰富有效的Log,便于快速定位
- 丰富的监控指标(例如业务异常点指标)
- 业务监控(例如短信发送等)
- 关键指标每日监控(服务器指标)
- 生产数据监控(警报)