51
Экономически эффективный процесс тестирования Андрей Солнцев

Экономически эффективный процесс тестирования

Embed Size (px)

Citation preview

Page 1: Экономически эффективный процесс тестирования

Экономически эффективный процесс тестирования

Андрей Солнцев

Page 2: Экономически эффективный процесс тестирования

• Интернет-банк Санкт-Петербург

•idemo.bspb.ru

Page 3: Экономически эффективный процесс тестирования

• Сроки

Релиз “для своих” 1 мес.

Публичный релиз 5 мес.

Page 4: Экономически эффективный процесс тестирования

• Ресурсы

тест-аналитиков 0

автоматизаторов 0

тестировщиков 0

разработчиков 4

Page 5: Экономически эффективный процесс тестирования

Автотесты

юнит-тесты 1200 шт 10 сек

UI тесты 120 шт 4 мин

Как это возможно?

Page 6: Экономически эффективный процесс тестирования

• В чём секрет?

Page 7: Экономически эффективный процесс тестирования

Новый

• Вот секрет:

юнит-тесты

медленные

тормознутые

ручные

парное программирование

аджайл

непрерывная интеграция

чистый код

рефакторинг

KISS

YAGNI

XP

Page 8: Экономически эффективный процесс тестирования

• Почему • никто • eго не использует?

Page 9: Экономически эффективный процесс тестирования

9

Потому что

Кто-то когда-то решил, что

разработчики дорогие, а тестировщики на дороге валяются.

Page 10: Экономически эффективный процесс тестирования

10

И поэтому

Чтобы сэкономить, Пусть разработчики фигачат код,

а всякое г…. спихнём на тестировщиков!

Page 11: Экономически эффективный процесс тестирования

Локальная оптимизация!

аналитик разраб тестировщик

больше спеков!

больше кода!

больше тестов!

Page 12: Экономически эффективный процесс тестирования

• Интеграционные тесты - ОБМАН

Page 13: Экономически эффективный процесс тестирования

• Интеграционные тесты - ОБМАН

Page 14: Экономически эффективный процесс тестирования

• Интеграционные тесты - ОБМАН

Page 15: Экономически эффективный процесс тестирования

• Интеграционные тесты - ОБМАН

Page 16: Экономически эффективный процесс тестирования

Экспоненциальный рост!

• Интеграционные тесты - ОБМАН

Page 17: Экономически эффективный процесс тестирования

• Что же делать?

Page 18: Экономически эффективный процесс тестирования

тестируй!

•и•Разбивай

Page 19: Экономически эффективный процесс тестирования

• Разбивай и тестируй!

Линейный рост!

Page 20: Экономически эффективный процесс тестирования

• Разбивай и тестируй!

•Это общий принцип

• - Юнит-тесты • - UI-тесты

Page 21: Экономически эффективный процесс тестирования

• Писать •юнит-тесты ВЫГОДНО

Page 22: Экономически эффективный процесс тестирования

• Юнит-тесты - выгодно

•Менеджерам

Page 23: Экономически эффективный процесс тестирования

• Чак Норрис не ходит на охоту

•Чак Норрис ходит убивать!

• охота = возможность неудачи

Page 24: Экономически эффективный процесс тестирования

Нам некогда писать юнит-тесты,мы и так не успеваем.

Вы потому и не успеваете,что у вас нет юнит-тестов!

Page 25: Экономически эффективный процесс тестирования

Без юнит-тестов

С юнит-тестами

Page 26: Экономически эффективный процесс тестирования

Без юнит-тестов

С юнит-тестами

разработка

разработка

тест багфикс тест

тест багфикс в бой!

Page 27: Экономически эффективный процесс тестирования

Юнит-тест делает из мальчика мужчину

Page 28: Экономически эффективный процесс тестирования

•А что же с UI-тестами?

•То же самое:•Разбивай и тести!

Page 29: Экономически эффективный процесс тестирования

Rocket scienceТребования: ● При скорости ветра 100 км/ч ● Подъёмная сила крыла должна быть 150 кН

