Как я могу использовать Perl для тестирования программ на C? - PullRequest
3 голосов
/ 13 сентября 2009

Я ищу несколько учебных пособий, показывающих, как можно тестировать программы на C, написав Perl-программы для автоматизации тестирования.

В основном я хочу научиться тестированию автоматизации с помощью программ на Perl. Может ли кто-нибудь поделиться такими уроками или вашим опытом, который может помочь мне запустить этот процесс?

Ответы [ 5 ]

10 голосов
/ 13 сентября 2009

Perl-тесты обычно используют TAP . Существует несколько библиотек C для TAP . Посмотрите эту презентацию тестирования Perl .

2 голосов
/ 15 сентября 2009

Если вы хотите начать изучать, как использовать Perl для тестирования внешних программ, начните с изучения использования Perl для тестирования бит Perl. Модуль Test :: More - хорошее место для начала. Когда вы поймете это, посмотрите на все другие Test :: * модули на CPAN , чтобы увидеть, выполняет ли один из этих модулей то, что вам нужно.

Если у вас есть конкретный вопрос, спросите об этом. Этот вопрос слишком широк, чтобы кто-нибудь мог дать полезный ответ.

2 голосов
/ 14 сентября 2009

Вам стоит взглянуть на Perl Testing: тетрадь разработчика от хроматика и Иэна Лэнгворта.

У меня есть намерение купить копию, но пока я только что просмотрел ее на собраниях perlmongers. Но, похоже, это то, что вы ищете.


UPDATE:

Хм, и это показывает, что я должен прочитать вопрос - тестирование программ на C с помощью Perl, а не тестирование программ на Perl с помощью Perl.

Книга по-прежнему может быть полезна (поскольку вам, вероятно, следует писать тестовые сценарии и использовать Test::More и друзей), но вам нужно будет написать набор функций Perl для управления вашим C, если вы принять этот подход. В основном

sub run_my_c_program {
    my @args=@_;

    #Set up test environment according to @args

    system "my-c-program";

    # Turns restults into a $rv data structure

    return $rv;
}

, а затем проверьте $rv так же, как обычный тест Perl:

is_deeply(run_my_c_program(...),
          { .. what I think it returns ..}, 
          ".. description of what I'm testing ..");
1 голос
/ 25 сентября 2009

У меня нет учебника, но я был в тестовой команде, которая тестировала компилятор C ++. Используемый нами тестовый жгут (самодельный) был написан на Perl, и он работал у нас много лет. Perl был идеальным, потому что мы могли легко использовать его для вызова инструментов для сборки программы, захвата вывода для последующей вставки в наши журналы тестов (используя «backticks» для запуска компилятора. Например: $ compilerOutput = `cl -?` ; ), затем, если сборка прошла успешно, запустите тестовые программы и сохраните их выходные данные, снова для вставки в наши тестовые журналы.

Другие преимущества, которые мы получили от использования Perl:

  • Для обнаружения прохождения / сбоя полезна поддержка регулярных выражений в Perl.
  • Наша программа (компилятор) в течение своей жизни была портирована на множество различных аппаратных архитектур. Поскольку исходный код Perl был доступен и в C, мы могли запустить perl на новой архитектуре, как только был доступен компилятор C (который обычно является первым языком, реализованным в новой среде после ассемблера).
  • Много документации, книг, справки.

-Ron

0 голосов
/ 11 ноября 2015

Я написал статью о Тестировании C с помощью Libtap , который использует Perl Test :: Harness для тестирования C-программ. Вот пример проекта: https://github.com/stig/libggtl/tree/master/t - может не собираться больше, поскольку эзотерическая система сборки, вероятно, не существует, но вы должны быть в состоянии выяснить, как она работает: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...