Можно ли прикрепить вложение больше 100 мегабайт и проверить границы?
Что проверяют
Умеете ли вы превращать расплывчатую просьбу в тест-дизайн: где именно стоит ограничение, в каких единицах оно задано и что считается корректным поведением при превышении. Проверяют технику граничных значений и то, читаете ли вы требования до прогона, а не после.
Как отвечать
Сначала уточните требование, а не бегите грузить файл. Вопросы, которые стоит задать:
- где объявлен лимит: в интерфейсе, на прокси, в бэкенде, в хранилище;
- в каких единицах мегабайт: 1000000 или 1048576 байт, разница ощутимая;
- меряется размер файла или размер запроса целиком, где есть ещё границы multipart и служебные поля;
- что должно происходить при превышении: понятная ошибка до начала загрузки или обрыв в процессе.
Дальше классические границы, и в байтах, а не «примерно сто мегабайт»: лимит минус один байт, ровно лимит, лимит плюс один байт. Отдельно пустой файл и имя с недопустимыми символами. Данные готовятся командой вида truncate -s 104857600 big.bin, чтобы размер был точным.
Проверяется не только код ответа, но и состояние системы: не остался ли частично залитый файл, освободилось ли место, что видит пользователь при обрыве сети посередине, не вешает ли загрузка интерфейс.
Где спотыкаются
Берут границы наугад, вроде файла на 99,9 мегабайта. Такой тест не отвечает на вопрос, где именно проходит граница, и пропускает ошибку на единицу, ради которой техника и придумана.
Второе: проверяют только интерфейс. Клиентская проверка размера обходится прямым запросом к API, и настоящий лимит надо щупать в обход формы, иначе дыра останется незакрытой.
Третье: считают тест провалившимся, увидев отказ сервера. Отклонить слишком большой файл это ожидаемое поведение. Дефект тут другой: невнятное сообщение, код ответа не по смыслу, разрыв соединения без ответа или таймаут вместо явного отказа.