设计测试用例
这份笔记主要整理面试中常见的“请你设计测试用例”题型,按统一的答题框架和典型案例来归纳,方便复习和现场表达。
一、通用答题框架
我一般回答这类题,会从以下几个维度来分析:
- 功能测试
- 界面测试
- 性能测试
- 安全性测试
- 易用性测试
- 兼容性测试
如果题目偏业务,还可以补充:
- 网络测试
- 异常场景测试
- 压力测试
- 稳定性测试
二、常见面试题清单
- 假如在大众点评买套餐券,设计测试用例
- 一个线上转盘抽奖活动,设计测试用例
- 设计自动贩卖机的测试用例
- 滴滴出行追加车型功能,如何设计测试
- 针对发微信朋友圈设计测试用例
- 针对“除夕夜当天单个用户仅能领取一次红包,且每个红包金额上限为 1 元”设计测试用例
- 针对用户遇到超时 bug,尝试复现该 bug
- 针对不同成员维护各自测试框架导致的冲突问题,尝试给出解决方案
三、案例 1:淘宝购物车测试用例
1. 功能测试
- 购物车页面的所有链接是否正常。
- 从商品详情页添加的商品,能否正确显示在购物车中。
- 结算时是否支持全选,点击底部全选按钮后是否生效。
- 未登录状态下点击结算,是否提示登录或注册。
- 未选择任何商品点击结算,是否提示“请添加要结算的商品”。
- 勾选商品后,已选商品总价和优惠信息是否正确显示。
- 勾选商品并点击结算后,是否能进入确认订单页。
- 是否可以修改购物车中的商品信息,且修改后自动保存成功。
- 是否可以重新修改商品规格。
- 购物车可添加的商品种类是否有上限。
- 是否支持对购物车商品进行管理。
2. 界面测试
- 页面布局是否完整、合理。
- 不同卖家的商品是否在不同区域展示,区分是否明显。
- 页面功能按钮是否正常显示。
- 失效商品是否展示在指定区域。
- 页面底部是否显示“你可能喜欢”。
- 下滑页面时,顶部是否固定展示“购物车”标题。
- 若存在商品降价、库存不足、限购等情况,是否有明确提示文案。
3. 性能测试
- 打开购物车页面时间是否在用户可接受范围内。
- 添加、删除、编辑商品的响应时间是否合理。
- 勾选商品后,结算金额是否能实时更新。
- 清空失效商品所需时间是否合理。
- “加入购物车”功能在高并发下的吞吐量、响应时间、服务器 CPU / 内存是否符合预期。
4. 兼容性测试
- iOS:不同机型、不同系统版本下是否正常。
- Android:不同品牌、不同机型、不同系统版本下是否正常。
- 手机、PC、Pad 不同端上展示和功能是否正常。
5. 安全性测试
- 用户实名认证后的个人信息是否会泄露。
- 是否需要绑定手机号,相关逻辑是否正确。
6. 易用性测试
- 是否支持一键批量付款。
- 是否有全选、全不选功能。
- 是否支持删除商品。
- 是否能将购物车商品移入收藏夹。
- 是否展示商品件数统计。
- 是否展示商品规格和购买数量。
- 是否展示商品名称。
- 是否展示店铺活动、满减优惠、降价信息。
- 是否展示店铺名称。
- 点击店铺名称能否跳转到店铺页。
- 点击商品名称能否跳转到商品详情页。
- 是否有领券提示。
- 是否显示领券后的优惠价格。
- 失效商品是否会保留在历史记录中。
- 每件商品是否展示对应图片。
- 是否有购物清单提示。
- 在购物车中是否能再次修改商品种类。
- 滑动到底部时是否有推荐商品展示。
- 不支持发货地区是否有提示;对应复选框是否置灰。
- 未选择商品时点击“结算”是否不会错误跳转。
- 是否支持删除商品、批量删除。
- 是否支持“寻找相似商品”。
7. 网络测试
- 3G、4G、WiFi 网络切换下是否可正常运行。
- 网络异常时,数据交换是否有提醒。
- 中途断网后快速恢复网络,数据是否能自动恢复并正常加载。
- 仅允许内网访问的 App,连接外网时是否有提醒。
四、案例 2:电梯测试用例
1. 功能测试
- 上升
- 下降
- 停止
- 开门
- 关门
- 梯内电话
- 灯光
- 指示灯
2. 性能测试
- 运行速度
- 按键响应时间
- 关门时间
3. 压力测试
- 超载场景
- 尖锐物碰撞电梯壁等极端场景
4. 安全性测试
- 停电场景
- 报警装置是否有效
- 轿厢停靠位置是否准确
- 有人扒门时电梯表现是否安全
5. 易用性测试
- 按键高度是否合理
- 操作是否方便
- 乘坐舒适度
6. 界面 / 外观测试
- 美观程度
- 光滑程度
- 形状
- 质感
7. 稳定性测试
- 长时间运行是否稳定
8. 兼容性测试
- 不同电压下是否可工作
- 不同类型电话是否可安装
补充说明:
很多硬件场景无法一次性测试完全,所以要模块化拆分,例如:
- 电话模块单独测
- 灯光模块单独测
- 门控模块单独测
如果一个用例写不清楚,通常说明这个用例本身太复杂,需要继续拆分。
五、案例 3:水杯测试用例
1. 功能测试
- 装半杯水
- 装到安全刻度线以上
- 装满并验证是否溢出
- 容量刻度是否准确
- 是否烫手
2. 性能测试
- 最大使用次数或使用寿命
- 杯盖拧紧到什么程度才不会漏水
- 掉到地上是否容易损坏
- 保温时长
- 耐热性
- 耐寒性
- 长时间放置是否漏水
- 承重能力到什么程度会损坏
3. 界面 / 外观测试
- 外观是否完整、美观
- 大小是否符合设计要求
- 材质是否符合设计要求
- 握持是否舒适
4. 安全性测试
- 材质是否有毒或滋生细菌
- 高温下是否安全无毒
- 低温下是否安全无毒
5. 易用性测试
- 倒水是否方便
- 喝水是否方便
- 操作是否简单
- 是否有防滑设计
6. 兼容性测试
- 是否能容纳果汁、白水、酒精、汽油等不同液体
7. 运输 / 震动测试
- 杯子及包装在六面震动场景下,是否能承受铁路 / 公路 / 航空运输条件
六、案例 4:登录页面测试用例
1. 功能测试
正常登录
- 输入正确用户名和密码,预期:登录成功
异常登录
- 用户名为空,预期:提示用户名不能为空
- 用户名含特殊字符,预期:提示用户名不能含特殊字符
- 用户名不存在,预期:提示用户名不存在
- 用户名过长或过短,预期:提示用户名长度不符合要求
- 密码为空,预期:提示密码不能为空
- 密码过长或过短,预期:提示请输入 6 到 12 位密码
记住账号和密码
- 登录失败后,应只记住账号,不记住密码
2. 性能测试
- 页面打开需要多久
- 输入正确用户名和密码后点击登录,响应时间多久
- 1000 万人同时登录时,页面响应能力如何
3. 易用性测试
Tab键、Enter键是否可用- 大小写输入是否有提示
- 是否支持记住账号和密码
- 是否支持下次自动登录
4. 安全性测试
- 输入框是否防 SQL 注入
- 连续密码错误多次后,是否仍可无限尝试
- 用户名和密码是否在后端校验,而不是只靠前端 JavaScript 校验
- 用户名和密码是否通过加密方式传输
- 同一用户在多台机器登录时,是否有安全校验
5. 兼容性测试
- 不同操作系统下显示是否正常
- 不同分辨率下显示是否正常
- 手机端显示是否正常
- 不同浏览器下显示是否正常
6. UI 测试
- 页面布局是否合理
- 页面是否有错别字
- 页面打开时是否报错
- 用户名和密码输入框长度是否一致
- 登录按钮位置是否合理
- 登录界面是否与 UI 设计风格一致
七、案例 5:朋友圈测试用例
1. 功能测试
1.1 发送
文本
- 是否支持超长文本
- 是否支持自动换行
- 是否支持纯文字、表情、链接等
- 文本是否支持复制粘贴
- 是否允许空内容发布
- 是否存在敏感词限制
图片
- 是否支持不同尺寸图片上传
- 是否限制图片大小,例如不超过 5M
- 是否支持预览
- 最多可发几张,例如 9 张
- 是否支持相册选择、拍照上传
- 是否支持直接拍摄并上传
- 是否支持删除或重新编辑已上传图片
- 是否允许不传图片仅发文字
视频
- 是否支持本地相册选择或拍摄上传
- 是否有视频时长限制
- 是否限制视频数量
- 是否限制视频大小
- 横屏 / 竖屏视频能否正常播放
- 是否支持视频预览、编辑、删除
组合发布
- 文本 + 图片能否正确显示且顺序一致
- 文本 + 视频能否正确显示
- 图片 + 视频是否支持混合发布
权限设置
- 是否支持公开
- 是否支持仅朋友可见
- 是否支持自定义分组可见
- 是否支持不让某些人看到
- 是否支持选择不给谁看
- 是否有人数限制
- 是否支持
@单人 / 多人 - 是否支持仅三天可见
同步 QQ 空间
- 默认是否不同步
- 同步到 QQ 空间是否成功
所在位置
- 不显示位置时是否隐藏地理信息
- 显示位置时是否能准确获取当前位置
- 是否支持手动选择地点
- 是否支持 GPS 自动定位
- 点击取消是否返回原页面
取消操作
- 选择照片后点击取消,是否正确返回
- 进入发表页输入文本 / 图片后点击取消,是否清空内容并返回
次数限制
- 好友圈每天发送次数是否有限制
1.2 浏览
文本查看
- 过长文字是否截断
- 是否支持“全文阅读”
- 键盘场景下收藏、翻译等功能是否可用
- URL 链接是否支持点击跳转
照片查看
- 小图点击是否可放大
- 左上角返回是否有效
- 是否支持保存图片
- 多张图片是否支持左右滑动
- 缩略图切换是否正常
视频查看
- 是否支持收藏
- 是否支持保存视频
- 是否支持编辑视频
点赞
- 是否能成功点赞
- 是否能取消点赞
评论
- 是否有限制评论字数
- 超过字数限制是否提示错误
- 是否允许空评论
- 发表评论后是否能删除
- 是否支持评论回复
删除动态
- 是否能删除自己发布的动态
- 是否支持批量删除
其他功能
- 更换封面头像
- 是否能正常获取新动态
- 上滑是否加载更多
2. 性能测试
- 上滑加载更多是否流畅
- 页面刷新或浏览过程中中断,是否会崩溃
- 来电、切后台、消息推送等中断场景是否稳定
- 频繁发送和浏览朋友圈时,是否出现卡顿或延迟
3. 界面测试
- 页面布局是否与原型 / 设计稿一致
- 页面风格是否美观合理
- 功能操作是否简单直观
4. 安全性测试
- 分组可见范围是否正确生效
- 评论是否仅在预期可见范围内展示
- 图片 / 视频是否存在隐私泄露风险
- URL 跳转是否安全
- 各平台朋友圈数据是否一致
5. 易用性测试
- 分组设置是否方便
- 选择相机后取消返回是否顺畅
- 表情、收藏、翻译、搜索等操作是否易用
- 大图浏览是否方便
- 图片 / 视频分享和保存是否方便
- 评论删除是否方便
- 双击点赞是否符合用户习惯
6. 兼容性测试
- Android 主流机型是否正常
- iPhone 主流机型是否正常
- Pad 端是否正常
- 多平台展示数据是否一致
7. 总结
| 维度 | 核心目标 |
|---|---|
| 功能测试 | 验证朋友圈各项功能是否实现 |
| 性能测试 | 确保系统流畅运行 |
| 界面测试 | 保证视觉一致性和易读性 |
| 安全性测试 | 保护用户隐私和数据安全 |
| 易用性测试 | 提升交互体验 |
| 兼容性测试 | 支持多设备多系统 |
补充:
这类思路同样适用于微信、微博、抖音等社交动态产品。
八、案例 6:朋友圈点赞测试用例
1. 功能测试
点赞功能
- 是否能正常点赞
- 点赞后是否显示心形图标
- 点赞后是否立即更新点赞数
- 是否可以取消点赞
- 取消点赞后是否立即更新点赞数,心形图标是否消失
- 是否可以给自己点赞,预期:不能
- 是否可以多次重复点赞,预期:不能
共同好友可见性
- 共同好友点赞后,是否可见
- 非共同好友点赞后,是否不可见
点赞消息提示
- 点赞后被点赞人是否收到消息提示
- 取消点赞后是否收到提示
点赞信息排序
- 是否按点赞时间排序
点赞数限制
- 点赞数是否有上限
跳转功能
- 点击点赞人的名字,是否可跳转到其主页
2. 性能测试
- 点赞到展示点赞信息的响应时间是否在规定范围内
- 取消点赞的响应时间是否在规定范围内
- 不同网络环境下点赞功能是否正常
- 弱网或断网时点赞行为是否符合预期
3. 界面测试
- 点赞后图标显示是否正确
- 点赞数是否正确更新
- 点赞信息换行和排版是否正确
- 页面是否完整、美观
4. 兼容性测试
- Android 主流品牌和机型是否正常
- iOS 系统上是否正常
- 不同微信版本是否正常
5. 易用性测试
- 点赞和取消点赞操作是否简单
- 状态更新是否及时,用户是否感知明显
- 是否有明确提示
6. 安全性测试
- 点赞行为是否泄露用户信息
九、案例 7:百度搜索框测试用例
1. 功能测试
特殊字符和空格处理
- 输入有效关键字,验证搜索结果是否正确
- 输入无效关键字或特殊字符,验证是否给出合理提示
- 搜索结果排序是否符合相关性
基本搜索功能
- 输入包含空格的内容,验证空格处理是否正确
- 输入包含特殊字符的内容,验证系统是否正确处理
搜索建议功能
- 输入部分关键字,验证搜索建议是否正确显示
- 选择搜索建议后,是否正确跳转到搜索结果页
搜索历史记录
- 搜索历史是否正确显示
- 是否支持清除历史记录
- 是否支持多设备间同步
图片搜索
- 上传图片能否正确识别并返回结果
- 上传非图片文件时是否提示错误
语音搜索
- 语音搜索结果是否准确
- 不同语言、口音下是否鲁棒
2. 性能测试
- 不同网络环境下搜索速度是否合理
- 搜索结果页加载速度是否合理
- 高并发场景下响应时间是否明显下降
- 搜索时 CPU 和内存使用率是否在合理范围内
3. 界面测试
- 搜索框位置和大小是否正确
- 样式是否符合设计要求
- 搜索结果页布局是否合理,是否易于阅读
- 提示信息是否清晰易懂
4. 兼容性测试
- Windows、macOS 等系统是否正常
- Chrome、Firefox、IE 等浏览器是否正常
- 手机、平板等移动设备是否正常
5. 易用性测试
- 搜索结果是否清晰,用户能否快速找到所需信息
- 搜索操作是否简单易懂
- 是否对敏感内容进行适当过滤
6. 安全性测试
- 是否能有效防 SQL 注入
- 是否防止恶意输入导致安全风险
7. 总结
| 维度 | 核心目标 |
|---|---|
| 功能测试 | 验证搜索框各项功能是否实现 |
| 性能测试 | 确保系统高效稳定运行 |
| 界面测试 | 保证视觉一致性和易读性 |
| 兼容性测试 | 支持多设备多系统 |
| 易用性测试 | 提升交互体验 |
| 安全性测试 | 防范 SQL 注入等安全风险 |
十、案例 8:算法题如何设计测试用例
面试里常见场景:
- 先手写代码
- 写完后面试官追问:请你给这段代码设计测试用例
1. 从参数维度设计
有效等价类
int类型- 数组类型
无效等价类
- 类型错误:
String、float、double等 - 数组元素类型错误:字符串、集合、列表等
- 长度异常:过长、过短、
null、不传参
2. 从代码逻辑设计
例如代码里有:
- 第一层循环
a - 第二层循环
b if分支c
则可以考虑覆盖:
ababcab + 非 c
3. 从性能角度设计
- 当数组过大时,时间复杂度和空间复杂度是否符合预期
4. 从异常情况设计
- 长时间循环计算时,程序是否可能故障
- 是否需要补充异常处理,例如
try-catch
十一、案例 9:排序算法测试用例
1. 基本功能测试
-
空数组或只有一个元素的数组
- 输入:
[]或[5] - 预期:保持不变
- 输入:
-
随机整数数组
- 输入:
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] - 预期:升序排列
- 输入:
-
重复元素数组
- 输入:
[2, 2, 2, 2] - 预期:保持顺序不变
- 输入:
-
逆序数组
- 输入:
[9, 8, 7, 6, 5, 4, 3, 2, 1] - 预期:正确升序
- 输入:
-
含最小值和最大值的数组
- 预期:无溢出、无异常
-
几乎有序数组
- 输入:
[1, 2, 4, 3, 5, 6, 7] - 预期:正确且较快排序
- 输入:
2. 边界条件测试
- 空数组
- 单元素数组
- 全相同元素
- 极大极小值混合
- 几乎有序数组
这些测试主要用于验证算法在极端输入下是否健壮。
3. 性能测试
-
大规模随机数组
- 输入:数百万随机整数
- 目标:观察时间复杂度和内存使用
-
最好、平均、最坏情况性能
- 最好情况:已排序数组
- 平均情况:随机数组
- 最坏情况:逆序数组或特定模式数组
4. 稳定性测试
-
包含相等元素的数组
- 输入:
[1, 2, 2, 3, 3, 4] - 预期:若为稳定排序,相等元素原始相对顺序不变
- 输入:
5. 递归深度测试
- 针对快速排序、归并排序等递归算法
- 输入极端不平衡数组
- 预期:不会栈溢出,或有优化机制
6. 总结
| 维度 | 核心目标 |
|---|---|
| 基本功能测试 | 验证算法能否正确排序常规输入 |
| 边界条件测试 | 确保极端输入下依然健壮 |
| 性能测试 | 评估大数据量下效率 |
| 稳定性测试 | 检查是否保持相等元素相对顺序 |
| 递归深度测试 | 防止递归过深导致栈溢出 |