Файл: Отладка и тестирование программ: основные подходы и ограничени.pdf
Добавлен: 29.03.2023
Просмотров: 224
Скачиваний: 2
Введение
Актуальность исследования. С появлением вычислительной техники во второй половине ХХ века началась эпоха информационных технологий, при которой главной задачей является развитие аппаратных компьютерных средств - это обусловлено необходимостью обработки и хранения данных. Данная эпоха предусматривала появление информационных систем и разработку программного обеспечения.
Любой программный продукт, по завершению разработки, должен соответствовать основным показателям качества: функциональность, надёжность, практичность (применимость), эффективность, сопровождаемость и мобильность. В связи с этим, для того, чтобы обеспечить необходимое качество программным продуктам, стало необходимым применение отладки и тестирования программного обеспечения.
Отладка представляет собой процесс, при котором устраняются недостатки разработанного программного продукта. Отладка направлена на установление причины появления ошибок в программе, а зачем - на исправление этих ошибок. При этом, отладка не является разновидностью тестирования, несмотря на то, что они тесно связаны и обычно рассматриваются совместно.
В тоже время, тестирование программного обеспечения - деятельность, направленная на обнаружение ошибок. Шаги процесса задаются тестами, которые определяют: свой набор исходных данных и условий для запуска программы; набор ожидаемых результатов работы программы.
Основным вопросом, при проведении изучения темы курсовой работы, является: какой из методов тестирования программного обеспечения является самым эффективным для выявления ошибок в процессе разработки продукта, а также, какие технологии и инструменты лучше всего использовать в процессе отладки.
Объектом исследования курсовой работы является тестирование и отладка программ.
Предмет исследования - виды тестирования, основные подходы и ограничения.
Цель исследования - изучить процессы отладки и тестирования как составляющую процесса обеспечения качества разработки программного обеспечения, и теоретически обосновать основные положения процесса с помощью практической проверки на основе разработанной информационной системы.
В соответствии с целью, задачами исследования являются:
- Определение понятий “тестирование” и “отладка” и рассмотреть этапы развития;
- Исследование видов тестирования;
- Изучение методов отладки и виды ошибок;
- Анализирование методов тестирования и отладки;
- Практическое применение изученного материала на основе информационной системы.
Структура курсовой работы: работа состоит из введения, трех глав, заключения, библиографии и приложения.
Первая глава посвящена изучению таких понятий, как “тестирование программного обеспечения” и “отладка”, а также анализ этапов их развития в сфере информационных технологий.
Вторая глава посвящена стратегии и анализу методов отладки и тестирования программного обеспечения. В третьей главе рассматривается процесс проведения тестирования и отладки на основе информационной системы.
-
Сущность тестирования и отладки. Методика выявления ошибок
Разработка любого программного продукта начинается с выявления требований к этому продукту, в результате чего необходимо создать документ. В этом документе описываются как функциональные (что должна делать программа), так и нефункциональные (к примеру, на каком оборудовании должна работать программа) требования.
Следующим шагом является выбор модели разработки программного обеспечения, который серьёзно влияет на процесс тестирования, определяя выбор стратегии, расписание, необходимые ресурсы и т.д.
Модель разработки ПО [1]- структура, систематизирующая различные виды проектной деятельности, их взаимодействие и последовательность в процессе разработки ПО. Выбор модели зависит от масштаба и сложности проекта, предметной области, доступных ресурсов и других факторов.
Классическими моделями разработки ПО являются:
- Водопадная (каскадная) - однократное выполнение каждой из фаз проекта, которые следуют друг за другом; процесс разработки выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки.
Следуя каскадной модели, разработчик переходит от одной стадии к другой строго последовательно, тем самым подразумевая, что переход происходит только после полного и успешного завершения предыдущей фазы, и фаз переходов назад либо вперед или перекрытия фаз - не существует.
Методику довольно часто критикуют за недостаточную гибкость и объявление самоцелью формальное управление проектом в ущерб срокам, стоимости и качеству. Но при управлении большими проектами формализация часто являлась очень большой ценностью, так как могла кардинально снизить многие риски проекта и сделать его более прозрачным.
- V-образная - основной принцип работы как у водопадной, но принципиальное отличие заключается в том, как эта информация используется в процессе реализации проекта; при этом, модель направлена на упрощение понимания сложностей, связанных с разработкой систем.
Она используется для определения единой процедуры разработки программных продуктов, аппаратного обеспечения и человеко-машинных интерфейсов. Основной принцип заключается в том, что детализация проекта возрастает при движении слева направо, о - Итерационная инкрементальная - является основой современного подхода к разработке ПО. Данной модели свойственна определенная двойственность: с точки зрения жизненного цикла, модель - итерационная (подразумевает многократное повторение одних и тех же стадий); с точки зрения развития продукта, модель является инкрементальной.
Ключевая особенность: разбиение проекта на относительно небольшие промежутки (итерации), каждый из которых может включать в себя все классические стадии, присущие водопадной и v-образной моделям.
- Спиральная - частный случай итерационной инкрементальной модели, в которой особое внимание уделяется управлению рисками, особенно влияющим на организацию процесса разработки проекта и контрольные точки.
Отличительной особенностью данной модели является специальное внимание рискам, влияющим на организацию жизненного цикла. Главная задача - как можно быстрее показать пользователям системы работоспособный продукт, тем самым активизируя процесс уточнения и дополнения требований. Основная проблема спирального цикла - определение момента перехода на следующий этап. Для ее решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла. - Гибкая - термин для целого ряда подходов и практик, основанных на ценностях Манифеста гибкой разработки программного обеспечения и 12 принципах, лежащих в его основе.
Манифест гибкой разработки программного обеспечения - основной документ, содержащий описание ценностей и принципов гибкой разработки программного обеспечения, разработанный в феврале 2001 года на встрече 17 независимых практиков нескольких методик программирования, именующих себя «Agile Allance».
К гибким методологиям, чаще всего, относят экстремальное программирование, DSDM, Scrum, FDD, BDD и др. Применяется как эффективная практика организации труда небольших групп в объединении с управлением ими комбинированным методом.
В свою очередь, отладка программного средства (ПС) - это деятельность, направленная на обнаружение и исправление ошибок с использованием процессов выполнения его программ. Отладку можно представить в виде трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной ошибки.
Успех отладки в значительной степени предопределяет рациональная организация тестирования. При отладке отыскиваются и устраняются, в основном, те ошибки, наличие которых в ПС устанавливается при тестировании.
-
-
Тестирование и отладка программного обеспечения: этапы развития
-
Тестирование программ зародилось практически одновременно с программированием. Машинное время стоило дорого, поэтому предприятия с повышенными требованиями к надежности программ стали активно разрабатывать методики тестирования.
На протяжении десятилетий развития разработки программного обеспечения к вопросам тестирования и обеспечения качества подходили с разной точки зрения. Можно выделить несколько основных этапов развития тестирования в информационных технологиях [2]:
- 1950-1960 гг. - процесс тестирования был предельно формализован, отделен от процесса непосредственной разработки программного обеспечения. На тот момент, тестирование представляло собой скорее отладку программ.
Существовала концепция «исчерпывающего тестирования» - для проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что применение данной концепции невозможно, так как количество возможных путей и входных данных очень велико, и при таком подходе сложно найти проблемы в документации. - 1970-е годы - появились две фундаментальные идеи тестирования:
1) тестирование рассматривалось как процесс доказательства работоспособности программы в определенных условиях;
2) тестирование рассматривалось как процесс доказательства неработоспособности программы в определенных условиях.
Противоречия идей тестирования не только не исчезло со временем, но и в настоящее время отмечается многими авторами как две взаимодополняющие цели тестирования.
В связи с этим, процесс тестирования строился на двух главных задачах: удостовериться, что программа соответствует требованиям; определить условия, при которых программа ведет себя некорректно. - 1980-е годы - ключевое изменение места тестирования в разработке программного обеспечения. Вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки, что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвращать их появление.
На данном этапе также было отмечено бурное развитие и формализация методологий тестирования и появление первых элементарных попыток автоматизировать тестирование. - 1990-е годы - смена методики разработки, при которой качество программ проверяется не в конце, а постоянно в процессе разработки. При таком развитии, тестирование становится основной частью любого процесса разработки программы. Но, с другой стороны, требования к квалификации инженера тестирования становятся более высокие: в его ответственность попадает не только функциональное тестирование, но и организация процесса разработки. Поэтому наилучшей кандидатурой становится довольно опытный программист в команде.
- 2000-е годы - развитие тестирования продолжалось и характеризовалось поиском новых путей, методологий, техник и подходов к обеспечению качества. Особое внимание уделялось при появлении гибких методов разработки и таких подходов, как «разработка под управлением тестированием». Автоматизация тестирования стала восприниматься как обязательная часть большинства проектов, а также стали актуальны идеи о том, что в основание процесса тестирования необходимо ставить не соответствие программы требованиям, а ее способность предоставить конечному пользователю возможность эффективно решать задачи.
- Современный этап характеризуется активным применением различных гибких методологий, интеграции с процессом разработки, широкого использования автоматизации, а также выбор технологий и инструментальных средств при разработке.
- Виды тестирования
Классификация тестирования позволяет упорядочить знания и значительно ускоряет процессы планирования тестирования и разработки тест-кейсов, а также позволяет оптимизировать трудозатраты.
Тестирование можно квалифицировать:
- по запуску кода на исполнение:
- Статическое тестирование - проводится без запуска программного кода продукта; осуществляется путем анализа программного кода или скомпилированного кода. Анализ может производиться как вручную, так и с помощью специальных инструментальных средств.
- Динамическое тестирование - проводится с запуском программного кода продукта.
- По степени автоматизации
- Ручное тестирование - проводится тестировщиком без использования программных средств, для проверки программы или сайта путем моделирования действий пользователя.
- Автоматизированное тестирование - включает проведение основных функций (запуск, инициализация, выполнение, анализ и выдача результата) и шаги теста, автоматически посредством специализированных инструментов.
- По уровню детализации приложения:
- Модульное тестирование - проверка на корректность отдельных модулей исходного кода программы, набора из одного или более программных модулей вместе с соответствующими управляющими данными, процедурами использования и обработки. Главная идея - писать тесты для каждой нетривиальной функции или метода.
- Интеграционное тестирование - проверка интеграции модулей, их взаимодействие между собой, а также интеграция подсистем в одну общую систему. Для проведения используются компоненты уже проверенные с помощью модульного тестирования, которые группируются в множества.
- Системное тестирование - проверка как функциональных, так и не функциональных требований в системе в целом; при этом выявляются дефекты.
- По степени важности тестируемых функций
- Дымовое тестирование - проверка работоспособности основных функций путем поверхностного тестирования наиболее важных модулей приложения на предмет возможности выполнения требуемых задач и наличия критических и блокирующих дефектов.
- Тестирование критического пути - проверка функциональности, используемой типичными пользователями в типичной повседневной деятельности.
- Расширенное тестирование - проверка всей функциональности, заявленной в требованиях.
- По принципам работы с приложением
- позитивное тестирование - все действия с приложением выполняются строго по инструкции без никаких недопустимых действий, некорректных данных и т.д.
- Негативное тестирование - в работе с приложением выполняются некорректные операции и используются данные, потенциально приводящие в ошибкам.
- Сущность и методика отладки программ. Виды ошибок