Guide développeur

Tester une limite d'upload sans avoir un vrai fichier volumineux sous la main

Vérifier qu'une limite de taille d'upload fonctionne correctement demande des fichiers de tailles précises, pile à la limite et juste au-dessus — pas un fichier volumineux quelconque.

Une limite de taille d’upload — qu’elle soit imposée côté client en JavaScript, côté serveur par une configuration (upload_max_filesize en PHP, une limite de taille de requête sur un reverse proxy), ou côté stockage — mérite d’être testée avec précision, pas avec un fichier volumineux pris au hasard. Le test pertinent porte sur le comportement exactement à la frontière : un fichier une taille en dessous de la limite doit passer, un fichier une taille au-dessus doit être rejeté proprement, et un fichier exactement à la limite doit se comporter de façon cohérente avec la documentation de l’API ou du composant testé.

Trouver ou fabriquer un fichier réel de taille exacte est en pratique peu pratique : redimensionner une vraie image ou un vrai document pour atteindre un nombre d’octets précis demande des essais successifs, et le résultat reste rarement reproductible d’un test à l’autre. Un fichier généré à la taille exacte demandée, rempli de contenu arbitraire (texte répété ou octets nuls), résout ce problème directement : la taille est déterministe, le test est reproductible, et le contenu du fichier importe peu puisque seul son poids est sous test.

Ce type de fichier permet de couvrir systématiquement les cas limites d’une suite de tests : la taille maximale autorisée moins un octet (doit passer), la taille maximale exacte (comportement à documenter), la taille maximale plus un octet (doit être rejeté), et éventuellement une taille très supérieure pour vérifier qu’un rejet précoce évite de traiter inutilement un fichier manifestement hors limite plutôt que de le recevoir intégralement avant de le rejeter.

Un point à garder à l’esprit : un fichier généré uniquement pour sa taille n’est généralement pas un fichier valide et ouvrable dans un format donné, même s’il porte une extension ou une signature binaire correspondante. Pour un test qui doit aussi vérifier la détection du type de fichier en plus de sa taille, ajouter la signature binaire du format ciblé au fichier généré permet de tester les deux dimensions — taille et type — dans un seul fichier de test.

Générer un fichier de taille exacte →

Voir aussi

Sources

Dernière mise à jour :