Тестирование
Как устроена защита проекта: сторожа кода, сборка, тесты и тринадцать экзаменов с рубежом.
Защита вместо обещаний
Ни одна правка не входит в проект, пока не пройдёт защиту. Подогнать под неё ответ нельзя, а
обойти — нечем.
Сторожа кода
- Гейт имён: чужие контракты не потеряны.
- Гейт шаблонов: знание — в данные, не в код; ядро не знает слов языка.
- Гейт шпагетти: сложность ветвлений и длина домов под порогом.
- Гейт заглушек: не решать за орган и не судить по краю разбора.
- Гейт свежести кубов: тронул узел — знания протухли, пересобирай.
- Гейт чтения: замер зрения не мог измениться — шаг пропускается вслух.
Сборка и тесты
- Сборка всего дерева.
- Модульные тесты (ctest) — контракты домов.
- Проба руки: движок собирает и запускает написанное.
Экзамены
- Контракт беседы: 13 из 13.
- Батарея живой речи: 9 из 16.
- Выбор функции C++: 11 из 16.
- Поведение по просьбе: 5 из 5.
- Сторож выбора C++: индивидуальная защита.
- Выбор функции PHP: 11 из 17.
- Письмо на C++: 7 из 7.
- Различение соседей: 11 из 18.
- Своё против чужого: 3 из 5.
- Жёсткая языковая область: 6 из 6.
- Цепочка решения: след виден целиком.
- Поведение письма: 11 из 11.
- Расследование: 7 из 7.
- Вывод: 0 из 6.
- Отложенный экзамен: 28 из 30.
Правило рубежа
У каждого экзамена объявлено, сколько билетов уже взято. Это рубеж: меньше брать нельзя. Экзамен,
не сданный целиком, всё равно сторожит — от отката.
Отложенный экзамен
Его билетов нет в проекте. Они берутся из самого справочника и сменяются по дню года: их не видел
ни строитель, ни движок, и подогнать под них нечего.
Проверка делом
Мало собрать написанное — надо запустить. Движок строит ряд чисел, считает ожидание прямым циклом
и сравнивает с тем, что вернула его функция. Разошлось — говорит вслух и называет свою ошибку.