文件上传和下载怎么测试
文件上传下载是业务系统常见功能。
简历、照片、合同、报表、批量导入导出,都涉及文件操作。
一、文件上传要测什么
文件上传测试要覆盖:
- 正常文件上传;
- 文件类型校验;
- 文件大小校验;
- 文件名特殊字符;
- 空文件上传;
- 重复文件上传;
- 多文件上传;
- 上传进度显示;
- 上传失败处理;
- 上传后文件可访问。
比如上传身份证照片:
- 上传 JPG、PNG 格式照片;
- 上传 PDF 是否被拦截;
- 上传超过 5MB 文件是否被拦截;
- 文件名含中文、空格、特殊字符;
- 上传空文件是否有提示;
- 上传同名文件是否覆盖或拦截;
- 上传多张照片是否支持;
- 上传过程是否有进度条;
- 网络中断上传失败是否有提示;
- 上传成功后是否可预览或下载。
二、文件类型校验要测试
文件类型校验要验证:
- 允许的文件类型是否可上传;
- 不允许的文件类型是否被拦截;
- 文件扩展名和实际内容是否一致;
- 伪造扩展名是否可绕过;
- MIME 类型校验是否生效。
比如上传简历:
- 允许 DOC、DOCX、PDF;
- 不允许 EXE、BAT 是否被拦截;
- 修改 EXE 文件扩展名为 DOCX 是否可绕过;
- 通过抓包修改 MIME 类型是否可绕过。
文件类型校验不严谨可能被利用上传恶意文件。
三、文件大小校验要测试
文件大小校验要验证:
- 最大文件大小限制是否生效;
- 超过限制是否有提示;
- 文件大小计算是否正确;
- 前端和后端校验是否一致。
比如上传照片:
- 最大允许 5MB;
- 上传 10MB 文件是否被拦截;
- 前端是否拦截超大文件;
- 后端是否再次校验文件大小。
前端拦截可以减少无效上传,后端拦截才是安全保障。
四、文件名和路径要测试
文件名和路径要验证:
- 文件名含中文是否正常;
- 文件名含空格是否正常;
- 文件名含特殊字符是否正常;
- 文件名超长是否正常;
- 文件名重复是否覆盖或拦截;
- 文件存储路径是否安全。
比如上传合同:
- 文件名含中文字符是否可上传和下载;
- 文件名含空格和括号是否正常;
- 文件名含路径分隔符是否被拦截;
- 文件名超过系统限制是否被拦截。
文件名问题可能导致上传失败或文件损坏。
五、文件下载要测什么
文件下载测试要覆盖:
- 正常文件下载;
- 文件不存在下载;
- 文件权限下载;
- 文件名正确性;
- 文件内容正确性;
- 大文件下载;
- 批量文件下载;
- 下载中断恢复。
比如下载报表:
- 下载已生成的报表文件;
- 下载不存在文件是否有提示;
- 无权限下载他人文件是否被拦截;
- 下载文件名是否正确;
- 下载文件内容是否正确;
- 下载大文件是否可完成;
- 批量下载多个文件是否支持;
- 网络中断下载是否有重试机制。
六、文件安全要关注
文件上传下载涉及安全风险:
- 是否可上传恶意文件;
- 是否可下载敏感文件;
- 是否可通过路径遍历访问其他文件;
- 文件存储位置是否安全;
- 文件访问是否有权限控制;
- 文件是否有病毒或恶意内容扫描。
比如上传文件:
- 是否可上传可执行文件;
- 是否可上传含恶意脚本的文件;
- 是否可通过修改路径访问他人文件;
- 文件存储目录是否在 Web 目录下;
- 文件访问是否需要登录和权限。
文件安全往往是漏洞高发区。
七、面试回答模板
可以这样回答:
文件上传下载测试我会从功能、类型校验、大小校验、文件名、下载功能和安全几个方面展开。上传测正常文件、允许和禁止类型、大小限制、空文件、重复文件、多文件、进度显示、失败处理、上传后可访问;类型校验测扩展名和内容是否一致、伪造扩展名是否可绕过、MIME 类型校验;大小校验测最大限制、超限拦截、前后端校验一致性;文件名测中文、空格、特殊字符、超长、重复、路径安全;下载测正常下载、文件不存在、权限控制、文件名和内容正确性、大文件、批量下载、中断恢复;安全测恶意文件上传、敏感文件下载、路径遍历、存储位置、权限控制、病毒扫描。
这个回答能体现你有完整的文件上传下载测试思路。
八、下一步建议
建议你把一个熟悉的文件上传下载功能按上面维度重新整理:
- 上传功能测试点;
- 类型校验测试点;
- 大小校验测试点;
- 文件名测试点;
- 下载功能测试点;
- 安全测试点。
