Camille-学习笔记-测试流程和测试设计

## 测试用例学习路线

```
@startmindmap
* 测试用例
** 黑盒测试方法论
*** 等价类
*** 边界值
*** 因果图
*** 判定表
*** 场景法
*** 基于模型的测试
** 白盒测试方法论
** 测试用例基础概念
** 测试用例设计
** 面试测试用例设计
** 常用测试策略与测试手段
@endmindmap
```

**测试用例设计:**
* 设计方法的选择
* 测试用例编写步骤
* 需求分析
* 测试用例编写
* 测试用例的粒度
* 测试用例评审

## 等价类划分法

* 等价类划分是一种重要的、常用的黑盒测试方法
* 不需要考虑程序的内部结构,只需要考虑程序的输入规格即可
* 它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性
* 用户所有可能输入的数据,划分成了若干个子集,然后从每一个子集当中选取少数具有代表性的数据作为测试用例
* 在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果


## 等价类分类

* 有效等价类:指符合《需求文档》,输入合理的数据集合
* 无效等价类:指不符合《需求文档》,输入不合理的数据集合
有效等价类+无效等价类=等价类

## 等价类划分原则

1. 规定输入的取值范围或个数时,划分一个有效和两个无效
2. 规定了输入的集合或规则必须要遵循的条件,则划分一个有效和一个无效
3. 输入条件是一个布尔值,则划分为一个有效和一个无效
4. 输入条件时一组数据,并且每一个输入的值做不同的处理,则划分若干个有效和一个无效
5. 输入条件规定了必须要遵循的某些规则下,则划分为一个有效和若干个无效
6. 不是所有的等价类都有无效等价类
## 等价类设计步骤

1. 先划分等价类:找出所有可能的分类
2. 确定有效等价类:需求中的条件
3. 确定无效等价类:与条件相反的情况,再找到特殊情况
4. 从各个分类中挑选测试用例数据
## 等价类总结

* 长度
* 类型
* 组成规则
* 是否为空
* 是否重复
* 是否去除空格
## 边界值分析法

* 大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部
* 为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果
* 边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力
* 边界值分析法是作为对等价类划分法的补充,测试用例来自等价类的边界

## 边界值确定

* 上点:边界上的点
* 离点:离上点最近的点
* 内点:在输入域内任意一个点
* 选取正好等于、刚好大于或刚好小于边界值作为测试数据
## 边界点划分规则

* 如果规定了输入域的取值范围
  * 选取刚好在范围边界的点
  * 刚好超过边界的点
* 如果规定了输入值的个数
  * 最大个数
  * 最小个数
  * 比最小个数少 1
  * 比最大个数多 1
* 如果规定了输入是一个有序的集合
  * 选取集合的第一个元素
  * 选取集合的最后一个元素

## 边界值总结

* 确定边界情况
* 选取正好等于、刚刚好大于或刚刚好小于边界值作为测试数据
* 确定各个值的等价类

## 因果图定义

* 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法
* 它适合于检查程序输入条件的各种组合情况
  * “因” —— 输入条件
  * “果” —— 输出结果
## 因果图适用场景

* 描述多种条件的组合
* 产生多个动作
## 因果图中的基本符号

* 恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现
* 非:若原因出现,则结果不出现;若原因不出现,则结果出现
* 或:有多个原因。若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现
* 与:有多个原因。若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现
## 因果图中的约束条件

* 互斥 E:a、b、c 只能有一个成立,但是可以都不成立
* 包含 I:a、b、c 中至少有一个成立
* 唯一 O:a、b、c 有且仅有一个成立
* 要求 R:如果 a 成立,则要求 b 必须也成立,其他的不约束
* 屏蔽 M:如果 a 成立的时候,强制 b 不成立,其他的不约束

## 因果图法基本步骤

* 找出所有的输入条件(因)
* 找出所有的输出条件(果)
* 明确所有输入条件之间的制约关系以及组合关系
* 明确所有输出条件之间的制约关系以及组合关系
* 找出什么样的输入条件组合会产生哪种输出结果
* 把因果图转换成判定表
* 为判定表中的每一列表示的情况设计测试用例

