ByndyuSoft 2. Консультант по вопросам разработки приложений и организации работы IT компаний 3. Внештатный сотрудник Академии АйТи 4. Технический блог http://blog.byndyu.ru 5. Преподаю в ЮУрГУ 6. Организую конференции .NET-разработчиков http://www.dotnetconf.ru 7. Веду группу в Google Group по проблемам разработки приложений http://groups.google.com/dotnetconf
Использование xUnit-фреймворков 2. Mock-и и Stub-ы 3. Проверка состояния vs Проверка поведения 4. Именование тестов 5. Шаблон AAA 6. Организация тестов 7. Модульное тестирование и сильное связывание 8. СУБД и другое внешние окружение 9. Тестирование UI (шаблоны MVС и MVP) 10. Покрытие кода тестами 11. Время выполнения тестов, Continuous Integration 12. Полезные фреймворки и инструменты
(от англ. mock object, буквально: объект-пародия, объект-имитация) — тип объектов, реализующих заданные аспекты моделируемого программного окружения. • Stub (от англ. stub, буквально: заглушка)—объект или функцию, не выполняющая никакого осмысленного действия, возвращающая пустой результат или входные данные в неизменном виде.
пишет код Заливает изменений в систему контроля версий Интеграционная система (CI) находит изменения CI берет последнюю версию кода, компилирует и запускает модульные тесты CI оповещает всех об успехе или неудаче
тест 2. Создаем недостающие объекты, чтобы проект компилировался 3. Запускаем тест и видим, что он не работает (красная полоса). Здесь появляется маячок, который подталкивает нас решать эту проблему. Хочу зелёную полоску! 4. Пишем код до тех пор, пока тест не сработает 5. Видим зелёную полоску и внутренне радуемся своей маленькой победе! 6. Рефакторим код, если это необходимо
протестировать приватные методы? 2. Надо ли стремиться покрыть код тестами на 100%? 3. Сначала нам надо написать много тестов, а потом исправлять их один за другим? 4. Как же мне протестировать взаимодействие с базой данных, работу с SMTP-сервером или файловой системой? 5. Как часто надо запускать все тесты?
области 2. Изучение технологии 3. Реализация алгоритмов 4. Добавление функциональности Сложности: 1. Рутинные задачи 2. Невозможность тестирования 3. Параллельные вычисления