⚡ 阈值测试文件
用于上传限制边界值测试的字节级精确大小文件。
什么是边界值测试
许多服务对文件大小有限制。在限制附近(正好、略低、略高)测试可高效验证验证逻辑。
略低于 (9.9MB / 24.9MB)
低于限制 — 应上传成功。
正好 (10MB / 25MB)
边界值。需确认是否成功。
略高于 (10.1MB / 25.1MB)
超过限制 — 应返回错误。
PNG
JPG
ZIP
主要服务的上传限制
| 服务 | 限制 | 测试文件 |
|---|---|---|
| Gmail 附件 | 25MB | 24.9MB / 25MB / 25.1MB |
| Discord (免费) | 25MB | 24.9MB / 25MB / 25.1MB |
| WordPress (默认) | 10MB | 9.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 × 并发数不会超过可用容量。