Тестирование черного ящика
Black box тестирование — это когда вы проверяете функциональность, не заглядывая под капот. LLM с этим плохо: они по дефолту загружают файл с реализацией в контекст или агент сам подтягивает код, чтобы понять, как с ним работать. Sonnet 3.7 в Cursor еще и маньяк порядка — он будет убирать "избыточность" из тестов, даже когда эта избыточность как раз и нужна для изоляции от багов в реализации.
В идеале нужно как-то маскировать или обобщать реализацию при загрузке в контекст, чтобы модель не "подсматривала" туда, где не должна. Архитектору надо будет указать, какую информацию прятать за границами абстракции.
Примеры
- Попросил Sonnet 3.7 в Cursor пофиксить падающий тест. Он его починил, но заодно "оптимизировал" — заменил захардкоженную константу на вычисление через тот же алгоритм, что и в основном коде. А константа-то должна была остаться именно захардкоженной, чтобы тест не повторял логику реализации! См. также подготовительный рефакторинг.