Как бы вы стали это тестировать?

Page 30: Экономически эффективный процесс тестирования

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

Rocket science

Тестируемое

Эмулятор

Page 31: Экономически эффективный процесс тестирования

WebDriver позволяет слишком легко запустить ВЕСЬ самолёт

Проблема нашего поколения

Page 32: Экономически эффективный процесс тестирования

Логин Заказы Новый Отослан

• Разбивай и тестируй!

LoginTest - 1 тест - 2 тест - 3 тест

Page 33: Экономически эффективный процесс тестирования

Логин Заказы Новый Отослан

NewOrderTest - 1 тест - 2 тест

/fastLogin?user=bob&url=/orders/new

• Разбивай и тестируй!

Page 34: Экономически эффективный процесс тестирования

•А это не опасно?• Нет! • Только в тесте • Выгода больше риска

/fastLogin?user=bob&url=/orders/new

Page 35: Экономически эффективный процесс тестирования

•Быстрые тесты

ВЕБ

БД

Сервер

Сервисы браузер

Жёлтые штуки

ДОЛЖНЫ БЫТЬ

- быстрые - управляемые

Page 36: Экономически эффективный процесс тестирования

rrangectssert

AAA

• Суть тестов

Page 37: Экономически эффективный процесс тестирования

•Быстрые тесты

ВЕБ

БД

Сервер

Сервисы

In-memory – H2, Sqlite

- Jetty

Эмулятор

- Play!

браузер

- контроль - JS

Page 38: Экономически эффективный процесс тестирования

Сервер

http://habrahabr.ru/post/126066/

@BeforeClass public static void startServer() { Server server = new Server(8080);

WebAppContext shop = new WebAppContext("webapp", "/shop"); server.setHandlers(shop);

server.start(); }

Page 39: Экономически эффективный процесс тестирования

@Test public void loginTest() { open(“http://localhost:8080/shop”); }

Сервер запустился!Без всякой инсталляции

Прямо из тестовВ считанные секунды

Page 40: Экономически эффективный процесс тестирования

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

Структура ДБ:

Page 41: Экономически эффективный процесс тестирования

Неэффективный процесс

разраб админhttps://test.firma.ruразраб QA

Page 42: Экономически эффективный процесс тестирования

Эффективный процесс

разраб

QA

http://localhost:8080разраб админ

http://localhost:8080

Page 43: Экономически эффективный процесс тестирования

Эффективный процесс

● Тесты ДО КОММИТА!

● Тесты вместе с кодом в GIT

● Тесты на http://localhost:8080

> ant unit-tests> ant ui-tests

● Возможность запускать

Page 44: Экономически эффективный процесс тестирования

Используй правильные инструменты!

• Как победить • StaleElementException?

Инструмент многое может

Инструмент решает мои проблемы

Page 45: Экономически эффективный процесс тестирования

45

ru.selenide.org

Page 46: Экономически эффективный процесс тестирования

WebDriverWait.presenceOfElementLocated

ru.selenide.org

StaleElementException

Implicit timeout

Page 47: Экономически эффективный процесс тестирования

• Видео: • https://vimeo.com/73128965

Page 48: Экономически эффективный процесс тестирования

Используй правильные инструменты!

Винтовка - оружие новичка

Выбор профессионала -

нож!

Page 49: Экономически эффективный процесс тестирования

• Подытожим• Быстрых - много, медленных - мало.

• Arrange. Act. Assert. Эмулируй ненадёжные зависимости.

• Убеди этих ленивых ушлёпков писать юнит-тесты!

• Выбирай простые и надёжные средстваа не всемогущие фреймворки, “решающие ваши проблемы”.

Page 50: Экономически эффективный процесс тестирования

•Что значит мастер

Видео: https://dl.dropboxusercontent.com/u/2856647/aikido.mp4

• Мастер не тот, кто знает100500 технологий

• А тот, кто решает задачу легко,потратив минимум энергии

Page 51: Экономически эффективный процесс тестирования

•Андрей Солнцев

@asolntsev

[email protected]

selenide.org