Найти тему
7 подписчиков

Всем привет!


Наверняка многие слышали про практику TDD - Test Driven Development. У которой есть некие сложности с применением. Напомню, ее суть не только и не столько в том, что тест должен предшествовать коду, а в сокращении врени итерации - тест-код. Т.е. в идеальном случае надо делать так:

1) простейший тест

2) код с заглушкой, позволяющий пройти тест

3) новый тест

4) усложнение заглушки

...

N) финальный работающий код

И коммитить желательно почаще.

Самое сложное здесь - заставить себя не писать сразу кучу тестов или весь метод сразу. Или даже весь класс + ряд зависимых классов, а идти мелкими шагами.

Сам пробовал - сложно)

И от одного из создателей XP Кента Бека есть решение - TCR https://medium.com/@kentbeck_7670/test-commit-revert-870bbd756864

Расшифровывается как test && commit revert.

Суть в следующем:

1) к запуску тестов привязывается команда git

2) если тесты успешные - git commit

3) если тесты упали, то коммитить неработающий код нельзя, потому делаем revert в виде git reset --hard

Только хардкор!)

4) в паралльном потоке работает цикл

while (true) {

git pull --rebase

git push

}

синхронизируя изменения других разработчиков.

Итог: переписав несколько раз большие куски кода из-за падения теста рано или поздно длина итераций станет минимально возможной.

Второй возможный кейс - кусок кода небольшой, но commit вовремя не сделан, и кто-то что-то параллельно закоммитил в develop и поломал ваши тесты.

Пример использования на практике с реализацией shell скрипта "test && commit revert":


Что думаете?

#Agile #XP #TDD #TCR
1 минута