Тестирование

Check

Check:

Check + autotools

Репозиторий с примером

Этапы разработки:

  1. Предварительные шаги
  2. Простой тест. Здесь и далее раннером работает shell-perl-… начинка ./test-driver, поставляемая с autotools.

  3. Тест переписан на libcheck.

  4. Тест ещё раз переписан на использование checkmk

  5. Авторские тесты удалены из основной прогарммы и переписаны на checkmk

    • Поскольку runner-ом у нас всё ещё работает ./test-driver, с его точки зрения это один тест, все подробности про внутренние suite и cases libcheck-а ему неизвестны.

    • TODO Возможно, стоит прикрутить к этому Test_Anything_Protocol, поддержка есть и в autotools, и в check

  6. Небольшая плюшка — просмотр журнала тестирования

Тестовое покрытие

Покрытие кода

Опять-таки тысячи их, посмотрим GCov

В тестовом репозитории:

  1. Поддержка gcov

CMake / CTest / …

(Не успеем)

Meson / Gcovr

(Не успеем)

Д/З

  1. Изучить выбранный вами фреймворк тестов для Си
    • Например, check, autotools и пример из лекции

      • В ALT Linux понадобятся:
        • make, automake, autoconf

        • libtool

        • libcheck-devel, check

        • (кажется, всё?)
  2. Взять за основу Growable Memory Buffers for C99

    • Превратить в библиотеку
      • (!) Функция в ней всего одна, остальное макросы, и переделывать это не надо

      • Все макросы уезжают в .h-файл

    • Приложение-пример можно не писать

    • Тесты взять из авторского файла tests.c

      • Тесты на память с setjmp() можно выкинуть.

    • Оформить их сообразно правилам фреймворка в несколько отдельных тестов
      • <!> (необязательно) попробовать добиться как можно более полного покрытия (предельные тексты, например, с помощью prlimit)

    • Сделать примитивную поддержку проверки покрытия (чтобы проценты показывало)
  3. В репоизтории с домашними заданиями создать подкаталог 09_Testing и положить решение туда

LecturesCMC/LinuxApplicationDevelopment2021/09_Testing (последним исправлял пользователь ArsenyMaslennikov 2021-11-28 15:28:04)