Стратегия тестирования крупного проекта в условиях...

56
Стратегия тестирования крупного проекта в условиях agile разработки. Разработка и внедрение системы регрессионного тестирования Евгений Тян «Аскон» [email protected]

Upload: agiledays

Post on 25-Dec-2014

537 views

Category:

Technology


3 download

DESCRIPTION

Евгений Тян, Аскон (Санкт-Петербург) Ведущий разработкчик компании Аскон г. Санкт-Петербург. В течении 5 лет занимаюсь разработкой ПО для проектирования в области архитектуры и строительства. Обычно это крупные проекты в которых сроки разработки от 1 года. Сферы интересов: гибкие методологии разработки, контроль качества, 3D графика, алгоритмы, хранение данных, data mining, diving =) В крупном проекте со временем начинает ломаться то, что раньше работало. На текущей итерации исправляем баги внесенные на прошлых, проект буксует. Необходимо постоянно поддерживать качество продукта, ведь он отдается заказчику на каждом Demo. Существует множество программных средств для регрессионного тестирования, но у всех свои ограничения. Мой доклад об опыте разработки и внедрения системы регрессионного тестирования в компании "Аскон", о том как она встроилась в agile процесс, какие проблемы возникали в ее использовании. Приходите!

TRANSCRIPT

Page 1: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Стратегия тестирования

крупного проекта в

условиях agile разработки.

Разработка и внедрение

системы регрессионного

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

Евгений Тян

«Аскон»

[email protected]

Page 2: Стратегия тестирования крупного проекта в условиях Agile разработки v2
Page 3: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Сложность

9!

Page 4: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Сложность

9! 10 46

Page 5: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Сложность

9! 10 46

∞?

Page 6: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Наш проект

Page 7: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Наш проект

Наш проект

Решение для архитектуры и

строительства

Срок разработки: 3-4 года

CLOC > 120 000

Page 8: Стратегия тестирования крупного проекта в условиях Agile разработки v2

3D Проектирование

Page 9: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Максимальная свобода

Page 10: Стратегия тестирования крупного проекта в условиях Agile разработки v2

UI

Integration

Unit tests

Как начинали

-Ручное

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

- TDD, Покрытие

тестами ~40%

Page 11: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Сложно предусмотреть все возможные

варианты использования модуля

Page 12: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Сложно предусмотреть все возможные

варианты использования модуля

Page 13: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Сложно перейти от условий

ошибки к Unit-тесту

Page 14: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Сложно воспроизвести ошибку

Page 15: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Интеграционные тесты работают с

приложением на более высоком уровне

Page 16: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Интеграционные тесты работают с

приложением на более высоком уровне

Page 17: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Unit тестов не достаточно

Интеграционные тесты работают с

приложением на более высоком уровне

Page 18: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация

Проект буксует

Page 19: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация

Проект буксует

Page 20: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация 3 итерация

1

Проект буксует

Page 21: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация 3 итерация

Итерация 4

1

1 2

Итерация 5

1 3

Проект буксует

Page 22: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация 3 итерация

Итерация 4

1

1 2

Итерация 5

1 3

Итерация 6

1 2

3

Проект буксует

Page 23: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Стоимость исправлений

Page 24: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Что еще хуже

Page 25: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Что еще хуже

Page 26: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Что еще хуже

Page 27: Стратегия тестирования крупного проекта в условиях Agile разработки v2

КАК ПОДДЕРЖИВАТЬ

КАЧЕСТВО ПРОДУКТА?

Page 28: Стратегия тестирования крупного проекта в условиях Agile разработки v2

У нас нет столько

тестеров

Тестировать руками?

Page 29: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Рассматривали:

TestComplete

Squish

Автоматизация?

Page 30: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Выяснили:

Существуют риски с

поддержкой технологий

Зависимость от GUI

Медленно

Автоматизация?

Page 31: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Автоматизация?

Решение: собственная

система автоматизации

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

Page 32: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Решение. Инструмент

Page 33: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Решение. Инструмент

Page 34: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Решение. Инструмент

Page 35: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Что такое тест?

Page 36: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Инструмент тестера

Page 37: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Решение. Инструмент

Page 38: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Code Review проведен

Unit test-ы написаны

Старые тесты работают

Приемочные тесты написаны

Код слит в основную ветку

Решение. DoD

Page 39: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Автоматизация

Page 40: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Проблемы внедрения

Хрупкость тестов на раннем этапе

разработки

Сложность анализа причин поломки теста

Долго не могли привыкнуть поддерживать

тесты

Page 41: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Хрупкость тестов на раннем этапе

разработки

Проблемы внедрения

Page 42: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Хрупкость тестов на раннем этапе

разработки

Проблемы внедрения

Page 43: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Проблемы внедрения. Анализ

Page 44: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Поддержка тестов

Page 45: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Поддержка тестов

• Каждый ответственен за то,

что его commit не ломает тесты

• Если тест нужно исправить, то этим

занимается разработчик, который

внес изменение

Page 46: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Собственная система интеграционного тестирования. Полный контроль

Скорость. За счет возможности отвязаться от GUI и запустить интеграционные тесты в несколько потоков. Прохождение 500 тестов ~ 3-4 мин.

Возможность запускать тесты на каждый commit

Система записи сценария встроена в приложение – любой пользователь может записать ошибку и отправить нам

Что получили

Page 47: Стратегия тестирования крупного проекта в условиях Agile разработки v2

0

50

100

150

200

250

300

Время прохождения 500 сценариев, мин

Собственная утилита

Testcomplete

Page 48: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Затратили времени ~ 2 командо-месяца (5

человек)

Есть ошибки в самом инструменте

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

Поддержка. Любые хотелки делаем сами

(форматы вывода результатов,

интерфейсные удобства, средства анализа)

Что получили

Page 49: Стратегия тестирования крупного проекта в условиях Agile разработки v2

UI UI

Integration tests

Unit tests

Как сейчас

- Ручное тестирование

- TDD, более

1500 unit-тестов

Покрытие ~60%

- Автоматизированное

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

~500 сценариев

Page 50: Стратегия тестирования крупного проекта в условиях Agile разработки v2

UI UI

Integration tests

Unit tests

Как сейчас

UI

Integration

Unit

Page 51: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация 3 итерация

1

Как сейчас

Page 52: Стратегия тестирования крупного проекта в условиях Agile разработки v2

1 итерация 2 итерация 3 итерация

Итерация 4

1

2

Итерация 5

3

Итерация 6

Как сейчас

Page 53: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Не нужно оглядываться,

смотрим вперед,

движемся уверенней

Page 54: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Кому это надо?

Page 55: Стратегия тестирования крупного проекта в условиях Agile разработки v2
Page 56: Стратегия тестирования крупного проекта в условиях Agile разработки v2

Евгений Тян

[email protected]