Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 28.11.2007 | Доступ: свободный | Студентов: 5143 / 801 | Оценка: 4.53 / 3.65 | Длительность: 22:18:00
ISBN: 978-5-94774-825-3
Специальности: Программист, Тестировщик
Практическая работа 8:

Покрытие программного кода

< Лекция 11 || Практическая работа 8: 1234 || Лекция 12 >

19.3. Возможности MVSTE по построению покрытия кода

Замечание. Подробнее о покрытии кода можно прочитать по адресу: http://msdn2.microsoft.com/en-us/library/ms182496(VS.80).aspx

Чтобы увидеть, какая часть кода вашего проекта фактически тестируется, используйте такой инструмент для тестировщиков в Visual Studio Team System, как Покрытие кода. Этот инструмент показывает процент кода, который был выполнен, и "раскрашивает" его, показывая, какие линии кода были выполнены, а какие нет.

На прошлых семинарах мы познакомились с возможностями MVSTE по автоматизации модульного тестирования на примерах тестирования метода Add класса CalcClass и метода RunEstimate класса AnalaizerClass. Покажем на этих же примерах, какую часть кода покрыли созданные нами модульные тесты.

Для начала откроем BaseCalculator, с которым мы работали на "Тестовые примеры. Классы эквивалентности. Ручное тестирование в MVSTE" .

Далее в меню Test выбираем Edit Test Run Configuration. В подменю выбираем Local Test Run ( localtestrun.testrunconfig ), чтобы запустить файл конфигурации. (аналогично запустить файл конфигурации можно, щелкнув в Solution Explorer под Solution Items на localtestrun.testrunconfig ). Появится диалоговое окно localtestrun.testrunconfig (рис. 19.2).

Диалоговое окно "localtestrun.testrunconfig"

Рис. 19.2. Диалоговое окно "localtestrun.testrunconfig"

Выбираем Code Coverage.

В поле Select artifacts to instrument отмечаем пункты BaseCalculator.exe и BaseCalculator.Test.dll

Замечание. Если вы выбрали BaseCalculator.Test.dll, то MVSTE генерирует информацию о покрытии кода для методов в вашем тестовом проекте.

Нажмите Apply, затем закройте диалоговое окно. Мы настроили файл конфигурации.

Далее в меню Test выберите Select Active Test Run Configuration. Подменю показывает все конфигурации запуска теста вашего решения. Поместим метку на конфигурацию запуска, которую мы только что редактировали, localtestrun.testrunconfig ; что сделает её активной конфигурацией запуска теста.

В окне Test View выделяем все тесты и нажимаем кнопку Run Selection. Запустятся созданные нами на "Тестовые примеры. Классы эквивалентности. Ручное тестирование в MVSTE" тесты.

После выполнения всех тестов в окне Test Results в меню Test выберем Windows и в раскрывшемся подменю нажмем на Code Coverage Results. Откроется окно Code Coverage Results. (рис. 19.3)

Окно "Code Coverage Results"

Рис. 19.3. Окно "Code Coverage Results"

Замечание. Колонка Hierarchy изначально показывает единственный узел (в данном случае Belf@BLEFF 2006-11-08 01:34:12), который содержит данные обо всем покрытии кода, достигнутом в последнем запущенном и выполненном тесте. Он назван, используя следующий формат: <user name>@<computer name> <date> <time>.

Если вы раскроете этот узел, то увидите выбранные нами в файле конфигурации проекты BaseCalculator.exe и BaseCalculator.Test.dll

Раскроем узел для сборки BaseCalculator.exe, для пространства имен BaseCalculator и для класса CalcClass, как показано на рис.19.4.

Окно "Code Coverage Results"

Рис. 19.4. Окно "Code Coverage Results"

Строки в классе CalcClass представляют его методы. Колонки в окне Code Coverage Results показывают статистику покрытия для отдельных методов, для классов, и для всего пространства имен.

Замечание. В этой таблице можно выбирать, в каком порядке и какие колонки будут отображаться. Для этого нужно нажать правой кнопкой мыши в окне Code Coverage Results и выбрать в контекстном меню пункт Add/Remove Columns.

Замечание. Статистика покрытия кода показывает покрытие блоков и линий кода.

Чтобы посмотреть, какая именно часть кода была покрыта, щелкнем два раза на строку с методом Add.

Откроется файл исходного текста CalcClass.cs на методе Add. В этом файле мы видем "окрашенный" код. Линии, окрашенные в голубой цвет, были выполнены в процессе выполнения тестов, а линии, окрашенные в красный, не были выполнены. (рис.19.5)

Замечание. Цвета окрашивания линий покрытия кода можно изменить. Для этого нужно зайти в Tools->Options. В открывшемся диалоговом окне нужно выбрать Environment->Fonts and Colors. Далее в раскрывающемся списке Show settings for выбираем Text Editor. Далее в Display items нужно выбрать область покрытия кода, цвет которой вы хотите изменить: это Coverage Not Touched Area, или Coverage Partially Touched Area, или Coverage Touched Area. Для этих областей покрытия кода можно изменить шрифт, его размер, жирность, цвет текста и его "окрашивание". По завершении, чтобы сохранить изменения и выйти из диалогового окна, нажмите OK.

"Окрашивание" покрытия кода

Рис. 19.5. "Окрашивание" покрытия кода

Прокручивая файл, вы можете увидеть в нем покрытие для других методов.

Замечание. Точно так же можно просмотреть покрытие кода наших модульных тестов, то есть, можно увидеть, какие из тестовых методов были осуществлены (раскрыв в окне Code Coverage Results сборку BaseCalculator.Test.dll ). Применяется та же самая схема окрашивания: голубой показывает выполненный в процессе выполнения теста код; красный — невыполненный.

Замечание. Результаты покрытия кода можно экспортировать в отдельный XML-файл. Для этого в окне Code Coverage Results нужно нажать на кнопку Export Resultsкнопка, указать имя и местоположение файла.

19.4. Раздаточный материал

19.4.1. Программа

Модульные тесты, которые написали студенты, выполнив домашнее задание "Тестовые примеры. Классы эквивалентности. Ручное тестирование в MVSTE" .

19.5. Домашнее задание

Доработать модульные тесты, добившись максимального покрытия кода по MC\DC.

< Лекция 11 || Практическая работа 8: 1234 || Лекция 12 >
Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?