Причины и способы имитации back-end'а

Preview:

Citation preview

Докладчик: Авчинникова О. И.

Причины и способы имитации 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

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

Recommended