SlideShare une entreprise Scribd logo
1  sur  50
•UI-тесты
•–
•зло!
The fast and
the continuous
Andrei Solntsev
• 5 вещей,
которые вы делаете
в тестировании
неправильно
• Мечтаем
распараллелить
тесты
Вброс 1
• Мечтаем
иметь кластер
для тестов
Вброс 1
• И запускать тесты
ВСЕГО
за пару часов!
Вброс 1
• PageObjects
• Степы

Вброс 2
• TestNG
круче, чем
JUnit
Вброс 3
• “Как сказать
вебдрайверу
игнорировать
невалидные SSL серты?”
Вброс 4
• Как бороться
с окном
аутентификации?
Вброс 5
• Интеграционные тесты • ОБМАН!
J. B. Rainsberger
• Integration tests are SCAM

J. B. Rainsberger

http://devconfu.eu/video/239
• Integration tests are SCAM
• Integration tests are SCAM
• Integration tests are SCAM
• Integration tests are SCAM
• Integration tests are SCAM

Экспоненциальный рост!
• Тестируй по частям!

Линейный рост!
• Тестируй по частям!

UI-тесты - зло
Если у вас только UI-тесты
• Тестируй по частям!

• Это общий принцип
• Юнит-тесты
• UI-тесты
• Писать
• юнит-тесты
ВЫГОДНО
• Юнит-тесты - выгодно

• Менеджерам
• Юнит-тесты - выгодно

• Программерам
Давно пилишь?
• Да уж часа четыре!
• Так наточи пилу!
• Некогда, пилить надо...
Нам некогда писать юнит-тесты,
мы и так не успеваем.

Вы потому и не успеваете,
что у вас нет юнит-тестов!
• А что же с UI-тестами?
• То же самое!
Rocket science
Требования:
●
При скорости ветра 100 км/ч
●
Подъёмная сила крыла должна быть 150 кН

Как бы вы стали это тестировать?
Rocket science
Запустить ВЕСЬ самолёт
●
Протестировать крыло ОТДЕЛЬНО
●

Тестируемое

Эмулятор
Проблема нашего поколения
WebDriver позволяет
слишком легко
запустить
ВЕСЬ
самолёт
• Тестируй по частям!

Login

Заказы

LoginTest
• -1
• -2
• -3

Новый Отослан
• Тестируй по частям!

Login

Заказы

Новый Отослан

NewOrderTest
• -1
• -2
/fastLogin?user=bob&url=new-order
• А это не опасно?
• Нет!
• Только в тесте
• Выгода больше риска
/fastLogin?user=bob&url=new-order
• Быстрые тесты
БД

Сервисы

ВЕБ

Сервер
• Быстрые тесты
In-memory – H2, Sqlite

БД

Сервисы

ВЕБ

Эмулятор

Сервер

