软件测试 - 测试用例常见面试题
1.测试用例的要素
测试用例是为了实施测试而向被测试的系统提供的一组集合, 这组集合包含 : 测试环境, 操作步骤, 测试数据, 预期结果等要素.
例如 : 在 B 站输入框输入一个空格, 检查结果
测试用例
标题 : 输入框输入空格
测试环境 : Windows 系统, 谷歌浏览器-版本 111.0.5563.65(正式版本) (64 位)
操作步骤 :
1) 打开浏览器, 输入网址 : https://www.bilibili.com/
2) 在输入框中输入关键词, 回车展示结果
测试数据 : 空格
预期结果 : 不展示任何内容
2. 设计测试用例的万能思路
2.1 设计测试用例的万能公式
功能测试 + 性能测试 + 界面测试 + 兼容性测试 + 易用性测试 + 安全测试
功能测试 : 对产品的功能设计测试用例.
性能测试 : 极端情况: 高并发量, 响应时间等等. (功能测试没用问题不代表性能测试好)
界面测试 : 每个元素的大小, 颜色, 材质, 形状, 页面跳转等都需要进行测试.
兼容性测试 : 软甲的不同版本是否兼容, 不同的浏览器, 不同的系统版本, 数据兼容性等等.
易用性测试 : 产品是否具备简单易上手的属性.
安全测试 : 用户的隐私数据是否加密 (注册场景, 接口返回值, SQL 注入等等).
使用万能公式针对水杯设计一个测试用例

使用万能公式针对登录页面设计一个测试用例

兼容性测试里需要注意 : 不同的浏览器, 不同的版本可能会有非常非常的多, 难道所有的浏览器和版本我们都需要测试吗 ? 我们的选型标准是什么 ?
1. 测试大部分用户使用的浏览器
2. 在工作中是有数据后台可以检测到和管理大部分用户使用的浏览器, 版本或者手机型号, 参考数据管理平台给出的数据选型.
3. 基于需求进行测试用例的设计
基于需求设计测试用例是设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正
确、完整、无二义性,并且逻辑自洽。在需求正确的基础上再细化测试需求,从测试需求提炼出一个个测试点,然后根据每一个测试点进行测试用例的设计;
在分析测试需求时,一般分为功能测试需求和非功能测试需求
功能需求测试分析
功能测试需求主要是各个功能界面的验证, 功能的一致性, 交互性的测试, 功能的错误操作, 异常操作的测试, 用户操作的易用性, 用户体验, 往往结合功能测试同时验证等等.
非功能需求测试分析
非功能需求主要涉及性能, 安全性, 可靠性, 兼容性, 易维护性和可移植性等. 从测试需求分析来看,每一类非功能特性测试都需要根据需求单独分析。他们之间可能会存在相互影响,比如安全性越高,就越有可能给易用性,性能带来更大的挑战.
4. 测试用例的具体设计方法
4.1 等价类
依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题.
等价类的划分
1.有效等价类 - 需求文档的要求是有意义的集合.
2. 无效等价类 - 需求文档的要求是没有意义的集合.
例如针对一个 6~18 位的密码使用等价类方法设计测试用例, 具体步骤 :
1.确认有效等价类和无效等价类.
有效等价类 : 6~18位
无效等价类: 小于 6 位, 大于 18 位
2. 编写测试用例
1. 输入长度为 6~18 位的密码, 例如 : 10 位
2. 输入长度小于 6 位的密码, 例如 : 1 位
3. 输入长度大于 18 位的密码, 例如 : 20 位
4.2 边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等
价类划分法的补充,这种情况下,其测试用例来自等价类的边界.
边界值指的是有效边界 + 无效边界

