Тестирование и отладка программ

ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ И СОДЕРЖАНИЮ ПРОГРАММНЫХ ДОКУМЕНТОВ

(ГОСТ 19.106-78)

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

ПД приведены (опустить):

Вид программного документа Содержание программного документа
Спецификация Состав программы и документации на нее
Ведомость держателей подлинников Перечень предприятий, на которых хранят подлинники программных документов
Текст программы Запись программы с необходимыми комментариями
Описание программы Сведения о логической структуре и функционировании программы
Программа и методика испытаний Требования, подлежащие проверке при испытании программы, а также порядок и методы их контроля
Техническое задание Назначение и область применения программы, технические., технико-экономические и специальные требования, предъявляемые к программе, необходимые стадии и сроки разработки, виды испытаний
Пояснительная записка Схема алгоритма, общее описание алгоритма и (или) функционирования программы. а также обоснование принятых технических и технико-экономических решений
Эксплуатационные документы Сведения для обеспечения функционирования и эксплуатации программы

Просто перечислить.

Что относится к технологической документации?

ТЕХНИЧЕСКОЕ ЗАДАНИЕ (ГОСТ 19.201-78) содержит основание для разработки, назначение разработки, требования к программе, требования к

программной документации, технико-экономические показатели, стадии

и этапы разработки, порядок контроля и приемки.

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА (ГОСТ 19.404-79) содержит схемы алгоритмов, подробное описание алгоритма функционирования программы, обоснование принятых технических и экономических решений.

ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ ГОСТ 19.301-79 включает:

1) сведения об области применения тестируемой программы;

2) определенную и достижимую цель испытания;

3) требования:

· к комплектности программной документации,

· характеристикам программы применительно к условиям эксплуатации,

· к информационной и программной совместимости;

4)порядок проведения и

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

Приводятся описания применяемых методов испытаний с указанием

конкретных проверок и результатов этого испытания. Во всех случаях

при применении теста необходимо четко определить конкретные значе-

ния входных данных, ожидаемые выходные и промежуточные результаты.

В приложении к документу об испытаниях программы могут быть

включены тестовые примеры, их контрольные распечатки, аналитические

и другие материалы. Мы включаем это в ПД «Текст программы».

ТЕКСТ ПРОГРАМЫ ГОСТ 19.401-78 сотоит из символических записей на исходном языке с подробными комментариями, которые должны составлять около 30% текста программы. Рекомендуется в комментариях описывать назначение программы,основные особенности алгоритма отдельных участков, особенности ввода-вывода и т.д.

РУКОВОДСТВО ПРОГРАММИСТА (ГОСТ 19.504-79) содержит все сведения, необходимые для сопровождения программы.

РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА (ГОСТ 19.503-79) дополняется сведениями для проверки, обеспечения функционирования и настройки программы на условия конкретного применения с учетом используемых технических и вспомогательных системных программных средств.

К эсплуатационной документации относятся:

ОПИСАНИЕ ПРИМЕНЕНИЯ (ГОСТ 19.502-78) содержит сведения о назначении программы, области применения, применяемых методах, классе решаемых задач, ограничениях для применения, минимальной конфигурации технических средств, описание входных и выходных данных.

ОПИСАНИЕ ПРОГРАММЫ ГОСТ (19.402-78) включает:

- наименование программы,

- язык программирования,

- ПО, необходимое для функционирования программы,

- логическое строение, состоящее из:

1) алгоритмов модулей,

2) используемых методов,

3) структуры программы с описанием функций составных частей (модулей) и связи между ними,

4) связей программы с другими программами.

Оформление блок-схем см. ГОСТ 19.707-90

Здесь содержатся разделы: "Используемые технические средства",

где указаны типы ЭВМ и устройств, необходимых для эксплуатации прог-

раммы, "Входные и выходные данные"(характер, организация, предва-

рительная подготовка (для входных данных), формат способ кодирования

данных.

В РУКОВОДСТВЕ ОПЕРАТОРА (ГОСТ 19.505-79) дается вся необходимая информация для обеспечения процедуры общения (взаимодействия) оператора с ЭВМ в процессе выполнения программы.

Материалы любого программного документа располагаются в следующей последовательности (ГОСТ 19.105-78):

1) Титульная часть (ГОСТ 19.104-78):

