Автоматизация
функционального
тестирования
Влад Алюков
Monday, 29 April 13
Кто?
Занимаюсь тестированием 9 лет
Из них 5 лет автоматизацией
тестирования и тестовой
инфраструктурой
Monday, 29 April 13
О чём?
Подходы
Инструменты
Проблемы
Monday, 29 April 13
Зачем?
Monday, 29 April 13
Зачем?
Широкий взгляд на вопрос качества
Понимание методов его обеспечения
Решение задач подобающим способом
Умение поставлять качественные
артефакты своего труда
Monday, 29 April 13
Scrum
Monday, 29 April 13
Тесты как
документация
Monday, 29 April 13
Функциональное
тестирование
Monday, 29 April 13
Функциональное
тестирование
Контроль конечной функциональности на:
пригодность
соответствие требованиям/
спецификациям
точность (accuracy testing)
защищённость (security testing)
Monday, 29 April 13
Автоматизация
функционального
тестирования
Monday, 29 April 13
Автоматизированные
функциональные тесты
Monday, 29 April 13
Автоматизированные
функциональные тесты
Взаимодействуют с GUI или
верхнеуровневым API
Тестируют возможности вашего
приложения/сервиса
Monday, 29 April 13
Каждому уровню свои
тесты
Monday, 29 April 13
Почему не unit/
интеграционные
тесты?
Конечные возможности продукта
Высокая степень интеграции
Monday, 29 April 13
Testing pyramid
Monday, 29 April 13
Предпосылки для
автоматизации
Monday, 29 April 13
Предпосылки для
автоматизации
Монотонные действия
Стабильные интерфейсы
Высокая частота изменений
Критичность продуктовой возможности
Monday, 29 April 13
Как автоматизировать
Атомарность тестовых сценариев
Герметичность тестовых окружений
Monday, 29 April 13
Герметичность
Monday, 29 April 13
Обеспечение
герметичности
Виртуализация
Заглушки
Тестовые состояния приложения
Monday, 29 April 13
Варианты интерфейсов
GUI (Web-интерфейсы/Десктоп)
API (RESTful/SOAP)
Monday, 29 April 13
Паттерны
проектирования GUI
тестов
Monday, 29 April 13
Его величество
PageObject
Monday, 29 April 13
DRY
Monday, 29 April 13
фу! плохой тест!
Monday, 29 April 13
PageObject
Monday, 29 April 13
PageObject
Monday, 29 April 13
хороший, образцовый,
годный тест!
Monday, 29 April 13
Инструменты
Monday, 29 April 13
Выбор инструментов
Тест должен находиться в максимальной
близости к тестируемой возможности
Нельзя автоматизировать что-либо, не
написав ни одной строчки кода
Monday, 29 April 13
Тестирование
Web-Приложений
WebDriver
Jasmine/jstestdriver
phantomjs
Monday, 29 April 13
WebDriver
История
Возможности
Применимость
Monday, 29 April 13
История
Monday, 29 April 13
Возможности
Monday, 29 April 13
Как и для чего
следует применять
WebDriver
Monday, 29 April 13
Браузерозависимые
сценарии
Drag’n’Drop - загрузка файлов
Клавиатурные действия
Кроссбраузерное тестирование
Тестирование с браузерными
расширениями
Monday, 29 April 13
Нагрузочное
тестирование
Monday, 29 April 13
Нагрузочное
тестирование
Monday, 29 April 13
Тестирование бизнес-
логики
Monday, 29 April 13
Документирование
тестов. Отчёты
Keyword based testing
BDD
xUnit report
Monday, 29 April 13
BDD example
Monday, 29 April 13
BDD/PageObject
example
Monday, 29 April 13
Keyword Driven Test
example
Monday, 29 April 13
Применимость BDD/KDT
Тесты, воспринимаемые человеком
гуманитарного склада ума
Проблемы, которые возникают при
бездумном применении практик
Monday, 29 April 13
xUnit report
Monday, 29 April 13
Антипаттерны в
тестировании
Monday, 29 April 13
Антипаттерны в
тестировании
god tests
Гейзенбаг
Неуправляемое окружение
Monday, 29 April 13
Как тестируем мы
Monday, 29 April 13
Технологии
ЯП: java/python
FW: testng/py.tests
CI: jenkins
IaaS: OpenStack/chef
build tool: maven/distutils
reporting: graphite/xunit/text
reports
Monday, 29 April 13
Браузерные тесты
фрэймворк: maven/testng/guice/
webdriver/browsermob proxy/800loc
тесты: 13kloc ~300 тестов
Monday, 29 April 13
Функциональный
мониторинг
Monday, 29 April 13
Семинар
Написать тесты на 5 возможностей
вашего продукта, если нет продукта то
напишите тесты на поиск mail.ru
Тесты должны работать в 2х браузерах
firefox/chrome
Отчёт должен генерироваться в формате
xUnit report
Реализовать возможность исполнения
тестов параллельно (опционально)
Monday, 29 April 13
browser farm
Monday, 29 April 13
container: virtualbox
user/pass: ubuntu/reverse
hub http://localhost:4444/hub/wd
ssh ubuntu@localhost:2222
browser farm
Monday, 29 April 13
Вопросы
Monday, 29 April 13
URLS
bdd: http://files.mail.ru/
4C4AA6BEB9814EF89A382AC8E5F5045B
vm: files.mail.ru/
6F8A625E83824F8ABE84E2E38A216D4F
Monday, 29 April 13
Спасибо за внимание
Влад Алюков v.alyukov@corp.mail.ru
Monday, 29 April 13

Тестирование весна 2013 лекция 3