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

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

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

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

Добавлен: 29.03.2023

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

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

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

Введение

Актуальность исследования. С появлением вычислительной техники во второй половине ХХ века началась эпоха информационных технологий, при которой главной задачей является развитие аппаратных компьютерных средств - это обусловлено необходимостью обработки и хранения данных. Данная эпоха предусматривала появление информационных систем и разработку программного обеспечения.

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

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

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

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

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

Предмет исследования - виды тестирования, основные подходы и ограничения.

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

В соответствии с целью, задачами исследования являются:

  1. Определение понятий “тестирование” и “отладка” и рассмотреть этапы развития;
  2. Исследование видов тестирования;
  3. Изучение методов отладки и виды ошибок;
  4. Анализирование методов тестирования и отладки;
  5. Практическое применение изученного материала на основе информационной системы.

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

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

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

  1. Сущность тестирования и отладки. Методика выявления ошибок

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

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

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

Классическими моделями разработки ПО являются:

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

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


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

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

  1. Спиральная - частный случай итерационной инкрементальной модели, в которой особое внимание уделяется управлению рисками, особенно влияющим на организацию процесса разработки проекта и контрольные точки.
    Отличительной особенностью данной модели является специальное внимание рискам, влияющим на организацию жизненного цикла. Главная задача - как можно быстрее показать пользователям системы работоспособный продукт, тем самым активизируя процесс уточнения и дополнения требований. Основная проблема спирального цикла - определение момента перехода на следующий этап. Для ее решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла.
  2. Гибкая - термин для целого ряда подходов и практик, основанных на ценностях Манифеста гибкой разработки программного обеспечения и 12 принципах, лежащих в его основе.
    Манифест гибкой разработки программного обеспечения - основной документ, содержащий описание ценностей и принципов гибкой разработки программного обеспечения, разработанный в феврале 2001 года на встрече 17 независимых практиков нескольких методик программирования, именующих себя «Agile Allance».

К гибким методологиям, чаще всего, относят экстремальное программирование, DSDM, Scrum, FDD, BDD и др. Применяется как эффективная практика организации труда небольших групп в объединении с управлением ими комбинированным методом.

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


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

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

На протяжении десятилетий развития разработки программного обеспечения к вопросам тестирования и обеспечения качества подходили с разной точки зрения. Можно выделить несколько основных этапов развития тестирования в информационных технологиях [2]:

  • 1950-1960 гг. - процесс тестирования был предельно формализован, отделен от процесса непосредственной разработки программного обеспечения. На тот момент, тестирование представляло собой скорее отладку программ.
    Существовала концепция «исчерпывающего тестирования» - для проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что применение данной концепции невозможно, так как количество возможных путей и входных данных очень велико, и при таком подходе сложно найти проблемы в документации.
  • 1970-е годы - появились две фундаментальные идеи тестирования:
    1) тестирование рассматривалось как процесс доказательства работоспособности программы в определенных условиях;
    2) тестирование рассматривалось как процесс доказательства неработоспособности программы в определенных условиях.
    Противоречия идей тестирования не только не исчезло со временем, но и в настоящее время отмечается многими авторами как две взаимодополняющие цели тестирования.
    В связи с этим, процесс тестирования строился на двух главных задачах: удостовериться, что программа соответствует требованиям; определить условия, при которых программа ведет себя некорректно.
  • 1980-е годы - ключевое изменение места тестирования в разработке программного обеспечения. Вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки, что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвращать их появление.
    На данном этапе также было отмечено бурное развитие и формализация методологий тестирования и появление первых элементарных попыток автоматизировать тестирование.
  • 1990-е годы - смена методики разработки, при которой качество программ проверяется не в конце, а постоянно в процессе разработки. При таком развитии, тестирование становится основной частью любого процесса разработки программы. Но, с другой стороны, требования к квалификации инженера тестирования становятся более высокие: в его ответственность попадает не только функциональное тестирование, но и организация процесса разработки. Поэтому наилучшей кандидатурой становится довольно опытный программист в команде.
  • 2000-е годы - развитие тестирования продолжалось и характеризовалось поиском новых путей, методологий, техник и подходов к обеспечению качества. Особое внимание уделялось при появлении гибких методов разработки и таких подходов, как «разработка под управлением тестированием». Автоматизация тестирования стала восприниматься как обязательная часть большинства проектов, а также стали актуальны идеи о том, что в основание процесса тестирования необходимо ставить не соответствие программы требованиям, а ее способность предоставить конечному пользователю возможность эффективно решать задачи.
  • Современный этап характеризуется активным применением различных гибких методологий, интеграции с процессом разработки, широкого использования автоматизации, а также выбор технологий и инструментальных средств при разработке.
    1. Виды тестирования

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

Тестирование можно квалифицировать:

  • по запуску кода на исполнение:
  1. Статическое тестирование - проводится без запуска программного кода продукта; осуществляется путем анализа программного кода или скомпилированного кода. Анализ может производиться как вручную, так и с помощью специальных инструментальных средств.
  2. Динамическое тестирование - проводится с запуском программного кода продукта.
  • По степени автоматизации
  1. Ручное тестирование - проводится тестировщиком без использования программных средств, для проверки программы или сайта путем моделирования действий пользователя.
  2. Автоматизированное тестирование - включает проведение основных функций (запуск, инициализация, выполнение, анализ и выдача результата) и шаги теста, автоматически посредством специализированных инструментов.
  • По уровню детализации приложения:
  1. Модульное тестирование - проверка на корректность отдельных модулей исходного кода программы, набора из одного или более программных модулей вместе с соответствующими управляющими данными, процедурами использования и обработки. Главная идея - писать тесты для каждой нетривиальной функции или метода.
  2. Интеграционное тестирование - проверка интеграции модулей, их взаимодействие между собой, а также интеграция подсистем в одну общую систему. Для проведения используются компоненты уже проверенные с помощью модульного тестирования, которые группируются в множества.
  3. Системное тестирование - проверка как функциональных, так и не функциональных требований в системе в целом; при этом выявляются дефекты.
  • По степени важности тестируемых функций
  1. Дымовое тестирование - проверка работоспособности основных функций путем поверхностного тестирования наиболее важных модулей приложения на предмет возможности выполнения требуемых задач и наличия критических и блокирующих дефектов.
  2. Тестирование критического пути - проверка функциональности, используемой типичными пользователями в типичной повседневной деятельности.
  3. Расширенное тестирование - проверка всей функциональности, заявленной в требованиях.
  • По принципам работы с приложением
  1. позитивное тестирование - все действия с приложением выполняются строго по инструкции без никаких недопустимых действий, некорректных данных и т.д.
  2. Негативное тестирование - в работе с приложением выполняются некорректные операции и используются данные, потенциально приводящие в ошибкам.
    1. Сущность и методика отладки программ. Виды ошибок