设计测试用例

1 阅读17分钟

设计测试用例

这份笔记主要整理面试中常见的“请你设计测试用例”题型,按统一的答题框架和典型案例来归纳,方便复习和现场表达。

一、通用答题框架

我一般回答这类题,会从以下几个维度来分析:

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

如果题目偏业务,还可以补充:

  • 网络测试
  • 异常场景测试
  • 压力测试
  • 稳定性测试

二、常见面试题清单

  • 假如在大众点评买套餐券,设计测试用例
  • 一个线上转盘抽奖活动,设计测试用例
  • 设计自动贩卖机的测试用例
  • 滴滴出行追加车型功能,如何设计测试
  • 针对发微信朋友圈设计测试用例
  • 针对“除夕夜当天单个用户仅能领取一次红包,且每个红包金额上限为 1 元”设计测试用例
  • 针对用户遇到超时 bug,尝试复现该 bug
  • 针对不同成员维护各自测试框架导致的冲突问题,尝试给出解决方案

三、案例 1:淘宝购物车测试用例

1. 功能测试

  1. 购物车页面的所有链接是否正常。
  2. 从商品详情页添加的商品,能否正确显示在购物车中。
  3. 结算时是否支持全选,点击底部全选按钮后是否生效。
  4. 未登录状态下点击结算,是否提示登录或注册。
  5. 未选择任何商品点击结算,是否提示“请添加要结算的商品”。
  6. 勾选商品后,已选商品总价和优惠信息是否正确显示。
  7. 勾选商品并点击结算后,是否能进入确认订单页。
  8. 是否可以修改购物车中的商品信息,且修改后自动保存成功。
  9. 是否可以重新修改商品规格。
  10. 购物车可添加的商品种类是否有上限。
  11. 是否支持对购物车商品进行管理。

2. 界面测试

  1. 页面布局是否完整、合理。
  2. 不同卖家的商品是否在不同区域展示,区分是否明显。
  3. 页面功能按钮是否正常显示。
  4. 失效商品是否展示在指定区域。
  5. 页面底部是否显示“你可能喜欢”。
  6. 下滑页面时,顶部是否固定展示“购物车”标题。
  7. 若存在商品降价、库存不足、限购等情况,是否有明确提示文案。

3. 性能测试

  1. 打开购物车页面时间是否在用户可接受范围内。
  2. 添加、删除、编辑商品的响应时间是否合理。
  3. 勾选商品后,结算金额是否能实时更新。
  4. 清空失效商品所需时间是否合理。
  5. “加入购物车”功能在高并发下的吞吐量、响应时间、服务器 CPU / 内存是否符合预期。

4. 兼容性测试

  1. iOS:不同机型、不同系统版本下是否正常。
  2. Android:不同品牌、不同机型、不同系统版本下是否正常。
  3. 手机、PC、Pad 不同端上展示和功能是否正常。

5. 安全性测试

  1. 用户实名认证后的个人信息是否会泄露。
  2. 是否需要绑定手机号,相关逻辑是否正确。

6. 易用性测试

  1. 是否支持一键批量付款。
  2. 是否有全选、全不选功能。
  3. 是否支持删除商品。
  4. 是否能将购物车商品移入收藏夹。
  5. 是否展示商品件数统计。
  6. 是否展示商品规格和购买数量。
  7. 是否展示商品名称。
  8. 是否展示店铺活动、满减优惠、降价信息。
  9. 是否展示店铺名称。
  10. 点击店铺名称能否跳转到店铺页。
  11. 点击商品名称能否跳转到商品详情页。
  12. 是否有领券提示。
  13. 是否显示领券后的优惠价格。
  14. 失效商品是否会保留在历史记录中。
  15. 每件商品是否展示对应图片。
  16. 是否有购物清单提示。
  17. 在购物车中是否能再次修改商品种类。
  18. 滑动到底部时是否有推荐商品展示。
  19. 不支持发货地区是否有提示;对应复选框是否置灰。
  20. 未选择商品时点击“结算”是否不会错误跳转。
  21. 是否支持删除商品、批量删除。
  22. 是否支持“寻找相似商品”。

7. 网络测试

  1. 3G、4G、WiFi 网络切换下是否可正常运行。
  2. 网络异常时,数据交换是否有提醒。
  3. 中途断网后快速恢复网络,数据是否能自动恢复并正常加载。
  4. 仅允许内网访问的 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 类型
  • 数组类型
无效等价类
  • 类型错误:Stringfloatdouble
  • 数组元素类型错误:字符串、集合、列表等
  • 长度异常:过长、过短、null、不传参

2. 从代码逻辑设计

例如代码里有:

  • 第一层循环 a
  • 第二层循环 b
  • if 分支 c

则可以考虑覆盖:

  • ab
  • abc
  • ab + 非 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. 总结

维度核心目标
基本功能测试验证算法能否正确排序常规输入
边界条件测试确保极端输入下依然健壮
性能测试评估大数据量下效率
稳定性测试检查是否保持相等元素相对顺序
递归深度测试防止递归过深导致栈溢出