4.3 判定表
使用场景 : 输入条件的组合对应不同的结果
判定表设计测试用例的步骤 :
1. 确认输入条件和输出条件
2. 找出输入条件和输出条件之间的关系
3. 画判定表
4. 根据判定表编写测试用例
测试案例 : 当某订单使用了红包或者订单金额大于 300 元, 则该订单是优惠订单, 否则是不优惠的订单
1.确认输入条件和输出条件
输入条件 : 红包(A) , 订单金额大于300元(B) , 订单已提交(C)
输出条件 : 有优惠(1) , 无优惠(2)
2. 找出输入条件和输出条件之间的关系
先确定输入条件之间可能的组合关系, 然后根据组合关系, 给出对应的输出结果.
AC BC ABC A B C AB 非ABC
1 1 1 2 2 2 2 2
3.画判定表

4. 根据判定表编写测试用例
1) 有红包并提交订单, 则该订单为有优惠的订单.
2) 金额大于 300 元并提交订单, 则该订单为有优惠的订单.
3) 有红包, 金额大于 300 元并提交订单, 则该订单为有优惠的订单.
4) 有红包, 订单金额小于 300 元, 不提交订单则该订单为无优惠订单.
5) 无红包, 订单金额大于 300 元, 不提交订单则该订单为无优惠订单.
6) 无红包, 订单金额小于 300 元, 提交订单, 则该订单为无优惠订单.
7) 有红包, 订单金额大于 300 元, 不提交订单则该订单为无优惠订单.
8) 无红包, 订单金额小于 300 元, 不提交订单则该订单为无优惠订单.
4.4 场景法设计法
可以比较生动地描绘出事件触发时的情景, 有利于测试设计者设计测试用例, 是测试用例更容易理解和执行. (思路引导作用)
例如拿 ATM 取款为例 :

编写测试用例 :
基本事件流的用例 : 先插卡, 输入正确的密码, 选择取卡功能, 输入金额 .......
备选事件流的用例 : 插卡插不进去, 输入错误的密码, 卡被 ATM 卡出, 退出来.....
4.5 正交排列法
正交排列法是从大量的试验中挑选出适量的, 有代表性的点, 依据 "正交表" 从而合理的设计出测试用例.
正交法的目的是为了减少用例数目, 用尽量少的用例覆盖输入的两两组合. (因为用例多的时候, 使用判定表法, 两两组合的情况是穷举不完的)
下图正交表的表示形式, L9(4^3)
9 代表 9 组实验
4 代表的是因素数
3 代表的是每个因素数对应的水平数 (输入条件的可能选项)

正交表的特性
1. 每一列中, 不同的数字出现的次数相等.
2. 任意两列中数字的排列方式齐全且均衡 (每个组合出现的次数相同, 例如第一列和第三列的第 2 行, 是 1,2 组合, 那么这两列组合的其他行就不会再出现 1,2 组合了)
案例 : 针对注册页面使用正交排列法设计测试用例.

设计测试用例的步骤 :
找出因素数和水平数
因素 : 姓名, 电子邮箱, 密码, 确认密码, 验证码
水平 : 填写, 不填写
使用 allpairs 工具生成正交表
a. 在excel 中写好对应的因素数, 和水平数
b. 在 pairs 工具的安装路径下找到 allpairs.exe, 然后在改路径下新建一个 txt 文件, 把excel 中写好的 因素数和水平数复制张贴到 txt 文件中.
c. 打开 cmd, 进入到刚刚新建的 txt 路径的商机路径中, 也就是 pairs. 执行命令
allpairs.exe 322.txt>322jg.txt (322.txt是我自己新建的txt文件, 322jg.txt 是待生成的正交表文 件, 不用自己创建)

