четверг, 5 декабря 2013 г.

И ещё о тестах. По мотивам комментария от Романа Янковского

Сам комментарий был тут - http://programmingmindstream.blogspot.ru/2013/11/tdd_28.html?showComment=1386063749826#c6337489882377572276

ОЧЕНЬ ПРАВИЛЬНЫЙ и НУЖНЫЙ комментарий. О МНОГОМ заставляет задуматься.

Вот мой ответ:

"Роман, ты ВО МНОГОМ ПРАВ!

Ты даже заставил меня ПО ИНОМУ взглянуть на процесс разработки и тестирования.

СПАСИБО!

Пред-условий и пост-условия - это - КРУТО!

И они - ВАЖНЫ и РАБОТАЮТ.

И я ими - ПОЛЬЗУЮСЬ. Хотя я смотрел на них "несколько иначе".

Но они НЕ ЗАМЕНЯЮТ тестов.

Скажу так - пред-условие и пост-условие - это КОНТРАКТ. А ТЕСТ - это "точка входа" для проверки контракта.

БЕЗ "точки входа" КОНТРАКТ может оказаться НЕ ПРОВЕРЕННЫМ.

Ну ведь не на "реальных же пользователях тестировать".

Если "не донёс" - могу развить тему. Если интересно."

Ремарка. "Покрытие" пред-условий и пост-условий - КТО может гарантировать, если не тесты?

Нужен какой-то "запускатор" проверки пред- и пост-условий. Понятно о чём я?

Ещё раз повторюсь. Про "TDD ведёт" и "TDD обеспечивает ИНФРАСТРУКТУРУ разработки".

Пишем ФУНКЦИЮ. Пишем в ней ПРАВИЛЬНЫЕ и ДОСТАТОЧНЫЕ пред- и пост-условия.

Где эта функция будет вызвана?

В "контексте большого проекта"...

Ответ - "да хрен её знает где"....

Пишем тест.

ОТДЕЛЬНОСТОЯЩИЙ.

Делаем mock'и или "эталоны".

Запускаем ТЕСТ или ТЕСТЫ.

Всё! Вуаля.

Вот и ответ - "где эта функция будет вызвана". С её ПРАВИЛЬНЫМИ и ДОСТАТОЧНЫМИ пред- и пост-условиями.

Где?

Да вот В ТЕСТЕ и БУДЕТ вызвана.

И не надо ждать пока она "вызовется" в "большом проекте" или когда "пользователь вызовет её".

Мысль понятна?

"TDD - обеспечивает ИНФРАСТРУКТУРУ разработки".

Мысль понятна?

P.S. Ещё мне кажется, что не все "вкурили" смысл "атомарных тестов".

Когда проверяется "очевидное" что-то вроде:

List.Insert(1, SomeValue);
Assert(List.Item[1] = SomeValue);

Или:

l_Count := List.Count;
List.Delete(SomeIndex);
Assert(List.Count == l_Count - 1);

"Атомарные тесты" - это РЕАЛЬНО КРУТО... Поверьте мне "на слово"...

Комментариев нет:

Отправить комментарий