SlideShare a Scribd company logo
1 of 40
Download to read offline
Артур Орлов, d.ati.su
Подводная часть
айсберга
Что делать, чтобы автотесты
не превратились в Титаник
Здравствуйте, я - разработчик
более 10 лет в разработке на всех этапах:
‣ выслушивание проблемы
‣ формулировка задач
‣ разработка решения
‣ тестирование (в т. ч. и ручное)
‣ внедрение
‣ поддержка/администрирование
Кейс из жизни
1. Selenium-hero Как порой проходит
внедрение автотестов
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’)
Прямо по курсу - айсберг
Генерация отчетов
Запуск тестов Организация кода
Работа с БД, файлами, etc
Работа с браузером
* Грубая эвристическая оценка
Внедрять или не внедрять?
Ожидания и
реальность
Чего стоит ждать от
автотестов, а чего нет
Когда автотесты заменят ручную работу?
1. продукт не меняет поведение
2. окружение продукта не меняется

(браузер, ОС, устройства)
Когда автотесты заменят ручную работу?
1. продукт не меняет поведение
2. окружение продукта не меняется

(браузер, ОС, устройства)
Никогда
Зачем тогда все это надо?
❖ быстрая и дешевая проверка стабильного
функционала
❖ тестирование на ранних этапах разработки
❖ тестирование работающего продукта при
изменениях в инфраструктуре
Чего следует ожидать
❖ смещение фокуса деятельности в разработку и
исследования
❖ работа по поддержанию тестов в актуальном
состоянии
❖ больше коммуникаций с разработчиками
Как оценить эффективность?
Производительность не изменится «скачком»:
1. Начните разрабатывать
2. Сделайте постоянной частью процессов
3. Отключите/сломайте/дождитесь проблем с
тестами
4. Посмотрите, что поменялось ;)
Итак, вы решились ввязаться…
Сколько стоят
автотесты?
Эксплуатационная
себестоимость внедрения
Снова про айсберг
Генерация отчетов
Запуск тестов Организация кода
Работа с БД, файлами, etc
Работа с браузером
Снова про айсберг
Эксплуатация
Разработка
Компоненты инфраструктуры
❖ тестовое окружение продукта
❖ машины, где запускаются тесты
❖ браузеры (grid, nodes, собственно браузеры)
❖ утилиты (интеграция в процессы, автозапуск,
планировщики, мониторинг, уведомления)
Кто будет следить?
❖ тестировщики?
❖ программисты?
❖ системные администраторы?
Вам нужен devops!
Что придется делать?
❖ обновление selenium (grid/nodes/библиотеки)
❖ контроль за версиями браузеров
❖ адаптация тестов к особенностям версий selenium/
браузеров
❖ борьба с деградацией тестов
❖ обслуживание инфраструктуры (место на дисках,
ресурсы БД, etc…)
Основные принципы эксплуатационщиков
1. Если неприятность может произойти, она
произойдет.
2. Даже если неприятность не может произойти, она
произойдет.
3. Из всех неприятностей произойдет именно та,
ущерб от которой больше.
Если вы не боитесь сложностей
Велосипеды и
колеса
Выбираем инструменты
Фундамент автотестов
❖ Язык программирования
❖ Фреймворк организации кода
Выбор языка: основной язык проекта
+selenium доступен почти во всех языках
+помощь программистов
+готовое окружение
- порог вхождения может быть высоким (C++/C#)
- зависимость от коммуникации с программистами
Выбор языка:Python
+низкий порог вхождения
+большой набор существующих инструментов/
библиотек
- окружение придется готовить самостоятельно
- справляться со сложностями тоже придется
самостоятельно
Как выбрать?
Исходите из ваших конкретных условий
❖ Сколько людей надо будет учить?
❖ Насколько тесное и комфортное взаимодействие с
программистами?
❖ Что с юнит-тестами у программистов?
❖ Какие есть особенности/нестандартные/устаревшие
технологии в проекте?
Unittest vs BDD
Выбор фреймворка: unittest-style
+программисты про него знают
+есть много паттернов и способов работы
+можно «вклиниться» в тесты к программистам (при
их наличии и использовании языка проекта)
- можно выстрелить себе в ногу
- надо продумывать организацию кода
Выбор фреймворка: BDD-style
+доступность почти во всех языках (python: lettuce, behave)
+удобство
+самодокументруемый код (ценность сценариев даже без учета
автоматизации)
+минимизация разработки
+снижение порога вхождения в язык
+легкое вовлечение программистов (при использовании языка проекта)
- не годится для всех случаев (например, тестирование REST API)
- не все программисты знакомы с концепцией, надо будет объяснять
Что выбрать?
Кто руководит внедрением автотестов?
❖ Тестировщик - выбирайте BDD
❖ Программист - что выберет он (но лучше, чтобы
BDD)
BDD + основной язык проекта
= хорошая, годная схема
Советы
❖ учитесь у своих программистов
❖ используйте общие инструменты
❖ не изобретайте велосипеды
❖ не забивайте гвозди микроскопом
❖ думайте о параллельном запуске сразу

(10 сценариев x 2-3 минуты ≈ 30 мин!)
❖ не давайте программистам писать сценарии
О самом главном
Люди Кому и зачем нужны
автотесты?
Разговор по понятиям: цель тестирования
❖ Тестировщик: обеспечение требуемого уровня
качества
❖ Программист: я пишу код - ты ищешь баги
Coder vs developer
Coder:
- пишет код
Developer:
- думает, зачем писать
код;
- пишет код;
- думает, как проверять;
- проверяет код;
- проверяет, решена ли
задача
Кто нужен для автотестов
❖ Хотя бы один заинтересованный разработчик
❖ Тестировщики, которые не боятся «не знать»
❖ Тестировщики, которые не боятся глупых вопросов
❖ Тестировщики, которые не боятся программистов
К чему готовить команду
❖ Автотесты - марафон
❖ Стремитесь к early usage (написали тест -
используем)
❖ Остановка = деградация
❖ Автотесты - очень специфичный код
Как распределять работу
❖ Тестировщики - думают о том, как тестировать, как
строить процессы
❖ Разработчики - создают инфраструктуру, помогают
писать код
❖ Тестирование != разработка. Пишите сценарии сами
P.S.
Зачем?
❖ Программистам - инструмент верификации работы
❖ Тестировщики - экономия ресурсов на рутинных
процессах
❖ Бизнес - дополнительный инструмент обеспечения
качества
Зачем лично вам это надо?

More Related Content

What's hot

CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CEE-SEC(R)
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
COMAQA.BY
 

What's hot (20)

Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
 
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщикаQA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
QA Fest 2016. Александр Неделяев. Браузерные помощники тестировщика
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Опыт автоматизации интеграционного тестирования и внедрения DevOps в банковск...
Опыт автоматизации интеграционного тестирования и внедрения DevOps в банковск...Опыт автоматизации интеграционного тестирования и внедрения DevOps в банковск...
Опыт автоматизации интеграционного тестирования и внедрения DevOps в банковск...
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователейКак 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
 
Архитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной областиАрхитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной области
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in python
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 

Viewers also liked

Viewers also liked (12)

Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для ...
Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для ...Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для ...
Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для ...
 
Selenium, а давай подождем?
Selenium, а давай подождем?Selenium, а давай подождем?
Selenium, а давай подождем?
 
Практическое пособие по разрушению отдела тестирования
Практическое пособие по разрушению отдела тестированияПрактическое пособие по разрушению отдела тестирования
Практическое пособие по разрушению отдела тестирования
 
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
 
Как «сварить» Pairwise и не пуститься во все тяжкие
Как «сварить» Pairwise и не пуститься во все тяжкиеКак «сварить» Pairwise и не пуститься во все тяжкие
Как «сварить» Pairwise и не пуститься во все тяжкие
 
Оценка качества автотестов
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестов
 
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Оценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрикиОценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрики
 
Успешный тестировщик. Путь профессионала
Успешный тестировщик. Путь профессионалаУспешный тестировщик. Путь профессионала
Успешный тестировщик. Путь профессионала
 
Инструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST APIИнструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST API
 
Death By PowerPoint Rus
Death By PowerPoint RusDeath By PowerPoint Rus
Death By PowerPoint Rus
 

Similar to Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник

Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
GoIT
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
Alexander Khozya
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
OdessaFrontend
 

Similar to Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник (20)

Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Автоматизация тестирования
Автоматизация тестированияАвтоматизация тестирования
Автоматизация тестирования
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Опыт Автоматизации тестирования
Опыт Автоматизации тестированияОпыт Автоматизации тестирования
Опыт Автоматизации тестирования
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 

More from SQALab

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 

Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник

  • 1. Артур Орлов, d.ati.su Подводная часть айсберга Что делать, чтобы автотесты не превратились в Титаник
  • 2. Здравствуйте, я - разработчик более 10 лет в разработке на всех этапах: ‣ выслушивание проблемы ‣ формулировка задач ‣ разработка решения ‣ тестирование (в т. ч. и ручное) ‣ внедрение ‣ поддержка/администрирование
  • 3. Кейс из жизни 1. Selenium-hero Как порой проходит внедрение автотестов
  • 4. 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’)
  • 5. Прямо по курсу - айсберг Генерация отчетов Запуск тестов Организация кода Работа с БД, файлами, etc Работа с браузером * Грубая эвристическая оценка
  • 6.
  • 7. Внедрять или не внедрять? Ожидания и реальность Чего стоит ждать от автотестов, а чего нет
  • 8. Когда автотесты заменят ручную работу? 1. продукт не меняет поведение 2. окружение продукта не меняется
 (браузер, ОС, устройства)
  • 9. Когда автотесты заменят ручную работу? 1. продукт не меняет поведение 2. окружение продукта не меняется
 (браузер, ОС, устройства) Никогда
  • 10. Зачем тогда все это надо? ❖ быстрая и дешевая проверка стабильного функционала ❖ тестирование на ранних этапах разработки ❖ тестирование работающего продукта при изменениях в инфраструктуре
  • 11. Чего следует ожидать ❖ смещение фокуса деятельности в разработку и исследования ❖ работа по поддержанию тестов в актуальном состоянии ❖ больше коммуникаций с разработчиками
  • 12. Как оценить эффективность? Производительность не изменится «скачком»: 1. Начните разрабатывать 2. Сделайте постоянной частью процессов 3. Отключите/сломайте/дождитесь проблем с тестами 4. Посмотрите, что поменялось ;)
  • 13. Итак, вы решились ввязаться… Сколько стоят автотесты? Эксплуатационная себестоимость внедрения
  • 14. Снова про айсберг Генерация отчетов Запуск тестов Организация кода Работа с БД, файлами, etc Работа с браузером
  • 16. Компоненты инфраструктуры ❖ тестовое окружение продукта ❖ машины, где запускаются тесты ❖ браузеры (grid, nodes, собственно браузеры) ❖ утилиты (интеграция в процессы, автозапуск, планировщики, мониторинг, уведомления)
  • 17. Кто будет следить? ❖ тестировщики? ❖ программисты? ❖ системные администраторы?
  • 19. Что придется делать? ❖ обновление selenium (grid/nodes/библиотеки) ❖ контроль за версиями браузеров ❖ адаптация тестов к особенностям версий selenium/ браузеров ❖ борьба с деградацией тестов ❖ обслуживание инфраструктуры (место на дисках, ресурсы БД, etc…)
  • 20. Основные принципы эксплуатационщиков 1. Если неприятность может произойти, она произойдет. 2. Даже если неприятность не может произойти, она произойдет. 3. Из всех неприятностей произойдет именно та, ущерб от которой больше.
  • 21. Если вы не боитесь сложностей Велосипеды и колеса Выбираем инструменты
  • 22. Фундамент автотестов ❖ Язык программирования ❖ Фреймворк организации кода
  • 23. Выбор языка: основной язык проекта +selenium доступен почти во всех языках +помощь программистов +готовое окружение - порог вхождения может быть высоким (C++/C#) - зависимость от коммуникации с программистами
  • 24. Выбор языка:Python +низкий порог вхождения +большой набор существующих инструментов/ библиотек - окружение придется готовить самостоятельно - справляться со сложностями тоже придется самостоятельно
  • 25. Как выбрать? Исходите из ваших конкретных условий ❖ Сколько людей надо будет учить? ❖ Насколько тесное и комфортное взаимодействие с программистами? ❖ Что с юнит-тестами у программистов? ❖ Какие есть особенности/нестандартные/устаревшие технологии в проекте?
  • 27. Выбор фреймворка: unittest-style +программисты про него знают +есть много паттернов и способов работы +можно «вклиниться» в тесты к программистам (при их наличии и использовании языка проекта) - можно выстрелить себе в ногу - надо продумывать организацию кода
  • 28. Выбор фреймворка: BDD-style +доступность почти во всех языках (python: lettuce, behave) +удобство +самодокументруемый код (ценность сценариев даже без учета автоматизации) +минимизация разработки +снижение порога вхождения в язык +легкое вовлечение программистов (при использовании языка проекта) - не годится для всех случаев (например, тестирование REST API) - не все программисты знакомы с концепцией, надо будет объяснять
  • 29. Что выбрать? Кто руководит внедрением автотестов? ❖ Тестировщик - выбирайте BDD ❖ Программист - что выберет он (но лучше, чтобы BDD)
  • 30. BDD + основной язык проекта = хорошая, годная схема
  • 31. Советы ❖ учитесь у своих программистов ❖ используйте общие инструменты ❖ не изобретайте велосипеды ❖ не забивайте гвозди микроскопом ❖ думайте о параллельном запуске сразу
 (10 сценариев x 2-3 минуты ≈ 30 мин!) ❖ не давайте программистам писать сценарии
  • 32. О самом главном Люди Кому и зачем нужны автотесты?
  • 33. Разговор по понятиям: цель тестирования ❖ Тестировщик: обеспечение требуемого уровня качества ❖ Программист: я пишу код - ты ищешь баги
  • 34. Coder vs developer Coder: - пишет код Developer: - думает, зачем писать код; - пишет код; - думает, как проверять; - проверяет код; - проверяет, решена ли задача
  • 35. Кто нужен для автотестов ❖ Хотя бы один заинтересованный разработчик ❖ Тестировщики, которые не боятся «не знать» ❖ Тестировщики, которые не боятся глупых вопросов ❖ Тестировщики, которые не боятся программистов
  • 36. К чему готовить команду ❖ Автотесты - марафон ❖ Стремитесь к early usage (написали тест - используем) ❖ Остановка = деградация ❖ Автотесты - очень специфичный код
  • 37. Как распределять работу ❖ Тестировщики - думают о том, как тестировать, как строить процессы ❖ Разработчики - создают инфраструктуру, помогают писать код ❖ Тестирование != разработка. Пишите сценарии сами
  • 38. P.S.
  • 39. Зачем? ❖ Программистам - инструмент верификации работы ❖ Тестировщики - экономия ресурсов на рутинных процессах ❖ Бизнес - дополнительный инструмент обеспечения качества
  • 40. Зачем лично вам это надо?