- лист утверждения (не входит в общее число листов)

- титульный лист (первый лист документа)

2) Информационная часть:

- аннотация (сведения о назначении документа и краткое изложение его основной части);

- листы содержания.

3) Основная часть:

- текст документа с рисунками и таблицами;

- приложения;

- перечень терминов;

- перечь сокращений;

- перечень рисунков;

- перечень таблиц;

и т.д.

4) Часть регистрации изменений:

- лист регистрации изменений

Остальное изучить самостоятельно на кафедральном сайте. Некоторые требования висят в коридоре на кафедре.

Лента новостей. Сколько стоят ошибки?

В общем случае в программах ошибки могут быть следующих видов:

- системные;

- алгоритмические;

- программные;

- технологические.

СИСТЕМНЫЕ ошибки могут быть вызваны неполной информацией о предметной области, а тfкже о реальных процессах, происходящих в источниках и потребителях информации. Допускаются на этапе проектирования ПО, а именно при системном анализе.

АЛГОРИТМИЧЕСКИЕ(ЛОГИЧЕСКИЕ) ошибки (30%) - ошибки, обусловленные некорректной постановкой задачи, неполным учетом всех условий решения задачи, ошибки связей модулей, просчеты в использовании доступных ресурсов ЗВМ. Эти ошибки очень сложно устраняются.

ПРОГРАММНЫЕ ошибки (30%) - деление на 0, обработка отсутствующих данных, использование индекса за пределами массива, корень квадратный из отрицательного числа и т.д.

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

Всемирно известными примерами таких ошибок являются следующие.

1) Неудача при запуске первого американского спутника к Венере случилась вероятнее всего, из-за ошибки в программе - вместо требуемой в операторе точки была поставлена запятая.

Вот так был записан

DO 50 I = 12,525, а нужно

DO 50 I = 12.525.

2) Потеря связи с космической станцией "Фобос-1" (СССР) произошла из-за ошибочной команды, переданной с Земли на бортовой компьютер.

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

ТЕХНОЛОГИЧЕСКИЕ ошибки(5-10%) - связаны с вводом программы, ее копированием, редактированием и т.д. Ошибки, возникающие при вводе в компьютер неверных данных.

В 1983 г. произошло наводнение в юго-западной части США. Причина заключалась в том, что в компьютер были введены неверные данные о погоде, в результате чего он дал ошибочный сигнал шлюзам, перекрывающим реку Колорадо.

Досточно свежие примеры:

1) Программа виновна в гибели самолета (osp.ru Сводка новостей от 30.06.2000)

Федеральный суд Майами, рассмотревший дело о крушении самолета Boeing 757 авиакомпании American Airlines в Колумбии в 1995 году, вынес частное определение в отношении компании Honeywell Air Transport Systems и производителя программного обеспечения - Jeppesen Sanderson. Во время полета из Майами в Колумбию пилоты ввели в бортовой компьютер некорректный код, а тот выдал неправильную команду, из-за чего лайнер врезался в гору.

Жертвами катастрофы стали 159 человек.

2) Из-за хакера могли погибнуть астронавты

Сенсационное заявление сделала 3 июля 2000 года генеральный инспектор НАСА Roberta Gross в интервью программе "Панорама" телекомпании BBC.

Оказывается, в 1997 году из-за действий некоего хакера под угрозой оказались жизни астронавтов

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

функционировании всей системы связи с космическим кораблем.

К счастью, удалось быстро переключить связь на резервную систему, так что обошлось без серьезных последствий.

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

программ чередуются и перекрывают друг друга.

Тестирование является одним из наиболее устоявшихся способов обеспечения качества разработки программного обеспечения и входит в набор эффективных средств современной системы обеспечения качества программного продукта.

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

Выделяют две стратегии тестирования - структурное тестирование (стратегия "белого ящика") и функциональное (стратегия "черного ящика").

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

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

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

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

Рассмотрим пример простой программы {Программа, вычисляющая выражение y=1/a +sqrt(25-b*b) или выдающая сообщение об ошибке}

