Top Banner
И никуда не надо ехать! “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников Игорь Хрол http://www.khroliz.com
35

“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Jun 25, 2015

Download

Technology

Igor Khrol

Когда мы говорим об автоматизации тестирования, чаще всего вспоминается Selenium, Microsoft Coded UI, QTP и другие аналогичные инструменты. Мы хотим воспроизводить действия ручного тестирования с максимальной точностью, чтобы можно было с уверенностью сказать, что тот или иной тест-скрипт повторяет какую-то часть сложившихся на проекте тестов. Когда же тестов становится чуть больше, то мы обнаруживаем, что наши тесты запускаются долго, работают нестабильно. После чего мы начинаем говорить о параллелизации, виртуализации, четырёхслойной архитектуре фреймворка и прочих жутко интересных вещах… Это всё очень хорошо, но главная цель где-то остаётся в стороне – контроль качества нашего продукта.

В своём докладе я попытаюсь слегка задать направление другой альтернативе: отойти от автотестов через пользовательский интерфейс в сторону более низкоуровневых, которые значительно быстрее и стабильнее. Если вас также волнует “переворачивание” пирамиды автоматизации тестирования, то приглашаю присоединиться к обсуждению этой сложной и важной темы.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

И никуда не надо ехать!

“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с

меньшим числом посредников

Игорь Хрол

http://www.khroliz.com

Page 2: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

О себе

• Игорь Хрол

• Более семи лет в автоматизации тестирования

• Консультант, тренер, инженер, менеджер, архитектор

• Selenium, HP QTP, TestCompete, JMeter

• Докладчик на AutoConfeT&QA’2012

Page 3: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

О чём будем говорить?

Page 4: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

О чём будем говорить?

Page 5: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Что мы понимаем под автоматизацией тестирования?

Page 6: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Проблема

Автоматические тесты через пользовательский интерфейс медленные

Page 7: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Проблема

Автоматические тесты через пользовательский интерфейс нестабильные и

хрупкие

Page 8: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Проблема

• Автотесты долго писать

• А что мне делать, пока работает автотест?

Page 9: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Причины

Большое число посредников

Page 10: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Проблема

Большое число посредников

Page 11: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Что делать?

Page 12: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Хороший фреймворк!

Page 13: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Становится лучше, но не хорошо

Page 14: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Тестируем функционал там, где он реализован

Поддержка

Количество тестов

Уровень

Page 15: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Правильная «Пирамида»

UI

API тесты

Unit тесты

Page 16: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Обычная картина на проектах

UI тесты

API тесты

Unit

Page 17: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Направления для решения

Page 18: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Научиться программировать

Page 19: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Понимать, что происходит внутри

Page 20: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Структурируйте тестовую методику

• Понять, что именно тестируем

• Не тестировать много раз одно и то же

Page 21: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Сценарий 1: авторизация

Шаг Ожидаемый результат

Открыть страницу логина Страница открыта

Заполнить имя пользователя Имя пользователя заполнено

Заполнить поле пароля Пароль введён

Нажать на кнопку «Войти» Пользователь вошёл в систему

Page 22: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Сценарий 2: поиск

Шаг Ожидаемый результат

Открыть страницу логина Страница открыта

Заполнить имя пользователя Имя пользователя заполнено

Заполнить поле пароля Пароль введён

Нажать на кнопку «Войти» Пользователь вошёл в систему

Найти продукт «Холодильник» Продукт найден

Page 23: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Сценарий 3: добавление в корзину

Шаг Ожидаемый результат

Открыть страницу логина Страница открыта

Заполнить имя пользователя Имя пользователя заполнено

Заполнить поле пароля Пароль введён

Нажать на кнопку «Войти» Пользователь вошёл в систему

Найти продукт «Холодильник» Продукт найден

Добавить продукт в корзину Продукт находится в корзине

Page 24: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Сценарий 1-3: авторизация, поиск и добавление в корзину

Шаг Ожидаемый результат

Открыть страницу логина Страница открыта

Заполнить имя пользователя Имя пользователя заполнено

Заполнить поле пароля Пароль введён

Нажать на кнопку «Войти» Пользователь вошёл в систему

Найти продукт «Холодильник» Продукт найден

Добавить продукт в корзину Продукт находится в корзине

Много зависимостей «Цепные» падения тестов

Page 25: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Шаг Ожидаемый результат

Открыть страницу логина Страница открыта

Заполнить имя пользователя Имя пользователя заполнено

Заполнить поле пароля Пароль введён

Нажать на кнопку «Войти» Пользователь вошёл в систему

Шаг Ожидаемый результат

Найти продукт «Холодильник» Продукт найден

Сценарий 1: авторизация

Сценарий 2: поиск

Шаг Ожидаемый результат

Добавить продукт в корзину Продукт находится в корзине

Сценарий 3: добавление в корзину

Предусловие: пользователь авторизован

Предусловие : страница с результатами поиска под авторизованным пользователем

Page 26: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Куда убрать предусловия?

• Авторизация:

– Открывать браузер уже с готовой веб-сессией или cookies

• Страница с результатами поиска:

– Открывать URL напрямую

• Любой другой способ доведения системы до нужного состояния…

Page 27: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Куда убрать предусловия?

Убрать генерацию тестовых данных через интерфейс

• Через веб-сервисы

• Через sql-скрипты

• Поднимать базу из snapshot’a и тестировать на одних и тех же данных каждый раз

Page 28: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Не переделывать работу других

• Много систем делается на основе готовых решений

Page 29: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Не переделывайте работу других

• Используйте готовые API третьих систем

Ваша система на основе коробочного продукта

Браузер

Автоматические тесты

API

Page 30: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Автоматизировать то, что тестируем, а не то, как это делается

• Наша цель – протестировать конкретный функционал, а не покрыть автотестом ручной сценарий

• Пример:

– Цель теста: проверить, что нельзя добавить продукт без названия

– Место реализации функционала: триггер в базе данных

Page 31: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Автоматизировать то, что тестируем, а не то, как это делается

• Эффективная реализация тестов: 1. Проверить, что данные отправляются из веб-

формы на сервер (отдельный тестовый сценарий)

2. Проверить, что сервер приложений сохраняет данные в базу

3. Попробовать добавить в базу запись и получить результат триггера

Page 32: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Разделяй и властвуй

• Отдельно тестируем серверную логику – Через веб-сервисы

– Через любой другой API

– Напрямую на сервере

• Отдельно проверяем работу UI – Jasmine

• Смотрим, что вместе всё также работает – Selenium, QTP (вершина пирамиды)

Page 33: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Недостатки

• Надо понимать, что именно и как тестируется

• При тестировании «по кусочкам» можно что-то упустить

• Вывод: следует находить «золотую середину»

Page 34: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Подводя итоги…

• UI-автотесты – универсальные, но длительные и нестабильные

• Как с этим бороться:

– Понимайте, что именно и как вы тестируете

– Заглядывайте внутрь вашей системы, чтобы стать ближе к объекту тестирования

– Разбивайте задачу тестирования на части

– Не переделывайте работу других

Page 35: “Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числом посредников

Спасибо за внимание! Вопросы?

Игорь Хрол

• E-mail: [email protected]

• Skype: igor.khrol

• LinkedIn: http://www.linkedin.com/in/khroliz

• Блог: http://ru.khroliz.com

• Facebook: https://www.facebook.com/khroliz