Автоматизация тестирования веб-
приложений с использованием
Thucydides: за и против
Козлов Андрей,
ООО «Центр автоматизации энергосбережения»
руководитель отдела тестирования
Особенности наших проектов
Как выбрать инструмент для автоматизации
Почему же Thucydides?
Как заставить тестировщика писать тесты
• 2 года активной разработки web-приложений
• несколько проектов в сфере сбережения
энергоресурсов
Отсутствие автоматизированных приемочных
тестов
регрессия ~ 150 кейсов (ПМИ)
Демонстрация продукта потенциальному заказчику
облегчение миграции кода на новые стенды
Автоматизация тестирования новой функциональности
разгрузка ручного тестирования+
Webdriver – лишь программная библиотека
Что будем делать?
С чего начать? Какая стратегия?
Удобный инструмент для автоматизации!
• webdriver
Удобный инструмент для автоматизации!
• webdriver
• фреймворк тестирования
Удобный инструмент для автоматизации!
• webdriver
• фреймворк тестирования
• логирование
Удобный инструмент для автоматизации!
• webdriver
• фреймворк тестирования
• логирование
• сборщик тестов
Удобный инструмент для автоматизации!
• webdriver
• фреймворк тестирования
• логирование
• сборщик тестов
• непрерывная интеграция
А какие инструменты
видели вы?
Иногда можно встретить такие
поддержка и доработка+
сопутствующая инфраструктура
обновление webdriver
качество кода
VS
поддержка документации
уровень вхождения
в проект
обучениеjunior
тестировщиков
Как мы пришли
к open-source
инструменту
1. разработка инструмента автоматизации
2. разработка и поддержка тестов
3. обучение коллег
Этапы автоматизации:
1. разработка инструмента автоматизации
2. разработка и поддержка тестов
3. обучение коллег
Этапы автоматизации:
• Thucydides
• Html Elements (Яндекс)
Java
Thucydides
• PageObject + StepsDictionary
• отличная документация
• классные отчеты
• возможность абстрагироваться от webdriver
• JUnit
BDD• JBehave
• EasyB
Архитектура тестов
• готовые программы и методики испытаний
• нет необходимости дублировать
приемочные критерии
JUnit
This is one of the easiest ways to start out with Thucydides, and is very well suited for regression testing, where communication and clarification with the various stakeholders is less of a requirement.*
* http://www.thucydides.info/junit
Архитектура тестов
1. разработка инструмента автоматизации
2. разработка и поддержка тестов
3. обучение коллег
Этапы автоматизации:
StepsDictionary
Page1methodA1()methodA2()
Page2methodB1()methodB2()methodB3()
Page3methodC1()methodC2()
Steps1step1Method(){ page1.methodA1(); page3.methodC1(); page2.methodB2();}
Steps2step2Method(){ page2.methodB2() page3.methodC2()}
Test1test(){ step1.step1Method(); }
TestNtest(){ step2.step2Method(); step1.step1Method(); … stepN.stepNMethod();}
@Testpublic void успешная_авторизация_пользователя_Региона(){ navigator.gotoHomePage(); OrganizationInfo organization = bdOrg.getOrganizationInfo(REGION); UserInfo user = new UserInfo(1, 1, 1, 1, 1, 1, 0, 0); user = bdUsers.getUserInfo(organization, user); auth.authUser(user); navigator.gotoProfilePage(); auth.checkLoginOnProfilePage(user); navigator.exitUser();}
navigator.gotoHomePage();
organization = bdOrg.getOrganizationInfo(REGION);user = new UserInfo(1, 1, 1, 1, 1, 1, 0, 0);user = bdUsers.getUserInfo(organization, user);
auth.authUser(user);
navigator.gotoProfilePage();auth.checkLoginOnProfilePage(user);
Заполнение поля:
element(login).type(“kozlov.andrey");enter(“kozlov.andrey").into(login);typeInto(login, “kozlov.andrey");
Синтаксис
Наглядные отчеты после прогона
Детальная информация о тесте
1. разработка инструмента автоматизации
2. разработка и поддержка тестов
3. обучение коллег
Этапы автоматизации:
Заинтересовываем тестировщика
Постановка задачи: ознакомление с проектом
http://www.thucydides.info/documentation
+ русскоязычный блог
http://internetka.in.ua/tag/thucydides/
#1
Вхождение тестировщика в проект
Постановка задачи: развертывание проекта
https://github.com/thucydides-webtests/thucydides/wiki/Getting-Started
Вхождение тестировщика в проект
#2
Постановка задачи:
• тесты-примеры
• парное программирование
Вхождение тестировщика в проект
#3
Вхождение тестировщика в проект
• консультации
• документация
• review кода
Работа с реальным проектом. Контроль в рамках:
#4
Не изобретайте свои велосипеды
Руководство к действию
Не изобретайте свои велосипеды
Используйте готовые инструменты
Руководство к действию
Не изобретайте свои велосипеды
Используйте готовые инструменты
Обучайте своих коллег
Руководство к действию
Не изобретайте свои велосипеды
Используйте готовые инструменты
Обучайте своих коллег
Регулярно проводите review кода
Руководство к действию