软件测试 - 测试用例常见面试题
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…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
