测试用例 [软件测试 基础]

目录

测试用例

1. 概念

1.1 什么是测试用例

1.2 什么是要素

1.3 为什么需要测试用例

2. 设计测试用例的万能公式

2.1 常规思维 + 逆向思维 + 发散性思维

2.2 万能公式

3. 设计测试用例的方法

3.1 基于需求的设计方法 

3.2 具体的设计方法

3.3 更多用例练习


测试用例

1. 概念

1.1 什么是测试用例

// 测试用例 (Test Case) 是为了实施测试而被测试的系统提供的一组集合, 这组集合包含: 测试环境, 测试步骤, 测试数据, 预期结果等要素

1.2 什么是要素

// 我们在编写测试用例的时候, 每个用例需要给出这些要素对应的信息

// 要素包括: 用例编号, 标题, 测试方式, 功能模块, 重要性, 测试前提, 测试环境, 测试数据, 测试步骤, 期望结果等

1.3 为什么需要测试用例

1.3.1 测试中可能会遇到很多问题, 测试用例的出现急速解决这些问题, 例如:

// 不知道是否较全面的测试了所有功能

// 测试的覆盖率无法衡量

// 对新版本的重复测试很难实施

// 存在大量冗余测试影响测试效率

1.3.2 测试用例还可以避免测试人员被迫背锅 

2. 设计测试用例的万能公式

// 例如: 现在有一款产品, 要求我们对 "门锁" 设计测试用例

// 测试用例的设计, 最重要的一点就是保证功能是正确的

2.1 常规思维 + 逆向思维 + 发散性思维

// 正确设计测试用例的思想: 常规思维 + 逆向思维 + 发散性思维

// 设计测试用例的原则二 :

2.1.1 测试用例的编写不仅应当根据有效和预料到的输入情况, 而且也应该根据无效和未预料到的输入情况

2.1.2 检查程序是否 "未做其应该做的" 仅是成功的一半, 测试的另一半是检查程序是否 "做了其不应该做的"

2.1.3 计划测试工作时不应默许假定不会发生错误

2.2 万能公式

// 设计测试用例的万能公式:

// 功能测试 + 界面测试 + 性能测试 + 兼容性测试 + 易用性测试 + 安全测试

2.2.1 功能测试

// 功能测试时一个试图发现程序与其外部规则说明之间存在不一致的过程

// 从产品功能角度出发, 验证功能是否是正确的

2.2.2 界面测试

// 对软件界面上所有的内容都需要进行测试

// 界面涉及到的内容: 元素 (大小, 颜色, 形状, 材质)

// 要求: 整体界面测试界面的实现与设计图要求一致, 界面元素测试

2.2.3 性能测试

// 性能测试和功能测试的区别是: 功能测试检查软件是否做了, 性能测试测试软件做的好不好

// 通常为一些极端的情况验证功能是否是正常的

2.2.4 兼容性测试

// 软件是部署在硬件系统之上, 并依赖所需的软件环境. 软件是否能够在不同环境下正确运行需要测试人员进行验证

// 选取标准: 优先选择使用当前产品 top 级别的机型进行测试; 选择主流的浏览器/机型进行测试

2.2.5 易用性测试

// 易用性测试的标准是检查产品是否具备简单易上手的属性

2.2.6 安全测试

// 安全测试和性能测试一样都是比较大的领域

// 常见的安全问题: 隐私数据明文显示; 参数未强校验导致 SQL 注入; 越权: 普通用户也可以执行管理员权限的操作

// 除了万能公式外, 还有一个比较常用的测试类型: 弱网测试, 安装卸载测试

// 弱网测试: 主要是为了尽可能保证用户体验

// 借助抓包工具来模拟实现弱网测试 (fiddle, charles)

// 安装卸载测试: 针对需要部署的软件, 除了软件功能外, 我们还需要关注软件的能够成功完成安装和卸载

// 安装: 安装包是否可以安装, 卸载之后是否可以继续安装, 重复安装...

// 卸载: 安装完成后卸载, 安装一半后卸载, 卸载一次后继续安装继续卸载

// 测试接口: URL, 请求参数, 请求方法, 响应

3. 设计测试用例的方法

// 以下都是针对黑盒测试用例设计的测试方法

3.1 基于需求的设计方法 

// 分为: 功能相关和非功能相关

// 基于新需求的设计方法也是总的设计测试用例的方法, 在工作中, 我们需要参考需求文档/产品规格说明书来设计测试用例

// 测试人员街道需求之后, 要对需求进行分析和验证, 从合理的需求中进一步分析细化需求, 从细化的需求中找到测试点. 

3.1.1 明确需求中的功能点

3.1.2 结合万能公式设计测试点

3.2 具体的设计方法

3.2.1 等价类

// 依据需求将输入划分为若干个等价类, 从等价类中选出一个测试用例, 如果这个测试用例测试通过, 则认为所代表的等价类测试通过, 这样就可以用较少的测试用例达到尽量多的功能覆盖, 解决了不能穷举测试的问题

// 等价类分为: 有效等价类; 无效等价类

