Продвинутые техники и конкретные приёмы работы в check.h • C • стрим, лайвкодинг

Основы фреймворка Check мы уже пощупали. А как конкретно с ним работать? Как писать код тестов в деталях и на конкретных задачах? Разберёмся. Таймлайн: 00:00 — Вступление: продолжение лекции о библиотеке Check 01:50 — Проблемы начинающих: плохие тесты, устаревший код 03:30 — Показывает текущий проект: динамические строки на C 04:45 — История проекта: эволюция вместе с Check 05:45 — Что не так с тестами: громоздкие кейсы и повторяющийся код 07:00 — Организация кода: кейсы, сьюты, макросы для запуска 08:30 — Запуск отдельных кейсов по тегам вместо всего теста 10:00 — Как работают теги и зачем они нужны 11:20 — Проблема с пробелами в названиях кейсов 12:40 — Новая система запуска: тегированный раннер 13:30 — Почему кейсы выглядят неравномерными по количеству тестов 14:30 — Пример теста: длина строки, как выглядит плохой тест 16:00 — Пошаговая разработка через тестирование 17:15 — Исключительные случаи: пустые строки, NULL 18:40 — Повторяющийся код в тестах: пора оптимизировать 19:50 — Переход к параметризованным тестам (фикстурам) 21:00 — Массивы строк + массивы ожидаемых результатов 23:00 — Генерация входных данных и требований 25:00 — Массив требований как сообщения об ошибках 27:30 — Использование индекса в параметризованных тестах 29:10 — Удаление старых тестов, переход на универсальный тест 31:00 — CK_PARAM_INDEX и обход по массивам 32:00 — Использование шаблонов сообщений с printf-подобной функцией 34:00 — Живой запуск теста, обнаружение ошибки в ожидаемом значении 36:00 — Лайфхак: как узнать правильное значение из логов 38:00 — Исправление тестов на лету 39:30 — Разбор Fail vs Error в Check 41:00 — Понимание параметризованных проверок через индекс 42:00 — Особенности работы со строками в C 43:30 — Проблемы с логами и stderr, использование tail -f 44:50 — Обработка NULL-значений, проверка указателей 45:40 — Проверки через ck_assert_ptr_nonnull и аналоги 46:30 — Тест: отрезание первого символа строки 48:00 — Проверка второго результата функции — остатка строки 50:00 — Почему сравнение длин строк — плохая идея 52:00 — ck_assert_str_eq для сравнения строк 53:30 — Переписываем тест на две отдельные проверки 55:00 — Тестируем новую структуру: работает ли? 56:30 — Разбор неудачной проверки и ошибка в требовании 57:30 — Проверка поведения при ошибке — одна проверка отрубает вторую 59:00 — Почему так писать плохо: пора использовать структуры 1:00:30 — Тесты на структуры: красиво, но сложнее 1:01:15 — Доверенные функции: как Check помогает 1:01:45 — Стратегия: писать тесты в порядке зависимости 1:02:55 — Автогенерация тестов: существует, но неочевидна 1:03:15 — Тестирование через exit-коды 1:04:00 — Введение в mock-функции: что это и зачем нужны 1:05:30 — Проблемы: медленные или непредсказуемые зависимости 1:06:30 — Подмена зависимостей через указатели на функции 1:07:40 — Альтернатива: подмена реализаций при компиляции 1:08:50 — Интерфейсы в заголовках остаются, реализации меняются 1:10:00 — Впечатления: “так можно было?!” 1:10:40 — Заключение: вопросы, материалы, благодарности Конспект: https://github.com/olgapavlova/lectures/tree/main/checkplus

Иконка канала Open Стрим
16 подписчиков
12+
1 просмотр
8 дней назад
12+
1 просмотр
8 дней назад

Основы фреймворка Check мы уже пощупали. А как конкретно с ним работать? Как писать код тестов в деталях и на конкретных задачах? Разберёмся. Таймлайн: 00:00 — Вступление: продолжение лекции о библиотеке Check 01:50 — Проблемы начинающих: плохие тесты, устаревший код 03:30 — Показывает текущий проект: динамические строки на C 04:45 — История проекта: эволюция вместе с Check 05:45 — Что не так с тестами: громоздкие кейсы и повторяющийся код 07:00 — Организация кода: кейсы, сьюты, макросы для запуска 08:30 — Запуск отдельных кейсов по тегам вместо всего теста 10:00 — Как работают теги и зачем они нужны 11:20 — Проблема с пробелами в названиях кейсов 12:40 — Новая система запуска: тегированный раннер 13:30 — Почему кейсы выглядят неравномерными по количеству тестов 14:30 — Пример теста: длина строки, как выглядит плохой тест 16:00 — Пошаговая разработка через тестирование 17:15 — Исключительные случаи: пустые строки, NULL 18:40 — Повторяющийся код в тестах: пора оптимизировать 19:50 — Переход к параметризованным тестам (фикстурам) 21:00 — Массивы строк + массивы ожидаемых результатов 23:00 — Генерация входных данных и требований 25:00 — Массив требований как сообщения об ошибках 27:30 — Использование индекса в параметризованных тестах 29:10 — Удаление старых тестов, переход на универсальный тест 31:00 — CK_PARAM_INDEX и обход по массивам 32:00 — Использование шаблонов сообщений с printf-подобной функцией 34:00 — Живой запуск теста, обнаружение ошибки в ожидаемом значении 36:00 — Лайфхак: как узнать правильное значение из логов 38:00 — Исправление тестов на лету 39:30 — Разбор Fail vs Error в Check 41:00 — Понимание параметризованных проверок через индекс 42:00 — Особенности работы со строками в C 43:30 — Проблемы с логами и stderr, использование tail -f 44:50 — Обработка NULL-значений, проверка указателей 45:40 — Проверки через ck_assert_ptr_nonnull и аналоги 46:30 — Тест: отрезание первого символа строки 48:00 — Проверка второго результата функции — остатка строки 50:00 — Почему сравнение длин строк — плохая идея 52:00 — ck_assert_str_eq для сравнения строк 53:30 — Переписываем тест на две отдельные проверки 55:00 — Тестируем новую структуру: работает ли? 56:30 — Разбор неудачной проверки и ошибка в требовании 57:30 — Проверка поведения при ошибке — одна проверка отрубает вторую 59:00 — Почему так писать плохо: пора использовать структуры 1:00:30 — Тесты на структуры: красиво, но сложнее 1:01:15 — Доверенные функции: как Check помогает 1:01:45 — Стратегия: писать тесты в порядке зависимости 1:02:55 — Автогенерация тестов: существует, но неочевидна 1:03:15 — Тестирование через exit-коды 1:04:00 — Введение в mock-функции: что это и зачем нужны 1:05:30 — Проблемы: медленные или непредсказуемые зависимости 1:06:30 — Подмена зависимостей через указатели на функции 1:07:40 — Альтернатива: подмена реализаций при компиляции 1:08:50 — Интерфейсы в заголовках остаются, реализации меняются 1:10:00 — Впечатления: “так можно было?!” 1:10:40 — Заключение: вопросы, материалы, благодарности Конспект: https://github.com/olgapavlova/lectures/tree/main/checkplus

, чтобы оставлять комментарии