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.

The fast and the continuous

4,371 views

Published on

Презентация Андрея Солнцева на SQA Days-16
14-15 ноября 2014, Санкт-Петербург, Россия
www.sqadays.com

Published in: Education

The fast and the continuous

  1. 1. •UI-тесты •– •зло!
  2. 2. The fast and the continuous Andrei Solntsev
  3. 3. •5 вещей, которые вы делаете в тестировании неправильно
  4. 4. •Мечтаем распараллелить тесты Вброс 1
  5. 5. •И запускать тесты ВСЕГО за пару часов! Вброс 1
  6. 6. •PageObjects •Степы Вброс 2
  7. 7. •TestNG круче, чем JUnit Вброс 3
  8. 8. •“Как сказать вебдрайверу игнорировать невалидные SSL серты?” Вброс 4
  9. 9. •Как победить •StaleElementException? Вброс 5
  10. 10. •И вот почему:
  11. 11. •Интеграционные тесты - •ОБМАН! J. B. Rainsberger
  12. 12. • Integration tests are SCAM http://devconfu.eu/video/239 J. B. Rainsberger
  13. 13. • Интеграционные тесты - ОБМАН
  14. 14. • Интеграционные тесты - ОБМАН
  15. 15. • Интеграционные тесты - ОБМАН
  16. 16. • Интеграционные тесты - ОБМАН
  17. 17. • Интеграционные тесты - ОБМАН Экспоненциальный рост!
  18. 18. •Что же делать?
  19. 19. •Разбивай •и тестируй!
  20. 20. • Разбивай и тестируй! Линейный рост!
  21. 21. • Разбивай и тестируй! UI-тесты - зло Если у вас только UI-тесты
  22. 22. • Разбивай и тестируй! •Это общий принцип • Юнит-тесты • UI-тесты
  23. 23. •Писать •юнит-тесты ВЫГОДНО
  24. 24. • Юнит-тесты - выгодно •Менеджерам
  25. 25. • Юнит-тесты - выгодно •Программерам
  26. 26. Нам некогда писать юнит-тесты, мы и так не успеваем. Вы потому и не успеваете, что у вас нет юнит-тестов!
  27. 27. Без юнит-тестов С юнит-тестами
  28. 28. Без юнит-тестов разработка С юнит-тестами разработка тест багфикс тест тест багфикс в бой!
  29. 29. •А что же с UI-тестами? •То же самое!
  30. 30. Rocket science Требования: ● При скорости ветра 100 км/ч ● Подъёмная сила крыла должна быть 150 кН Как бы вы стали это тестировать?
  31. 31. Rocket science ● Запустить ВЕСЬ самолёт ● Протестировать крыло ОТДЕЛЬНО Тестируемое Эмулятор
  32. 32. Проблема нашего поколения WebDriver позволяет слишком легко запустить ВЕСЬ самолёт
  33. 33. • Пирамида тестирования Новый Отослан
  34. 34. • Матрёшка тестирования Новый Отослан
  35. 35. • Разбивай и тестируй! Логин Заказы Новый Отослан LoginTest • - 1 • - 2 • - 3
  36. 36. • Разбивай и тестируй! Логин Заказы Новый Отослан NewOrderTest • - 1 • - 2 /fastLogin?user=bob&url=/orders/new
  37. 37. •А это не опасно? • Нет! • Только в тесте • Выгода больше риска /fastLogin?user=bob&url=/orders/new
  38. 38. •Быстрые тесты БД ВЕБ Сервер Сервисы
  39. 39. •Быстрые тесты In-memory – H2, Sqlite БД ВЕБ Сервер Сервисы - Jetty Эмулятор - Play!
  40. 40. Сервер @BeforeClass public static void startServer() { Server server = new Server(8080); WebAppContext shop = new WebAppContext("webapp", "/shop"); server.setHandlers(shop); http://habrahabr.ru/post/126066 / server.start(); }
  41. 41. Сервер запустился! Без всякой инсталляции В считанные секунды @Test public void loginTest() { open(“http://localhost:8080/shop”); } Прямо из тестов
  42. 42. 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 Структура ДБ:
  43. 43. •5 вещей, которые вы делаете в тестировании неправильно
  44. 44. •Распараллелить тесты
  45. 45. •Запускать тесты ВСЕГО за пару часов У нас 300 тестов бегают за 4 минуты! In-memory DB Тестовые данные Эмуляторы сервисов fastLogin
  46. 46. • Видео: • https://vimeo.com/73128965
  47. 47. •PageObjects Один элемент не должен использоваться в 50 тестах!
  48. 48. •TestNG vs JUnit Порядок тестов ● Фу! - fastLogin Параметризованные тесты ● UI-тесты – это 1-2 главные цепочки ● Остальные 100500 - юнит-тестами http://xpdays.com.ua/materials/junit-vs-testng/
  49. 49. Невалидные SSL серты разраб админ https:// test.firma.ru QA
  50. 50. Невалидные SSL серты разраб http:// localhost:8080 админ QA http:// localhost:8080
  51. 51. Невалидные SSL серты ● Тесты запускать ДО КОММИТА! ● Тесты запускать на http://localhost:8080 ● Тесты вместе с кодом в GIT > ant unit-tests > ant ui-tests
  52. 52. • Как победить • StaleElementException? Используй правильные инструменты! Инструмент многое может Инструмент решает мои проблемы
  53. 53. ru.selenide.org StaleElementException WebDriverWait.presenceOfElementLocated Implicit timeout
  54. 54. Используй правильные инструменты! Винтовка - оружие новичка Выбор профессионала - нож!
  55. 55. •Что значит мастер Видео: https://dl.dropboxusercontent.com/u/2856647/aikido.mp4 • Мастер не тот, кто знает 100500 технологий • А тот, кто решает задачу легко, потратив минимум энергии
  56. 56. •Андрей Солнцев andrei.solntsev@gmail.com twitter.com/asolntsev selenide.org

×