测试开发体系

软件测试

  • 通过手工或者工具对 "被测对象"进行测试
  • 验证实际结果与预期结果之间是否存在差异

软件测试作用

  • 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心
  • 测试可以降低同类型产品开发遇到问题的风险

软件缺陷

  • 软件缺陷被测试工程师和开发工程师们称作 bug
  • 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据

软件测试原则

  • 测试显示缺陷的存在
  • 穷尽测试是不可能的
  • 测试尽早介入
  • 缺陷集群性(2/8原则)
  • 杀虫剂悖论
  • 测试活动依赖于测试内容
  • 没有错误是好是谬论

软件测试对象

  • 需求分析阶段:需求文档、接口文档
  • 编码实现阶段:源代码
  • 系统功能使用:软件程序

测试用例

  • 为特定的目的而设计的一组测试输入、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档

软件

  • 软件是与计算机系统操作有关的计算机程序、可能有的文档及数据。

软件生命周期

  • 定义问题
  • 软件开发
  • 软件维护

@startuml

scale 10

|定义问题|

start

:搜集需求;

:可行性研究;

:需求分析;

|软件开发|

:概要设计;

:详细设计;

:编码;

:测试;

|软件维护|

:纠错性维护;

:改进性维护;

:报废;

stop

@enduml

软件开发流程

  • 为了使软件开发的工作系统化并且可控制;
  • 需要采用合适的软件开发模型和开发过程管理所有的活动。

@startuml

scale 10

title 软件开发模型

:瀑布模型;

:敏捷开发模型;

:DevOps 模型;

@enduml

瀑布模型

  • 软件开发的各项活动严格按照线性方式进行。
  • 当前活动接受上一项活动的工作结果。
  • 当前活动的工作结果需要进行验证。

@startuml

scale 4

:制定计划;

:需求分析;

:软件设计;

:程序编码;

:软件测试;

:运行维护;

@enduml

瀑布模型优缺点

  • 优点:
    • 开发的各个阶段比较清晰。
    • 强调早期计划及需求调查。
    • 适合需求稳定的产品开发。
  • 缺点:
    • 早期的错误可能要等到开发后期的阶段才能发现。
    • 由于开发模型是线性的,增加了开发的风险。

@startuml

scale 4

:制定计划;

:需求分析;

:软件设计;

:程序编码;

:软件测试;

:运行维护;

@enduml

敏捷开发模型

  • 适用于需求频繁变化和需要快速开发的场景。
    • XP
    • SCRUMXP

极限编程

SCRUM

敏捷模型总结

  • 增量迭代
  • 小步快跑

DevOps

evOps 生命周期

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

DevOps 对发布的影响

  • 减少变更范围
  • 加强发布协调
  • 自动化

CI/CD

  • 持续集成(Continuous Integration,缩写为 CI):
    • 一种软件开发实践。
    • 团队开发成员每天可能会发生多次集成。
    • 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
    • 根据测试结果确定新代码和原有代码能否正确地集成在一起。
  • 持续交付(Continuous Delivery,缩写为 CD)
    • 是一种软件工程手法。
    • 让软件产品的产出过程在一个短周期内完成。
    • 保证软件可以稳定、持续的保持在随时可以发布的状况。
    • 目标:
      • 让软件的构建、测试与发布变得更快以及更频繁。
      • 减少软件开发的成本与时间,减少风险。

CD 与 DevOps 的关系

  • DevOps 的范围更广:
    • DevOps 是软件交付过程所涉及的多个团队之间的合作。
    • 并且将软件交付的过程自动化。
  • 持续交付是一种自动化交付的手段:
    • 关注点在于将不同的过程集中起来。
    • 并且更快、更频繁地执行这些过程。
  • 总结:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型。

软件测试分类

@startmindmap

scale 10

* 软件测试分类

** 按开发阶段分类

*** 单元测试

*** 集成测试

*** 系统测试

**** 功能测试

**** 兼容性测试

**** 性能测试

**** 安全测试

*** 验收测试

**** α 测试

**** β 测试

** 按是否查看代码

*** 白盒测试

*** 黑盒测试

*** 灰盒测试

left side

** 按测试执行方式

*** 静态测试

*** 动态测试

** 按是否手工执行划分

*** 手工测试

*** 自动化测试

** 其他分类

*** 冒烟测试

*** 回归测试

*** 随机测试

*** 探索性测试

@endmindmap

黑盒测试

  • 黑盒测试又称数据驱动测试。
  • 完全不考虑程序内部结构和内部特性。
  • 注重于测试软件的功能需求。
  • 只关心软件的输入数据和输出数据。

白盒测试

  • 白盒测试研究产品内部的源代码和程序结构。
  • 单元测试就是白盒测试的一种。
相关推荐
Warren2Lynch15 小时前
2026年专业软件工程与企业架构的智能化演进
人工智能·架构·软件工程
程途拾光1582 天前
一键生成幼儿园安全疏散平面图设计美观合规又省心
论文阅读·安全·平面·毕业设计·流程图·课程设计·论文笔记
Yuer20252 天前
EDCA OS 介入虚拟货币案件的标准流程图
流程图·edca os·可控ai
风流 少年2 天前
Markdown之Mermaid流程图
流程图
钝挫力PROGRAMER3 天前
UML构造块中的关系梳理
软件工程·uml
钝挫力PROGRAMER3 天前
软件工程结构型设计模式
设计模式·软件工程
EmmaXLZHONG3 天前
Reinforce Learning Concept Flow Chart (强化学习概念流程图)
人工智能·深度学习·机器学习·流程图
技术与健康4 天前
什么是ADSE?逻辑驱动的软件工程新范式
软件工程
雾江流4 天前
HDx播放器1.0.184 | 支持多种格式和4K/8K高清视频播放,内置推特~脸书下载器
音视频·软件工程
会周易的程序员4 天前
openPLC REST API 参考(英译中)
c++·物联网·架构·软件工程·iot