Upload
andrei-solntsev
View
183
Download
0
Embed Size (px)
DESCRIPTION
The fast and the continuous * Вы всё ещё гоняете все свои тесты на Selenium? * Вы всё ещё считаете, что TestNG круче, чем JUnit? * Вы всё ещё пытаетесь распараллелить свои тесты? * Вы всё ещё мечтаете иметь собственный Selenium Grid с * 30 машинами и прогонять тесты всего лишь за пару часов? Тогда мы идём к вам! Я поделюсь нашим опытом автоматизации тестирования, расскажу, как нам удаётся командой из нескольких человек писать и код, и тесты, и прогонять полный цикл автотестов всего лишь за 5 минут без гридов и прочих монстров. Тестирование - это не должно быть сложно!
Citation preview
•UI-тесты •–
•зло!
The fast and the continuous
Andrei Solntsev
•5 вещей,которые вы делаете
в тестированиинеправильно
Вброс 1
•Мечтаемраспараллелить
тесты
Вброс 1
•И запускать тестыВСЕГО
за пару часов!
Вброс 2
•PageObjects•Степы
Вброс 3
•TestNG круче, чем
JUnit
Вброс 4
•“Как сказать вебдрайверуигнорировать
невалидные SSL серты?”
Вброс 5
•Как победить •StaleElementException?
•И вот почему:
•Интеграционные тесты - •ОБМАН!
J. B. Rainsberger
• Integration tests are SCAM
http://devconfu.eu/video/239J. B. Rainsberger
• Интеграционные тесты - ОБМАН
• Интеграционные тесты - ОБМАН
• Интеграционные тесты - ОБМАН
• Интеграционные тесты - ОБМАН
Экспоненциальный рост!
• Интеграционные тесты - ОБМАН
•Что же делать?
тестируй!
•и
•Разбивай
• Разбивай и тестируй!
Линейный рост!
• Разбивай и тестируй!
UI-тесты - зло
Если у вас только UI-тесты
• Разбивай и тестируй!
•Это общий принцип
• Юнит-тесты• UI-тесты
•Писать•юнит-тесты
ВЫГОДНО
• Юнит-тесты - выгодно
•Менеджерам
• Юнит-тесты - выгодно
•Программерам
Нам некогда писать юнит-тесты,мы и так не успеваем.
Вы потому и не успеваете,что у вас нет юнит-тестов!
Без юнит-тестов
С юнит-тестами
Без юнит-тестов
С юнит-тестами
разработка
разработка
тест багфикс тест
тест багфикс в бой!
•А что же с UI-тестами?
•То же самое!
Rocket scienceТребования:● При скорости ветра 100 км/ч● Подъёмная сила крыла должна быть 150 кН
Как бы вы стали это тестировать?
● Запустить ВЕСЬ самолёт● Протестировать крыло ОТДЕЛЬНО
Rocket science
Тестируемое
Эмулятор
WebDriver позволяетслишком легко
запустить ВЕСЬ
самолёт
Проблема нашего поколения
Новый Отослан
• Пирамида тестирования
Новый Отослан
• Матрёшка тестирования
Логин Заказы Новый Отослан
• Разбивай и тестируй!
LoginTest• - 1• - 2• - 3
Логин Заказы Новый Отослан
NewOrderTest• - 1• - 2
/fastLogin?user=bob&url=/orders/new
• Разбивай и тестируй!
•А это не опасно?
• Нет!• Только в тесте• Выгода больше риска
/fastLogin?user=bob&url=/orders/new
•Быстрые тесты
ВЕБ
БД
Сервер
Сервисы
•Быстрые тесты
ВЕБ
БД
Сервер
Сервисы
In-memory – H2, Sqlite
- Jetty
Эмулятор
- Play!
Сервер
http://habrahabr.ru/post/126066/
@BeforeClasspublic static void startServer() { Server server = new Server(8080);
WebAppContext shop = new WebAppContext("webapp", "/shop"); server.setHandlers(shop);
server.start();}
@Testpublic void loginTest() { open(“http://localhost:8080/shop”);}
Сервер запустился!Без всякой инсталляции
Прямо из тестовВ считанные секунды
In-memory DB
db.url=jdbc:oracle:thin:@ip:1521:SIDdb.driver=oracle.jdbc.OracleDriver
%test.db.url=jdbc:h2:mem:shop%test.db.driver=org.h2.Driver
Структура ДБ:
•5 вещей,которые вы делаете
в тестированиинеправильно
•Распараллелить тесты
•Запускать тестыВСЕГО за пару часов
У нас 300 тестовбегают за 4 минуты!
In-memory DB Тестовые данные Эмуляторы сервисов fastLogin
• Видео:• https://vimeo.com/73128965
Один элемент не должен использоваться
в 50 тестах!
•PageObjects
•TestNG vs JUnit
Порядок тестов
Параметризованные тесты
http://xpdays.com.ua/materials/junit-vs-testng/
● Фу! - fastLogin
● UI-тесты – это 1-2 главные цепочки
● Остальные 100500 - юнит-тестами
Невалидные SSL серты
разраб админhttps://test.firma.ruразраб QA
Невалидные SSL серты
разраб
QA
http://localhost:8080разраб админ
http://localhost:8080
Невалидные SSL серты
● Тесты запускать ДО КОММИТА!
● Тесты вместе с кодом в GIT
● Тесты запускать на http://localhost:8080
> ant unit-tests
> ant ui-tests
Используй правильные инструменты!
• Как победить • StaleElementException?
Инструмент многое может
Инструмент решает мои проблемы
WebDriverWait.presenceOfElementLocated
ru.selenide.org
StaleElementException
Implicit timeout
Используй правильные инструменты!
Винтовка -
оружие новичка
Выбор профессионала -
нож!
•Что значит мастер
Видео:https://dl.dropboxusercontent.com/u/2856647/aikido.mp4
• Мастер не тот, кто знает100500 технологий
• А тот, кто решает задачу легко,потратив минимум энергии