Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

7,360 views

Published on

Андрей Солнцев, Codeborne, QA-секция, CodeFest 2015

Published in: Software
  • Be the first to comment

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

  1. 1. Экономически эффективный процесс тестирования Андрей Солнцев
  2. 2. • Интернет-банк Санкт-Петербург •idemo.bspb.ru
  3. 3. • Сроки Релиз “для своих” 1 мес. Публичный релиз 5 мес.
  4. 4. • Ресурсы тест-аналитиков 0 автоматизаторов 0 тестировщиков 0 разработчиков 4
  5. 5. Автотесты юнит-тесты 1200 шт 10 сек UI тесты 120 шт 4 мин Как это возможно?
  6. 6. • В чём секрет?
  7. 7. Новый • Вот секрет: юнит-тесты медленные тормознутые ручные парное программирование аджайл непрерывная интеграция чистый код рефакторинг KISS YAGNI XP
  8. 8. • Почему • никто • eго не использует?
  9. 9. 9 Потому что Кто-то когда-то решил, что разработчики дорогие, а тестировщики на дороге валяются.
  10. 10. 10 И поэтому Чтобы сэкономить, Пусть разработчики фигачат код, а всякое г…. спихнём на тестировщиков!
  11. 11. Локальная оптимизация! аналитик разраб тестировщик больше спеков! больше кода! больше тестов!
  12. 12. • Интеграционные тесты - ОБМАН
  13. 13. • Интеграционные тесты - ОБМАН
  14. 14. • Интеграционные тесты - ОБМАН
  15. 15. • Интеграционные тесты - ОБМАН
  16. 16. Экспоненциальный рост! • Интеграционные тесты - ОБМАН
  17. 17. • Что же делать?
  18. 18. тестируй! •и •Разбивай
  19. 19. • Разбивай и тестируй! Линейный рост!
  20. 20. • Разбивай и тестируй! •Это общий принцип • - Юнит-тесты • - UI-тесты
  21. 21. • Писать • юнит-тесты ВЫГОДНО
  22. 22. • Юнит-тесты - выгодно •Менеджерам
  23. 23. • Чак Норрис не ходит на охоту •Чак Норрис ходит убивать! • охота = возможность неудачи
  24. 24. Нам некогда писать юнит-тесты,
 мы и так не успеваем. Вы потому и не успеваете,
 что у вас нет юнит-тестов!
  25. 25. Без юнит-тестов С юнит-тестами
  26. 26. Без юнит-тестов С юнит-тестами разработка разработка тест багфикс тест тест багфикс в бой!
  27. 27. Юнит-тест делает из мальчика мужчину
  28. 28. • А что же с UI-тестами? •То же самое: •Разбивай и тести!
  29. 29. Rocket science Требования: ● При скорости ветра 100 км/ч ● Подъёмная сила крыла должна быть 150 кН Как бы вы стали это тестировать?
  30. 30. ● Запустить ВЕСЬ самолёт ● Протестировать крыло ОТДЕЛЬНО Rocket science Тестируемое Эмулятор
  31. 31. WebDriver позволяет слишком легко запустить ВЕСЬ самолёт Проблема нашего поколения
  32. 32. Логин Заказы Новый Отослан • Разбивай и тестируй! LoginTest - 1 тест - 2 тест - 3 тест
  33. 33. Логин Заказы Новый Отослан NewOrderTest - 1 тест - 2 тест /fastLogin?user=bob&url=/orders/new • Разбивай и тестируй!
  34. 34. • А это не опасно? • Нет! • Только в тесте • Выгода больше риска /fastLogin?user=bob&url=/orders/new
  35. 35. • Быстрые тесты ВЕБ БД Сервер Сервисы браузер Жёлтые штуки ДОЛЖНЫ БЫТЬ - быстрые - управляемые
  36. 36. rrange ct ssert A A A • Суть тестов
  37. 37. • Быстрые тесты ВЕБ БД Сервер Сервисы In-memory – H2, Sqlite - Jetty Эмулятор - Play! браузер - контроль - JS
  38. 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(); }
  39. 39. @Test public void loginTest() { open(“http://localhost:8080/shop”); } Сервер запустился! Без всякой инсталляции Прямо из тестов В считанные секунды
  40. 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 Структура ДБ:
  41. 41. Неэффективный процесс разраб админ https://
 test.firma.ruразраб QA
  42. 42. Эффективный процесс разраб QA http://
 localhost:8080разраб админ http://
 localhost:8080
  43. 43. Эффективный процесс ● Тесты ДО КОММИТА! ● Тесты вместе с кодом в GIT ● Тесты на http://localhost:8080 > ant unit-tests > ant ui-tests ● Возможность запускать
  44. 44. Используй правильные инструменты! • Как победить • StaleElementException? Инструмент 
 многое может Инструмент 
 решает мои проблемы
  45. 45. 45 ru.selenide.org
  46. 46. WebDriverWait.presenceOfElementLocated ru.selenide.org StaleElementException Implicit timeout
  47. 47. • Видео: • https://vimeo.com/73128965
  48. 48. Используй правильные инструменты! Винтовка - оружие новичка Выбор профессионала - нож!
  49. 49. • Подытожим • Быстрых - много, медленных - мало. • Arrange. Act. Assert. Эмулируй ненадёжные зависимости. • Убеди этих ленивых ушлёпков писать юнит-тесты! • Выбирай простые и надёжные средства а не всемогущие фреймворки, “решающие ваши проблемы”.
  50. 50. • Что значит мастер Видео: https://dl.dropboxusercontent.com/u/2856647/aikido.mp4 • Мастер не тот, кто знает
 100500 технологий • А тот, кто решает задачу легко,
 потратив минимум энергии
  51. 51. • Андрей Солнцев @asolntsev andrei.solntsev@gmail.com selenide.org

×