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

Preview:

Citation preview

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

Влад Алюков

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

Спасибо за вниманиеВлад Алюков v.alyukov@corp.mail.ru

Monday, 29 April 13