Файл: ОТЛАДКА И ТЕСТИРОВАНИЕ ПРОГРАММ:ОСНОВНЫЕ ПОДХОДЫ И ОГРАНИЧЕНИЯ.pdf
Добавлен: 30.06.2023
Просмотров: 143
Скачиваний: 3
СОДЕРЖАНИЕ
1. Сущность тестирования и отладки.
1.1 Описание процесса тестирования и его истории.
1.2 Тестирование программного обеспечения и его цели .
1.3 Виды и направления тестирования.
1.4 Сущность и методика отладки программ. Виды ошибок
2. Практика отладки python приложений.
2.1 Два важных инструмента в процессе тестирования.
2.2 Применение точек остановки и модификация локальных переменных
Семантические ошибки
По степени критичности:
Блокирующие (Ошибки, из-за которых дальнейшая работа с системой становится невозможной.)
Важные;
Обычные;
Малозначимые
По приоритету
FIX IN RELEASE
MUST FIX
FIX IF TIME
NEVER FIX
По времени появления:
Постоянно, при каждом запуске;
Иногда («плавающий» тип);
Только на машине у клиента (зависит от локальных настроек у клиента);
По месту и направлению:
Ошибки пользовательского интерфейса;
Системы обработки ошибок;
Ошибки, связанные с граничными условиями (например, некорректная обработка пустой строки или максимального числового значения);
Ошибки вычислений;
Ошибки управления потоками;
Ошибки обработки или интерпретации данных;
При состоянии гонки;
Повышение нагрузки;
Ошибки контроля версии и идентификаторов;
Ошибки тестирования;
Теперь стоит более подробно описать некоторые ошибки которые возникают в работе программного обеспечения которые были приведены выше .
Синтаксические ошибки – это те ошибки, которые возникают в момент написания самой программы, к примеру, неправильное использование конструкции языка программирования.
Предупреждения (warnings) компилятора – к примеру, объявление переменной в коде без её дальнейшего использования, такие ошибки чаще всего никаким критичным образом не влияют на работу системы, но являются своеобразным мусором, от которого нужно избавляться при написании программного кода.
Ошибки времени исполнения
Семантические ошибки – это смысловые ошибки. В качестве примера рассмотрим следующее предложение: “Бешеная инфляция думает зеленые мысли ”. Синтаксических ошибок оно не содержит, ибо прилагательные, существительное, глаголы и наречия находятся в нужным местах, тем не менее, само предложение не имеет смысла. В языке C вы совершаете семантическую ошибку, если соблюдаете все требования языка, но получаете неверный результат. В рассматриваемом примере присутствует такая ошибка:
n3 = n2 * n2;
В данном случае предполагается, что n3 представляет куб числа n ,в то время как код вычитает четверную степень n . [3]
Ошибки времени исполнения - Во время работы приложения могут возникать ошибки, которые называются ошибками времени выполнения (run-time errors) или исключениями (exceptions). В большинстве случаев причинами исключений являются неверные исходные данные .Хорошим примером такой ошибки может служит деление на ноль в приложении.
Ошибки пользовательского интерфейса – в целом в этом собирательном понятии ошибок очень много ,но стоит сначала понять что же такое пользовательский интерфейс а потом перечислить некоторые из возникающих ошибок(перечисление всех ошибок может занять довольно большое время).Понятие пользовательского интерфейса объединяет все аспекты продукта, c которым имеет дело его пользователь . Теперь немного об ошибках:
Избыточная функциональность – это ошибка в которой трудно убедить разработчиков( Брукс (Brooks,1975).Основным критерием оценки фунциональности может быть следующий: если редко используемые функции программы усложняют использованием ее базовых возможностей ,значит , уровень функциональности выходит из под контроля.
Неверно работающая функция – функция программы должна выполнять одно ( как правило , в соотвествии со спецификацией ) ,а делает нечто другое.
Программа делает не то что ожидает от нее пользователь – например если программа должна сортировать список имен ,едва ли кто-то станет ожидать что имена будут сортировать в порядке ASCII.
Длительное отсутсвие активности – выполняя длительное задание ( занимающее более двух секунд), программа должна показывать пользователю , что она работает , а не зациклилась или остановилась .
Неверная или смущающая пользователя информация – любая встреченная ошибка тут же подрывает доверие ко всей программе .Незначительные на первый взгляд ошибки или недостаточно подробные сообщение программы ,из за которых пользователь может сделать неверные обобщения или выводы – обычно наиболее трудная часть работы тестировщиков , поскольку добиться их исправления сложнее всего.
Ошибки вычислений – пример когда программа что-то вычисляет и получает неверный результат.Этому могут быть три причины: неверная логика ,неправильно выполяются арифметические операции,неточные вычисления.
2. Практика отладки python приложений.
2.1 Два важных инструмента в процессе тестирования.
Вне зависимости от величины компании которая ведет разработку приложения,сложности самого приложения или его размера существуют два фундаментальных инструмента которые призваны облегчить процесс тестирования программного обеспечения:
Система управления версиями
Система регистрации и отслеживании ошибок
Указанные выше инструменты занимаются регистрацией всей проектной истории.Хоть многие программисты до сих и пытаются хранить сведения в уме нужно понимать что мало того что информацию по проекту можно забыть ,так еще и нужно чтобы другие участники проекта имели доступ ко всей необходимой информации в любой момент. Во многих случаях документация о требованиях к продуктну и проектная документацией ведется очень плохо на протяжении всей разработки приложения .Именно из за этого чаще всего единственными полезными документами становятся контрольные журналы систем управления версиями и данные из системы отслеживания ошибок.
Процесс мониторинга частоты обнаружения и последующего решения ошибок с использованием специальной системы отслеживания и регистрации ошибок позволяет яснее спланировать дату когда будет окончательна завершена работа на программой.Также стоит заметить что системы управления версиями позволяет иметь представления о том насколько сильно изменен код в проекте, что в свою очередь дает понимание о необходимом дополнительном тестировании.Вышеперечисленные инструменты предоставляют отличную возможно понять насколько эффективны те или иные изменения которые были применены в процессе разработки ПО.
2.2 Применение точек остановки и модификация локальных переменных
Стоит напомнить что в процессе разработки программного обеспечения возникновение ошибок – неизбежно ,так или иначе появляются ли бо синтаксические ,либо семантические ошибки, вычислений.Но к примеру ошибки синтаксического характера ,которые были вызваны неверными действиями программиста во время написания кода фиксируются и подсвечиваются при использовании интегрированной среды разработки (IDE).Не следует игноррировать предупреждения и другие уведомления которые возникают во время написания программы,ведь решение указанных проблем может помочь в процессе поиска проблемы в коде программы.
Интегрированная среда разработки PyCharm дает разработчику прекрасный инструмент который призван помочь ему в процессе поиска ошибок и их исправления – и имя ему отладчик .Отладчик позволяет посмотреть значения переменных определенный момент а так же контроллировать вводимые программой данные
Наиболее часто используемым инструменом отладчика являются точки остановки (BreakPoint).В случае установки точки на определенном участке программного кода приложение будет выполнятся до тех пор пока не дойдет до этой точки ,а как достигнет ее работа приложения будет приостановлена и далее возможно будет управлять процессом выполнения с помощью отладчика.
Из всех инструментов встроенного отладчика наиболее часто используются точки остановки - BreakPoint. После установки точки, приложение будет работать до тех пор, пока не достигнет ее, после чего работа программы будет остановлена и управление переходит к отладчику Delphi. Точки остановки удобнее всего снимать и ставить нажатием горячей клавиши «F5», либо зайти в меню «Debug->Toggle breakpoint», либо другими способами.
Может возникнуть вопрос – где же устанавливать данные точки ? Точный ответ дать невозмжно в связи с тем что они предназначены для того чтобы облегчить процесс отладки программного обеспечения ,если вдруг нет полной увернности в корректной работе кода или если ошибку не удается выявить с помощью простого просмотра кода.Нет никаких сомнений в том что намного проще установить точку остановки и поочередно выполнить необходимые строки программного кода, чем потратить большое количество времени на доскональный и дотошный просмотр кода ,с целью определения места где же программа начала работать не верно.
Для примера ,есть код в котором объявляется несколько переменных со значение 1 и 2 после чего они передаются в качестве аргументов предопределенной фунцкии которая должна взять и сложить значения этих двух аргументов ,после чего вычесть 100 ,после чего прибавить 100,после чего функция должна вернуть результат число 3.В коде намерянно допущена ошибка.
После того как данный код будет выполнен фунций возвратит 400 а не 3 как предполагается.
Для того чтобы понять где именно происходит проблема нам нужно установить точку остановки на строке 5 ,и посмотреть какое значение имеет сейчас переменная test2. Пример можно наблюдать на рисунке ниже.
Далее необходимо последовательно в окне IDE выбрать пункты меню run => debug ‘test’ .Test в этом случае это имя файла.
Далее начнется отладка программы ,все текущие переменные в указанной точке установки можно наблюдать в окне Variables,
Для того чтобы выставить нужно нам значение переменной ,в данном случае test2 выбираем в окне Varibles нужную переменную кликаем правой кнопкой мыши и выбираем пункт Set Value ввести необходимое значение и нажать Enter.Далее можно продолжить выполнение программы и она вернет нам нужные значения.
Так же в интегрированной среде разработки поддерживается пошаговая отладка ,в указанном режиме можно построчно выполнить программу ,двигаясь по ней c помощью кнопок ориентирования по коду.
Заключение
Стоит заметить что успех в процессе отладки программы зависит по большей части от правильной организации процесса тестирования.В момент отладки программного обеспесчения обычно фиксируются и исправляются только те ошибки которые были однаружены в процессе тестирования .Во время тестирования главная цель не в доказании правильности и отпимальности работы приложения ,а в том чтобы показать наличие ошибок и дефектов в разрабатываемой программе.Нет никакой гарании что при проведения тестирования любым набором тестов будут обнаружены все возможные ошибки в продукте , и именно отсюда происходит необходимость проведения тестирования и отладки ,в процессе которой будут решены две основные задачи.Первая задача – произвести тестирование программы на таком наборе тестов при котором станет возможном отыскать максимальное количество багов .Но не стоит забывать о том что стоимость программы возрастает в том случае если тестирование слишком сложное или слишком длинное.Второе это то что важно определить дату конца отладки программы ,определить тот момент когда будет решено достаточно ошибок и также нужно определить тот момент когда работа программного обеспечения будет проверена во всех доступных и возможных ситуациях и появление багов будет сведено к максимально низкой отметке.
Процесс отладки без сомнения самым трудным и отвественным этам в процессе проектирования программного обеспечения.Ошибки появляются в любых программах вне зависимости коммерческая ли у этой программы основа или же она разрабатывается с помощью энтузиастов.Без исключения все уже привыкли к тому что спустя некоторое время после выпуска программы выходят патчи с исправлением всевозможных багов и брешей в безопасности.Поскольку отладка является важнейшей стадией проектирования приложений, то учитывать это нужно уже с самого начала его разработки. Отлаживать каждый, новый созданный класс, метод или процедуру. Невзирая на то, что последние технологические решения в программировании позволяют производить отладку очень эффективно, и каждый программист старается встроить возможные средства отладки в свой код, тем не менее, без стадии отладки готового приложения обойтись нельзя. Каждый профессиональный программист обязан научиться видеть слабые стороны приложения и принимать необходимые решение об их проверке и контроле.