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