测开基础概念

2024-01-02 20:56:38

前言

本文介绍测试相关基础概念, 常见开发模型和测试模型.

测试

1. 什么是测试

所谓软件测试, 就是验证软件产品特性是否满足用户的需求. 根据需求定义的预期结果, 验证软件功能执行的正确性, 保障软件的质量.

2. 测试和调试的区别

测试和调试有以下几个区别:

  1. 对象:

调试是由开发人员进行
测试由开发人员和测试人员共同进行. 测试人员进行黑盒测试, 开发人员会进行部分的白盒测试和系统测试.

  1. 阶段:

调试的阶段在开发阶段
测试的阶段伴随整个软件开发生命周期, 测试要早于调试.

  1. 目的

开发人员进行调试的目的是要发现并解决问题.
测试人员进行测试的目的是要发现问题, 给出解决方案, 由开发人员解决.

  1. 手段

调试可以使用编译器的debug模式, 分析代码逻辑.
测试针对白盒测试和黑盒测试有不同的手段, 针对黑盒测试有等价类划分法, 边界值法等.

3. 优秀测试人员应该具备的素质

  1. 技术能力
  1. 设计测试用例(如设计自动化测试用例)
  2. 编程能力(如编写测试工具)
  3. 快速学习的能力.(学习技术和业务)
  1. 非技术能力
  1. 良好的沟通合作能力
  2. 良好的文字表达能力, 编写测试用例和测试文档
  3. 良好的抗压能力
  4. 有一定的责任意识

需求

1. 需求的定义

需求分为用户需求和软件需求(功能需求)

  1. 用户需求: 用户需求是终端用户在使用产品时必须要实现的任务, 或是甲方提出的需求.
  2. 软件需求: 在软件需求中会详细描述开发人员必须完成的软件功能

可以理解为用户需求就是一句话, 而软件需求是一个文档, 用来详细描述用户需求应该如何实现.

在软件开发时, 会把用户需求转换成软件需求. 软件需求是开发和测试人员工作时的直接依据.

2. 测试人员眼里的需求

上面说到需求是测试工程师开展测试工作的依据, 在设计测试用例时, 要先根据业务需求提取出软件功能需求点, 然后再根据每个软件功能需求点分析出多个软件测试点, 最后根据测试点设计测试用例. 流程如下图:
在这里插入图片描述从软件功能需求出发, 无遗漏的识别出软件测试点是至关重要的, 这关乎到测试用例的测试覆盖率

为了更好的理解和掌握软件原始的业务需求, 软件工程师应在软件需求分析设计的时候就介入.

测试用例

1. 什么是测试用例(case)

测试用例是为了完成测试向被测试系统提供的一组集合, 测试用例包含了以下几个重要要素: 测试环境, 操作步骤, 测试数据, 预期结果, 序号, 级别, 标题.

测试环境: windows系统, chrome浏览器, 本地
操作步骤: 描述操作步骤
标题: 对测试用例进行简要描述, 明确测试的目的和功能。

2. 什么是Bug

当且仅当规格说明书(功能需求文档)存在, 而运行结果与说明书中描述不符合时, 即为Bug.

开发测试模型

1. 软件的生命周期

软件的生命周期有以下几个阶段:
需求分析, 规划, 设计, 编码, 测试, 运行维护.

  1. 需求分析: 分析需求的可行性, 完整性等, 测试人员参与需求分析, 了解原始业务需求, 便于提出测试关注点
  2. 规划: 规划开发测试人员, 开发测试周期, 上线时间等.
  3. 设计: 基于需求规格说明书, 进行系统设计和详细设计. 包括架构, 模块设计, 数据库设计等
  4. 编码: 开发人员编码完成功能
  5. 测试: 测试人员进行测试, 并编写测试报告.
  6. 运行维护: 产品上线出现问题后, 开发人员和测试人员一起定位问题, 解决问题.

2. 瀑布模型

在这里插入图片描述

  1. 瀑布模型是其它模型的基础, 每个阶段只进行一次, 是线性顺序的开发模式
  2. 优点:
    每个阶段分工明确, 产出清晰.
  3. 缺点:
    (1) 只依赖刚开始的一次需求调查, 无法及时适应需求的变更.
    (2) 风险只有在后期的测试阶段才会凸显出来, 无法在早期被发现并作出相应措施.
  4. 适用于小的, 开发周期短的项目.

3. 螺旋模型

