Найти в Дзене

TDD играет новыми красками если подумать

Вообще я только сейчас понял насколько хорошо нейросети подходят под TDD (Test Driven Development). Часто в плане будет стоять тест, но если изначально придерживаться этого подхода, это будет работать до забавного интересно. Основной проблемой для TDD всегда была скорость. Сначала пишем тест, потом код, подключаем это все в CI&CD. И написание + поддержка тестов отнимала кучу времени. Конечно же в данном подходе не стоит и код, и тест генерить нейросетью. Это не TDD. Это самоподтверждающийся шум. А вот написать тест грамотно, как подтверждение корректности реализации и остальное оставить кодогенерации — звучит разумно. Для мелких задач можно и тесты кодогенерить в целом, но важно держать в голове что ИИ всегда пишет тест не к твоему функционалу, а к своей реализации. То есть тест будет тестировать что сделала нейросеть, а не то что надо было сделать по бизнес логике. Конкретно это выражается в том, что ИИ может: пропустить edge-кейсы, о которых ты не написал явно; выбрать одну интерп

TDD играет новыми красками если подумать

Вообще я только сейчас понял насколько хорошо нейросети подходят под TDD (Test Driven Development). Часто в плане будет стоять тест, но если изначально придерживаться этого подхода, это будет работать до забавного интересно.

Основной проблемой для TDD всегда была скорость. Сначала пишем тест, потом код, подключаем это все в CI&CD. И написание + поддержка тестов отнимала кучу времени. Конечно же в данном подходе не стоит и код, и тест генерить нейросетью. Это не TDD. Это самоподтверждающийся шум. А вот написать тест грамотно, как подтверждение корректности реализации и остальное оставить кодогенерации — звучит разумно.

Для мелких задач можно и тесты кодогенерить в целом, но важно держать в голове что ИИ всегда пишет тест не к твоему функционалу, а к своей реализации. То есть тест будет тестировать что сделала нейросеть, а не то что надо было сделать по бизнес логике.

Конкретно это выражается в том, что ИИ может: пропустить edge-кейсы, о которых ты не написал явно; выбрать одну интерпретацию неоднозначного ТЗ и последовательно провести её и в тестах, и в коде — всё зелёное, но не то что ты хотел; протестировать детали реализации вместо поведения.

Если уметь грамотно контролировать контракты и давать ТЗ на их реализацию. Делать кодогенерацией тесты и реализацию раздельно, то это близко к TDD. Но с грамотно написанными тестами забавно как нейросеть может адаптировать реализацию. Если тест писать самостоятельно, то на самом деле вопрос филосовский важно ли «что в черном ящике». Так как тест может валидировать производительность, безопасность, реализацию, поведение и все что хочешь.

Но другой вопрос, что ИИ может пытаться подогнать ответ под тест. Поэтому конечно этот подход нужно проверять временем. Но просто работать может любопытно.

#мысли