O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

7.364 visualizações

Publicada em

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

Publicada em: Software
  • Seja o primeiro a comentar

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

  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

×