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开发模型
瀑布模型
- 瀑布模型优缺点
敏捷模型
XP
SCRUM
敏捷开发总结
- 增量迭代
- 小步快跑
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
- Java
接口测试
- 接口全程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 测试方法与理论 - 软件测试相关推荐
- 14z app测试方法与技术 -软件测试
软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏. 本节内容:app测试方法与技术 文章目录 ...
- 软件测试方法划分等价类,软件测试基础-软件测试方法之等价类划分.ppt
软件测试基础-软件测试方法之等价类划分 知识回顾 - 软件测试方法 从是否执行被测程序来划分? 从是否针对系统内部结构来划分? 知识回顾 - 黑盒测试设计用例的方法 集合 什么是集合? 如:一箱苹果 ...
- 《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论...
本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第1章,第1.1节软件测试的基本理论,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...
- 软件测试的基本理论-移动端app测试-6
软件测试的基本理论-移动端app测试-6 一.移动app测试 1. 移动app测试概述 2.移动app测试要点 3, UI测试要点 1,界面布局 2,图形测试 3,内容测试 4, 功能测试 1,切换测 ...
- 学习软件测试需要掌握哪些内容?这篇文章告诉你
学习软件测试需要掌握哪些内容,主要取决于该岗位现在需要的技能有哪些,只有掌握了岗位需要的技能才能顺利地找到适合自己的工作,技术在不断更新,我们需要学习在实际工作中能够用到的企业级技术.那么学习软件测试 ...
- 《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.2节软件测试的发展...
本节书摘来自异步社区<软件测试技术大全:测试基础 流行工具 项目实战(第3版)>一书中的第1章,第1.2节软件测试的发展,作者陈能技 , 黄志国,更多章节内容可以访问云栖社区"异 ...
- 嵌入式软件测试(黑盒测试)-----三年嵌入式软件测试的理解
前言 文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要 ...
- 软件测试到底在学什么
一.软件测试理论 软件测试理论阶段,需要掌握熟悉测试流程,熟悉测试文档编写(测试用例.测试计划.测试报告),熟悉常见的测试方法和进行测试用例的设计,熟悉测试管理工具,建议大家多看看别人的测试用例,别人 ...
- 软件测试初学者精华(一)
转自http://blog.csdn.net/gslcn/article/details/1611283 作者: life0 发表日期: 2006-08-04 09:56 文章属性: 转 1.测试新手 ...
- 三年黑盒测试工程师对嵌入式软件测试的理解
文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要兼顾测 ...
最新文章
- VS2010静态编译
- mysql 编程处理数据类型_Mysql支持的数据类型(总结)
- set的使用03(较多的操作函数)
- Java中HashMap、LinkedHashMap和TreeMap区别使用场景
- 将Java类作为子进程运行
- cocos2d-lua3.7组件篇(三)-http通信demo
- mysql条件变量单引号_mysql语法
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!...
- 高通RFC适配RFFE-添加MIPI设备【转】
- opencv数字图像处理(1) - 灰度变换函数
- java .entryset_Java中map的entrySet()方法返回的是什么内容啊?有点晕
- 一些比较好用的网站整站下载工具
- 生成对抗网络 Generative Adversarial Nets(GAN)详解
- mac 中 caps lock和control键交换,以及alt键替换option方法
- 天猫30个店铺签到领喵币代码 亲测可用
- 2021年最新友价商城源码 优化实名认证模块 19套PC模板2套手机模板 服务市场 任务大厅
- ftp服务器 修改文件,ftp服务器修改文件属性的权限
- 前端与u3d的联调 -前端初学者使用vue与u3d联调的摸索和踩的坑,学习记录
- python如何给一个xls文件修改数据_Python-修改xls文件示例
- 京东上传图片到JD API接口