allpairs 生成的正交表
生成的正交表虽然有些不符合正交表的特性 2, 但是问题不大.
根据正交表编写测试用例
1. 全部填写姓名, 电子邮箱, 密码, 确认密码, 验证码.
2. 填写姓名, 不填写电子邮箱, 密码,确认密码, 验证码.
3. 填写电子, 确认密码, 不填写邮箱, 密码, 验证码.
4. 填写密码,验证码, 不填写姓名, 电子邮箱, 确认密码.
5. 填写姓名, 电子邮箱, 密码, 不填写确认密码, 验证码.
6. 填写确认密码, 验证码, 不填写姓名, 电子邮箱, 密码.
补充可能存在遗漏的但是非常重要的测试用例
7.全部都不填写姓名, 电子邮箱, 密码, 确认密码, 验证码.
只有第一个用例是正常的用例.
4.6 错误猜测法
错误猜测法主要依赖测试人员的工作经验和积累.这个方法的缺点是难以系统化,并且过度依赖个人能力.
案例 : 以注册为例
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文
5. 白盒测试, 黑盒测试, 灰盒测试
黑盒测试 : 纯功能测试, 不关心程序具体是怎么实现的. (系统测试)
白盒测试 : 关注程序的内部实现 (单元测试)
灰盒测试 : 介于白盒测试和黑盒测试之间 (集成测试)
5.1 常见面试题
为什么不能让灰盒测试取代黑盒测试和白盒测试 ?
灰盒测试没有白盒测试那么详尽, 灰盒测试没有黑盒测试覆盖产品的广度大, 所以灰盒测试不能取代黑白盒测试.
哪种测试方法用的多 ?
黑盒测试和白盒测试, 测试人员都会使用到, 在工作中需要结合实际情况来定, 通过场情况下对于测试人员来说, 黑盒测试相对要多一些.
相关文章:

软件测试 - 测试用例常见面试题
1.测试用例的要素测试用例是为了实施测试而向被测试的系统提供的一组集合, 这组集合包含 : 测试环境, 操作步骤, 测试数据, 预期结果等要素.例如 : 在 B 站输入框输入一个空格, 检查结果测试用例标题 : 输入框输入空格测试环境 : Windows 系统, 谷歌浏览器-版本 111.0.5563.65&…...
几种常见的API接口分页方案
文章目录1 概述2 分页方案2.1 基于偏移量2.2 基于游标3 重复数据处理3.1 基于时间3.2 基于热度3.3 基于推荐1 概述 列表是互联网产品中很常见的一种内容排列形式,而且列表的数据集往往成千上万,一次性返回全量数据集的场景几乎不存在,所以出…...
【Object 类的方法】
在 Java 中,所有类都继承了 Object 类,因此 Object 类中的方法可以在所有 Java 对象中使用。下面是 Object 类中的一些常用方法介绍: equals(Object obj): 用于判断两个对象是否相等。默认情况下,该方法比较的是两个对象的地址是…...
留用户、补内容,在线音乐暗战不停
在线音乐在人们的日常生活中扮演着愈发重要的角色,尤其是在面临巨大压力时,人们往往更倾向于通过倾听一段音乐来缓解内心的紧张与焦虑。而随着在线音乐用户数量的增长以及付费意愿的增强,在线音乐行业也实现了稳步发展。 经过多年的发展&…...
python--exec
在Python中,eval和exec都是用来执行动态代码的内置函数,但它们的作用和使用方式有所不同。 eval(): 将字符串作为Python表达式进行求值,并返回结果。 exec(): 将字符串作为Python语句进行执行,没有返回值。 eval()的使用范围通常限…...
干货分享!这6个高效率办公软件,总有一个值得你收藏!
分享6款高效办公软件,可以解决你很多需求,职场人一定要知道。每一款都是精挑细的,可能有的已经很大众了,但肯定还有小伙伴不知道,废话不多说,直接看!! 1、Flomo笔记:记录…...

代码随想录刷题-链表总结篇
文章目录链表理论基础单链表双链表循环链表其余知识点链表理论基础单链表双链表循环链表其余知识点移除链表元素习题我的解法虚拟头结点解法设计链表习题我的解法代码随想录代码反转链表习题双指针递归两两交换链表中的节点习题我的解法代码随想录解法删除链表的倒数第N个节点习…...
C++:指针:什么是野指针
野指针目录1:定义2:野指针常见情形2.1 :未初始化的野指针2.2 所指的对象已经消亡2.3 指针释放之后未置空3:避免野指针1:定义 指向非法的内存地址的指针叫做野指针(Wild Pointer),也…...

