MyWackoSite: NsuTs/Вам запрещён доступDocumentation/devguide/functesting ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

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

Функциональные 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) тестового фреймворка ).

 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]