Подводная часть айсберга: что делать, чтобы автотесты...
TRANSCRIPT
![Page 1: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/1.jpg)
Артур Орлов, d.ati.su
Подводная часть айсберга
Что делать, чтобы автотесты не превратились в Титаник
![Page 2: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/2.jpg)
Здравствуйте, я - разработчик
более 10 лет в разработке на всех этапах:
‣ выслушивание проблемы
‣ формулировка задач
‣ разработка решения
‣ тестирование (в т. ч. и ручное)
‣ внедрение
‣ поддержка/администрирование
![Page 3: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/3.jpg)
Кейс из жизни
1. Selenium-hero Как порой проходит внедрение автотестов
![Page 4: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/4.jpg)
Selenium? Проще простого!
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> browser.get(‘http://yandex.ru’)
>>> selector = ‘.search2__input .input__control.input__input’
>>> query_field = browser.find_element_by_css_selector(selector)
>>> query_field.send_keys(‘Selenium is awesome!\n’)
![Page 5: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/5.jpg)
Прямо по курсу - айсберг
Генерация отчетов
Запуск тестов Организация кода
Работа с БД, файлами, etc
Работа с браузером
* Грубая эвристическая оценка
![Page 6: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/6.jpg)
![Page 7: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/7.jpg)
Внедрять или не внедрять?
Ожидания и реальность
Чего стоит ждать от автотестов, а чего нет
![Page 8: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/8.jpg)
Когда автотесты заменят ручную работу?
1. продукт не меняет поведение
2. окружение продукта не меняется(браузер, ОС, устройства)
![Page 9: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/9.jpg)
Когда автотесты заменят ручную работу?
1. продукт не меняет поведение
2. окружение продукта не меняется(браузер, ОС, устройства)
Никогда
![Page 10: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/10.jpg)
Зачем тогда все это надо?
❖ быстрая и дешевая проверка стабильного функционала
❖ тестирование на ранних этапах разработки
❖ тестирование работающего продукта при изменениях в инфраструктуре
![Page 11: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/11.jpg)
Чего следует ожидать
❖ смещение фокуса деятельности в разработку и исследования
❖ работа по поддержанию тестов в актуальном состоянии
❖ больше коммуникаций с разработчиками
![Page 12: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/12.jpg)
Как оценить эффективность?
Производительность не изменится «скачком»:
1. Начните разрабатывать
2. Сделайте постоянной частью процессов
3. Отключите/сломайте/дождитесь проблем с тестами
4. Посмотрите, что поменялось ;)
![Page 13: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/13.jpg)
Итак, вы решились ввязаться…
Сколько стоят автотесты?
Эксплуатационная себестоимость внедрения
![Page 14: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/14.jpg)
Снова про айсберг
Генерация отчетов
Запуск тестов Организация кода
Работа с БД, файлами, etc
Работа с браузером
![Page 15: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/15.jpg)
Снова про айсберг
Эксплуатация
Разработка
![Page 16: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/16.jpg)
Компоненты инфраструктуры
❖ тестовое окружение продукта
❖ машины, где запускаются тесты
❖ браузеры (grid, nodes, собственно браузеры)
❖ утилиты (интеграция в процессы, автозапуск, планировщики, мониторинг, уведомления)
![Page 17: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/17.jpg)
Кто будет следить?
❖ тестировщики?
❖ программисты?
❖ системные администраторы?
![Page 18: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/18.jpg)
Вам нужен devops!
![Page 19: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/19.jpg)
Что придется делать?
❖ обновление selenium (grid/nodes/библиотеки)
❖ контроль за версиями браузеров
❖ адаптация тестов к особенностям версий selenium/браузеров
❖ борьба с деградацией тестов
❖ обслуживание инфраструктуры (место на дисках, ресурсы БД, etc…)
![Page 20: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/20.jpg)
Основные принципы эксплуатационщиков
1. Если неприятность может произойти, она произойдет.
2. Даже если неприятность не может произойти, она произойдет.
3. Из всех неприятностей произойдет именно та, ущерб от которой больше.
![Page 21: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/21.jpg)
Если вы не боитесь сложностей
Велосипеды и колеса
Выбираем инструменты
![Page 22: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/22.jpg)
Фундамент автотестов
❖ Язык программирования
❖ Фреймворк организации кода
![Page 23: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/23.jpg)
Выбор языка: основной язык проекта
+selenium доступен почти во всех языках
+помощь программистов
+готовое окружение
- порог вхождения может быть высоким (C++/C#)
- зависимость от коммуникации с программистами
![Page 24: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/24.jpg)
Выбор языка:Python
+низкий порог вхождения
+большой набор существующих инструментов/библиотек
- окружение придется готовить самостоятельно
- справляться со сложностями тоже придется самостоятельно
![Page 25: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/25.jpg)
Как выбрать?
Исходите из ваших конкретных условий
❖ Сколько людей надо будет учить?
❖ Насколько тесное и комфортное взаимодействие с программистами?
❖ Что с юнит-тестами у программистов?
❖ Какие есть особенности/нестандартные/устаревшие технологии в проекте?
![Page 26: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/26.jpg)
Unittest vs BDD
![Page 27: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/27.jpg)
Выбор фреймворка: unittest-style
+программисты про него знают
+есть много паттернов и способов работы
+можно «вклиниться» в тесты к программистам (при их наличии и использовании языка проекта)
- можно выстрелить себе в ногу
- надо продумывать организацию кода
![Page 28: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/28.jpg)
Выбор фреймворка: BDD-style
+доступность почти во всех языках (python: lettuce, behave)
+удобство
+самодокументруемый код (ценность сценариев даже без учета автоматизации)
+минимизация разработки
+снижение порога вхождения в язык
+легкое вовлечение программистов (при использовании языка проекта)
- не годится для всех случаев (например, тестирование REST API)
- не все программисты знакомы с концепцией, надо будет объяснять
![Page 29: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/29.jpg)
Что выбрать?
Кто руководит внедрением автотестов?
❖ Тестировщик - выбирайте BDD
❖ Программист - что выберет он (но лучше, чтобы BDD)
![Page 30: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/30.jpg)
BDD + основной язык проекта = хорошая, годная схема
![Page 31: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/31.jpg)
Советы
❖ учитесь у своих программистов
❖ используйте общие инструменты
❖ не изобретайте велосипеды
❖ не забивайте гвозди микроскопом
❖ думайте о параллельном запуске сразу(10 сценариев x 2-3 минуты ≈ 30 мин!)
❖ не давайте программистам писать сценарии
![Page 32: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/32.jpg)
О самом главном
Люди Кому и зачем нужны автотесты?
![Page 33: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/33.jpg)
Разговор по понятиям: цель тестирования
❖ Тестировщик: обеспечение требуемого уровня качества
❖ Программист: я пишу код - ты ищешь баги
![Page 34: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/34.jpg)
Coder vs developer
Coder:
- пишет код
Developer:
- думает, зачем писать код;
- пишет код;
- думает, как проверять;
- проверяет код;
- проверяет, решена ли задача
![Page 35: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/35.jpg)
Кто нужен для автотестов
❖ Хотя бы один заинтересованный разработчик
❖ Тестировщики, которые не боятся «не знать»
❖ Тестировщики, которые не боятся глупых вопросов
❖ Тестировщики, которые не боятся программистов
![Page 36: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/36.jpg)
К чему готовить команду
❖ Автотесты - марафон
❖ Стремитесь к early usage (написали тест - используем)
❖ Остановка = деградация
❖ Автотесты - очень специфичный код
![Page 37: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/37.jpg)
Как распределять работу
❖ Тестировщики - думают о том, как тестировать, как строить процессы
❖ Разработчики - создают инфраструктуру, помогают писать код
❖ Тестирование != разработка. Пишите сценарии сами
![Page 38: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/38.jpg)
P.S.
![Page 39: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/39.jpg)
Зачем?
❖ Программистам - инструмент верификации работы
❖ Тестировщики - экономия ресурсов на рутинных процессах
❖ Бизнес - дополнительный инструмент обеспечения качества
![Page 40: Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник](https://reader033.vdocuments.pub/reader033/viewer/2022051404/589b36e01a28ab22038b51cd/html5/thumbnails/40.jpg)
Зачем лично вам это надо?