Владимир Гусаров, Quest Software 30 марта 2012
Quality Assurance Day ’12 КОНФЕРЕНЦИЯ ДЛЯ ТЕХ, КОМУ НЕБЕЗРАЗЛИЧНО КАЧЕСТВО
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Обзор новых возможностей
юнит-тестирования в среде
Visual Studio 11
Юнит-тестирование в Visual
Studio 11 ориентировано на
разработчиков, которые пишут
и запускают юнит-тесты во время создания кода.
Анализ жалоб и пожеланий
• Использовать альтернативные системы юнит-тестирования – Репутация MS-Test как медленной системы для .Net – Отсутствие поддержки тестирования нативного
кода – MS-Test очень медленно развивается по
сравнению с остальными (xUnit.net, BDD frameworks, mocking frameworks, и т.д.)
• Юнит-тестирование в Visual Studio оптимизировано для тестировщиков
• Плохо поддерживаются Agile и TDD
ЗНАКОМСТВО С НОВЫМ ОБОЗРЕВАТЕЛЕМ ЮНИТ-ТЕСТОВ
Демонстрация
Архитектура
Сделано для разработчиков
Используйте любую систему
• В комплекте поставляется: – MS-Test для управляемого кода – MS-Test для неуправляемого кода (**НОВОЕ**)
• Плагины сторонних разработчиков – NUnit – xUnit.net – MbUnit – Юнит-тесты SQL Server – Другие
• Напишите свой плагин! – Customizing for Testing By Using the Visual Studio SDK
• Производительность и масштабируемость
• Поддержка асинхронного запуска (Async)
[TestMethod]
public async Task MyAsyncTest()
{
var result = await SomeLongRunningOperation();
Assert.IsTrue( result );
}
• Нормальная поддержка 64-бит и .Net multi-targeting
• Доступно в редакции Express!
Улучшения в MS-Test
ЮНИТ-ТЕСТИРОВАНИЕ АСИНХРОННЫХ МЕТОДОВ В MS-TEST
Демонстрация
Строгая совместимость с VS 2010
• Юнит-тест проекты VS 2010 будут «просто работать» в VS 11
– Не нужно обновление
– Двустороння обратная совместимость с VS 2010
• TeamBuild в TFS 11 настраивается
– Запуск тестов, совместимых с VS 2010
– Запуск новых VS 11 тестов
Изоляция для лучшего тестирования
• Новый VS 11 Fakes Framework – Позволяет тестировать практически ВСЁ в изоляции
• На основе научно-исследовательской разработки “Moles” (проект Microsoft Research)
• Две концепции – Заглушки (Stubs) – реализация интерфейсов или
абстрактных классов – Прослойки (Shims) – сгенерированные классы
• Перехват и подмена вызовов существующих объектов, включая .Net BCL!
ИСПОЛЬЗОВАНИЕ FAKES ДЛЯ ИЗОЛИРОВАННЫХ ЮНИТ-ТЕСТОВ
Демонстрация
Рекомендации
• Заглушки – Естественное расширение широко известных стратегий
тестирования – Основной способ для поддержки изоляции
• Прослойки – Невообразимо мощный и иногда единственный способ
протестировать… и огромное зло! – Начинайте использовать для тестирования существующего
кода – Но не останавливайтесь на этом… – Старайтесь сделать рефакторинг кода, чтобы прослойки
больше не понадобились – Затем уберите их
Покрытие кода в VS 11
• Анализ покрытия одним нажатием
• Анализ для выбранных тестов
– Как конкретные тесты покрывают систему
• Поддержка неуправляемого кода (через MS-Test Native Framework)
• Работает с системами тестирования сторонних производителей
ПОКРЫТИЕ КОДА
Демонстрация
Поддержка Team Build
• Если это работает в VS – будет работать и в Team Build
– Поддержка систем сторонних производителей
– Изоляция от Visual Studio Fakes Framework
– Покрытие кода
• Плюс…
– Оценка влияния на тесты (Test Impact Analysis)
Непрерывное тестирование
• Запуск тестов это естественная часть сборки продукта
• Опция “Запустить тесты после сборки” запускает все тесты после каждой успешной сборки
НЕПРЕРЫВНОЕ ТЕСТИРОВАНИЕ
Демонстрация
Юнит-тестирование в Visual
Studio 11 ориентировано на
разработчиков, которые пишут
и запускают юнит-тесты во время создания кода.
Спасибо за внимание!
• Ресурсы – Visual Studio Managed Unit Testing
Framework (aka MS-Test) • http://aka.ms/mstest-dev11
– xUnit.net • Информация: http://xunit.codeplex.com/ • Скачать: http://aka.ms/xunit-vs11
– NUnit • Информация: http://nunit.org/ • Скачать: http://aka.ms/nunit-vs11
– MbUnit • Информация: https://github.com/Gallio/Gallio-
VS2011-Integration • Скачать: http://aka.ms/mbunit-vs11
• Контакты – http://vstsblog.ru