Upload
agiledays
View
537
Download
3
Embed Size (px)
DESCRIPTION
Евгений Тян, Аскон (Санкт-Петербург) Ведущий разработкчик компании Аскон г. Санкт-Петербург. В течении 5 лет занимаюсь разработкой ПО для проектирования в области архитектуры и строительства. Обычно это крупные проекты в которых сроки разработки от 1 года. Сферы интересов: гибкие методологии разработки, контроль качества, 3D графика, алгоритмы, хранение данных, data mining, diving =) В крупном проекте со временем начинает ломаться то, что раньше работало. На текущей итерации исправляем баги внесенные на прошлых, проект буксует. Необходимо постоянно поддерживать качество продукта, ведь он отдается заказчику на каждом Demo. Существует множество программных средств для регрессионного тестирования, но у всех свои ограничения. Мой доклад об опыте разработки и внедрения системы регрессионного тестирования в компании "Аскон", о том как она встроилась в agile процесс, какие проблемы возникали в ее использовании. Приходите!
Citation preview
Стратегия тестирования
крупного проекта в
условиях agile разработки.
Разработка и внедрение
системы регрессионного
тестирования
Евгений Тян
«Аскон»
Сложность
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
Как сейчас
Не нужно оглядываться,
смотрим вперед,
движемся уверенней
Кому это надо?
Евгений Тян