пятница, 31 января 2014 г.

Про тесты ещё

Я когда-то писал об атомарных тестах и "комплексных тестах".

Попробую пояснить "разницу"...

Я сейчас работаю над одним БОЛЬШИМ куском проекта (ов).

Над "кодогенерацией из модели" в "целевые языки".

Там есть "комплексные" тесты, которые "грузят ВСЮ большую модель" и "как-то" её трансформируют.

И эти тесты служат - "дымовым анализатором".

Если они сломались, то значит - "что-то пошло не так".

Так о чём речь?

Эти "комплексные тесты" - сломались и показали ОШИБКУ. Уже - ПОЛ-ДЕЛА. Но!

Что с этим делать?

"Комплексные тесты" - продолжительные по времени, да и "отлаживать их тяжело".

Вот тут на помощь приходят "атомарные тесты".

Которые - "очень маленькие". Буквально "две три строки".

Но которые тестируют примитивы "грамматики целевого языка".

Что я делаю?

Я сначала запускаю "атомарные тесты" и смотрю, что "в них ничего не сломалось".

Потом я запускаю - "комплексные тесты" и смотрю - "а не сломалось ли что в них".

Если "сломалось", то я вычленяю проблему и пишу "атомарный тест".

ЕЩЁ ОДИН.

И "отлаживаюсь" на комплекте "атомарных тестов".

Которые "проходят за микросекунды".

Входные и выходные данные я для них придумываю "из головы".

Когда я отладился на "атомарных тестах" - я опять пускаю "комплексные тесты".

Ну и процесс - ИТЕРАТИВНЫЙ.

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

Как-то так...

"Комплексные тесты" - порождают атомарные, а "атомарные" - валидируют "комплексные".

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

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