Опубликован: 28.11.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 8:

Документация, сопровождающая процесс верификации и тестирования (отчеты)

Аннотация: Лекция завершает тему документирования процесса тестирования и посвящена документации, создаваемой в процессе тестирования. Рассмотрены отчеты о покрытии программного кода, отчеты о проблемах и трассировочные таблицы. Цель данной лекции: определить основные технологические цепочки, в которых создается и используется тестовая документация, дать представление о роли отчетов о покрытии, отчетов о проблемах и трассировочных таблиц
Ключевые слова: bypassing

13.1. Отчеты о покрытии программного кода

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

Степень покрытия программного кода тестами - важный количественный показатель, позволяющий оценить качество системы тестов, а в некоторых случаях - и качество тестируемой программной системы. Данные о степени покрытия помещаются в отчеты о покрытии, которые генерируются при выполнении тестов инструментальными средствами, поддерживающими процесс тестирования, т.е. по сути, генерируются средой тестирования (Рис 13.1). Формат отчетов о покрытии обычно единый внутри проекта или нескольких проектов и часто зависит от особенностей инструментальных средств тестирования.

В отчете о покрытии в стандартизированной форме указываются участки программного кода тестируемой системы (или ее части), которые не были выполнены во время выполнения тестовых примеров, т.е. не были покрыты тестами. Причины непокрытия анализируются тестировщиками, по результатам анализа составляются отчеты о проблемах и запросы на изменение - документы, где описываются объекты разработки, которые необходимо изменить, и причины этих изменений.

Генерация отчета о покрытии и изменения по результатам его анализа

Рис. 13.1. Генерация отчета о покрытии и изменения по результатам его анализа

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

13.1.2. Возможные формы отчетов о покрытии

Типичный отчет о покрытии представляет собой список структурных элементов покрываемого программного кода (функций или методов), содержащий для каждого структурного элемента следующую информацию:

  • Название функции или метода
  • Тип покрытия (по строкам, по ветвям, MC/DC или иной)
  • Количество покрываемых элементов в функции или методе (строк, ветвей, логических условий)
  • Степень покрытия функции или метода (в процентах или в абсолютном выражении)
  • Список непокрытых элементов (в виде участков непокрытого программного кода с номерами строк)

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

Пример такого отчета о покрытии приведен ниже.

Coverage Report
Generated 10/07/2006 for file Testing_Facilities.cpp
----------------------------------------------------
1) function main_Menu()
Coverage: Instructions
Elements: 25 structured lines of code (SLOCs)
Covered: 22 lines (88%)
Not covered:
   291 default:
   292 return -1;
   293 break;

Coverage: Branches
Elements: 5 branches
Covered: 4 branches (80%)
Not covered (starting and ending lines only):
default:
break;

----------------------------------------------------
2) function item_Help()
Coverage: Instructions
Elements: 180 structured lines of code (SLOCs)
Covered: 180 lines (100%)

Coverage: Branches
Elements: 2 branches
Covered: 2 branches (80%)
----------------------------------------------------
Total functions: 2
Total instructions coverage: 98.5%
Total branches coverage: 86%

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

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

Пример такого отчета приведен ниже:


Зеленым цветом отмечены выполненные в результате тестирования участки метода, красным - не выполненные.

Конкретная форма отчета о покрытии определяется инструментарием и технологическими процессами проекта.

Рассмотрим, например, отчет о структурном покрытии, генерируемый при помощи средства для анализа программного кода CodeTEST компании Metrowerks.

Сбор покрытия производится по определенному уровню покрытия, информация об этом входит в состав заголовка отчета о покрытии. В данном случае програмный код покрывался по MC/DC.

CodeTEST Advanced Coverage Tools
Modified Condition Decision Coverage Report (MCDC), DO-178B Level A
CodeTEST Report Generator 2.2.04
Report generated on Sun Aug 21 14:28:16 2005

IDB File:
    <Path_to_IDB_file>
    42963330-1C0 Thu May 26 21:36:00 2005

Далее выводится информация о проценте покрытия по всем модулям в совокупности (в данном случае, это 33 модуля):

Overall Summary (MCDC): 33 Files
 1405 true-false decisions
      674  48.0%  covered
      494  35.2%  partially covered
      237  16.9%  not covered
 1928 conditions in the decisions
     1068  55.4%  covered
      571  29.6%  partially covered
      289  15.0%  not covered
  278 case branches
      154  55.4%  covered
      124  44.6%  not covered
  581 coverage events
      504  86.7%  covered
       77  13.3%  not covered
Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

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

Вопрос №2

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

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

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

Татьяна Россада
Татьяна Россада
Украина, Киев, КНУ имени Тараса Шевченка, 2009
Алексей Соболев
Алексей Соболев
Россия