// 有效等价类: 满足用户需求的数据集合

// 无效等价类: 不满足用户需求的数据集合

// 如何通过等价类的方法设计测试用例: 1. 充分理解需求; 2. 划分出有效等价类和无效等价类; 3. 从有效等价类中抽取一个测试用例测试, 从无效等价类中抽取一个进行测试; 4. 组合有效等价类, 组合无效等价类

3.2.2 边界值

// 边界值包括: 边界值 + 次边界值

// 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法, 通常边界值分析法是作为对等价类划分法的补充

// 主要测试的点: 上点, 离点, 内点

// 上点: 边界上的点, 不管是开区间, 闭区间, 还是半开半闭

// 内点: 边界内的点, 不管是开区间, 闭区间, 还是半开半闭

// 离点: 边界左右的一个点, 如果是闭区间, 离点就是范围外的点, 如果是开区间, 离点就是范围内的点

// 设计测试用例的步骤: 1. 充分理解需求; 2. 找离点, 内点, 上点; 3. 针对离点, 内点, 上点设计测试用例

3.2.3 正交法

// 正交法的目的是为了减少用例数目, 用尽量少的用例覆盖输入的两两组合

// 可以使用 pairs 设计工具来设计正交表

// 步骤: 1) 在微软自带的 Excel 中输入 因素 和 水平; 2) 复制到 allpairs.exe 同级目录下的 .txt 文档中直接保存; 3) 在黑窗口输入命令 allpairs.exe 空格 .txt 文档 > 新命名一个用来保存正交表的 .txt 文档 回车

// 在根据生成好的正交表来编写测试用例的同时也要继续补全重要的测试用例

// allpairs 工具生成的正交表和实际的正交表会有一定的出入, 但是不影响整体的情况

3.2.4 判定表法

// 通过具体的方法能够将测试用例设计的更急完整和规范, 通过判定表法我们可以非常容易的编写测试用例 (思路清晰)

// 判定表是一种表达逻辑判断的工具

// 根据判定表法设计测试用例的步骤: 1) 确认需求中输入条件和输出条件; 2) 找出输入条件和输出条件之间的关系; 3) 画判定表; 4) 根据判定表编写测试用例

3.2.5 场景法

// 场景法一般包含基本流 (基本事件流) 和备用流 (备用事件流)

// 现在的软件几乎都是用事件触发来控制流程的, 实践触发时的情景形成了场景, 而同一事件不同的触发顺序和处理结果就形成了事件流

// 通过运用场景来对系统的功能点或业务流程的描述, 从而提高测试效果的一种方法

3.2.6 错误猜测法

// 对被测试软件的需求理解以及设计的理解, 过往经验以及个人直觉, 推测出软件可能存在的缺陷, 从而针对性地设计测试用例的方法

// 强调的是对测试软件的需求理解以及设计实现的细节把握, 还有个人的经验和直觉

// 和目前流行的 "探索式测试方法" 的基本思想一致, 这类方法在敏捷开发模式下的投入产出比很高, 被广泛应用于测试

3.3 更多用例练习

3.3.1 命令行程序

// 关于 Windows, Linux 系统命令设计测试用例

3.3.2 web 程序

// 使用 postman 进行测试

// postman 具体安装及使用点击下面链接跳转

// postman 安装及使用

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

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

相关文章

Jupyter notebook定制字体

一、生成配置文件 运行Anaconda Powershell Prompt终端,输入下面一行代码: jupyter notebook --generate-config 将生成文件“C:\Users\XXX\.jupyter\jupyter_notebook_config.py”,XXX为计算机账户名字。 二、修改配置文件 c.NotebookAp…

miniconda安装R语言图文教程(详细步骤)

本篇教程介绍,如何在Windows使用miniconda安装R语言。 一、创建1个conda 虚拟环境 # 创建虚拟环境 conda create -n r_env # 激活虚拟环境 conda activate r_env二、安装 R 语言 conda install -c r r-ggplot2三、运行测试 检查安装: 输入 R 进入 R 的交互式命令行,检查是…

【day1】AI软件测试学习笔记

以下为整理的 AI软件测试学习笔记,涵盖性能测试工具链、AI大模型应用及开发实践,分为四大模块: 一、性能测试工具链与数据分析 1. 工具链整合效果 JMeter InfluxDB Grafana JMeter压测数据存储至云端InfluxDB,实现分布式压测和…

WPF 资源加载问题:真是 XAML 的锅吗?

你的观察很敏锐!确实,在 WPF 项目中,.cs 文件主要负责逻辑实现,而资源加载的问题通常跟 XAML(以及它背后的 .csproj 配置)关系更大。我会围绕这个观点,用 CSDN 博客风格详细解释一下 .cs、XAML …

C++17模板编程与if constexpr深度解析

一、原理深化 1.1 模板编程 1.1.1 编译器如何处理模板(补充) 模板的实例化机制存在两种模式: 隐式实例化:编译器在遇到模板具体使用时自动生成代码,可能导致多翻译单元重复实例化,增加编译时间。显式实…

