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

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

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

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

Добавлен: 24.04.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

1. Необходимо тестировать быстро, соблюдая жесткие сроки поставки программных продуктов;

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

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

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

Для достижения поставленной цели необходимо:

1. Изучить понятие и стадии тестирования;

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

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

Изучение второго вопроса – рассмотрение вопросов тестирования и отладки программного обеспечения будет производиться во второй главе курсовой работы. Для этого будут произведены следующие действия: изучена стратегия тестирования; рассмотрены виды тестирования; рассмотрена отладка программного обеспечения.

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


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

1. Понятие и стадии тестирования

1.1 Наращиваемый подход в тестировании

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

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

Как правило, встречаются следующие трудности: большое и сложное приложение; ограниченная осведомленность о приложении или же ее полное отсутствие; неадекватная пользовательская документация; слабые знания о тестировании программного обеспечения; нет доступа к справке или руководству по тестированию программного обеспечения; нереальные сроки завершения тестирования [14].

Для эффективной работы тестер программного обеспечения должен:

1. Знать метод тестирования программного обеспечения;

2. Знать тестируемое приложение;

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

Чтобы уложиться в эти сроки, тестирование приложения целесообразно разделить на восемь последовательных стадий. На первых стадиях путем оценки точности результатов определяется, работает ли приложение в нормальных условиях. На последних стадиях предпринята попытка вывести систему из строя [4].


Сроки могут быть очень короткими, так что возможности пройти через все стадии может не быть. Количество стадий тестирования, которое может провести один специалист, определяется затраченным на тестирование временем исходя из запланированной даты выпуска. После выполнения базового теста, если есть свободные тестеры, стадии можно проходить одновременно [19].

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

Если времени для проведения тестирования достаточно, то целесообразно распланировать задачи тестирования следующим образом [10]:

1. Спроектировать тесты, используя методы, описанные в последующих главах;

2. Создать подходящую для проведения теста среду тестирования;

3. Оценить, приобрести и установить инструменты автоматического тестирования;

4. Написать соответствующую документацию, связанную с тестированием.

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

1.2 Стадии тестирования

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

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

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


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

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

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

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

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

В зависимости от приложения можно выделить несколько источников определения ожидаемых результирующих данных [17]:

Специалист или авторитетное лицо проекта, знающий все о его работе.

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

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

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

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

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


Создание среды тестирования состоит из нескольких этапов [15]:

Установка приложения.

Программирование и установка инструментов для автоматизации процесса тестирования.

Настройка специальных файлов и занесение данных для тестирования.

Создание соответствующих утилит для поддержки связи с приложением.

Приобретение корректного аппаратного обеспечения и оборудования.

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

Третья стадия тестирования представляет собой анализ тенденций. Это не обязательная стадия, которая полезна лишь в процессе выполнения некоторых важных условий. Анализ тенденций необходим в случае поверхностного знакомства с приложением, а также в случае, когда сложно вычислить ожидаемый результат, либо имеется предположение относительно диапазона ожидаемых результатов [2].

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

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

Результатом инвентаризации является таблица контрольных проверок элементов. Если изолировать влияние каждого отдельного элемента из инвентарного списка, то можно узнать, правильно ли обрабатывает его приложение [17].