Описаны причины необходимости имитации работы серверной части в автоматизации тестирования. Приведены примеры использования инструментов, возможности которых позволяют имитировать в web-приложениях получение ответа от сервера.
2. 1. Тесты пишутся долго.
2. Высокие затраты на поддержку.
3. Тесты выполняются долго.
4. Тесты хрупкие.
5. Много времени тратится на
выяснение причин падения тестов.
Проблемы UI-тестов
Уровень
2
3. 1. В среднем 2-3% “failed” тестов.
Немного арифметики
• Всего: 300 тестов
• Дефектов: 5 шт
• Процент падений: 3%
• Время выполнения
теста: 1мин
• Время анализа падения:
10 мин.
1 запуск +1 перезапуск Итог
Упало
(300-5)*3%+5 = 14
+ Упало
(14-5) * 3% + 5 = 5
19
Время выполнения
300мин = 5 часов
+ Время выполнения
14минут
5ч 14мин
Время анализа
14*10=2ч 18мин
Время анализа
5*10 = 50мин
3ч 8мин
3
4. Какими же должны быть идеальные тесты?
• Время выполнения: максимум 10 мин.
• Запуск после очередного коммита.
• Мгновенное оповещение виновника проблем.
4
6. Так можно ли перевернуть пирамиду?
UIUI
API
UNIT
UI
UI
API
UNIT
ИЛИ
6
7. UIUI
API
UNIT
• Научиться писать код качественно.
• Максимально снизить время на подготовку предусловий.
• Максимально снизить время ожидания при загрузке
страницы/проливке данных.
• Четко понимать, что конкретно мы тестируем и не делать никаких
лишних действий.
• Каждый раз, когда это возможно, опускаться на уровень ниже.
• Автоматизировать нужно то, что мы тестируем, а не то как это
делается.
• Разделяй и властвуй.
Что могло бы нам помочь?
7
8. • Надо понимать, что и как тестируется (высокий уровень знания
проекта).
• При тестировании по кусочкам можно что-либо упустить.
НО! Возможно эти недостатки стоят того, чтоб получить набор
гарантированно работающей критической функциональности, а
какие-то менее важные детали можно и упустить.
Недостатки
8
9. 1. Отдельно тестируем серверную логику:
• Через веб-сервисы;
2. Отдельно проверяем работу UI
• Jasmine
• BeMo + Xhoock
• CasperJS + Sinon.JS/Mockjax
3. Смотрим, что все вместе корректно работает.
• Selenium
Разделяй и властвуй
9
15. 1. UI-автотесты – универсальные, но длительные и нестабильные.
2. Чтобы с этим бороться нужно:
• автоматизировать то, что мы тестируем, а не то как это
делается.
• понимать как работает то что мы тестируем.
• дробить тестовые сценарии на более мелкие части.
Итоги…
15
16. Теория:
• Автоматизация Тестирования - Почему умирают проекты?
• Time to mock back-end!
• Можно ли перевернуть пирамиду?
• Время для издевательств над задней частью!
Практика:
• How To Use CasperJS with Mocked Data to Test Your Site’s UI
• Github/bemo
• CasperJS
Ссылки
16