- Jetty
- Play!
Сервер
@BeforeClass
public static void startServer() {
Server server = new Server(8080);
WebAppContext shop =
new WebAppContext("webapp", "/shop");
server.setHandlers(shop);
server.start();
}
open(“http://localhost:8080/shop”);
http://habrahabr.ru/post/126066
In-memory DB
db.url=jdbc:oracle:thin:@ip:1521:SID
db.driver=oracle.jdbc.OracleDriver
%test.db.url=jdbc:h2:mem:shop
%test.db.driver=org.h2.Driver
Структура DB

<changeSet id="1">
<sql>
create table lang_words ();
</sql>
</changeSet>
http://xpdays.com.ua/materials/agile-db-with-liquibase/
Тестовые данные
<changeSet id="2" context="prod">
<loadData tableName="lang_words"
file="words.001.csv"/>
</changeSet>
<changeSet id="3" context="test">
<insert tableName="lang_words">
<column name="lang" value="ru"/>
<column name="topic" value="дом"/>
<column name="word" value="гвоздь"/>
</insert>
</changeSet>
https://github.com/asolntsev/hangman
• 5 вещей,
которые вы делаете
в тестировании
неправильно
• Распараллелить
тесты
• Запускать тесты
ВСЕГО за пару часов
У нас 200 тестов
бегают за 5 минут!
●

In-memory DB
Тестовые данные
Эмуляторы сервисов
fastLogin
• PageObjects
Один элемент
не должен использоваться
в 50 тестах!
• TestNG vs JUnit
Порядок тестов
●

Фу!

- fastLogin

Параметризованные тесты
●

UI-тесты – это 1-2 главные цепочки

●

Остальные 100500 - юнит-тестами
http://xpdays.com.ua/materials/junit-vs-testng/
Невалидные SSL серты
●

Тесты запускать ДО КОММИТА!

●

Тесты запускать на http://localhost:8080

●

Тесты вместе с кодом в GIT
> ant test
> ant uitest
• Тестировать ЧТО,
а не КАК
• Тестировать
важное для бизнеса,
а уж потом 100500 багов
• do MORE with LESS
• Что значит мастер
https://dl.dropboxusercontent.com/u/2856647/aikido.mp4

• Мастер не тот, кто знает
100500 технологий
• А тот, кто решает задачу легко,
потратив минимум энергии
• Андрей Солнцев

selenide.org

andrei.solntsev@gmail.com
twitter.com/asolntsev

Contenu connexe

Tendances

“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
Igor Khrol
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
Igor Khrol
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
Igor Khrol
 
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
it-people
 

Tendances (19)

Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Как устроен мониторинг в Badoo
Как устроен мониторинг в BadooКак устроен мониторинг в Badoo
Как устроен мониторинг в Badoo
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
Автоматизированное тестирование верстки веб-сайтов, используя сравнение с диз...
 
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
«Я спросил у сервера...», Илья Пастушков
«Я спросил у сервера...», Илья Пастушков«Я спросил у сервера...», Илья Пастушков
«Я спросил у сервера...», Илья Пастушков
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'аПричины и способы имитации back-end'а
Причины и способы имитации back-end'а
 
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
 
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
Т. Черемных "Автоматизация тестирования верстки", DUMP-2014
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB API
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 

En vedette

Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - final
Andrei Solntsev
 

En vedette (13)

Static website-generators
Static website-generatorsStatic website-generators
Static website-generators
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16
 
Real-life unit tests
Real-life unit testsReal-life unit tests
Real-life unit tests
 
Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - final
 
Android (Devclub.eu, 30.03.2010)
Android (Devclub.eu, 30.03.2010)Android (Devclub.eu, 30.03.2010)
Android (Devclub.eu, 30.03.2010)
 
50 оттенков play!
50 оттенков play!50 оттенков play!
50 оттенков play!
 
WTF Code @ jug.lv
WTF Code @ jug.lvWTF Code @ jug.lv
WTF Code @ jug.lv
 
What is master @ SeleniumConf 2015
What is master @ SeleniumConf 2015What is master @ SeleniumConf 2015
What is master @ SeleniumConf 2015
 
Extreme banking
Extreme bankingExtreme banking
Extreme banking
 
Good test = simple test (with selenide)
Good test = simple test (with selenide)Good test = simple test (with selenide)
Good test = simple test (with selenide)
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOps
 
Bullshit driven development
Bullshit driven developmentBullshit driven development
Bullshit driven development
 
The Dangers of Cucumber
The Dangers of CucumberThe Dangers of Cucumber
The Dangers of Cucumber
 

Similaire à The fast and the continuous (SeleniumCamp 2014)

Security zap and selenium
Security zap and seleniumSecurity zap and selenium
Security zap and selenium
Anton Shapin
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
Aleksandr Boichenko
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
Albina Tiupa
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
Albina Tiupa
 
Heavy metal testing Part 3
Heavy metal testing Part 3Heavy metal testing Part 3
Heavy metal testing Part 3
Roman Ivliev
 

Similaire à The fast and the continuous (SeleniumCamp 2014) (20)

Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
 
Security zap and selenium
Security zap and seleniumSecurity zap and selenium
Security zap and selenium
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
 
Heavy metal testing Part 3
Heavy metal testing Part 3Heavy metal testing Part 3
Heavy metal testing Part 3
 
OpenSource инструменты. Тестируем Web-приложения
OpenSource инструменты. Тестируем Web-приложенияOpenSource инструменты. Тестируем Web-приложения
OpenSource инструменты. Тестируем Web-приложения
 

Plus de Andrei Solntsev

Plus de Andrei Solntsev (9)

Тройничок: Selenide для Web, Android и iOS
Тройничок: Selenide для Web, Android и iOSТройничок: Selenide для Web, Android и iOS
Тройничок: Selenide для Web, Android и iOS
 
Flaky tests. Метод.
Flaky tests. Метод. Flaky tests. Метод.
Flaky tests. Метод.
 
Батл: Тесты или не тесты?
Батл: Тесты или не тесты?Батл: Тесты или не тесты?
Батл: Тесты или не тесты?
 
Как получить чёрный пояс по программированию
Как получить чёрный пояс по программированиюКак получить чёрный пояс по программированию
Как получить чёрный пояс по программированию
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
Liquibase: Enterprise Edition
Liquibase: Enterprise EditionLiquibase: Enterprise Edition
Liquibase: Enterprise Edition
 
Kiss.devclub ee.est
Kiss.devclub ee.estKiss.devclub ee.est
Kiss.devclub ee.est
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database Design
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In Java
 

Dernier

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Dernier (9)

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 

The fast and the continuous (SeleniumCamp 2014)