Jck28-Lucio-测试开发体系介绍

一、测试体系介绍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 生命周期

  • 持续开发
  • 持续测试
  • 持续集成
  • 持续部署
  • 持续监控
    image

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、便于问题定位

  • 丰富的监控指标(例如业务异常点指标)

  • 业务监控(例如短信发送等)

  • 关键指标每日监控(服务器指标)

  • 生产数据监控(警报)