2 测试方法与理论 - 软件测试

软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏。
本节内容:测试方法与理论基础知识。

文章目录

  • 1 软件开发流程
    • 软件
    • 软件开发流程的演变
      • 瀑布模型
      • 敏捷模型
      • DevOps
  • 2 项目管理与跨部门沟通协作
    • 项目管理
      • 软件项目管理的方法
    • 跨部门沟通协作
  • 3 测试流程体系
    • 1. 软件测试基本概念
      • 软件测试
      • 软件测试作用
      • 软件测试原则
      • 软件测试对象
      • 测试用例
    • 2. 软件测试模型
      • V模型
      • W模型
      • H模型
    • 3. 软件测试工作流程
      • 传统测试流程
      • 系统测试流程
      • Bug管理流程
    • 4. 测试左移和测试右移
      • 测试左移
      • 测试右移
  • 4 测试技术体系
    • 1. 软件测试分类
    • 2. 分层测试体系
      • 单元测试方法
      • 接口测试方法
      • UI测试方法
  • 5 常用测试平台
    • 1. 测试用例管理与bug管理平台
      • 测试用例管理平台 --jira
      • bug管理平台
    • 2. 代码管理平台 --gitlab
    • 3. 流程管理平台
      • 持续集成管理平台 --jenkins
      • 持续集成与持续交付
  • 6 黑盒测试方法论
    • 常用测试方法
      • 等价类
      • 边界值
      • 因果图与判定表
      • 决策树
      • 探索式测试
  • 7 白盒测试方法论
    • 白盒测试的度量
    • 代码覆盖率常见概念
    • 覆盖率统计的工具
    • 流程覆盖
    • 精准化测试
  • 8 测试经典书籍拆分讲解 5分钟
    • 1. 全程软件测试
    • 2. 探索式测试
    • 3. Google软件测试之道
    • 4. 持续交付
    • 5 不测的秘密

1 软件开发流程

  • 软件

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

  • 软件开发流程的演变

传统瀑布模型 --> 敏捷开发模型 --> DevOps开发模型

  1. 瀑布模型

2 测试方法与理论 - 软件测试_第1张图片
  • 瀑布模型优缺点
2 测试方法与理论 - 软件测试_第2张图片
  1. 敏捷模型

  • XP
    2 测试方法与理论 - 软件测试_第3张图片

  • SCRUM
    2 测试方法与理论 - 软件测试_第4张图片

  • 敏捷开发总结

    • 增量迭代
    • 小步快跑
  1. DevOps

2 测试方法与理论 - 软件测试_第5张图片
  • DevOps 生命周期
    2 测试方法与理论 - 软件测试_第6张图片

  • DevOps 对发布的影响

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

  • 持续集成 CI/持续交付 CD
    2 测试方法与理论 - 软件测试_第7张图片

  • CD与DevOps的关系
    2 测试方法与理论 - 软件测试_第8张图片


从 CI_CD 到 DevOps
CI/CD 是一种在应用开发阶段通过自动化的方式,频繁向客户交付应用的方法,其核心概念是持续集成、持续交付和持续部署。CI/CD 可以让持续的自动化与监控贯穿整个生命周期,覆盖从集成到测试再到交付与部署,与之相关联的事务通常被统称为“CI/CD 管道”,具体实施则由开发和运维团队以敏捷开发的方式协作。
https://my.oschina.net/u/4868096/blog/5233761


2 项目管理与跨部门沟通协作

  • 项目管理

2 测试方法与理论 - 软件测试_第9张图片
  • 软件项目管理的方法

    • 制定项目计划
    • 执行该计划并监控跟踪管理
    • 项目风险应对与问题解决
    • 项目收尾
  • 跨部门沟通协作

    • 与产品沟通

      • 需求评审会
      • 在分析需求阶段
      • 在测试用例编写阶段
      • 在测试过程中
    • 与研发沟通

      • 在分析需求阶段
      • 在测试用例编写阶段
      • 在测试过程中
      • 在线上监控发现bug时
    • 上下游配合测试

      • 测试计划沟通
      • 环境对接
      • 熟悉业务
  • 项目实例
    2 测试方法与理论 - 软件测试_第10张图片

3 测试流程体系

1. 软件测试基本概念

  • 软件测试

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

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

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

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

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

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

