如何设计一个测试用例
前言👀~
上一章我们介绍了什么是软件测试以及软件测试的一些基础概念,今天来聊聊如何设计一个测试用例,涉及到黑盒测试的测试方法
基于需求进行测试用例的设计
基于需求的具体设计方法
等价类
边界值
判定表法
正交表法
场景设计法
错误猜测法
如何模拟弱网?
测试用例设计万能公式
如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
个人主页:N_0050-CSDN博客
相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客 java EE_N_0050的博客-CSDN博客
基于需求进行测试用例的设计
首先回顾一下之前说的,需求是测试人员进行测试的依据,首先对需求进行分析是否合理是否完整,然后细化需求,从需求中提取出测试项,然后从每一个测试项从提取出测试点,然后根据测试点设计测试用例。基于需求设计测试用例属于大概的设计,而且是针对有需求文档的时候来设计测试用例,所以是针对需求进行了大概的测试,可能会出现大量的问题
功能需求测试分析:
从界面考虑:列出测试点,例如页面是否美观、页面布局是否合理、文字大小、文字格式必须正确、界面中各组件是否都正常等
从业务流程相关(需求规格说明书)考虑:列出对应的测试点,例如一个登录模块,首先手机号是否正确长度和格式是否符合要求,密码的格式等,如果没有需求规格说明书就对功能进行分析
非功能需求测试分析:
兼容性(操作系统)、性能(接口相关)、安全性(SQL注入等)、可移植性、易用性等
注意不同的项目类型对各个非功能需求是不一样的!
客户端软件:对功能要求简单,对兼容性和稳定性较低,可移植性有一定的要求
企业软件:对功能要求有一定的要求,但是整体上看,对性能,安全性,兼容性要求不高
商业软件:对功能,安全性,兼容性,可靠性等都有很高的要求
基于需求的具体设计方法
以下的内容涉及的是黑盒测试用例的设计方法!
等价类
根据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例/从每个类中抽取一个测试点,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题
例子:例如图书馆中的书籍分为几个大类,历史、人文、政治、经济、计算机等,我们去到历史这个区域挑选书的时候,随便挑一本书然后看看这本书属于什么类型的,如果是属于历史我们则可以等价认为这里的书都是属于历史类型的
等价类分为有效等价类和无效等价类:
有效等价类:根据需求说明书,满足需求的集合,例如账号的输入要求6-18位的数字,输入8位输入10位满足用户需求
无效等价类:根据需求说明书,不满足需求的集合,例如账号的输入要求6-18位的数字,输入20位不满足用户需求
总结:等价类就是根据需求将输入区域分为若干个等价类,然后从等价类中选出一个测试用例进行测试,测试通过则可认为是有效等价类反之无效,这也解决了不能穷举测试的问题。但是等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充
等价类思想设计测试用例步骤:大前提一定是充分理解需求,然后划分有效等价类和无效等价类,然后各从中抽取一个数据设计测试用例
边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充(这个看懂就能理解了),这种情况下,其测试用例来自等价类的边界
例子:还是账号的输入要求大于6-小于等于18位的数字,输入7位-18位满足用户需求,但是输入6位呢18位呢(上点),输入7位呢输入19位呢(离点),所以引入边界值来补充等价类测试的健全
边界值设计测试用例步骤:大前提一定是充分理解需求,然后找边界点分为上点(上面的6和18)和离点(上面的7和19),然后针对上、离、内点三者各设计一个测试用例。可以看出会将等价类和边界值结合起来使用,在实际的测试设计中就是这样
判定表法
其实判定表是来源于因果图法,首先画出因果图将其转换为判定表,我觉得画因果图没什么必要所以直接叫判定表法,因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关 系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、 程序的输出又依赖于输入条件的各种情况
逻辑关系:其实就是&、|、==、!
与:所有条件必须满足,一个条件为假,结果就为假
或:一个条件为真结果就为真,条件都假则全假
恒等:条件为真,结果一定真
非:条件为假,结果为真
判定表法设计测试用例步骤:大前提一定是充分理解需求,确定输入条件和输出条件,找出输入条件和输出条件之间的关系,然后画判定表,根据判断表设计测试用例
使用判定表法设计测试用例可以帮助测试人员理清输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间
正交表法
由于判定表法设计出来的用例太多了,引出正交表法,目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合
正交表的构成:
正交表的行表示要做试验的次数,可以理解为测试用例的个数
正交表的列表示最多允许安排的因素的个数
因素数(Factors):正交表中列的个数,用C代表
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”,用T代表
因素:在一项试验中,凡欲考察的变量称为因素(变量),也就是需求中的变量,也可以看作是输入条件
水平:在试验范围内,因素被考察的值称为水平(变量的取值),也就是变量的取值,也可以看作是输入条件的可选项
正交表的表示形式: L=行数(水平数*因素数) L=N(TC)
正交表的性质:
每一列中,不同数字出现的次数相等,下图中的111,222,333
任意两列中数字的排列方式齐全且出现的次数相等,下图中的11,12,13、21,22,23等
正交表法设计测试用例步骤:
充分理解需求->确定因素水平->画正交表->补充正交表->将正交表转为测试用例
如何设计正交表以及如何生成正交表?
使用allpairs工具生成正交表,类似工具也可以使用微软的PICT
详细步骤:首先先在excel中把因素和水平都写出来(也可以选择直接在记事本中写),然后把这些内容拷贝到记事本中,然后把这个记事本放到你安装allpairs的路径下。接着使用cmd定位到allpairs的路径下,然后输入allpairs.exe 输入文件名 > 新的文件名(不会覆盖掉之前的)
其中~表示此时这个取值可填写也可以是不填写,并且你会发现没有生成都不填写的情况,这种情况一般不常见也没意义
使用allpairs工具生成正交表流程:
1.找出因素和水平
2.设计正交表和生成正交表
3.根据正交表设计测试用例
4.补充其他测试用例
场景设计法
同一事件不同的触 发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者 设计测试用例,使测试用例更容易理解和执行。通常情况需要 把用户常用的功能模块串起来进行测试的时候使用场景设计法
针对一个完整的操作流程我们可以分为主事件流和次事件流去设计测试用例
主事件流:简单理解为按主事件去执行的所有步骤
次事件流:简单理解为从主事件中任意一个步骤分支出来的一个新事件流
例子:你去ATM机取款,完整流程应该是插卡、输入密码、选择业务、输入取款金额、等待返回、取卡,然后在插卡的时候可能用户插入的卡是老人卡或者饭卡以及非本行卡等,接下来输入密码又可能输入密码错误、输入次数上限等,选择业务选择存款、查询、流水等,输入取款金额的时候非整数或ATM没这么多等,等待返回的时候出现故障,取卡出现故障,对于这些从主事件中分支出来的情况我们可以看作次事件流,我们要针对这些情况设计测试用例,保证覆盖到这些情况
错误猜测法
错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉
如何模拟弱网?
这里我使用fidder工具演示
接着下一步
进入后往下找,一个表示上传的速度和下载的速度
测试用例设计万能公式
针对没有需求的案例设计测试用例:功能测试+界面测试+兼容性测试+性能测试+易用性测试+安全测试
以上便是本章内容关于如何设计一个测试用例,在有需求或没有需求的情况下我们该如何进行设计,下一章我们对测试进行分类讨论💕
相关文章:
如何设计一个测试用例
前言👀~ 上一章我们介绍了什么是软件测试以及软件测试的一些基础概念,今天来聊聊如何设计一个测试用例,涉及到黑盒测试的测试方法 基于需求进行测试用例的设计 基于需求的具体设计方法 等价类 边界值 判定表法 正交表法 场景设计法 …...
黄金和原油市场波动背后的经济信号
黄金市场的波动与经济数据影响 周四,黄金市场经历了一天内的剧烈波动,从早盘的高点到纽约时段的急剧下跌。现货黄金价格最初上涨至2462.29美元/盎司,但随后迅速跌至最低的2434.72美元/盎司。最终,黄金收盘价报2445.84美元/盎司&am…...
【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
目录 编辑 第一部分:插值的基本原理及应用 1. 插值的基本原理 1.1 插值多项式 1.2 拉格朗日插值 1.3 牛顿插值 1.4 样条插值 2. 插值的Python实现 2.1 使用 NumPy 进行插值 2.2 使用 SciPy 进行插值 2.2.1 一维插值 编辑 2.2.2 二维插值 3. 插值…...
PCL-基于超体聚类的LCCP点云分割
目录 一、LCCP方法二、代码实现三、实验结果四、总结五、相关链接 一、LCCP方法 LCCP指的是Local Convexity-Constrained Patch,即局部凸约束补丁的意思。LCCP方法的基本思想是在图像中找到局部区域内的凸结构,并将这些结构用于分割图像或提取特征。这种…...
git 推送时出现错误 Locking support detected on remote “origin“
背景:代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番,其中有人提到可能时服务器磁盘满了,连到服务器上 df -h 查看, 发现根目录已经写满了: 使用命令行: d…...
劳动仲裁经验篇【赶紧收藏】
【劳动仲裁】纯经验干货分享,点个关注防止需要时找不到! 当公司决定搞你心态,变相逼退你时,无非就那么些手段,只要你能正确应对,并做好收集证据的准备,就不住畏惧。合理利用法律的武器维护自身…...
QT多媒体编程(一)——音频编程知识详解及MP3音频播放器Demo
目录 引言 一、QtMultimedia模块简介 主要类和功能 二、QtMultimedia相关类及函数解析 QAudioInput QAudioOutput QAudioFormat QMediaPlayer QMediaPlaylist QCamera 三、音频项目实战Demo UI界面 核心代码 运行结果 四、结论 引言 在数字时代,音频…...
MySQL使用教程 最最最实用的零基础教程 直接从安装开始教!!!!
数据构成了我们日益数字化的社会基础。想象一下,从移动应用和银行系统到搜索引擎,再到如 ChatGPT 这样的先进人工智能聊天机器人,这些工具若没有数据支撑,将寸步难行。你有没有好奇过这些海量数据都存放在哪里呢?答案正…...
pycharm怎么使用Anaconda和配置
打开Anaconda Prompt 要删除 Conda 环境 yolov5sconda,你可以使用以下命令: conda remove --name yolov5sconda --all这个命令会删除名为 yolov5sconda 的整个环境,包括其中安装的所有包和依赖项。请在命令提示符或终端中运行此命令。执行此…...
android中打包apk体积优化方案
1.在配置文件AndroidManifest中新增 android:extractNativeLibs"true" 2.在模块build文件下配置支持的cpu,一般配置64的就行了,多配一种so库体积大一倍,择优。 ndk { abiFilters arm64-v8a } 3.在模块builde文件下配置混淆除去无用的资源文件 注:三种…...
Kubernetes常见的3种部署方式
Kubernetes常见的3种部署方式 1. kubeadm2. 二进制包安装3. Minikube💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)作为容器编排领域的领导者,提供了多种部署方式以适应不同场景的需求。 1. kubeadm 简介:Kubernetes官方推荐的集群部署工具。特点:简单易用…...
什么情况?我代码没了
前两天检视代码时,发现PR里面有两个提交的描述信息一模一样,于是我提出应该将这两个提交合并成一个,保持提交树的清晰。 1 先储存起来! 而同事这时正在开发别的特性,工作区不是干净的,没法直接执行 git r…...
关于Unity四种合批技术详解
文章目录 一.静态合批(StaticBatching)1.启用静态合批2.举例说明3.静态合批的限制4.静态合批的优点缺点5.动态指定物品合批 二.动态合批(Dynamic Batching)1.启用动态合批2.合批规则3.举例说明4.使用限制 三.GPU Instancing1.启用GPU Instancing2.启用限制3.举例说明 四.SRP Ba…...
自定义注解+拦截器+redis限流
逻辑:写一个注解,自定义在多少秒内限制访问多少次。 自定义拦截器,对于加了注解的请求,在执行方法前。先检查有没有注解,如果有注解就将请求的ipurl拼接作为key。 查询redis中有没有该key,没有就存入&…...
Springcloud物流配送后台-计算机毕业设计源码69809
目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 物流配送后台系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2 数据修改流程 2.2.3 数据…...
【Java面试篇】数据埋点监控页面pv的SDK接口实现
面试题如下: 题目要求你实现一个 Monitor.counter(String code, String dim) 接口,用于监控数据统计。 具体要求: 数据聚合: 你需要按照 code 和 dim 的组合进行数据聚合, code 代表监控项的唯一标识, dim 为自定义维度。上报频率: 每分钟上报一次聚合后的数据。数据保证…...
vue3直播视频流easy-player
vue3直播视频流easy-player <script src"/easyPlayer/EasyPlayer-element.min.js"></script> easyPlayer文件下载地址 https://download.csdn.net/download/weixin_42120669/89605739 <template><div class"container"><div …...
Python笔试面试题AI答之面向对象(3)
文章目录 12.Python中OOPS是什么?1. 类(Class)2. 对象(Object)3. 面向对象编程的主要特性4. 面向对象编程的优点 13.解释一下Python中的继承?继承的基本语法继承的特性继承的类型 14. 什么是封装࿱…...
vulnhub靶场serial-php渗透(蜥蜴细!)
目录 一、信息收集 1.探测主机存活(目标主机IP地址) 2.访问web服务 3.后台目录和端口扫描 4.解析bak.zip源码 二、漏洞利用 1.构造payload 2.通过bp的repeater模块 3.get shell 4.获取反弹shell 三、提升权限 1. 查看系统版本,内核…...
Qt Designer,仿作一个ui界面的练习(一):界面的基本布局
初学不要太复杂,先做一个结构简单的,大致规划一下功能分区,绘制草图: 最终的效果: 界面主要由顶边栏、侧边栏、内容区构成。顶边栏左边是logo,右边是时钟显示。侧边栏最上边是切换按钮,用以动画…...
《深入了解 Postman 接口测试工具》
在现代 Web 开发中,接口测试是确保系统稳定性和可靠性的关键环节。Postman 作为一款强大的接口测试工具,为开发者和测试人员提供了便捷、高效的测试体验。本文将深入详解 Postman 的各项功能和使用方法。 一、Postman 简介 Postman 是一款功能丰富的 A…...
java使用org.apache.commons:commons-compress解压 .7z压缩包
前言 java使用org.apache.commons:commons-compress解压 .7z压缩包 一、使用步骤 1.引入库 代码如下(示例):cpmpress需要用到xz依赖,不一起引入会报错。 <!-- https://mvnrepository.com/artifact/org.tukaani/xz --> …...
通过知识库系统实现卓越医疗保健
提供更好的患者治疗效果;提高医疗保健组织的效率和有效性。 利用 Baklib 的力量 Baklib 使患者、代理人和专业人员能够轻松采用知识库系统。 1.对于患者 通过自助在线知识库提供有关药品、测试、服务、康复等的信息,改善患者体验和健康结果。 2.对于…...
基于C语言从0开始手撸MQTT协议代码连接标准的MQTT服务器,完成数据上传和命令下发响应(华为云IOT服务器)
文章目录 一、前言二、搭建开发环境三、网络编程基础概念科普3.1 什么是网络编程3.2 TCP 和 UDP协议介绍3.3 TCP通信的实现过程 四、Windows下的网络编程相关API介绍4.1 常用的函数介绍4.2 函数参数介绍4.3 编写代码体验网络编程 五、访问华为云IOT服务器创建一个产品和设备5.2…...
程序员面试中的“八股文”:敲门砖还是绊脚石?
在现代技术行业中,“八股文”成为了程序员面试中的常见问题。“八股文”究竟能否在实际工作中发挥应有的作用,成了一个备受争议的话题。许多IT从业者都提出疑问:程序员面试到底考察的是什么?是工作能力、工作经验,还是…...
液位传感器- 从零开始认识各种传感器【二十四期】
液位传感器|从零开始认识各种传感器 1、什么是液位传感器 ? 液位传感器是一种用于检测和测量液体位置和高度的装置,广泛应用于工业、农业、环保和家庭等领域。液位传感器可以实时监测液体的水平,以实现自动化控制和安全防护。 2、液位传感器…...
【c++】爬虫到底违不违法?
很多小伙伴都想知道爬虫到底违法吗,今天博主就给大家科普一下 爬虫本身并不违法,但使用爬虫采集数据可能涉及违法风险,具体取决于采集行为是否侵犯了他人的合法权益,尤其是隐私权和个人信息权。以下是对爬虫是否违法的详细分析&am…...
Python基础知识笔记——特殊符号
1. #:注释符号。在它后面的内容直到行尾都会被 Python 解释器忽略,通常用于添加注释说明代码。 2. :赋值运算符。用于将右侧的值赋给左侧的变量。 3. :等于运算符。用于比较两个值是否相等。 4. !:不等于运算符。用…...
Thinkphp仿华为商城源码/红色风格电脑手机数码商城系统网站源码
Thinkphp仿华为商城,主要实现了商品首页展示、用户意见、商品分类列表、商品搜索、商品详细展示、购物车、订单生成、在线付款、以及个人中心完善个人资料、用户修改收货地址、余额查询、消费查询、订单管理、商品评价、热销商品和最近商品浏览; 后台是…...
超有用的数据恢复方法!你一定不要错过!
无论我们当下所使用的是何种设备,例如电脑、U 盘、硬盘、相机、行车记录仪,都难以避免出现误删文件的情况。那么,这些被误删的数据究竟应当通过何种方式找回? 今日,为大家分享若干极为实用的数据恢复方法,望…...
wordpress免费的音乐插件下载/网站建站
文章目录代理的基本原理基本原理代理的作用代理分类常见代理设置代理的基本原理 在抓取数据的过程中经常会遇到这样的情况,一开始抓取数据是正常的,但是一杯茶的功夫就出现了错误,例如403 Forbidden。出现这种现象是因为网站采取了一些反爬虫…...
angeljs做的网站/外贸网站建设优化推广
前面我们说了很多关于DNS的配置的问题,但那些都是在图形界面操作的,下面我们就来聊聊通过修改文件来实现DNS的一些常用的功能。相信熟悉DNS的朋友都应该知道在我们服务器的磁盘当中有这样一个路径的文件:C:\Windows\System32\dns,…...
平顶山建设街小学网站/手机百度推广怎么打广告
题目链接 题意 中文题意 思路 因为存在环和重边,边来回走是没有意义的,因此最终的答案应该是一条从1到n的路径权值异或上若干个环的权值,那么难点在于如何选取这些环的权值使得最终的答案更优。 使用到线性基的贪心算法来计算。DFS处理出环的…...
文化传播公司网站模板/重庆人社培训网
本文原创首发于公众号:ReactNative开发圈,转载需注明出处。 React Native二维码生成组件:react-native-qrcode,纯JS组件,支持安卓和IOS双平台,支持中文和英文,可以自定义尺寸、前景色和背景色。…...
公司想建个网站/黄石市seo关键词优化怎么做
原标题:我手机上唯一的浏览器——夸克浏览器说到浏览器大家并不陌生,随着手机飞速发展,移动端的浏览器变得纷繁复杂,但是说到一款好的浏览器,相信大家都不会轻易的下结论。不过今天我要介绍的这款,是我从接…...
深圳营销型网站建设服务费用/百度账号购买网站
很多人说2017年是人工智能的元年,很多人工智能的产品、应用都在陆续落地。之所以人工智能兴起,是因为在这个网络飞速发展时代,数据量在发生着巨大的变化,从而计算速度也随之变化。只有有足够的数据量,才能将数据进行提…...