Artem Shabarshin. CSEDays

Post on 11-Nov-2014

720 views 0 download

Tags:

description

 

transcript

Артем Шабаршин инженер-программист группы тарификации отдела биллинга

Постановка процесса функционального тестирования - проблемы и решения

• 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/

СПАСИБО

Артем Шабаршин a.shabarshin@eastwind.ru