Файл: Отладка и тестирование программ:Основные подходы и ограничения ( РАЗРАБОТКА ПРОГРАММ ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 258

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

Всего существует два вида ошибок в программном обеспечении:

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

Программные ошибки обладают собственным жизненным циклом, который состоит из следующих этапов:

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

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

  • катастрофическая – высокая вероятность прекращения функционирования системы в случае возникновения ошибки. Может вызвать повреждение не только системы, но и окружающей среды, а также привести к тяжелым травмам и гибели людей;
  • критическая – высокая вероятность прекращения функционирования системы в случае возникновения ошибки. Может вызвать повреждение не только системы, но и окружающей среды, однако, не угрожает здоровью и жизни людей;
  • существенная – наблюдается снижение эффективности функционирования программного продукта в случае возникновения ошибки. Может вызвать прекращение работы программного обеспечения без заметных повреждений в системе. Не угрожает здоровью и жизни людей;
  • несущественная – может наблюдаться снижение эффективности функционирования программного продукта в случае возникновения ошибки. Практически не приводит к возникновению отказа [7].

Для оценки надежности программных продуктов применяются различные методы:

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

Все эти методы обладают общими свойствами:

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

2.3. Отладка программ

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

Стоит отметить, что четко сформулированные методики отладки отсутствуют. В общем случае принято различать три вида ошибок:

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

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

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

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

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

Общая методика отладки программных продуктов, написанных для выполнения в операционных системах семейства Microsoft Windows может быть описана последовательностью шагов:

  • 1 шаг - изучение проявления ошибки;
  • 2 шаг – локализация ошибки;
  • 3 шаг - выяснение причины ошибки;
  • 4 шаг — исправление ошибки;
  • 5 шаг - повторное тестирование.

Процесс отладки может быть существенно упрощен, если при его выполнении следовать основным рекомендациям структурного подхода к программированию:

  • программу наращивать «сверху-вниз», от интерфейса к обрабатываю­щим подпрограммам, тестируя ее по ходу добавления подпрограмм;
  • выводить пользователю вводимые им данные для контроля и прове­рять их на допустимость сразу после ввода;
  • предусматривать вывод основных данных во всех узловых точках алгоритма (ветвлениях, вызовах подпрограмм) [13].

2.4. Выводы

В рамках данной главы рассмотрены виды тестирования, а также способы отладки.

ЗАКЛЮЧЕНИЕ

В рамках выполнения данной работы была раскрыта тема «Отладка и тестирование программ: основные подходы и ограничения».

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

  • основные;
  • вспомогательные;
  • организационные.

К основным процессам разработки относятся:

  • приобретение;
  • поставка;
  • разработка;
  • эксплуатация;
  • сопровождение.

Также в первой главе дается понятие термину «тестирование» - процесс исполнения программного кода с целью обнаружения ошибок. Важно различать процессы тестирования и отладки. Отладка не является частным случаем тестирования. Процесс отладки направлен на установление точной природы известной ошибки, а затем на исправление этой ошибки. Эти два вида деятельности связаны, т.к. результаты тестирования являются исходными данными для отладки.

Вторая глава работы посвящена непосредственно тестированию. Здесь рассмотрены основные виды тестирования:

  • тестирование программы как черного ящика;
  • тестирование программы как белого ящика.

Также уделяется внимание тестированию надежности. Данное понятие определяет следующие свойства программного продукта:

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

Отдельно рассматривается понятие отладки, а также описаны основные способы отладки:

  • ручное тестирование;
  • индукция;
  • дедукция;
  • обратное прослеживание.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