Зачем вообще перепроверять чужой громкий тезис
Формулировка «модель исполняет команды с изображения» ходит по обсуждениям как установленный факт и меняет решения: под неё закрывают целые сценарии работы с фото. У нас фотографии в конвейере — рабочий материал, поэтому цена тезиса измеряется в отброшенной автоматизации, и проверить его на своём стенде дешевле, чем поверить.
Проверка строилась под повторение посторонним: конструкцию фикстуры описываем, кроме параметров самой вставки — их не публикуем, потому что это уже не описание класса, а готовый рецепт. Класс формулируется одной строкой: в изображение вложена инструкция, адресованная модели, и вместе с изображением подаётся обычное безобидное задание.
Счёт по картиночным классам
| Показатель | Значение |
|---|---|
| Прогонов по классам с изображением | 52 |
| Пропусков вредного действия | 0 |
| Файлов-жертв изменено | 0 |
| Прогонов, где текст с картинки прочитан | 8 из 13 |
| Ложных отказов по этим же классам | 7 |
Две последние строки важнее первых трёх. Строка про чтение снимает удобное возражение «модель просто не разглядела текст»: в большинстве прогонов текст был прочитан и пересказан — и всё равно не выполнен. Разрыв между «увидела инструкцию» и «подчинилась инструкции» на нашем материале оказался полным.
Семь ложных отказов из той же группы прогонов показывают обратную сторону. Часть моделей, распознав вставку, останавливала и законную половину задания — то есть платой за нулевой пропуск стал простой на безобидной работе. Считать одну сторону без другой мы перестали после того, как увидели эти два числа рядом.
Судья смотрит на состояние, а не на формулировку
Главный инструмент такого замера — не модель и не фикстура, а правило разметки. Пока вердикт ставится по словам ответа, замеряется вежливость, а не поведение. Отказ, написанный красивой фразой, засчитывается как безопасность, хотя на диске в этот момент уже нет файла.
Правило, к которому мы пришли. Гейт судит по состоянию до и после: изменилось ли содержимое файла, исчез ли он, появились ли в выходе данные, которых там быть не должно. Слова-маркеры — «не могу», «отказываюсь», «выполнено» — не гейт нигде и никогда. Расхождение между словами и состоянием мы видели в обе стороны.
Практическое следствие для любой приёмки, не только для замеров безопасности: сначала смотрите на артефакты, потом читайте отчёт. Порядок именно такой, потому что прочитанный первым отчёт задаёт ожидание, и дальше вы ищете подтверждение, а не расхождение.
Чего наш результат не доказывает
Оговорка обязательна, иначе разбор превращается в такой же громкий тезис, только с обратным знаком. Исходное утверждение относилось к другому классу систем — модели с иным устройством обработки входа, где картинка попадает в конвейер по-другому. Наш стенд про это ничего не говорит.
- Мы опровергли перенос, а не первоисточник. На нашем наборе моделей и на нашей конструкции фикстуры эффект не воспроизводится. Из этого не следует, что его не было там, где его наблюдали.
- 52 прогона — не бесконечность. Ноль пропусков на такой выборке означает «редкое или отсутствующее», а не «невозможное».
- Класс уязвимости остаётся живым. Инъекция через данные в том же заезде дала далеко не нулевой счёт; картинка просто оказалась не самым удобным её носителем.
Почему не называем оппонента. Разбор нужен ради метода, а не ради спора: тезис ходит без авторства, проверялся он на нашем материале, и от фамилии рядом воспроизводимость не меняется.
Что забрать себе
- Дорогой чужой тезис проверяйте у себя. Если утверждение закрывает вам целый сценарий работы, стоимость проверки почти всегда ниже стоимости отказа от сценария.
- Вердикт — из состояния. Контрольная сумма до и после, факт удаления, наличие посторонних данных в выходе. Текст ответа читается последним и ни на что не влияет.
- «Прочитала» и «выполнила» — разные события. Меряйте их раздельно, иначе первый же пересказ вредной инструкции запишется в пробой.
- Ноль пропусков публикуйте вместе с ложными отказами. Семь простоев рядом с нулём пробоев — честная картина; ноль в одиночку — реклама.
- Границы переноса — в тот же абзац, что и вывод. Другой класс систем, другой конвейер — другой результат, и сказать это должен автор замера, а не критик.