## 判定表法

* 因果图只是一种辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例
* 画因果图非常麻烦,影响测试效率,可以直接写判定表,进而编写测试用例

## 场景法概述

* 场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程
  * 基本流:按照正确的业务流程来实现的一条操作路径
  * 备选流:导致程序出现错误的操作流程
## 场景法用例设计步骤

* 根据需求规格说明,画出功能模块流程图;
* 根据流程图,描述出程序的基本流及备选流;
* 根据基本流和备选流生成不同的场景,构造场景列表;
* 对每一个场景生成相应的测试用例;
* 对生成的所有测试用例重新复审,去掉多余的测试用例;
* 测试用例确定后,为每一个测试用例确定测试数据值

## 确定基本流(购物网站)

1. 进入淘宝首页
2. 浏览商品
3. 进入单品页
4. 选择商品规格和数量
5. 加入购物车
6. 前往购物车
7. 选择商品
8. 结算,进入确认订单页
9. 提交订单
10. 付款成功
11. 等待收货
12. 确认收货

## 确定备选流

* 备选流 1:加入购物车时,不选择商品规格和型号,返回基本流第 4 步
* 备选流 2:加入购物车时,商品库存不足,返回基本流第 4 步
* 备选流 3:加入购物车时,未登录,登录后返回基本流第 3 步
* 备选流 4:加入购物车后,继续选购,返回基本流第 4 步
* 备选流 5:加入购物车,未选择商品,结算,返回基本流第 7 步
* 备选流 6:支付失败,返回基本流第 8 步
* 备选流 7:未选择商品加入购物车,退出购物,结束

## 构造场景

* 场景 1: 登录后成功购物(基本流)
* 场景 2: 未选择商品规格和型号就添加购物车(基本流 + 备选流 1)
* 场景 3: 选择的商品库存不足(基本流 + 备选流 2)
* 场景 4: 未登录添加购物车(基本流 + 备选流 3)
* 场景 5: 商品添加购物车后继续购物(基本流 + 备选流 4)
* 场景 6: 进入购物车,未选择商品直接结算(基本流 + 备选流 5)
* 场景 7: 支付过程出错(基本流 + 备选流 6)
* 场景 8: 没有添加商品到购物车(基本流 + 备选流 7)

## 设计方法的选择

* 任何情况下,都需要采用等价类划分法,将无限测试变成有限测试
* 在规定了数据范围的情况下,必须采用边界值分析法
* 如果需要关注它的主要功能和业务流程、业务逻辑是否正确实现,考虑使用场景法
* 如果含有输入条件的组合情况,考虑选用因果图和判定表法
* 采用错误推断法再追加测试用例

## 测试用例编写步骤

1. 划分功能模块
2. 正向功能验证
3. 单个功能项验证
4. 功能之间交互验证
5. 隐形需求

## 需求分析

* 帐号是手机号
* 手机号仅限制为国内常用的号段
* 密码必须为 数字+英文 的形式,字段为 8-12 个字符
* 账号密码都为空时,登录按钮置灰不可点击
* 点击登录按钮,发起登录请求
* 请求成功,跳转到首页
* 点击忘记密码跳转到找回密码页
## 测试用例编写

```
@startmindmap
* 登录功能
** 正向功能验证
** 界面验证
** 单个功能验证
*** 手机号输入框
**** 长度:等价类结合边界值分析测试数据
**** 类型:等价类分析测试数据
**** 是否必填:等价类分析测试数据
**** 数据约束:是否符合真实手机号的规则
*** 密码输入框
**** 长度:等价类结合边界值分析测试数据
**** 类型:等价类分析测试数据
**** 是否必填:等价类分析测试数据
**** 匹配性:等价类分析测试数据
*** 登录按钮
**** 不同的网络
**** 异常操作
*** 忘记密码按钮
**** 点击忘记密码跳转忘记密码页

left side

** 功能之间交互验证(场景分析)
*** 使用判定表分析手机号与密码填写组合场景是否覆盖完全
**** 手机号与密码都为空
*** 从登录业务逻辑角度,使用场景法补充场景
**** 手机号未注册
** 隐性需求
*** 密码密文展示
*** 账号互踢
*** 登录有效时间
*** 退出登录
*** 不同设备登录数据是否同步
@endmindmap
```
## 测试用例的粒度

