MyWackoSite: NsuTs/Documentation/devguide/functesting

Функциональное тестирование (Автоматическое)

Функциональные Selenium тесты

Для проверки корректности функционирования web-интерфейса системы тестирования NSUts были написаны следующие тесты:

1. Test Edit Profile – тест, реализующий проверку страницы изменения профиля (редактирование полей, проверка на валидность значений);

2. Test Encoding – тест, выполняющий проверку правильности отображения кодировки (utf-8);

3. Test Es Question – тест, реализующий проверку сущности «Вопрос-Ответ»;

4. Test Log Pass Gen – тест, реализующий проверку страницы генерации паролей на транице “Лог”;

5. Test Log Privileges – тест, выполняющий проверку корректности выбора привилегий на странице «Лог-Настройка привилегий»;

6. Test Log Shift – тест, реализующий проверку корректности работы туров при изменении параметров на странице «Лог-Сдвиг»;

7. Test News – тест, выполняющий проверку функциональности при редактировании новостей;

8. Test Olympiad – тест, реализующий проверку страницы “Лог – Олимпиады”;

9. Test Registration – тест, реализующий проверку страницы регистрации и работоспособности страницы “Лог – Генерация паролей”;

10. Test Statements – тест, выполняющий проверку корректности загрузки/удаления файлов настроек и решений на странице “Настройка”;

11. Test Submit – тест, выполняющий проверку на корректность сданных решений;

12. Test Tests – тест, выполняющий проверку корректности загрузки/закачки/удаления тестов;

13. Test Tour – тест, реализующий проверку работы туров.

14. Доступность условий задач – тест, проверяющий доступность/недоступность условий задач.

Для запуска тестов необходимо:

1. Perl (Active Perl)

2. Java

3. Скачать файлы Selenium RC http://seleniumhq.org/download/

4. Сделать checkout тестов из svn: svn+ssh://swsoft.nsu.ru/home2/svn/olympic/branches/nsuts-1.3.0.0/tests

5. Скопировать модули Selenium (suite_new\Test, suite_new\WWW) в папку Perl\lib.

6. Запустить selenium-server-2.0\run_selenium_server.pl

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

7. Изменить конфиг файл suite_new\test_suite.cfg

8. Запустить suite_new\run_all_tests.pl

(Это можно сделать, например, в Notepad++, скачав дополнительно плагин Npp Exec?

и прописав путь к Perl подробнее )

9. Установить db_service

Если ошибка при запуске firefox, то нужно добавить путь до firefox.exe в переменную окружения PATH.

Описание

Все тесты системы NSUts написаны с использованием объектно-ориентированного подхода и используют специально написанные классы страниц (suite_new/Nsuts/Page), которые позволяют свести к минимуму исправления кода в случае изменения web-интерфейса. В данных классах страниц используются специальные функции waitForElementPresent, waitForTextPresent и waitForPageToLoad, написанные с учетом более удобного логирования и устойчивости к ошибкам, связанным с timeout'ми. Каждый запрос страницы и ввод данных в пользовательские формы должен предваряться этими функциями.

Все тесты системы NSUts реализуются при помощи тестовых классов, содержащиеся в директории suite_new/Nsuts/Test.

Каждый тестовый класс должен содержать метод runTests для начальной инициализации драйвера Selenium.

Начальная инициализация драйвера Selenium, а также другие сервисные функции реализованы в специальных модулях из директории suite_new/Nsuts/Util.

Последовательность тестовых шагов реализуется посредством создания в методе runTests экземпляров классов страниц из suite_new/Nsuts/Page и вызовов соответствующих методов данных объектов.

Запуск тестов осуществляется следующим образом:

Сами по себе отдельные тесты не предоставляют удобный способ для проведения тестирования, поскольку Selenium API имеет не очень удобную систему логирования, необходимую для формирования отчетов о результатах тестирования. Кроме того, каждый тест может по разному влиять на данные внутри системы тестирования, в реузультате чего остаются ненужные или ошибочные данные в БД системы тестирования, которые желательно после каждого теста удалять.

Для удобства проведения тестирования был реализован набор инструментов (тестовый фреймворк), оптимизирующий запуск автоматических Selenium-тестов и представляющий результаты тестирования в отформатированном виде.

Тестовый фреймворк состоит из следующих компонентов:

● db_service_setup.pl – скрипт для создания новой БД и пользователя, указанных в файле db_service.cfg;

● db_service_remove.pl – скрипт для удаления ранее созданной тестовой БД и пользователя;

● nsuts_new_db_service.cgi – сценарий для переинициализации тестовой БД, запускаемый из каталога cgi-скриптов системы.

● run_nsuts_tests.pl – основной скрипт для запуска Selenium-тестов.

Запуск скрипта run_nsuts_tests:

● без аргументов: выполнение всех тестов из директории, заданной в параметре tests_path конфигурационного файла test_suite.cfg;

● с аргументами: аргументы в виде имен тестов (напр. Test Encoding Test News) задают выполнение конкретных тестов из тестовой директории.

После каждого выполненного теста запускается сервис nsuts_db_service, который предназначен для создания, удаления и переинициализации тестовой базы данных.

Перед началом его использования требуется выполнить его установку на сервере системы тестирования. Адрес скрипта nsuts_db_service прописывается в конфигурационном файле test_suite.cfg в параметре db_service_url.

Результатом работы скрипта является набор логов для каждого теста в директории log и результирующий отчет по всем тестам (по умолчанию SUMMARY.txt) в текущей директории.

Запуск тестов и обработка статистики выполняется через модуль Perl TAP::Harness (можно скачать с CPAN.org в случае его отсутствия в списке модулей интерпретатора Perl).

TODO:

Подумать над изменением структуры классов (в частности, избавится от повторяющегося кода, лишних классов);

Преобразовать тестовые классы в запускаемые скрипты (поскольку все имена тестов должны хранится в массиве и запускаться методом runtests(@mas) тестового фреймворка ).