2. 软件测试模型

  • V模型

    • V模型是瀑布模型的一种改进
    • V模型标明了测试过程中的不同阶段
    • 2 测试方法与理论 - 软件测试_第11张图片
    • 2 测试方法与理论 - 软件测试_第12张图片
  • V模型的优缺点

    • 优点
      • 既有底层测试又有高层测试。
      • 将开发阶段清楚的表现出来,便于控制开发的过程。
    • 缺点
      • 容易让人误解为测试是在开发完成之后的一个过程。
      • 由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。
      • 如果需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。
  • W模型

    • W模型明确表示出了测试与开发的并行关系
    • W模型中测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
    • 2 测试方法与理论 - 软件测试_第13张图片
  • W模型的优缺点

    • 优点
      • 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试。
      • 更早的介入到软件开发中,能尽早的发现缺陷进行修复
      • 测试与开发独立起来,并与开发并行
    • 缺点
      • 无法支持迭代的开发模型
      • 对有些项目,开发过程中根本没有文档产生,故W模型无法使用
      • 对于需求和设计的测试技术要求很高,实践起来很困难
  • H模型

    • 软件开发中需求、设计、编码等活动被分阶段执行、但是实践中,他们并不是完全串行的,他们之间更多时候是交叉进行的,更多的事迭代执行
    • 把测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
    • 2 测试方法与理论 - 软件测试_第14张图片
  • H模型的优缺点

    • 优点

      • 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行
      • 软件测试活动可以尽早准备、尽早执行,具有很强的灵活性
    • 缺点

      • 测试就绪点分析困难
      • 对于整个项目组的人员要求非常高

3. 软件测试工作流程

  • 传统测试流程

  • 系统测试流程

2 测试方法与理论 - 软件测试_第15张图片
  • Bug管理流程

2 测试方法与理论 - 软件测试_第16张图片

4. 测试左移和测试右移

  • 测试左移

    • 左移是往测试之前的开发阶段移
    • 测试团队在软件开发周期早期就开始介入
    • 对代码进行测试
    • 从发现 bug 到预防 bug
  • 测试左移-质量保障手段

    • 代码评审(code review)
    • 代码审计
    • 单元测试
    • 自动化冒烟测试
    • 研发自测
  • 测试右移

    • 右移是往发布之后移
    • 产品上线后进行线上监控
  • 测试右移-线上监控

    • 闭环的线上问题反馈-检查-解决-更新流程
    • 更便捷的日志查看、回传服务
    • 丰富有效的log,便于问题的快速定位
    • 丰富的监控指标(例如业务异常点指标)
    • 业务监控(例如短信发送等)
    • 关键指标每日监控(服务器指标)
    • 生产数据监控(警报)

4 测试技术体系

1. 软件测试分类

2 测试方法与理论 - 软件测试_第17张图片

按开发阶段分类

  • 系统测试分类
    2 测试方法与理论 - 软件测试_第18张图片

  • 验收测试分类
    2 测试方法与理论 - 软件测试_第19张图片


按是否查看代码

  • 黑盒测试
    2 测试方法与理论 - 软件测试_第20张图片
  • 白盒测试

2. 分层测试体系

  • 自动化分层测试体系
    • 70% 单元测试
    • 20% 服务测试
    • 10% 用户界面测试
    • 2 测试方法与理论 - 软件测试_第21张图片
  • 单元测试方法

    • Java
      • JUnit
      • TestNG
    • Python
      • unittest
      • pytest

  • 接口测试

    • 接口全程Application Programming Interface,一般称作API
    • 是针对软件对外提供服务的接口的输入输出进行测试
    • 检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性
  • 接口测试方法

    • Charles、Fiddler
    • postman
    • Jmeter
    • loadRunner
    • python:Requests、HttpRunner
    • Java:HttpClient、RestAssured

  • UI测试方法

    • 手工方法:人工查看、操作
    • 自动化方法
      • web:selenium
      • app:appium

5 常用测试平台

1. 测试用例管理与bug管理平台

  • 测试用例管理平台 --jira

    • jira:推荐方案、定制型很强 --大企业,收费
    • redmine:推荐方案,开源,活跃,定制型很强 --中小企业使用
    • testlink:流行的测试用例管理平台,体验不太好
    • 其他:tapd、云效、禅道、gitlab、在线协作文档
    • 无协作模式:Excel、思维导图
  • bug管理平台

    • 通常与用例管理平台一致
    • 测试用例、bug都可以使用issue表达
    • 关联关系设定
    • 测试用例与bug的属性设定

2. 代码管理平台 --gitlab

  • 代码管理平台
    • gitlab:可本地部署的git代码管理平台,行业标准
    • subversion:SVN管理,已经过时
    • github:开源项目运作
    • bitbucket:与jira同属一家公司altassian

3. 流程管理平台

  • 持续集成管理平台 --jenkins

    • jenkins:持续集成与持续交付的主流平台
    • gitlab runner:gitlab的持续交付方案
    • github action:GitHub的开源方案
    • 自检devops平台:企业定制平台、tapd、云效等
  • 持续集成与持续交付

    • 研发
      • 构建、单元测试+覆盖率分析
      • 自动化代码审计
    • 运维:自动化部署
    • 测试
      • 接口测试
      • UI自动化测试
      • 专项测试自动化
      • 性能测试、安全测试

6 黑盒测试方法论

  • 常用测试方法

    • 等价类划分
    • 边界值分析
    • 因果图
    • 判定表
    • 决策树
    • 探索式测试

  • 等价类

    • 输入域明确:把程序的输入域划分成若干子集
    • 分类:从每个部分中选区少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价与这一类中的其他值。
    • 常见分类:有效、无效等价类
  • 等价类划分案例
    2 测试方法与理论 - 软件测试_第22张图片

  • 用户名测试例子
    2 测试方法与理论 - 软件测试_第23张图片


  • 边界值

    • 根据经验大多数的错误都是来自于对边界值的处理不严谨,所以把边界值作为重点测试数据
    • 边界值测试法是对等价类的补充
  • 用边界值测试法补充测试用例
    2 测试方法与理论 - 软件测试_第24张图片


  • 因果图与判定表

2 测试方法与理论 - 软件测试_第25张图片
  • 判定表概念

    • 一种表达因果关系的逻辑表达方式
    • 使用表格分类条件、中间结果、最终结果之间的关系
  • 判定表例子
    2 测试方法与理论 - 软件测试_第26张图片


  • 决策树

    • 判定表也可以用决策树表示
    • 决策树比因果图和判定表更好
    • 可以用流程图表示决策树
      2 测试方法与理论 - 软件测试_第27张图片
  • 因果图、判定表、决策树

    • 这三者本质一样用于表达流程关系,只是表现形式不同
    • 他们的含义其实就是编程逻辑 if else switch
    • 测试过程中可以用流程图去表达
    • 黑盒的流程图与白盒的路径流程是存在关联关系的

  • 探索式测试

2 测试方法与理论 - 软件测试_第28张图片
  • 探索式测试的认知

    • 探索式测试是一种基于上下文质量反馈的测试风格
    • 基于上进下文的反馈,适时调整测试执行
    • 探索式测试通常被认为是黑盒测试技术。在白盒测试中也可以应用类似的思想去实施(基于实时反馈的精准化测试)
  • 探索式测试的优缺点

    • 成本低,可以不用提前设计大量测试用例
    • 可以激发测试工程师的创造性,更快的发现问题
    • 对测试的覆盖度无法进行有效保障
    • 多数测试活动都是由探索式测试与脚本式用例结合

7 白盒测试方法论

  • 白盒测试的度量

    • 根据待测产品的内部实现细节来设计测试用例
    • 白盒测试的执行手段是可以涵盖单元测试、集成测试
    • 使用代码覆盖率作为白盒测试的主要度量指标
  • 代码覆盖率常见概念

2 测试方法与理论 - 软件测试_第29张图片
  • 覆盖率统计的工具

    • emma
    • cobertura
    • jacoco
  • 插桩原理
    2 测试方法与理论 - 软件测试_第30张图片

  • JACOCO覆盖率报告
    2 测试方法与理论 - 软件测试_第31张图片

  • 流程覆盖

2 测试方法与理论 - 软件测试_第32张图片
  • 精准化测试

    • 代码调用链与黑盒测试用例的关联
    • 根据代码变更自动分析影响范围
    • 黑盒测试过程中借助代码流程覆盖数据指导探索式测试
    • 利用线上数据推导有效测试用例
    • 代码流程分析与覆盖率统计

8 测试经典书籍拆分讲解 5分钟

1. 全程软件测试

2 测试方法与理论 - 软件测试_第33张图片

2. 探索式测试

2 测试方法与理论 - 软件测试_第34张图片

3. Google软件测试之道

2 测试方法与理论 - 软件测试_第35张图片

4. 持续交付

2 测试方法与理论 - 软件测试_第36张图片

5 不测的秘密

2 测试方法与理论 - 软件测试_第37张图片

你可能感兴趣的:(软件测试学习内容总结,软件测试,黑盒测试,测试类型)