在这里插入图片描述

  1. 在开发初期需求不明确时, 可以使用渐进式的开发模式, 螺旋模型是渐进式开发模式的典型代表.
  2. 这种开发模式适用于规模庞大, 风险大的项目. 螺旋模型不允许测试拥有独立的测试时间和阶段, 要求测试随着开发的迭代而迭代.
  3. 优点:
    (1) 严格的风险分析, 强调了每个开发阶段的质量
    (2) 提供了机会检讨项目是否有必要继续下去, 可以尽早发现风险并使用补正措施.
  4. 缺点:
    严格的风险预估, 风险分析和控制.要求数据分析师拥有一定的技术能力, 需要提供大量的人力和财力.

3. 增量和迭代

增量开发: 所谓增量开发是对一个项目中的功能, 完成一个之后再完成另一个功能.
迭代开发: 迭代开发是对一个项目中的功能, 在完成其中一个功能的一部分(未完全完成), 开始另一个功能的开发.

4. 敏捷开发

说起敏捷开发, 就需提到敏捷宣言.

个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中, 后者并非全无价值, 但我们更看重前者.

5. scrum

敏捷开发是一种思想, 敏捷开发有很多种方式, 最流行的是scrum
scrum中有三个角色, 分别是产品经理, 项目经理, 开发团队.

  1. 产品经理: 收集用户需求, 定义商业价值, 制定发布计划, 对产品服务
  2. 项目经理: 开各种会议, 为用户需求定义优先级, 制定规划, 即由谁开发, 由谁测试, 开发测试周期多长等.
  3. 开发团队: 负责项目的具体开发和测试.

scrum流程:

  1. 产品挤压(product backlog): 由产品经理负责维护的产品需求列表. 包含了待发开功能, 用户故事和缺陷修复等
  2. Sprint计划会议: 在每次迭代前进行的会议, 会议上确定迭代的目标和要完成的工作. 由项目经理确定用户需求优先级, 分配开发测试任务.
  3. Sprint: Sprint是一个固定的时间框架, 通常是2到4周, 我的理解是本次迭代. 在Sprint期间, 开发团队完成计划中的工作.
  4. 每日例会: 每天项目经理召集站立会议, 团队成员描述昨天的工作和今天的计划以及遇到的问题.
  5. 演示会议: 本次迭代任务完成后, 召开演示会议, 团队演示完成的工作. 记录反馈, 反馈由产品经理整理后, 形成新的需求, 在下一轮迭代中完成.
  6. 回顾会议: 项目团队对本次迭代进行总结, 发现不足并制定修改计划, 开始下一轮迭代.

6. 瀑布模型, 螺旋模型和敏捷开发的关系

瀑布模型和螺旋模型更注重计划、控制和文档, 适用于相对稳定的需求和风险可预测的项目.
敏捷开发更注重灵活性、快速交付和响应变化, 适用于需求变化频繁、风险不确定或需要快速上线的项目.
螺旋模型和敏捷开发都强调迭代和循环,但敏捷更强调团队协作和持续交付, 而螺旋模型更强调风险管理和适应性.

7. 软件测试V模型

在这里插入图片描述
用户需求: 产品经理收集用户需求形成软件需求
需求分析与系统设计: 验证需求是否正确, 确定系统编程语言和框架.
概要设计: 项目结构
详细设计: 每个接口, 设计哪些库表, 设计哪些任务.
单元测试: 测试每一个方法.
集成测试: 将一个功能中的多个方法集成起来进行测试.
系统测试: 测试整个系统中的所有功能, 测试功能之间是否会互相影响. 并对系统的性能进行测试. 是否达到系统要求的指标
验收测试: 产品经理进行验证. 查看系统是否符合用户需求.

特点: 左边是开发, 右边是测试, 类似于瀑布模型, 从编码开始分隔
优点: 测试被划分成多个类型.
缺点: 测试介入太晚, 发现错误的时机太晚

8. 软件测试W模型(双V模型)

为了弥补V模型的不足, 出现了双V模型

加粗样式实施: 部署运行项目.
交付: 将项目交付给用户.
验收测试设计: 测试人员在用户需求时就介入, 编写相应文档为验收测试做准备.
确认与系统测试设计: 为系统测试做准备.
集成测试设计: 为集成测试做准备
单元测试设计: 为单元测试做准备.

  1. 特点: W模型由两个V组成, 分别代表开发与测试. 在双V模型中, 更加注重验证和确认活动, 测试的对象不只是程序, 还有需求和设计. 测试与开发并行.
  2. 优点: 测试更早的介入, 有利于尽早发现并解决问题
  3. 缺点: 测试和开发还保持着先后关系, 开发完成之后测试工作才可以正式开始执行, 开发和测试在一定程度上还是串行的, 不能拥抱需求的变化, 不能适用于敏捷开发.

文章来源:https://blog.csdn.net/qq_62414152/article/details/135308571
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。