Upload
lilosea
View
720
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Артем Шабаршин инженер-программист группы тарификации отдела биллинга
Постановка процесса функционального тестирования - проблемы и решения
• Visual Studio 2008
• SQL Server
• Perforce
• Microsoft Hyper-V Server 2008
• Cruise Control.NET
• .NET Framework 3.5
• •12500 строк кода на языке С#•12500 строк кода на языке С#
• 4000 строк модульных тестов
• 111000 строк скриптов базы данных
• 47000 строк функциональных тестов
• Время запуска всех тестов более 4.5 часов• 4-6 чел. команда разработки
Что мы имеем сейчас
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Этапы постановки процесса тестирования
• Я знаю, как работает моя программа.
• Ошибки выявляются при отладке.
• С ростом объема кода растет время отладки.
Начинаем проект! Нам тесты не нужны!
Модульные тесты, если…
• Проверка отдельных частей.
• Покрытие кода.
• Меньше ошибок
Низкое качество, частые ошибки!
Много времени уходит на отладку!
Test Driven Development
• Сначала тест, затем программа
• Красная и зеленая зоны
• Рефакторинг
Этапы постановки процесса тестирования
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Функциональные тесты, если…
• Тестирование черного ящика.
• Тестировщиков нет
• Visual Studio generic test.
• План тестирования.
Неизвестно какие функции
Работают, а какие нет
Неизвестно
взаимовлияние функций
Невозможно быстро протестировать
систему в целом
Что мы получили
• Вносить изменения легко.
• Минимальная отладка.
• Регрессионное тестирование.
• Выпуск релиза.
Этапы постановки процесса тестирования
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Стратегия работы с контролем версий, если…
• Вносить изменения легко.
• Минимальная отладка
• Выпуск релиза mainline
feature 1
feature 2
release v.1.0
Разработчики мешают друг другу!
Тестировать постоянно меняющуюся
версию невозможно!
Этапы постановки процесса тестирования
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Заказчики хотят разного!
• Вносить изменения легко.
• Минимальная отладка
• Выпуск релиза
F1
F2
F3
F2*
F3*
Матрица анализа, тестирование конфигураций если…
Функциональность 1 F1 F1 F1
Функциональность 2 F2 F2 F2*
Функциональность 3 F3 F3* F3
Заказчики хотят разного!
Этапы постановки процесса тестирования
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Запуск тестов
• Тестов много.
• Запуск парализует остальную работу.
• Редко запускаются.
• Больше тестов в красной зоне.
Тест 1Тест 2Тест 3Тест 4
Тест N
Проблема: Тесты выполняются слишком долго!
Распределенные тесты, если…
Вирт. машина 1
Тест 1Тест 2
Вирт. машина 2
Тест 3Тест 4
Вирт. машина 3
Тест N-1Тест N
Тесты выполняются слишком долго!
Этапы постановки процесса тестирования
1) Модульное тестирование
2) Функциональное тестирование
3) Стратегия работы с контролем версий
4) Тестирование конфигураций
5) Распределенные тесты
6) Сервер непрерывной интеграции
Проблемы, которые решает
сервер непрерывной интеграции
Много ручной работы!
Разработчики игнорируют
запуск тестов!
Проблема растет
как снежный ком!
Как работает сервер непрерывной интеграции
Сервер сборки
Сервер непрерывной интеграции
Цикл сборки Отчеты
ЛогированиеВнешние приложения
ГруппаТриггер
Серверы непрерывной интеграции обслуживаютвсе ветки разработки
• Вносить изменения легко.
• Минимальная отладка
• Выпуск релиза mainline
feature 1
feature 2
release v.1.0
Сервер №1
Сервер №2
Сервер №4
Сервер №3
• основная группа из 1000 тестов проходят за 5 минут.
• Автоматическая сборка.
• Результаты тестов сразу.
• Тяжелые тесты по расписанию (ночью).
• Каждую ветку разработки обслуживает отдельный сервер интеграции
Чего мы достигли
Источники
• http://alexeybulat.blogspot.com/
• http://martinfowler.com/articles/continuousIntegration.html
• http://cruisecontrol.sourceforge.net/
• http://software-testing.ru/
СПАСИБО
Артем Шабаршин [email protected]