57
Автоматизация функционального тестирования Влад Алюков Monday, 29 April 13

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

Embed Size (px)

Citation preview

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

Автоматизация функционального тестирования

Влад Алюков

Monday, 29 April 13

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

Кто?

Занимаюсь тестированием 9 лет

Из них 5 лет автоматизацией тестирования и тестовой инфраструктурой

Monday, 29 April 13

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

О чём?

Подходы

Инструменты

Проблемы

Monday, 29 April 13

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

Зачем?

Monday, 29 April 13

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

Зачем?

Широкий взгляд на вопрос качества

Понимание методов его обеспечения

Решение задач подобающим способом

Умение поставлять качественные артефакты своего труда

Monday, 29 April 13

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

Scrum

Monday, 29 April 13

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

Тесты как документация

Monday, 29 April 13

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

Функциональное тестирование

Monday, 29 April 13

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

Функциональное тестирование

Контроль конечной функциональности на:

пригодность

соответствие требованиям/спецификациям

точность (accuracy testing)

защищённость (security testing)

Monday, 29 April 13

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

Автоматизация функционального тестирования

Monday, 29 April 13

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

Автоматизированные функциональные тесты

Monday, 29 April 13

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

Автоматизированные функциональные тесты

Взаимодействуют с GUI или верхнеуровневым API

Тестируют возможности вашего приложения/сервиса

Monday, 29 April 13

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

Каждому уровню свои тесты

Monday, 29 April 13

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

Почему не unit/интеграционные

тесты?

Конечные возможности продукта

Высокая степень интеграции

Monday, 29 April 13

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

Testing pyramid

Monday, 29 April 13

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

Предпосылки для автоматизации

Monday, 29 April 13

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

Предпосылки для автоматизации

Монотонные действия

Стабильные интерфейсы

Высокая частота изменений

Критичность продуктовой возможности

Monday, 29 April 13

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

Как автоматизировать

Атомарность тестовых сценариев

Герметичность тестовых окружений

Monday, 29 April 13

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

Герметичность

Monday, 29 April 13

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

Обеспечение герметичности

Виртуализация

Заглушки

Тестовые состояния приложения

Monday, 29 April 13

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

Варианты интерфейсов

GUI (Web-интерфейсы/Десктоп)

API (RESTful/SOAP)

Monday, 29 April 13

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

Паттерны проектирования GUI

тестов

Monday, 29 April 13

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

Его величество PageObject

Monday, 29 April 13

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

DRY

Monday, 29 April 13

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

фу! плохой тест!

Monday, 29 April 13

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

PageObject

Monday, 29 April 13

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

PageObject

Monday, 29 April 13

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

хороший, образцовый, годный тест!

Monday, 29 April 13

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

Инструменты

Monday, 29 April 13

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

Выбор инструментов

Тест должен находиться в максимальной близости к тестируемой возможности

Нельзя автоматизировать что-либо, не написав ни одной строчки кода

Monday, 29 April 13

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

Тестирование Web-Приложений

WebDriver

Jasmine/jstestdriver

phantomjs

Monday, 29 April 13

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

WebDriver

История

Возможности

Применимость

Monday, 29 April 13

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

История

Monday, 29 April 13

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

Возможности

Monday, 29 April 13

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

Как и для чего следует применять

WebDriver

Monday, 29 April 13

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

Браузерозависимые сценарии

Drag’n’Drop - загрузка файлов

Клавиатурные действия

Кроссбраузерное тестирование

Тестирование с браузерными расширениями

Monday, 29 April 13

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

Нагрузочное тестирование

Monday, 29 April 13

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

Нагрузочное тестирование

Monday, 29 April 13

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

Тестирование бизнес- логики

Monday, 29 April 13

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

Документирование тестов. Отчёты

Keyword based testing

BDD

xUnit report

Monday, 29 April 13

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

BDD example

Monday, 29 April 13

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

BDD/PageObject example

Monday, 29 April 13

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

Keyword Driven Test example

Monday, 29 April 13

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

Применимость BDD/KDT

Тесты, воспринимаемые человеком гуманитарного склада ума

Проблемы, которые возникают при бездумном применении практик

Monday, 29 April 13

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

xUnit report

Monday, 29 April 13

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

Антипаттерны в тестировании

Monday, 29 April 13

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

Антипаттерны в тестировании

god tests

Гейзенбаг

Неуправляемое окружение

Monday, 29 April 13

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

Как тестируем мы

Monday, 29 April 13

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

ТехнологииЯП: java/python

FW: testng/py.tests

CI: jenkins

IaaS: OpenStack/chef

build tool: maven/distutils

reporting: graphite/xunit/text reports

Monday, 29 April 13

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

Браузерные тесты

фрэймворк: maven/testng/guice/webdriver/browsermob proxy/800loc

тесты: 13kloc ~300 тестов

Monday, 29 April 13

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

Функциональный мониторинг

Monday, 29 April 13

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

СеминарНаписать тесты на 5 возможностей вашего продукта, если нет продукта то напишите тесты на поиск mail.ru

Тесты должны работать в 2х браузерах firefox/chrome

Отчёт должен генерироваться в формате xUnit report

Реализовать возможность исполнения тестов параллельно (опционально)

Monday, 29 April 13

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

browser farm

Monday, 29 April 13

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

container: virtualbox

user/pass: ubuntu/reverse

hub http://localhost:4444/hub/wd

ssh ubuntu@localhost:2222

browser farm

Monday, 29 April 13

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

Вопросы

Monday, 29 April 13

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

Спасибо за вниманиеВлад Алюков [email protected]

Monday, 29 April 13