跳到内容

⚡ 阈值测试文件

用于上传限制边界值测试的字节级精确大小文件。

什么是边界值测试

许多服务对文件大小有限制。在限制附近(正好、略低、略高)测试可高效验证验证逻辑。

略低于 (9.9MB / 24.9MB)

低于限制 — 应上传成功。

正好 (10MB / 25MB)

边界值。需确认是否成功。

略高于 (10.1MB / 25.1MB)

超过限制 — 应返回错误。

PNG

JPG

ZIP

主要服务的上传限制

服务限制测试文件
Gmail 附件25MB24.9MB / 25MB / 25.1MB
Discord (免费)25MB24.9MB / 25MB / 25.1MB
WordPress (默认)10MB9.9MB / 10MB / 10.1MB

📖 常见的坑

如 9.9 / 10.0 / 10.1 MB,按字节对齐到边界之下、正好、之上的文件。一次测试就能分辨上限是「小于等于」还是「小于」,以及是哪一层拒绝的。反过来说,它也只能告诉你边界行为,常态性能与并发行为需另行测量。

情形 会发生什么 怎么处理
10 MB 限制却放不过 10 MB 的文件 10 MB 是 10,000,000 字节还是 10,485,760 字节(10 × 1024²),相差 48 万字节,两种实现都存在。 先确认属于哪一种。单位对照见文件大小单位,换算用字节转换
没有报错就断了 nginx 依据 client_max_body_size 拒绝时,413 会在到达 PHP 之前返回,应用日志里什么都不会留下。 要分辨清楚,看 nginx 的 access / error 日志最可靠。413 的含义与处理写在413 错误一文中。
正好在边界上时通时不通 若比较的是整个请求的大小而非文件本身,正好卡在边界的文件会因头部而超出,文件名长度也会影响结果。 把 9.9 MB 与 10.1 MB 的结果并排看,确认行为在哪一侧发生变化。若两者都失败,真正的阈值比你以为的更低。

边界即使生效正确,也不代表多个接近上限的文件同时到达时磁盘与内存扛得住。请一并确认 upload_max_filesize × 并发数不会超过可用容量。