408 计算机网络 知识点记忆(6)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…

MySQL学习笔记十四

第十六章创建高级联结 16.1使用表别名 输入: SELECT CONCAT(vend_name,(,RTRIM(vend_country),)) AS vend_title FROM vendors ORDER BY vend_name; 输出: 输入: SELECT cust_name, cust_contact FROM customers AS c, orders AS o, or…

Spring MVC 框架 的核心概念、组件关系及流程的详细说明,并附表格总结

以下是 Spring MVC 框架 的核心概念、组件关系及流程的详细说明,并附表格总结: 1. 核心理念 Spring MVC 是基于 MVC(Model-View-Controller)设计模式 的 Web 框架,其核心思想是 解耦: Model:数…

Android里蓝牙使用流程以及问题详解

一、基础流程 请简述 Android 蓝牙开发的基本流程 1. 权限处理:动态申请蓝牙和定位权限(注意Android 12新权限) 2. 初始化蓝牙适配器:通过BluetoothManager获取BluetoothAdapter 3. 设备发现:- 注册BroadcastReceive…

OpenWrt 上安装Tailscale

在 OpenWrt 上安装 Tailscale 非常简单,主要步骤如下: 1. 确保 OpenWrt 设备可联网 首先,确保你的 OpenWrt 设备已经联网,可以访问外网,并且 SSH 进入你的路由器(通常是 192.168.1.1)&#xff…

蓝桥杯刷题总结 + 应赛技巧

当各位小伙伴们看到这篇文章的时候想必蓝桥杯也快开赛了,那么本篇文章博主就来总结一下一些蓝桥杯的应赛技巧,那么依旧先来走个流程 那么接下来我们分成几个板块进行总结 首先是一些基本语法 编程语言的基本语法 首先是数组,在存数据的时候…

TCP重传率高与传输延迟问题

目录标题 排查步骤:TCP重传率高与传输延迟问题v1.0通过 rate(node_netstat_Tcp_RetransSegs[3m]) 排查 TCP 重传问题的步骤1. **指标含义与初步分析**2. **关联指标排查**3. **定位具体问题源**4. **解决方案**5. **验证与监控** v2.0一、基础检查二、网络层分析三、…

【LeetCode 热题100】73:矩阵置零(详细解析)(Go语言版)

🚀 力扣热题 73:矩阵置零(详解 多种解法) 📌 题目描述 给定一个 m x n 的整数矩阵 matrix,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请你 原地 使用常量空间解决。 &#x1f3a…

组播网络构建:IGMP、PIM 原理及应用实践

IP组播基础 组播基本架构 组播IP地址 一个组播IP地址并不是表示具体的某台主机,而是一组主机的集合,主机声明加入某组播组即标识自己需要接收目的地址为该组播地址的数据IP组播常见模型分为ASM模型和SSM模型ASM:成员接收任意源组播数据&…

Unity UGUI使用手册

概述 UGUI(Unity Graphical User Interface) :Unity 图像用户界面 在游戏开发中,我们经常需要搭建一些图形用户界面。Unity内置的UGUI可以帮助开发者可视化地拼接界面,提高开发效率。UGUI提供不同样式的UI组件,并且封装了对应功能的API&am…

Python web程序在服务器上面部署详细步骤

在服务器上部署Python web程序通常涉及以下步骤: 设置服务器环境: 选择合适的服务器,如AWS EC2、DigitalOcean Droplet等。配置服务器操作系统,例如Ubuntu、CentOS等。安装必要的软件,如Python、pip、git等。 准备Python web程序…

条件生成对抗网络(Conditional GAN, CGAN)原理及实现(pytorch版)

CGAN 原理及实现 一、CGAN 原理1.1 基本概念1.2 与传统GAN的区别1.3 目标函数1.4 损失函数1.5 条件信息的融合方式1.6 与其他GAN变体的对比1.7 CGAN的应用1.8 改进与变体 二、CGAN 实现2.1 导包2.2 数据加载和处理2.3 构建生成器2.4 构建判别器2.5 训练和保存模型2.6 绘制训练损…

Go语言比较递归和循环执行效率

一、概念 1.递归 递归是指一个函数在其定义中直接或间接调用自身的编程方法 。简单来说,就是函数自己调用自己。递归主要用于将复杂的问题分解为较小的、相同类型的子问题,通过不断缩小问题的规模,直到遇到一个最简单、最基础的情况&#x…

keepalived高可用介绍

keepalived 是 Linux 一个轻量级的高可用解决方案,提供了心跳检测和资源接管、检测集群中的系统服务,在集群节点间转移共享IP 地址的所有者等。 工作原理 keepalived 通过 VRRP(virtual router redundancy protocol)虚拟路由冗余…

数据分享:汽车测评数据

说明:如需数据可以直接到文章最后关注获取。 1.数据背景 Car Evaluation汽车测评数据集是一个经典的机器学习数据集,最初由 Marko Bohanec 和 Blaz Zupan 创建,并在 1997 年发表于论文 "Classifier learning from examples: Common …