Cómo probar correctamente los límites de carga de archivos
Cuando desarrolló una función de carga de archivos para una aplicación web, ¿está seguro simplemente porque estableció el límite en 10 MB? En realidad, probar los límites de carga tiene muchas trampas, y no validar correctamente puede resultar en errores inesperados en la producción. Este artículo explica cómo probar con precisión los límites de carga utilizando principios de prueba de valores límite.
Qué es la prueba de valores límite
La <strong>Prueba de Valores Límite</strong> es una de las técnicas fundamentales en las pruebas de software. Se basa en la regla empírica de que los errores tienden a ocurrir cerca de los límites de los valores de entrada, en puntos como "exactamente en el límite," "un byte antes del límite" y "un byte por encima del límite."
Para la prueba de límite de carga de archivos, debe preparar al menos los siguientes 3 casos de prueba.
- <strong>Archivo exactamente en el límite</strong> — Verifica que la carga sea exitosa
- <strong>Archivo 1 byte más pequeño que el límite</strong> — Verifica que definitivamente sea exitoso
- <strong>Archivo 1 byte más grande que el límite</strong> — Verifica que sea rechazado correctamente
Tenga cuidado de no confundir MB y MiB
El error más común en pruebas de límites de carga es confundir MB (megabytes) con MiB (mebibytes).
- <strong>1 MB</strong> = 1,000,000 bytes (base decimal, unidad SI)
- <strong>1 MiB</strong> = 1,048,576 bytes (base binaria, unidad IEC)
Esta diferencia es aproximadamente del 4,86%, con una diferencia de 48,576 bytes entre 10MB y 10MiB. Es crucial entender con precisión qué unidad utiliza tu servidor o servicio en la nube. Por ejemplo, cuando especificas <code>upload_max_filesize</code> como "10M" en PHP, se interpreta como 10MiB (10,485,760 bytes). Sin embargo, algunas CDN y puertas de enlace de API pueden tratarlo como 10MB (10,000,000 bytes).
Sobrecarga de multipart/form-data
El formato <code>multipart/form-data</code> utilizado en cargas de archivos incluye sobrecarga como cadenas de límite, encabezados Content-Disposition y saltos de línea además del cuerpo del archivo.
Cuando la verificación de límite del servidor se realiza en todo el cuerpo de la solicitud, incluso si el archivo en sí está por debajo del límite, la inclusión de sobrecarga puede causar un exceso. Como <code>client_max_body_size</code> de Nginx restringe el tamaño de todo el cuerpo de la solicitud, se debe tener cuidado en este aspecto.
# Nginx の設定例
client_max_body_size 10m; # リクエストボディ全体の上限(MiB単位)
Verificación doble entre front-end y back-end
Durante las pruebas, verifique que se realicen controles de tamaño tanto en el frontend (JavaScript) como en el backend (servidor). Si la verificación se realiza solo en el frontend, se puede eludir fácilmente con las herramientas de desarrollo o el comando curl.
// フロントエンドでのサイズチェック例
const MAX_SIZE = 10 * 1024 * 1024; // 10 MiB
fileInput.addEventListener('change', (e) => {
const file = e.target.files[0];
if (file.size > MAX_SIZE) {
alert('ファイルサイズが上限を超えています');
e.target.value = '';
}
});
Confirmación de mensaje de error y UX
En las pruebas de valores límite, comprueba no solo si la solicitud tiene éxito o falla, sino también los siguientes puntos.
- ¿Se muestra un mensaje de error claro cuando se excede el límite?
- ¿Es el Código de Estado HTTP Apropiado (por ejemplo, 413 Payload Too Large)
- ¿Funciona correctamente la barra de progreso durante la carga de archivos grandes?
- Si el manejo de tiempo de espera se realiza correctamente
Cómo obtener archivos de prueba
Las pruebas de valor límite precisas requieren archivos de prueba con tamaños exactos a nivel de bytes. DevLab proporciona archivos de prueba de valor límite adaptados a los principales límites de carga.
- <a href="/ja/files/threshold/">Lista de archivos de prueba de valores límite</a> — Archivos ajustados a los límites de servicios principales como Gmail (25MB), Discord (25MB), WordPress (10MB)
- <a href="/ja/files/threshold/10mb/">Conjunto de Prueba de Límite de 10MB</a> — Conjunto de tres archivos: exacto, justo antes y justo después
- <a href="/ja/files/threshold/25mb/">Conjunto de Prueba de Límite de 25MB</a> — Para adjuntos de correo electrónico y herramientas de chat
Todos los archivos incluyen valores hash MD5, SHA-1 y SHA-256, que puede utilizar para verificar la integridad después de la descarga.
Resumen
Las pruebas de límites de carga de archivos requieren más que simplemente "enviar un archivo grande". Debe comprender la diferencia entre MB y MiB, considerar la sobrecarga de multipart y validar valores límite con archivos de prueba precisos en bytes. Al aprovechar los archivos de prueba de valores límite de DevLab, puede implementar estas pruebas de manera eficiente.
Archivos de prueba para este artículo
- → <a href="/ja/files/threshold/" class="text-primary-600 dark:text-primary-400 hover:underline">Lista de archivos de prueba de umbral (9.9MB / 10MB / 10.1MB)</a>
- → <a href="/ja/files/images/png/" class="text-primary-600 dark:text-primary-400 hover:underline">Lista de Archivos de Prueba de Imagen PNG</a>
Artículos relacionados
- → <a href="/ja/blog/mb-vs-mib-file-size/" class="text-primary-600 dark:text-primary-400 hover:underline">¡MB y MiB Son Diferentes! Las Trampas de las Unidades de Tamaño de Archivo</a>
- → <a href="/ja/blog/multipart-form-data-overhead/" class="text-primary-600 dark:text-primary-400 hover:underline">Calcular con Precisión el Overhead de multipart/form-data</a>
- → <a href="/ja/blog/file-validation-checklist/" class="text-primary-600 dark:text-primary-400 hover:underline">Lista de Verificación de Implementación de Validación de Archivos en Formularios Web</a>