* 测试用例可以写的很简单,也可以写的很复杂
* 最简单的测试用例是测试的纲要,仅仅指出要测试的内容
* 测试用例写的过于简单,则可能失去了测试用例的意义
* 测试用例写得过于复杂或详细,会带来两个问题:
  * 效率问题
  * 维护成本问题

## 测试用例评审

* 测试用例的本身的描述是否清晰,是否存在二义性
* 测试用例内容是否正确,是否与需求目标相一致
* 测试用例的期望结果是否确定、唯一
* 测试用例是否覆盖了所有的需求
* 测试用例是否具有可执行性
* 是否从用户层面来设计用户使用场景和业务流程的测试用例
* 场景测试用例是否覆盖最复杂的业务流程
* 用例设计是否包含了正面、反面的用例

## 思路

* 需求分析
* 界面
* 功能
* 易用性
* 兼容性
* 性能
* 安全性

startmindmap
* 面试测试用例设计思路
** 需求分析
*** 明确需求
*** 和面试官交流需求细节
** 界面测试
*** 页面布局设计和产品原型图一致
*** 页面文案正确
** 功能测试
*** 正向功能验证
*** 单个功能项验证
*** 功能之间交互验证
*** 接口验证
** 易用性测试
*** 功能操作是否简便
*** 页面布局是否美观合理
*** 提示语相关信息是否易于理解
** 兼容性测试
*** APP
**** 平台
**** 厂商
**** 系统版本
**** 屏幕大小与分辨率
*** WEB
**** 浏览器
**** 操作系统
**** 分辨率

left side

** 性能测试
*** 服务器性能测试
*** APP 客户端性能测试
** 安全性测试
*** 注入攻击
*** 加密
*** 权限
** APP 测试要点
*** 网络
*** 中断
*** 系统权限
** WEB 测试要点
*** 链接测试
*** 多个浏览器同时访问
@endmindmap

## 软件测试流程

* 完成软件测试工作的必要步骤
需求分析-测试计划-测试设计-测试执行-测试总结
## 测试计划模板

* 测试计划模版:https://docs.qq.com/doc/DV2hTamxJWnNDaUFF
## 测试计划编写要点

* 5W + H 原则
* why:为什么要进行这些测试
* what:测试哪些方面,不同阶段的工作内容
* when:测试不同阶段的起止时间
* where:相应文档,缺陷的存放位置,测试环境等
* who:项目有关人员组成,安排哪些测试人员进行测试
* how:如何去做,使用哪些测试工具以及测试方法进行测试
## 业务架构分析工具

* 思维导图
* plantuml

```
@startmindmap
* 登录
** 账号密码登录
*** 账号输入框
*** 密码输入框
*** 登录按钮
** 第三方登录
@endmindmap
```

```
@startuml
actor 用户

用户 -> 客户端: 点击账号密码登录
客户端 --> 用户: 登录界面
用户 -> 客户端: 输入帐号、密码,点击登录按钮
客户端 -> 客户端: 前端校验帐号和密码规则

alt 校验通过
客户端 -> 服务端: 传递帐号和密码
else
客户端 --> 用户: 返回校验后的提示信息
end

database 数据库

服务端 -> 数据库: 查询用户登录信息
数据库 --> 服务端: 返回查询结果
服务端 --> 客户端: 返回登录结果

alt 登录成功
客户端 --> 用户: 登录成功,返回我的页面,展示登录后的信息
else
客户端 --> 用户: 提示登录失败信息
end
@enduml
```

## Bug 判定标准
程序错误、程序漏洞、程序不完善

* 软件未达到客户需求文档的功能和性能
* 软件出现客户需求不能容忍的错误
* 软件的使用未能符合客户的习惯和工作环境
* 软件超出需求文档的范围

## 严重程度和优先级的关系

