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

Post on 25-Dec-2014

548 views 3 download

description

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

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

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

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

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

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

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

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

Евгений Тян

«Аскон»

tyan@ascon.ru

Сложность

9!

Сложность

9! 10 46

Сложность

9! 10 46

∞?

Наш проект

Наш проект

Наш проект

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

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

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

CLOC > 120 000

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

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

UI

Integration

Unit tests

Как начинали

-Ручное

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

- TDD, Покрытие

тестами ~40%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 итерация

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

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

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

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

1

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

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

Итерация 4

1

1 2

Итерация 5

1 3

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

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

Итерация 4

1

1 2

Итерация 5

1 3

Итерация 6

1 2

3

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

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

Что еще хуже

Что еще хуже

Что еще хуже

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

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

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

тестеров

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

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

TestComplete

Squish

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

Выяснили:

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

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

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

Медленно

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

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

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

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

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

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

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

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

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

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

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

Code Review проведен

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

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

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

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

Решение. DoD

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

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

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

разработки

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

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

тесты

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

разработки

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

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

разработки

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

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

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

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

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

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

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

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

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

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

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

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

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

Что получили

0

50

100

150

200

250

300

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

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

Testcomplete

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

человек)

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

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

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

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

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

Что получили

UI UI

Integration tests

Unit tests

Как сейчас

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

- TDD, более

1500 unit-тестов

Покрытие ~60%

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

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

~500 сценариев

UI UI

Integration tests

Unit tests

Как сейчас

UI

Integration

Unit

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

1

Как сейчас

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

Итерация 4

1

2

Итерация 5

3

Итерация 6

Как сейчас

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

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

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

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

Евгений Тян

tyan@ascon.ru