program example;

{Программа, вычисляющая выражение y=1/a +sqrt(25-b*b)

или выдающая сообщение об ошибке}

var

y,a,b:real;

begin

writeln('Введите a и b');

readln(a,b);

if(a<>0) and (b*b<=25) then

begin

y:=1/a+sqrt(25-sqr(b));

writeln('Результат: ',y);

end

else

writeln('Некорректные данные!');

end.

При структурном тестировании учитывается логика программы.

Примеры тестов.

1) Для тестирования программы с помощью критерия покрытия операторов в ПРОСТЕЙШЕМ СЛУЧАЕ достаточно проверки программы на следующих тестах:

1) a = 1 b = 4 (b<5)

2) a = -1 b = 6 (b>5)

Видно, что в этих тестах ни разу не будет рассмотрен случай, когда а равно 0.

2) Для тестирования программы с помощью критерия покрытия условий можно использовать следующий набор тестов:

1) а = 1 b = 6

2) a = 0 b = 1

Видно, что в этих тестах ни разу не будет проверено выполнение вычисления, хотя тестовые наборы и удовлетворяют критерию.

3) Для тестирования программы с помощью критерия комбинаторного покрытия условий тестовые наборы данных могут выглядеть, например, следующим образом

1) a = 1 b = 4

2) a = 0 b = 4

3) a = 1 b = 6

5) a = 0 b = 6

При функциональном тестировании логика программы не учитывается, а обращается внимание лишь на входные и выходные данные.

К методам функционального тестирования относится:

1) метод эквивалетного разбиения и

2) анализ граничных значений.

В первом методе выделяются классы эквивалентности, а затем на основе

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

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

y = 1/a +sqrt(25-b*b)

-------------------------------------------------------------------

Входное условие | Классы эквивалентности

|--------------------------------------

| правильные | неправильные

------------------------------------------------------------------

1) а не должно быть равным 0 | a < > 0 | a = 0

2) b должно находиться | |

в диапазоне от -5 до 5 | -5 <= b <= 5 | b < -5, b > 5

При построении тестовых наборов необходимо, чтобы каждый непра-

вильный класс эквивалентности участвовал в тесте хотя бы один раз.

Таким образом, тесты могут быть следующими

1) a = 0 b = 6

2) a = 1 b = -7

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

Например, область корректных значений для переменной b - от -5 до 5.

Следовательно, необходимы тесты, в которых b примет значения -5, 5,

-5.01 и 5.01.

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

Следующие два этапа отладки - локализация ошибки и ее исправление. В этих случаях чаще всего используются:

1) точки прерывания,

2) пошаговое выполнение программы,

3) просмотр значений ряда переменных на различных шагах выполнения программы и т.д..

Для облегчения отладки в состав операционных систем и языковых интегрированных сред включают специальные сервисные программы - отладчики.

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

Можно выполнять программу по шагам, посмотреть на экране значения переменных и массивов, изменить значения переменных.

При отладке большая программа разбивается на части и отлаживаются

последовательно эти части.

Автоматизированное тестирование (АТ).

Существуют три типа тестирования, которые можно автоматизировать:

- функцуиональное, в т.ч. модульное;

- регрессионное, т.е. проверка работоспособности старого функционала и отсутствие ранее исправленных дефектов в новых версиях

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

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

Для инструментов функционального АТ имеет место схема «с чем – что- как». Чтобы робот мог делать то, что нужно, ему надо «объяснить»,

1) с чем работать, т.е. построить репозитарий(библиотеку) с подробным описанием всех используемых в тесте объектов;

2) что конкретно делать – т.е. записать библиотеку функций, методов или элементарных действий с объектами

3) как делать, в какой последовательности, т.е. создать алгоритм(скрипт), содержащий описание тестовых шагов, логики теста и глобальных переменных.

Эту схему можно изобразить в виде треугольника со взаимосвязанными вершинами.

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

Инструменты функционального тестирования.

Mercury QuickTest – имеет удобный и пнятный пользовательский интерфейс для создания тестов без ручной правки.

Mercury WinRunner – имеется возможность ручной работы с кодом, написанным на специальном языке TSL.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: