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

文章目录

  • 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. 瀑布模型

  • 瀑布模型优缺点

  1. 敏捷模型

  • XP

  • SCRUM

  • 敏捷开发总结

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

  • DevOps 生命周期

  • DevOps 对发布的影响

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

  • 持续集成 CI/持续交付 CD

  • CD与DevOps的关系


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


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

  • 项目管理

  • 软件项目管理的方法

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

    • 与产品沟通

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

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

      • 测试计划沟通
      • 环境对接
      • 熟悉业务
  • 项目实例

3 测试流程体系

1. 软件测试基本概念

  • 软件测试

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

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

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

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

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

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

2. 软件测试模型

  • V模型

    • V模型是瀑布模型的一种改进
    • V模型标明了测试过程中的不同阶段
  • V模型的优缺点

    • 优点

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

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

    • 优点

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

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

    • 优点

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

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

3. 软件测试工作流程

  • 传统测试流程

  • 系统测试流程

  • Bug管理流程

4. 测试左移和测试右移

  • 测试左移

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

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

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

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

4 测试技术体系

1. 软件测试分类


按开发阶段分类

  • 系统测试分类

  • 验收测试分类


按是否查看代码

  • 黑盒测试
  • 白盒测试

2. 分层测试体系

  • 自动化分层测试体系

    • 70% 单元测试
    • 20% 服务测试
    • 10% 用户界面测试
  • 单元测试方法

    • 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 黑盒测试方法论

  • 常用测试方法

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

  • 等价类

    • 输入域明确:把程序的输入域划分成若干子集
    • 分类:从每个部分中选区少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价与这一类中的其他值。
    • 常见分类:有效、无效等价类
  • 等价类划分案例

  • 用户名测试例子


  • 边界值

    • 根据经验大多数的错误都是来自于对边界值的处理不严谨,所以把边界值作为重点测试数据
    • 边界值测试法是对等价类的补充
  • 用边界值测试法补充测试用例


  • 因果图与判定表

  • 判定表概念

    • 一种表达因果关系的逻辑表达方式
    • 使用表格分类条件、中间结果、最终结果之间的关系
  • 判定表例子


  • 决策树

    • 判定表也可以用决策树表示
    • 决策树比因果图和判定表更好
    • 可以用流程图表示决策树
  • 因果图、判定表、决策树

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

  • 探索式测试

  • 探索式测试的认知

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

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

7 白盒测试方法论

  • 白盒测试的度量

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

  • 覆盖率统计的工具

    • emma
    • cobertura
    • jacoco
  • 插桩原理

  • JACOCO覆盖率报告

  • 流程覆盖

  • 精准化测试

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

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

1. 全程软件测试

2. 探索式测试

3. Google软件测试之道

4. 持续交付

5 不测的秘密

2 测试方法与理论 - 软件测试相关推荐

  1. 14z app测试方法与技术 -软件测试

    软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏. 本节内容:app测试方法与技术 文章目录 ...

  2. 软件测试方法划分等价类,软件测试基础-软件测试方法之等价类划分.ppt

    软件测试基础-软件测试方法之等价类划分 知识回顾 - 软件测试方法 从是否执行被测程序来划分? 从是否针对系统内部结构来划分? 知识回顾 - 黑盒测试设计用例的方法 集合 什么是集合? 如:一箱苹果 ...

  3. 《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论...

    本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第1章,第1.1节软件测试的基本理论,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  4. 软件测试的基本理论-移动端app测试-6

    软件测试的基本理论-移动端app测试-6 一.移动app测试 1. 移动app测试概述 2.移动app测试要点 3, UI测试要点 1,界面布局 2,图形测试 3,内容测试 4, 功能测试 1,切换测 ...

  5. 学习软件测试需要掌握哪些内容?这篇文章告诉你

    学习软件测试需要掌握哪些内容,主要取决于该岗位现在需要的技能有哪些,只有掌握了岗位需要的技能才能顺利地找到适合自己的工作,技术在不断更新,我们需要学习在实际工作中能够用到的企业级技术.那么学习软件测试 ...

  6. 《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.2节软件测试的发展...

    本节书摘来自异步社区<软件测试技术大全:测试基础 流行工具 项目实战(第3版)>一书中的第1章,第1.2节软件测试的发展,作者陈能技 , 黄志国,更多章节内容可以访问云栖社区"异 ...

  7. 嵌入式软件测试(黑盒测试)-----三年嵌入式软件测试的理解

    前言 文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要 ...

  8. 软件测试到底在学什么

    一.软件测试理论 软件测试理论阶段,需要掌握熟悉测试流程,熟悉测试文档编写(测试用例.测试计划.测试报告),熟悉常见的测试方法和进行测试用例的设计,熟悉测试管理工具,建议大家多看看别人的测试用例,别人 ...

  9. 软件测试初学者精华(一)

    转自http://blog.csdn.net/gslcn/article/details/1611283 作者: life0 发表日期: 2006-08-04 09:56 文章属性: 转 1.测试新手 ...

  10. 三年黑盒测试工程师对嵌入式软件测试的理解

    文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要兼顾测 ...

最新文章

  1. VS2010静态编译
  2. mysql 编程处理数据类型_Mysql支持的数据类型(总结)
  3. set的使用03(较多的操作函数)
  4. Java中HashMap、LinkedHashMap和TreeMap区别使用场景
  5. 将Java类作为子进程运行
  6. cocos2d-lua3.7组件篇(三)-http通信demo
  7. mysql条件变量单引号_mysql语法
  8. 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!...
  9. 高通RFC适配RFFE-添加MIPI设备【转】
  10. opencv数字图像处理(1) - 灰度变换函数
  11. java .entryset_Java中map的entrySet()方法返回的是什么内容啊?有点晕
  12. 一些比较好用的网站整站下载工具
  13. 生成对抗网络 Generative Adversarial Nets(GAN)详解
  14. mac 中 caps lock和control键交换,以及alt键替换option方法
  15. 天猫30个店铺签到领喵币代码 亲测可用
  16. 2021年最新友价商城源码 优化实名认证模块 19套PC模板2套手机模板 服务市场 任务大厅
  17. ftp服务器 修改文件,ftp服务器修改文件属性的权限
  18. 前端与u3d的联调 -前端初学者使用vue与u3d联调的摸索和踩的坑,学习记录
  19. python如何给一个xls文件修改数据_Python-修改xls文件示例
  20. 京东上传图片到JD API接口

热门文章

  1. Quartus II13.0的破解过程
  2. 使用iText处理pdf文件的入门级教程
  3. EL表达式和JSTL的介绍以及基本使用
  4. SwiftyJson 的初步理解
  5. 【AD】Altium Designer 原理图的绘制
  6. 2022 VMware下载安装教程
  7. 软件设计师考试感想随笔
  8. 谷歌浏览器加载外部 DLL 文件 关于chrome上的网银安全控件开发技术(chrome 调用本地dll)
  9. kali2018安装教程_Kali更新安装firefox教程
  10. matlab第六章课后答案,第六章习题及答案