3. PureCoverage

Все хорошее рано или поздно кончается. Хотя, исходя из личного опыта и опыта знакомых - все самое хорошее заканчивается гораздо раньше, чем того хотелось. Вот так и с продуктами тестирования, рассматриваемыми в данной статье: мы сначала уделили достаточно много сил и времени продукту Quantify, для получения представления о нем и о принципах тестирования по Rational'овски, затем углубились в область тестирования утечек памяти, поговорив о Purify в контексте интеграции с Development Studio.

Теперь настало время поговорить еще об одном продукте - Rational Pure Coverage, завершающим вереницу инструментов по тестированию. Он позволит разработчикам довести собственные программы до состояния абсолютной эффективности (божественной нирваны), освободив от ошибок и странностей.

Основное и единственное назначение продукта - выявление участков кода, пропущенного при тестировании приложения. Вполне очевидно, что при тестировании программы специалисту не удается оттестировать абсолютно все ее функции. Это невозможно по двум причинам: во-первых, разработчик не может сделать все абсолютно правильно с учетом всех возможных нюансов, во-вторых, даже учитывая все возможные реакции приложения на внешние "раздражители" невозможно на 100% быть уверенным в том, что все оттестировано. Согласитесь - достаточно обидно будет лицезреть на демонстрации собственной программы перед коллегами или (о, ужас!) клиентами сообщение об ошибке.

Рисунок 13

После такого провала уже никому не доказать, сколько бессонных ночей проведено в детальном всестороннем тестировании программы, и что как раз именно не прошедшая тестирование функция привела к фатальному сбою... Но если Вы, как разработчик, воспользуетесь средством Rational PureCoverage, то сможете раз и навсегда забыть о мучительном поиске невыполненного кода в собственной программе.

Pure Coverage собирает статистику о тех участках программы, которые во время тестирования не были выполнены (пройдены). Подобные строки Pure Coverage подсвечивает красным цветом, четко указывая на наличие черных дыр в программе в виде неоттестированного кода, и тем самым давая разработчику хорошую пищу для размышлений. В работе данный инструмент так же прост, как и предыдущие. Вызывать его можно как из Visual Studio, так и независимым приложением, например, из командной строки.

По принципу работы Pure Coverage слегка напоминает Quantify, поскольку также подсчитывает количество вызовов функций. Правда, получаемая статистика не столь исчерпывающая как в Quantify, но для целей проверки отдельных частей на предмет прохождения теста вполне пригодна. На рисунке 13 показана статистическая выкладка, собранная Coverage. Как можно видеть, программа способна предоставить отчет пользователю в двух уровнях детальности: на уровне модулей и на уровне файлов - каждый из них показывает практически одно и то же, но как бы "с разных сторон". Статистика, показанная справа от имени функции, описывает число вызовов, ее статус, а также дополнительную информацию по выполненным линиям в исходном тексте: "Lines Hits" - число строк в процедуре, "Lines Missed" - пропущено при тестировании. Анализ только данного окна статистики позволит и отыскать не оттестированные функции, и перейти к исходному тексту для детального рассмотрения. В целях демонстрации я внес некоторые изменения в диалог OnAppAbout, описанный выше, а для усиления эффекта - блок проверки значения указателя "alex". Как известно, функция malloc возвращает 0 при невозможности выделения блока памяти запрошенного размера. Соответственно, при совпадении условия (нехватка памяти!) на экран выведется диалоговое окно с устрашающим предупреждением об ошибке.

void All::OnAppAbout()
{
        char *alex;
        alex=(char *)malloc(20000);
        if(!alex)MessageBox(0,"ERROR","ERROR",MB_OK);
        CAboutDlg aboutDlg;
        aboutDlg.DoModal();
        free(alex);
}

В результате изменений, внесенных в тело функции, мне пришлось перекомпилировать приложение и вновь воспользоваться тройным входом в диалог About (сообщений о нехватке памяти получено не было).

Последний раз вернемся к 13-й иллюстрации, где точно показано число вызовов и число потерянных строк. Находясь в данном окне, переходим на уровень просмотра исходных текстов ("Source Annotace").

Рисунок 14

На 14 рисунке виден текст функции OnAppAbout, отдельные части которого подсвечиваются разными цветами в зависимости от того, прошла функция "тестирование" или нет. Пункт "Line Coverage" выводит точное число выполнений конкретной строки во время тестирования приложения, а не функции в целом. Для удобства восприятия информации все линии автоматически нумеруются, а цвета подсветки настраиваются пользователем по собственному усмотрению. И еще один подарок от разработчиков: все данные, полученные в результате работы программы можно импортировать либо в Word, либо в Excel.

Вернемся к вопросу о хорошем, добром и вечном, но грустном: ведь на описании продукта Coverage придется закончить наш разговор о средствах тестирования для разработчиков, предоставляемых компанией Rational Software.

Описанные три продукта полностью покрывают весь спектр задач, связанных с разносторонним тестированием программного обеспечения на стадии его разработки и помогают программистам строить более качественное программное обеспечение в реальные сроки, что немаловажно в условиях бурно развивающейся отрасли, каковой являются Информационные Технологии. Очень радует тот момент, что компания Rational постоянно держит "руку на пульсе", улавливая все, даже самые малейшие колебания рынка разработки ПО, предлагая все новые и новые средства решения возникающих проблем.

Дополнительная информация

Средства тестирования Rational (VisualTest, Purify, PureCoverage, Quantify)

Адрес (http//www.interface.ru/rational/rs_test.htm)

Назад | Начало