«Agile-тестирование по версии API 2ГИС» — Анастасия...

Preview:

DESCRIPTION

В свое время, когда мы только запускали API, всё было скромно: небольшая команда, комфортные требования, да и бизнес не требовал от нас подвигов. Но всё коренным образом изменилось, когда API разрослось до 30 серверных компонент в трёх датацентрах, а бизнес «порекомендовал» успевать с ответом в 200 мс и выкатывать релизы раз в неделю. На фоне роста проекта, росла команда и остро встали вопросы «как экологично встроить тестирование в большую scrum-команду большого проекта». Мы сфокусировались на трёх важных моментах: Планирование Большая команда → «большое» планирование. Тестирование планируется отдельно или вместе с разработчиками? Нужна ли выделенная роль крайнего за тестирование на проекте? Релиз Нужен ли крайний за релиз и кто отвечает за интеграционные зависимости? Когда надо остановиться и заморозить фичи? Кто и как мониторит продукт после релиза? Автоматизация — наше всё ;) Как не «захлебнуться» в регрессии: unit-тесты, json-схема. Как правильно выбрать фичи для автоматизации и как встроить автоматизацию в процесс тестирования.

Citation preview

Agile-тестирование по версии

API 2ГИС

Настасья «Горыныч» Огаркова

Ведущий тестировщик Стажёр

2 года в

Справочное API 2ГИС •  Почти 1000 партнёров (Mail.ru,

2GIS.Online…);

•  3 ДЦ: Новосибирск, Москва, Дронтен;

•  700 rps на фронтэнд.

Как встроить тестирование в Scrum-команду?

Идеальный Scrum

Планирование Демо

Реальный Scrum

Планирование

Test

Реальный Scrum

Планирование

1d

Test

Работающий Scrum

sp1 sp2

sp1 (test)

Работающий Scrum / Планирование

sp1 sp2

sp1 (test)

6 часов планируемся планировались

Планирование / Решение

Свой человек

Планирование / Решение

Ведущий тестировщик

Планирование / Ведущий тестировщик

1. Планирование разработчиков

Планирование / Ведущий тестировщик

1. Планирование разработчиков 2. Согласование ребований, сроков

Планирование / Ведущий тестировщик

1. Планирование разработчиков 2. Согласование ребований, сроков 3. Планирование тестировщиков

Планирование / Ведущий тестировщик

1. Планирование разработчиков 2. Согласование ребований, сроков 3. Планирование тестировщиков 4. Взаимодействие с другими командами

Планирование / Решение

Большие уши

Планирование / Большие уши

1. Планирование разработчиков в комнате

Планирование / Большие уши

1. Планирование разработчиков в комнате

2. Тестируем и слушаем

Работающий Scrum / Планирование

sp1 sp2

sp1 (test)

Работающий Scrum / Планирование

sp1 sp2

sp1 (test)

Планирование / Профит

2.5h VS 6h

Работающий Scrum

sp1 sp2

sp1 (test)

sp1 sp2

sp1 (test)

2-3 sp

Работающий Scrum / Тестирование

3 дня регрессионного тестирования

Тестирование / Решение

Unit Tests

Тестирование / Решение

Unit Tests

Тестирование / Unit Tests

1.  Наколбасил? – Запусти Unit Tests!

Тестирование / Unit Tests

1.  Наколбасил? – Запусти Unit Tests! 2.  Взял задачу в тестирование? – Запусти Unit Tests!

Тестирование / Unit Tests

1.  Наколбасил? → Запусти Unit Tests! 2.  Взял задачу в тестирование? → Запусти Unit Tests!

3.  Регрессируешь? → Запусти Unit Tests!

Тестирование / Решение

Functional AutoTests

Тестирование / Решение

Functional AutoTests

Тестирование / Functional AutoTests

1.  Тесты на новый функционал

Тестирование / Functional AutoTests

1.  Тесты на новый функционал 2.  Каждый спринт пишем тесты

Тестирование / Functional AutoTests

1.  Тесты на новый функционал 2.  Каждый спринт пишем тесты 3.  Тесты на найденные ошибки

Тестирование / Решение

JSON Schema http://habrahabr.ru/company/2gis/blog/186768/

Тестирование / Решение

Автодокументация автотестов

PHPDoc

Тестирование / Автодокументация

Формат описания

•  Заголовок (идея тест-кейса); •  Шаги воспроизведения; •  Проверки (ожидаемый результат); •  Дополнительная информация (автор, дата).

/** * StationSearch. Единовременное использование

*project и where * * 1. Получаем некорретное значение с помощью метода

*getIncorrectValues и запоминаем его * 2. Параметру where присваиваем некорректное * значение из п.1 * 3. Делаем запрос * 4. Проверяем значения полей, содержащихся в ответе: * a. версия API равна указанной в запросе; * b. код отевета = 400; * * @author Ogarkova Anastasia <a.ogarkova@2gis.ru> * @since 26.03.2012 */

Тестирование / Резюме

•  Unit Tests; •  Functional AutoTests; •  Автоматизация тестирования документации; •  Автоматизация внутренней документации.

Работающий Scrum / Тестирование

sp1 sp2

sp1 (test)

2-3 sp

sp1 sp2

sp1 (test)

Работающий Scrum / Тестирование

Тестирование / Профит

3h VS 3d регрессионного тестирования

Работающий Scrum

sp1 sp2

sp1 (test)

1 → 3 дата-центра 2 → 11 нод 3 часа приёмки →

Работающий Scrum / Релиз

sp1 sp2

sp1 (test)

15 часов — приёмка релиза

sp1 sp2

sp1 (test)

2-3 sp

Приёмка релиза / Решение

Smoke AutoTests

Приёмка релиза / Решение

Релиз-тестировщик

Приёмка релиза / Релиз-тестировщик

1. Подготовка релиза

Приёмка релиза / Релиз-тестировщик

1. Подготовка релиза 2. Процесс релиза

Приёмка релиза / Релиз-тестировщик

1. Подготовка релиза 2. Процесс релиза 3. Мониторинг боя

Приёмка релиза / Мониторинг боя

Приёмка релиза / Мониторинг боя

Приёмка релиза / Мониторинг боя

Работающий Scrum / Релиз

sp1 sp2

sp1 (test)

2-3 sp

sp1 sp2

sp1 (test)

Работающий Scrum / Релиз

Приёмка релиза / Профит

3h VS 15h

Планирование

•  Отдельное планирование тестировщиков

•  Свой человек на планировании разработчиков

•  Тестировать и слушать

Ещё раз...

Тестирование

•  Unit Tests •  Functional AutoTests •  Автоматизация тестирования документации

•  Автоматизация внутренней документации

Ещё раз...

Релиз •  Автоматизация Smoke-тестов

•  Релиз-тестировщик

Ещё раз...

Роли •  Ведущий тестировщик •  Релиз-тестировщик •  Тестировщик

Всё!

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

a.ogarkova@2gis.ru @gorynych3003

Recommended