Сделай Сам Свою Работу на 5

Средства отслеживания тестового покрытия





Системы такого типа предназначены для выявления тестового покрытия программы, в том числе участков кода, пропущенных при тестировании.

Важную роль здесь играет понятие линейного участка - фрагмента программы, на протяжении которого нет передачи управления. Если выполняется первый оператор такого участка, то будут выполнены и все остальные. Часто данные системы используют в качестве вспомогательного средства профайлер (см. разд. 5.2.5.3).

Примеры систем:

  • Rational PureCoverage (компании Rational Software Corporation (http://www.rational.com/));
  • Java Test Coverage and Instrumentation Toolkits (компании Glen McCluskey & Associates LLC (http://www.glenmccl.com/)).

Средства динамического построения профиля программы

Построение профиля программы позволяет обнаружить фрагменты кода, исполняемые при запуске программы. Полученная информация к размышлению позволяет выявить в программе те места, которые надо оптимизировать. Работа со средствами динамического построения профиля программы включает три этапа.

  • Компиляция и сборка программы с включенным режимом добавления кода с целью генерации информации для построения профиля.
  • Запуск программы с целью получения информации, необходимой для построения профиля.
  • Запуск профайлера для анализа полученной информации.

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



  • prof (компании Sun Microsystems Inc. (http://www.sun.com/));
  • gnuprof (организации Free Software Foundations (http://www.gnu.org/));
  • ProDelphi (авторская разработка Гельмута Адольфа (Helmuth Adolph) (http://www.prodelphi.de/)).

Системы построения срезов программы

Программный срез состоит из всех операторов программы, которые могут влиять на значение некоторой переменной в некоторой позиции. Срезы были введены для использования:

  • в отладке программ;
  • в тестировании программ;
  • в понимании смысла программ.

Причины возникновения данного направления очевидны. При работе с исходным текстом программы часто необходимо проследить формирование значения некоторой переменной. Это особенно актуально. при отладке и. сопровождении программ. В этом случае получение среза приносит существенное облегчение работы, поскольку резко снижается объем исследуемого кода. Предположим, что во время тестирования мы установили, что некоторая переменная в некоторой позиции содержит неверное значение. Получив соответствующий срез, мы локализуем проблему. В дополнение к сказанному, срезы позволяют разбить большую программу на небольшие компоненты. Это способствует более простому пониманию смысла программы, что очень актуально при сопровождении программных продуктов. Впоследствии часть этих компонентов может быть использована при создании новой программы. Бадгер и Вейзер продемонстрировали [Badger, Weiser 1988], как срезы могут быть использованы для автоматической параллелизации. Однако основной областью применения срезов остается отладка и сопровождение программ.



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

Большинство существующих методов вычисления динамического среза основано на так называемом обратном анализе, когда после исполнения программы записывается ее трассировка, и затем алгоритм отслеживает эту трассировку в обратном направлении для получения зависимостей по данным и по контролю, которые в свою очередь используются для вычисления динамического среза. Существуют методы, вычисляющие динамический срез в процессе исполнения программы и не записывающие трассировку.



Практически все существующие методы вычисления динамического среза рассчитаны на работу с программами, написанными в стиле структурного программирования. Бол и Хорвиц [Ball, Horwitz 1993] предложили подход для вычисления статических срезов для неструктурированных программ, модифицировав понятие зависимости по контролю для данного случая.

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

Отладчики

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

Кроме классических отладчиков существуют еще несколько групп инструментов.

  • Средства динамической отладки распределения памяти — специальный инструментарий, позволяющий анализировать распределение памяти в процессе исполнения программы.
  • Средства отладки многопоточных и параллельных приложений. Это те приложения, которые в некоторой точке могут разветвиться для выполнения параллельной работы, потом попадают в точку ожидания и опять выполняются последовательно. Примеры — средства компании Sun Microsystems Inc. (http://www.sun.com/):
    • thd (Thread Analiser) — нитевой анализатор, который исполняется для того, чтобы отслеживать многопоточные приложения;
    • locklint - анализатор корректности взаимных исключений;
    • looptool - анализатор распараллеливания программ.

Системы отслеживания проблем (ошибок)

Системы отслеживания проблем обычно представляют собой интерфейс к обыкновенной базе данных. Наиболее сложный вопрос при разработке таких систем - отбор информации, которая связана с проблемой (ошибкой). Вот одна из возможных структур такой информации:

  • основная информация об ошибке:
    • номер ошибки;
    • краткое описание проблемы;
    • ключевые слова;
    • приоритет;
    • состояние;
  • место проявления ошибки:
    • программный продукт;
    • версия продукта;
    • компонент;
    • особенность;
  • персоналии:
    • ответственный менеджер;
    • ответственный инженер;
    • инженер, выставивший ошибку;
    • адреса рассылки;
  • анализ ошибки и исправление:
    • подробное описание ошибки;
    • тест, на котором проблема проявляется;
    • предлагаемое исправление;
    • комментарии;
    • информация для пользователей;
  • влияние исправления:
    • интеграция регрессионного теста в тестовую базу данных;
    • влияние исправления на документацию к программному продукту;
    • влияние исправления на другие компоненты.

Примерами систем отслеживания проблем являются:

  • Bugzilla, применяемая для сбора информации об ошибках гипертекстового браузера Mozilla (http://bugzilla.mozilla.org/);
  • Open Source Web Browser (авторская разработка Адама Сигеля (Adam Siegel)

Ввод в действие

Основная группа систем данного процесса - это системы инсталляции. Укажем самые популярные инсталляторы для операционной системы Windows

  • MindVision's Installer VISE - мощнейший профессиональный инсталлятор, используемый даже крупными корпорациями;
  • WISE - известен самым маленьким размером получающегося дистрибутива. Имеет богатый язык скриптов;
  • InstallShleld Professional/Express - старейший продукт, обладающий всеми необходимыми возможностями для создания сколь угодно сложных сценариев установки;
  • CreateInstall - простой, легкий в освоении и компактный инсталлятор.

Сопровождение

Можно выделить следующие основные группы инструментов, используемых при сопровождении программ:

  • связанные с технической стороной сопровождения (трансляторы, отладчики, системы управления версиями текстов и т. п.). Поскольку сопровождение представляет мини-модель жизненного цикла, то инструменты, применяемые во всех процессах жизненного цикла, могут понадобиться и здесь;
  • связанные с анализом и пониманием кода. Это специальные средства реинжиниринга и обратной инженерии. Также сюда мы относим средства восстановления спецификаций, конверторы и другие системы;
  • связанные с организационной стороной сопровождения. Эти средства дают возможность выполнения административных функций (например, ведения базы данных ошибок) сопровождающему программный продукт.

Завершение эксплуатации

Основная группа систем данного процесса - это системы деинсталляции. Такие системы выполняют действие, обратное действию инсталляции, и, как правило, входят в инсталляционный пакет.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.