Автоматическое тестирование

Z Freenetis Wiki
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání


Автоматизированное тестирование используется в качестве обратной связи с разработчиком и контроля над его действиями.


Архитектура теста

Испытания полностью автоматизированы (Вам не нужно тестировать программы, необходимо только доставить данные для испытаний) и автоматически вносятся изменения в исходный код.

Тесты позволяют проверитьмодели,помощники иконтроллеры. Другие части системы проверяются только на корректность синтаксиса.

Тесты по юнит-тестам не сравнивают полученные значения функций, а только проверяют не является ли ошибкой завершения работы.

Тесты поддерживаются в *UNIX операционных системах.


Получение информации о исходном коде

Получение информации о исходном коде выполняется автоматически с помощью скрипта, который проходит через все модули и получая от них необходимые. Эти данные хранятся в документе XML ( / application / vendors/ unit_tester / unit_testing_config.xml).


Установка тестов

Установка необходимых библиотек:

v Ubuntu/Debianu:

sudo apt-get install curl perl libxml-writer-perl libxml-dom-perl

Fedora:

sudo yum install curl perl perl-XML-Writer perl-XML-DOM php-xml

Возможности:

cd /var/www/freenetis
chmod +x ./application/vendors/unit_tester/tester.sh

Предотвращение отправки e-mail/SMS т.д.:

Do config.php přidejte:

$config['unit_tester'] = TRUE;


Выполнение тестов

'Внимание: Тесты возможны только на локальном сервере разработки!'

 cd / var / www / freenetis / application / vendors / unit_tester
 . / tester.sh <URL> <LOGIN_NAME> <PASSWORD>


Примечание: время работы всех тестов на Intel Core i5 2,53 ГГц с Ubuntu 11.04 составляет около четырех минут.

Пример с аргументами

 . / Tester.sh-O http://localhost/freenetis Админ 123456


Аргументы тестового скрипта

 $. / Tester.sh - помощь
 Скрипт для тестирования FreenetIS
 ИСПОЛЬЗОВАНИЕ: tester.sh [параметры] URL Имя пользователя Пароль

 Опции:
  -О, --open-browser    Открыть браузер с ошибками моделей или помощников
                     автоматически, после обнаружения ошибок.
  -S, --skip-syntax        Пропустить проверку синтаксиса всех файлов
  -M, --skip-models      Пропустить тест моделей
  -H, --skip-helpers      Пропустить тест помощников
  -C, --skip-controllers Пропустить тест контроллеров
  -E, --enable-stats      Включить статистику и тесты


Редактирование проверяемой информации

Автоматически сгенерированных значений теста недостаточно для тестирования, поэтому уместно добавить некоторую дополнительную информацию.

Например, определите модель в файле конфигурации, найдите соответствующие объекты (как заголовок и имена атрибутов).

'Модель генерируется автоматически:'

 <MODEL name="test">
 <method name="testovaci_funkce" autogenerate="on">
     <attributes>
         <attribute name="user_id" default_value="" />
         <attribute name="filter_values" default_value="array()" />
     </ attributes>
     <values>
         <input>
             value = "" /> <параметр
             value = "Array ()" /> <параметр
         </input>
     </ values>
 </ Method>
 </ model>

Очень важным атрибутом метода является автоформирование. Если вы вносите изменения в методе и и устанавливаете их в off то при запуске тестирования изменения игнорируются.

Тегввод можно рассматривать как набор тестовых значений метода.

Если вы не хотите, что метод был протестирован вообще (обычно это методы, которые зависят от объектов или вставки данных в базу данных), это может быть достигнуто следующим образом:

<model name="test">

    <method name="testovaci_funkce" autogenerate="off">
        <attributes>
            <attribute name="user_id" default_value="" />
            <attribute name="filter_values" default_value="array()" />
        </attributes>
        <values>
        </values>
    </method>
</model>


Идеальные тестовые данные (попытка вставить пустые или бессмысленные значения) для нашей тестовой модели может выглядеть следующим образом:

<model name="test">

    <method name="testovaci_funkce" autogenerate="off">
        <attributes>
            <attribute name="user_id" default_value="" />
            <attribute name="filter_values" default_value="array()" />
        </attributes>
        <values>
            <input>
                <param value="" />
                <param value="" />
            </input>
            <input>
                <param value="" />
                <param value="array()" />
            </input>
            <input>
                <param value="1" />
                <param value="array('id' => '1')" />
            </input>
            <input>
                <param value="abd'se$#@`" />
                <param value="abd'se$#@`" />
            </input>
            <input>
                <param value="1" />
                <param value="array('id' => '1sef%se@š`', 'Ijnfsief' => 'se2', 'sef$a;!')" />
            </input>
        </values>
    </method>
</model>


Дополнительные возможности для контроллеров

Контроллеры могут также отправлять данные с помощью POST и HTTP GET, только для проверки входных параметров добавьте параметры в виде:

<param name="post_name" type="post" value="hodnota" />
<param name="get_name" type="get" value="hodnota" />


Работа редактирования испытания действия документа ===

После каждого изменения файла конфигурации, вы должны проверить его корректность с помощью прилагаемого DTD (/application/vendors/unit_tester/unit_testing_config.xml), так как сам тест позволяет допустимые конфигурации!

В Netbeans IDE проверка выполняется выбором конфигурационного файла и запуском через контекстное меню проверки XML.

Статистика и критерии

Тесты являются инструментом для анализа моделей и контроллеров. Их можно включить с помощью параметра -e.

Результаты тестов модели отобража.тся в выходноv HTML файл, наряду с тестами.

Результаты для контроллеров сохраняются в файле curl/cstats, который состоит из четырех столбцов, разделенных табуляцией.

  • Первый столбец содержит информацию о времени контроллера в секундах.
  • Второй столбец показывает потребление памяти в МБ для реализации.
  • Третий столбец - URL запроса.
  • Четвертый включает HTTP POST контроллера.

'Пример: запрос о 10 наибольших потреблений памяти:'

cat curl/cstats | cut -f 1,2,3 | sort -n -r -k 2,2 | head -n 10

Примечание: В данном руководстве рассматривается путь к FreenetIS предусмотренный в Установка FreenetIS