一线大厂高并发Redis缓存架构
文章目录高并发缓存架构设计架构设计思路完整代码开发规范与优化建议键值设计命令使用客户端的使用扩展布隆过滤器redis的过期键的清除策略高并发缓存架构设计 架构设计思路 首先是一个基础的缓存架构,对于新增、修改操作set会对缓存更新,对于查询操作…...

剑指offer-二维数组中的查找
文章目录题目描述题解一 无脑暴力循环题解二 初始二分法🌕博客x主页:己不由心王道长🌕! 🌎文章说明:剑指offer-二维数组中的查找🌎 ✅系列专栏:剑指offer 🌴本篇内容:对剑…...

怎么设计一个秒杀系统
1、系统部署 秒杀系统部署要单独区别开其他系统单独部署,这个系统的流量肯定很大,单独部署。数据库也要单独用一个部署的数据库或者集群,防止高并发导致整个网站不可用。 2、防止超卖 100个库存,1000个人买,要保证不…...
程序参数解析C/C++库 The Lean Mean C++ Option Parser
开发中我们经常使用程序参数,根据参数的不同来实现不同的功能。POSIX和GNU组织对此都制定了一些标准,为了我们程序更为通用标准,建议遵循这些行业内的规范,本文介绍的开源库The Lean Mean C Option Parser就可以很好满足我们的需求…...

Java中的深拷贝和浅拷贝
目录 🍎引出拷贝 🍎浅拷贝 🍎深拷贝 🍎总结 引出拷贝 现在有一个学生类和书包类,在学生类中有引用类型的书包变量: class SchoolBag {private String brand; //书包的品牌private int size; //书…...

大文件上传
上图就是大致的流程一、标题图片上传课程的标题图片Ajax发送请求到后端后端接收到图片使用IO流去保存图片,返回图片的信息对象JS回调函数接收对象通过$("元素id").val(值),方式给页面form表达img标签src属性值,达到上传图片并回显二…...

Python每日一练(20230327)
目录 1. 最大矩形 🌟🌟🌟 2. 反转链表 II 🌟🌟 3. 单词接龙 II 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日…...

Centos7 升级内核到5.10mellanox 编译安装
升级5.10内核 #uname -r 重启后 进入新的内核 进入新的内核信息 直接查看是看不到gcc版本 5.10需要高版本gcc 才可以进行编译...

冯诺依曼,操作系统以及进程概念
文章目录一.冯诺依曼体系结构二.操作系统(operator system)三.系统调用和库函数四.进程1.进程控制块(PCB)2.查看进程3.系统相关的调用4.fork介绍(并发引入)五.总结一.冯诺依曼体系结构 计算机大体可以说是…...

7.网络爬虫—正则表达式详讲
7.网络爬虫—正则表达式详讲与实战Python 正则表达式re.match() 函数re.search方法re.match与re.search的区别re.compile 函数检索和替换检索:替换:findallre.finditerre.split正则表达式模式常见的字符类正则模式正则表达式模式量词正则表达式举例前言&…...

关于位运算的巧妙性:小乖,你真的明白吗?
一.位运算的概念什么是位运算?程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。位运算就是直接操作二进制数,那么有哪些种类的位运算呢?常见的运算符有与(&)、或(|)、异或(^)、…...

【Android车载系列】第5章 AOSP开发环境配置
1 硬件支持 建议空闲内存16G以上,同时硬盘400G以上 内存不够可以使用 Linux 的交换分区2 VMware Workstation安装 https://download3.vmware.com/software/wkst/file/VMware-workstation-full-16.1.1-17801498.exe2.1 Ubuntu镜像 http://mirrors.aliyun.com/ubun…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...