Тестирование
- модульное → системное → (интеграционное) → приёмочное
 Модульное: тысячи их
Модульное, XUnit
- Runner
 - Assertion
 - Test → case → suite
 - Fixture
 
- Coverage
 - Системное и далее — слишком много методологий
 - CI — не рассматриваем, хотя, возможно, стоило бы
 
Check
- ЯП — C
 Поддержка TAP и др.
- Поддержка pkgconfig (⇒ autotools, cmake и т. п.)
 
Check + autotools
За основу взят https://github.com/skeeto/fantasyname/tree/master/c
- Некоторые этапы 
Сборка библиотеки и программы-примера из каталога src
тест с использованием check (программа на Си, содержит ошибку, но работает ☺)
тест переписан на checkmk (входит в состав check)
 
Тестовое покрытие
Опять-таки тысячи их, посмотрим gcov (встроен в gcc!)
CMake / CTest / …
(Не успеем)
CMake: add_tests
CMake + check: CMake + check
CMAke + CTest: короткая статья, в документации, руководство
CMake + CTeat + coverage: в документации, в руководстве по CTest
Д/З
- Изучить выбранный вами фреймворк тестов для Си 
Например, check, autotools и пример из лекции
- В ALT Linux понадобятся: 
make, automake, autoconf
libtool
libcheck-devel, check
- (кажется, всё?)
 
 
- В ALT Linux понадобятся: 
 
 Взять за основу Growable Memory Buffers for C99
- Превратить в библиотеку 
 Функция в ней всего одна, остальное макросы, и переделывать это не надо Все макросы уезжают в .h-файл
 Приложение-пример можно не писать
Тесты взять из авторского файла tests.c
Тесты на память с setjmp() можно выкинуть.
- Оформить их сообразно правилам фреймворка в несколько отдельных тестов 
 (необязательно) попробовать добиться как можно более полного покрытия (например, с помощью prlimit) 
 - Сделать примитивную поддержку проверки покрытия
 
- Превратить в библиотеку 
 В репоизтории с домашними заданиями создать подкаталог 08_TestingCoverage и положить решение туда
