一、测试体系介绍L1
1、软件测试基础概念
1.1、概念
- 通过手工或者工具对 “被测对象”进行测试
- 验证实际结果与预期结果之间是否存在差异
1.2、 软件测试作用:
- 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心
- 测试可以降低同类型产品开发遇到问题的风险
2、软件开发流程
- 为了使软件开发的工作系统化并且可控制;
- 需要采用合适的软件开发模型和开发过程管理所有的活动。
2.1、 瀑布模型
- 软件开发的各项活动严格按照线性方式进行。
- 当前活动接受上一项活动的工作结果。
- 当前活动的工作结果需要进行验证。
需求分析—>设计—>编码—>实现—>软件测试—>完成—>维护
:制定计划;
:需求分析;
:软件设计;
:程序编码;
:软件测试;
:运行维护;
2.2、 敏捷开发模型
- 适用于需求频繁变化和需要快速开发的场景。
- XP
- SCRUM
2.2.1 、 XP - 极限编程
2.2.2、 SCRUM
2.3、 DevOps
2.3.1、 DevOps 生命周期
- 持续开发
- 持续测试
- 持续集成
- 持续部署
- 持续监控
2.3.2、 CI/CD
- 持续集成(Continuous Integration,缩写为 CI):
- 一种软件开发实践。
- 团队开发成员每天可能会发生多次集成。
- 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
- 根据测试结果确定新代码和原有代码能否正确地集成在一起。
- 持续交付(Continuous Delivery,缩写为 CD)
- 是一种软件工程手法。
- 让软件产品的产出过程在一个短周期内完成。
- 保证软件可以稳定、持续的保持在随时可以发布的状况。
- 目标:
- 让软件的构建、测试与发布变得更快以及更频繁。
- 减少软件开发的成本与时间,减少风险。
3、测试流程体系
3.1、软件测试的原则
*测试显示缺陷的存在
- 穷尽测试是不可能的
- 测试尽早介入
- 缺陷集群性(2/8原则)—缺陷集种在20%的模块中
- 杀虫剂悖论—测试用例不能拿来用多次
- 测试活动依赖于测试内容
- 没有错误是号的谬论
3.2、软件测试对象
- 需求分析阶段:需求文档、接口文档
- 编码实现阶段:源代码
- 系统功能使用:软件程序
3.3、软件测试模型
3.3.1、V模型
需求分析—>概要设计—>详细设计—>编码—>单元测试–>集成测试—>系统测试—>验收测试
3.3.2、W模型
3.3.2、H模型
3.4、系统测试流程
需求分析—>测试计划—>测试设计—>用例评审—>测试执行—>-bug关系–>发布维护
3.5、bug管理流程
3.6、测试左移
-
左移是往测试之前的开发阶段移
-
测试团队在软件开发周期早起就介入
-
对代码进行测试
-
发现bug到预防bug
-
代码评审
-
代码审计
-
单元测试
-
自动化冒烟测试
-
研发自测
3.7、测试右移
-
右移是往发布之后移
-
产品上线后进行线上监控
-
闭环的线上问题反馈-检查-解决-更新流程
-
更便捷的日志查看、回传服务
-
丰富有效的log、便于问题定位
-
丰富的监控指标(例如业务异常点指标)
-
业务监控(例如短信发送等)
-
关键指标每日监控(服务器指标)
-
生产数据监控(警报)