Тестирование
- модульное → системное → (интеграционное) → приёмочное
- Модульное: тысячи их 
- Модульное, 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) (необязательно) попробовать добиться как можно более полного покрытия (например, с помощью prlimit)
 
- Сделать примитивную поддержку проверки покрытия
 
- Превратить в библиотеку 
- В репоизтории с домашними заданиями создать подкаталог 08_TestingCoverage и положить решение туда 