* 一般地,严重性程度高的软件缺陷具有较高的优先级
* 有时候严重性高的软件缺陷,优先级不一定高,甚至不需要处理
* 有时候一些严重性低的缺陷却需要及时处理,具有较高的优先级
# Bug 处理流程
## 不同角色的对 Bug 的职责
![image|753x448](upload://xDOobyKgx1PweHTbLU5EUNUKfSp.png)
## Bug 处理流程:
![image|800x243](upload://8UqdSy9um3KyS5dErpjyOB9tnyR.jpeg)
## Bug 处理意见:
![image|581x453](upload://3aOSbONUc0TjhbsLtPdgAlQxckD.png)

## Bug 报告

* 记录 Bug
* 跟踪 Bug
* 更好的和开发人员交流
## Bug 报告模版:
![image|800x788](upload://2N76G6xYXROdHzPvRu15oKtA0Ng.png)

## Bug 报告要素

```
1. Bug 编号
2. 所属产品
2. 发现的版本
3. 所属的模块
4. 提交人
5. 错误类型
6. 复现概率
7. 严重级别
8. 优先级
```

```
9. 标题:言简意赅说明是什么 bug
10. 内容(描述)
    - 测试环境
    - 前提条件
    - 复现步骤
    - 预期结果
    - 实际结果
11. 附件:截图、出错的 log 日志、测试用的数据
```
# 测试总结
## 测试报告作用

* 把测试的过程和结果写成文档
* 对发现的问题和缺陷进行分析
* 为纠正软件的存在的质量问题提供依据
* 为软件验收和交付打下基础

## 测试报告模板
* 测试报告模版:https://docs.qq.com/doc/DV3NTVGhtdUN0cVRw
## 总结要点

* 人力投入
* 用例覆盖情况
* Bug 的分类及数量统计
* 遗留 Bug 情况
* 测试风险
* 测试结论

# 业务架构分析工具 plantuml
## plantuml 介绍

* UML:统一建模语言
* plantuml:第三方插件工具
* plantuml 官网:https://plantuml.com/zh/
* plantuml 中文文档:https://ceshiren.com/t/topic/4530
* plantuml 在线绘图地址:https://plantuml.ceshiren.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈信号完整性分析

什么是信号完整性?在过去的低速时代,电平跳变时信号上升时间较长,通常几个 ns。器件间的互连线不至于影响电路的功能,没必要关心信号完整性问题。但在今天的高速时代,随着 IC输出开关速度的提高,很多都在皮秒级,不管信号周期如何,几乎所有设计都遇到了信号完整性问题。…

【ACL 2023】Enhancing Document-level EAE with Contextual Clues and Role Relevance

【ACL 2023】Enhancing Document-level Event Argument Extraction with Contextual Clues and Role Relevance 论文:https://aclanthology.org/2023.findings-acl.817/ 代码:https://github.com/LWL-cpu/SCPRG-master Abstract 与句子级推理相比&…

ZigBee学习——在官方例程基础实现点灯

IAR版本 :10.10.1 Z-stack版本 :3.0.2 文章目录 一、买的板子原理图二、实现过程2.1 重定义LED的物理映射(HAL层)2.2 创建LED事件(应用层)2.2.1 定义用户事件2.2.2 修改zclGenericApp_event_loop() 2.3 触发事件 一、买的板子原理图 二、实现过程 2.1 重定义LED的物理映射(HAL…

服务攻防-端口协议桌面应用QQWPS等RCEhydra口令猜解未授权检测

知识点: 1、端口协议-弱口令&未授权&攻击方式等 2、桌面应用-社交类&文档类&工具类等 章节点: 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间件&…

使用Logstash将MySQL中的数据同步至Elasticsearch

目录 1 使用docker安装ELK 1.1 安装Elasticsearch 1.2 安装Kibana 1.3 安装Logstash 2 数据同步 2.1 准备MySQL表和数据 2.2 运行Logstash 2.3 测试 3 Logstash报错(踩坑)记录 3.1 记录一 3.1.1 报错信息 3.1.2 报错原因 3.1.3 解决方案 3.2 记录二 3.2.1 报错信…

图像异或加密、解密的实现

很多论文提到了从左上角开始做异或,逐行推导得到结果。 解密过程是加密的逆过程。 先看其基本方法: 参考文献: A Chaotic System Based Image Encryption Scheme with Identical Encryption and Decryption Algorithm 大多数论文都用了这个思路,我们使用MATLAB实现代码…

Leetcode 热门百题斩(第一天)

介绍 针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。 1.两数之和(题号:1) 方法一 最先想到的就是两个for去遍历匹配。 class Solution {public int[] twoSum(int[]…

I2S、I2C、SPI和UART的区别

在嵌入式系统中,I2S(Inter-IC Sound)、I2C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)和UART(Universal Asynchronous Receiver-Transmitter)是常见的…

重写Sylar基于协程的服务器(2、配置模块的设计)

重写Sylar基于协程的服务器(2、配置模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…

vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.

vue3使用is动态切换组件,activeComponent用ref定义报错 Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with markRaw or using shallowRef ins…

学习日志以及个人总结 (16)

共用体 共用体 union 共用体名 { 成员列表; };//表示定义一个共用体类型 注意: 1.共用体 初始化 --- 只能给一个值,默认是给到第一个成员变量 2.共用体成员变量辅助 3.可以判断大小端 ----※!! 实际用途…

cesium 多边形渐变颜色

cesium画一个渐变颜色的多边形 方式一:用一张颜色渐变的图片作为材质,结合color属性,可设置多边形的颜色,达到渐变效果。图片指向正北方向。 viewer.entities.add({polygon: {hierarchy: Cesium.Cartesian3.fromDegreesArray([115…

bs4模块

bs4模块与案例 使用指南 bs4,全称BeautifulSoup 4,是Python中一个强大的网页解析库,它可以帮助我们方便地从网页中提取数据。bs4将复杂HTML文档转换成树形结构,每个节点都是Python对象,所有对象可以归纳为4种&#xf…

Springboot3.x+dubbo3.x+jdk17 开发的微服务框架

项目名字:Aspen 项目简介: 项目使用的jdk17、springboot3.1.2、dubbo3.2.10、nacos2.2.1、mybatis-flex1.7.7为基础搭建了一套简易的微服务框架 做这个项目的初衷就是心血来潮想试试dubbo3.X和springboot3.x和jdk17融合结果,简单来看效果还…

【PaddleSpeech】语音合成-男声

环境安装 系统:Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…

Python 异步任务队列实现

在实际开发中,我们经常需要进行异步任务的处理,以提高程序的效率和响应速度。本文介绍了使用 Python 中的 queue 模块和多线程实现一个简单的异步任务队列。通过该队列,我们可以异步执行任务,并在任务完成后进行回调处理。 代码实现 首先,我们定义了一些简单的示例函数,…

EBC金融英国CEO:高波动性周期下,如何寻找市场的稳定性?

利率主导的市场,将在2024年延续。目前,固收市场对于降息的定价,正通过利率传导至不同资产中。尽管市场迫切利用通胀去佐证降息,但各国央行仍囿于通胀目标的政策桎梏。政策和市场预期的博弈将继续牵动市场脉搏,引发价格…

基于SSM+MySQL的的新闻发布系统设计与实现

目录 项目简介 项目技术栈 项目运行环境 项目截图 代码截取 源码获取 项目简介 新闻发布系统是一款基于Servletjspjdbc的网站应用程序,旨在提供一个全面且高效的新闻发布平台。该系统主要包括后台管理和前台新闻展示两个平台,涵盖了新闻稿件的撰写…

充电桩项目实战:搞定多数据源!

你好,我是田哥 最近,我在对充电桩项目进行微服务升级中,既然是项目升级,难免会遇到各种各样的问题。比如:分布式事务问题、多数据源问题、分布式锁问题等。 项目技术栈: SpringSpring BootSpring Cloud Ali…

Backend - Django CSRF 跨域请求伪造

目录 一、CSRF & XSS (一)CSRF 1. 含义 2. 攻击原理 (1)浏览器特点 (2)攻击方式 (二)XSS 1. 含义 2. 攻击原理 (三)二者区别 二、Django Ajax…