测试开发体系

软件测试

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

软件测试作用

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

软件缺陷

  • 软件缺陷被测试工程师和开发工程师们称作 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

黑盒测试

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

白盒测试

  • 白盒测试研究产品内部的源代码和程序结构。
  • 单元测试就是白盒测试的一种。
相关推荐
HashFlag44 分钟前
Typora绘制-流程图
流程图·typora
雾江流2 小时前
悦读 1.11.0 | 有情感的AI电子书朗读,多国语言,支持多格式
软件工程
会周易的程序员6 小时前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
多恩Stone7 小时前
【3D AICG 系列-9】Trellis2 推理流程图超详细介绍
人工智能·python·算法·3d·aigc·流程图
雾江流8 小时前
PiliPlus 1.1.6 | 基于Flutter开发的第三方哔哩,目前最好用的一款
软件工程
成茂峰9 小时前
软考高级·系统架构设计师 | 五、软件工程基础知识
系统架构·软件工程·软考高级·架构设计
多恩Stone9 小时前
【3D AICG 系列-8】PartUV 流程图详解
人工智能·算法·3d·aigc·流程图
雾江流1 天前
小米堆叠桌面6.01.05.1991 | 提前享受丝滑堆叠桌面,仅限小米手机
智能手机·软件工程
爱思德学术2 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
赫尔·普莱蒂科萨·帕塔2 天前
智能体工程
人工智能·机器人·软件工程·agi