Файл: Отладка и тестирование программ: основные подходы и ограничения (Тестирование безопасности.).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

Процесс тестирования программного обеспечения обеспечивает получение актуальной информации о статусе проекта разработки ПО в разрезе требования/функциональность.

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

  1. Основные понятия тестирования и отладки программного обеспечения

    1. Отладка программного обеспечения

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

Отладка не является одной из разновидностей тестирования, хотя слова «тестирование» и «отладка» зачастую используются как синонимы. На самом деле, под ними подразумеваются совершенно разные виды деятельности:

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

«Тестирование» и «отладка» тесно взаимосвязаны и поэтому обычно рассматриваются как комплексная проверка программного обеспечения.

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

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


По различным оценкам специалистов, из времени разработки программного обеспечения, отладка занимает от 50% до 90% (в зависимости от результатов проведения предыдущих этапов).

Отладку можно разделить на синтаксическую и семантическую.

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

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

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

    1. Тестирование программного обеспечения

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

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

Основным методом обнаружения ошибок в программном обеспечении является его тестирование. Эффективность тестирования – важнейший фактор, определяющий стоимость и длительность разработки больших программных продуктов с заданным качеством. Затраты на тестирование для обнаружения ошибок в программном обеспечении достигают от 30% до 40% от общих затрат на его разработку и в значительной степени определяют его качество.

Цель проверяющего программное обеспечение (тестировщика программного обеспечения) – заставить программное обеспечение работать некорректно.

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


    1. Этапы тестирования программного обеспечения

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

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

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

Процесс тестирования программного обеспечения можно разделить на три этапа:

  1. Проверка в нормальных условиях.

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

  1. Проверка в экстремальных условиях.

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

Типичные примеры — очень большие числа, очень малые числа или отсутствие информации.

  1. Проверка в исключительных ситуациях.

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

Наихудшая ситуация – когда программное обеспечение воспринимает неверные данные как правильные и выдаёт неверный, но правдоподобный результат.

Программное обеспечение должно самостоятельно отвергать любые данные, которые оно не в состоянии обрабатывать верно (так называемые исключения).

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


Различают еще так называемые «Альфа» и «Бета» – тестирования (см. п. 2.3).

    1. Ошибки программного обеспечения

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

Считается, что если программа не выполняет того, что пользователь от нее ожидает, то в ней имеется ошибка.

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

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

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

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

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


Ошибку можно отнести к одному из нижеперечисленных классов:

  1. Системные ошибки.

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

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

  1. Алгоритмические ошибки.

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

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

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

  1. Технологические ошибки.

Технологические ошибки — это ошибки документации и фиксирования программ в памяти ЭВМ. Они составляют 5—10 % от общего числа ошибок, обнаруживаемых при отладке. Большинство технологических ошибок выявляются автоматически формализованными методами (например, транслятором).

  1. Программные ошибки.

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