📤 软件测试面试:图片上传功能测试

核心思路:先验证正常功能可用性,再覆盖异常 / 边界场景,最后防范性能 / 安全风险,全维度确保上传功能稳定可靠。

🎯 一、功能测试(核心重点)

✅ 正常上传场景

  • 格式合规:JPG/PNG/GIF 等预期支持格式,上传后预览、存储、访问正常;
  • 大小合规:上传≤最大限制(如 5MB)的图片,无卡顿、成功落地;
  • 批量上传:按需求验证单张 / 多张(如最多 10 张)上传,顺序 / 结果无误;
  • 特殊格式:WebP/SVG/ 透明背景 PNG、带水印图片,按产品需求验证是否支持。

❌ 异常上传场景

  • 格式非法:上传 TXT/EXE/MP4 等非图片格式,提示 “仅支持 JPG/PNG/GIF 格式”;
  • 大小超限:上传>限制(如 6MB)的图片,提示 “图片大小不能超过 5MB”;
  • 无效文件:损坏图片(后缀篡改、文件不完整)、空文件,上传失败且提示清晰;
  • 重复上传:相同名称 / 内容的图片,验证 “覆盖原文件 / 自动重命名(xxx_1.jpg)/ 提示重复” 逻辑。

🔌 二、兼容性测试

  • 💻 设备兼容:PC 端(Chrome/Firefox/Edge)、移动端(iOS/Android 浏览器 / APP)均能正常上传;
  • 🖥️ 系统兼容:Windows/Mac/iOS/Android 不同系统,无格式解析、路径存储差异;
  • 🌐 浏览器兼容:不同浏览器对特殊格式(如 WebP)、大文件的支持一致性。

⚡ 三、性能测试

  • 📶 网络适配:WiFi/4G/5G / 弱网(卡顿 / 延迟)下,上传速度合理、无超时;
  • 🌪️ 并发上传:多用户(如 100 人)同时上传,服务器无崩溃、无数据丢失;
  • 📦 大文件上传:接近最大限制(如 4.9MB)的图片,上传稳定、进度条显示准确;
  • 🔄 断点续传:上传中断网 / 刷新页面 / 关闭窗口,重连后能否恢复上传进度。

🎨 四、UI / 交互测试

  • 按钮交互:上传按钮样式正常、点击触发文件选择,禁用状态(如未登录)不可点击;
  • 进度提示:上传中显示进度条 / 百分比,支持暂停、取消上传(取消后清理临时文件);
  • 预览交互:上传后显示缩略图,点击可查看原图,支持删除已上传图片;
  • 状态反馈:成功 / 失败 / 上传中,文案 + 图标提示清晰(如绿色对勾、红色感叹号)。

🛡️ 五、安全测试

  • 🔍 文件名注入:上传含特殊字符(/ \ : * ? " < > |)的图片,验证是否自动过滤 / 重命名;
  • 🦠 恶意文件:上传伪装成图片的病毒文件(如.jpg 后缀的 EXE),服务器能拦截并提示;
  • 🚫 路径遍历:上传含 “../” 的文件名,防止服务器文件路径被篡改(如避免访问 /root/ 系统文件);
  • 🔐 权限控制:未登录用户、低权限用户(如游客)上传,验证是否限制操作并提示 “请登录后上传”。

📏 六、边界与其他测试

  • 尺寸边界:超小尺寸(1x1 像素)、超大尺寸(10000x10000 像素)图片,能否正常上传 / 预览;
  • 📂 存储边界:服务器存储满时上传,提示 “存储空间不足,请稍后再试”;
  • 🌍 特殊场景:中文 / 特殊字符文件名(如 “测试图片_🔥.jpg”),上传后文件名无乱码、可正常访问。

🎯 面试答题技巧

  1. 逻辑优先:先讲核心功能(正常 + 异常),再讲兼容 / 性能 / 安全,符合测试执行优先级;
  2. 实操体现:举例 “用 1x1 像素超小图、5.1MB 超大图测边界,用含‘../’的文件名测路径遍历风险”;
  3. 加分点:提到 “断点续传”“并发控制”“恶意文件拦截”,体现对实际场景的深入考虑;
  4. 简洁记忆:用 “功能(正常 + 异常)→ 兼容→ 性能→ 交互→ 安全→ 边界” 六维度快速串联。
全部评论
点赞 回复 分享
发布于 12-03 07:12 上海

相关推荐

##&nbsp;一、参数化核心思路-&nbsp;测试数据与请求脚本分离-&nbsp;批量传入参数覆盖多场景用例(多账号/多参数组合)##&nbsp;二、核心参数化方式-&nbsp;CSV/JSON文件参数化(最常用)-&nbsp;准备文件:CSV(逗号分隔)/JSON(数组格式)编写测试数据-&nbsp;请求引用:用{{参数名}}替换请求体/URL中固定值-&nbsp;执行运行:Collections&nbsp;Runner加载文件,设置迭代次数批量执行-&nbsp;环境变量参数化(多环境切换)-&nbsp;新建环境:测试/预发/生产环境分别配置参数(如base_url)-&nbsp;引用方式:{{变量名}},切换环境自动替换参数-&nbsp;全局变量参数化(跨环境复用)-&nbsp;设置路径:顶部Globals添加全局参数(如token、appId)-&nbsp;应用场景:所有接口通用的固定参数(如请求头token)-&nbsp;内置变量参数化(动态参数)-&nbsp;常用变量:{{$timestamp}}(时间戳)、{{$randomInt}}(随机数)-&nbsp;应用场景:避免参数重复(如订单号、手机号)##&nbsp;三、参数化校验-&nbsp;响应结果校验:Tests中用{{expect_code}}断言(如pm.response.to.have.status(pm.iterationData.get(&quot;expect_code&quot;)))-&nbsp;数据关联:前接口返回值设为变量(pm.globals.set(&quot;token&quot;,&nbsp;response.json().token)),后接口引用{{token}}##&nbsp;四、执行与报告-&nbsp;执行方式:Collections&nbsp;Runner/&nbsp;Newman命令行(CI/CD集成)-&nbsp;报告查看:Runner内置报告/&nbsp;Newman生成HTML报告,查看批量用例结果##&nbsp;五、常见应用场景-&nbsp;多账号登录测试(不同用户名/密码组合)-&nbsp;多参数查询测试(不同条件组合查询接口)-&nbsp;多环境接口验证(测试/预发环境切换)-&nbsp;动态参数生成(订单号、随机手机号)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务