Файл: Практическая значимость выбранной темы. Разработчикам и компаниям,занимающимся разработкой по, всегда следует стремиться найти все возможные ошибки до того, как программа поступит к заказчику или конечному потребителю. Цель.pdf

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

Категория: Реферат

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

Добавлен: 07.11.2023

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
значительно упрощающих и ускоряющих разработку соответствующих тест-кейсов.
Как правило, модульные тесты используют для тестирования по методу «белого ящика». Модульные тесты в системе управления значительно облегчает работу разработчикам, сопровождающим приложение, а также упрощает контрольное тестирование программы и позволяет сосредоточить внимание на более важных моментах: производительности, масштабируемости приложения, полному соответствию требований заказчика, т.е. тестирование приемлемости — проверка соответствия программы требованиям пользователя. Использование модульных тестов — это хороший показатель профессионализма разработчиков программ.
В свою очередь, система отслеживания ошибок и управления проектом не только накапливает информацию об ошибках, но и хранит историю задач, историю изменения этих задач внутри системы, комментарии к ним и связанные документы.
Такая централизация хранения информации об ошибках и выполненных задач позволяет обеспечить легкий и удобный доступ ко всей важной информации о проекте, всем участникам команды разработки.
Система управления версиями должна соответствовать потребностям разработчика. По данным сервиса GitHub, в 2019 году аудитория сервиса достигла
41 млн. уникальных пользователей, а число компаний официально представленных на сервисе достигло 2.9 млн [34]. GitHub — крупнейший веб-сервис для хостинга IT- проектов и их совместной разработки. Веб-сервис основан на системе контроля версий Git. Данная статистика позволяет утверждать, что на сегодняшний день система контроля версий Git является наиболее распространенным решением для обеспечения контроля версий приложений среди разработчиков и компаний.
2.2 Применение точек остановки и модификация
локальных переменных
В ходе разработки ПО разработчик может допустить ошибки в коде. Ошибки бывают синтаксические и логические. В зависимости от выбранного языка программирования, синтаксические ошибки могут быть выявлены на этапе компиляции или интерпретации исходного кода программы. В данной работе мы рассматриваем язык JavaScript. JavaScript является интерпретируемым языком программирования, поэтому все синтаксические ошибки могут быть выявлены только непосредственно в момент запуска программы, когда интерпретатор
получает исходный код программы и может произвести анализ и поиск ошибок.
К синтаксическим ошибкам относятся ошибки в написании конструкций языка программирования, неверной записью идентификаторов и иными неверными действиями программиста, которые нарушают строгие правила написания исходного кода на выбранном языке программирования. Такие ошибки препятствуют исполнению программы или делают его невозможным к запуску.
Следует постоянно обращать внимание на различные сообщения и предупреждения, выдаваемые интерпретатором при попытке запуске программы.
Это может помочь обнаружить найти ошибку в тексте кода. Также существуют среды разработки приложений на языке JavaScript. Например, Microsoft Visual Studio
Code
[1]
или JetBrains WebStorm
[2]
. Данные программы являются комплексными решениями, помогающими разработчику в написании программ. Они включают в себя редактор исходного кода, обеспечивают статический анализ исходного кода создаваемого приложения, предоставляют систему отладки, подсветку и выделение цветом конструкций языка в исходном коде программы и многие другие полезные для разработчиков функции. Для облегчения процесса написания кода
Visual Studio Code и WebStorm имеют встроенный упрощенный компилятор языка
JavaScript, который используется для статического анализа написанного кода и предупреждения синтаксических ошибок на этапе написания программы. Таким образом, разработчику значительно проще найти синтаксические ошибки еще на этапе написания программы.
В рамках данной работы мы рассмотрим среду разработки WebStorm. В отличии от
Visual Studio Code, большая часть функционала WebStorm присутствует сразу после инсталляции и не требует дополнительной установки. Поэтому приведенный ниже текст одинаково подойдет не зависимо от индивидуальных настроек в программе.
Помимо синтаксических ошибок, разработчик может допустить логически ошибки.
В этом случае исходный код программы является технически корректным, но при этом реализация алгоритма будет некорректной. Данные ошибки возможно обнаружить только во время выполнения контрольных примеров. Пример такой ошибки, когда вместо символа "<" ошибочно введен символ "<=" в условии выхода из цикла или логическом операторе. Если вдруг исходный алгоритм реализуется неправильно, то результаты будут выдаваться неверные или программой будут выполняться неверные действия. Поэтому и обнаруживаются подобные ошибки лишь на этапе отладки.


WebStorm предоставляет разработчикам очень хорошее средство поиска и исправления ошибок в программе – отладчик. Отладчик позволяет наблюдать значения переменных, производить трассировку приложения, а также контролировать выводимые программой данные.
Из всех инструментов встроенного отладчика наиболее часто используются точки останова - BreakPoint. После установки точки приложение будет работать до тех пор, пока не достигнет ее, после чего работа программы будет остановлена и управление переходит к отладчику WebStorm. Точки остановки удобнее всего ставить и снимать путем нажатия левой кнопки мыши слева от нужной строки кода, либо другими способами согласно документации.
После остановки работы программы анализируются значения локальных переменных процедуры, в точке прерывания работы программы. Кроме этого,
необходимо изучить стек вызовов, производимых до вызова данной процедуры.
Если потребуется, то сразу можно изменить значение переменных.
Однозначной рекомендации, где именно устанавливать точку остановки нет. Они предназначаются лишь для того, чтобы облегчить изучение работы программного кода и выявления ошибок не заметных при визуальном осмотре исходного кода.
Точки остановки позволяют отследить, как именно исполняется написанный код,
что значительно упрощает поиск ошибок и иногда позволяет понять, как можно оптимизировать программный код, чтобы он занимал меньше ресурсов системы, на которой исполняется.
В качестве примера можно представить листинг, в котором значению переменной присваивается значение равное единице, а затем два раза будем прибавлять единицу, после этого прибавим 123, а потом еще раз дважды добавим единицу.
Результат будет представлен в виде десятичного и шестнадцатеричного значения,
т.е. должно получиться 128 и 80. При этом в программном коде будет допущена ошибка.
let a = 1;
let b = 123;
a += 1;
a += 1;
a += b;
a = 1;
a += 1;
console.log(a);
console.log(a.toString(16));
После запуска данной программы, в журнале исполнения мы увидим значения 2, и
2. Это совсем иные результаты. Поскольку была допущена ошибка в операторе во время выполнения процедуры увеличения переменной “a” на единицу. Для того чтобы быстро выяснить, где же допущена ошибка установим точку остановки на третьей строке и запустим программу:
Рисунок 1

На рисунке 1 видно, что исполнение программы приостановилось на строке 3.
Остановка происходит до исполнения инструкций на строке, поэтому в окне
Variables видно текущее значение переменных. На данном этапе все работает как задумано, поэтому используем кнопку Step over F8 и продолжаем выполнение программы. Нажатие данной кнопки исполнит программу ровно на одну строку и снова приостановит выполнение программы. После того как программа достигнет строки 7, можно увидеть, что значение переменной “а” равно 1, хотя ожидается что значение будет равно 127.
Уже сейчас можно понять, что допущена ошибка в операторе присваивания значений переменной на строке 6. Но мы пока не будем изменять исходный код и попробуем воспользоваться инструментом Evaluate expression Alt + F8. Данный инструмент позволяет выполнить любое выражение и как бы встроить его в программу на ту точку, где сейчас остановлено выполнение программы. Важно понимать, что данное действие несет временный характер и не сохраняется после завершения процесса отладки. Мы попробуем остановить исполнение программы на строке 8, вручную установить значение переменной на ожидаемое значение и посмотрим каким будет результат исполнения программы. Интерфейс Evaluate expression представлен на рисунке 2.


Рисунок 2
Теперь выполним программу до конца и посмотрим на результат исполнения. В
результате исполнения в журнал были выведены ожидаемые значения 128 и 80.
Это позволяет нам убедиться, что мы успешно изменили значение переменной “а” с использованием инструмента Evaluate expression.
Теперь мы можем исправить оператор присвоения на строке 6 с ошибочного на верный и еще раз запустить программу, чтобы убедиться в корректности исполнения программы.
Данный простой пример программы наглядно показал, насколько полезен инструмент отладки для поиска логических ошибок.
2.3 Пошаговая трассировка приложения
В первой главе исследования мы выявили, что трассировка является одним из способов отладки. Рассмотрим этот способ на практике.
Сущность трассировки заключается в пошаговой прогонке программного кода. В
предыдущем параграфе мы уже коснулись инструмента пошаговой трассировки,
когда использовали команду Step over F8. При выполнении трассировки можно использовать команды, представленные в таблице 1.
Наименование команды
Горячая клавиша Действие отладчика
«Step Into»
«F7»
отладчик выполнит код текущей строчки кода и остановится на следующей. Если в данной строке происходит вызов функции, то следующей строкой будет первая строка вызываемой процедуры.
«Step Over»
«F8»
аналогично «Step Into», но вход в тело вызываемой функции не происходит.

«Smart step into»
«Shift+F7»
Используется, когда на строке присутствует несколько вызовов функций. Он позволяет выбирать в какую именно функцию мы хотим зайти отладчиком.
“Force step into”
“Shift+Alt+F7”
используется чтобы зайти в код функции, даже если обычный вызов Step into в нее не зашел.
“Step out”
“Shift+F8”
выходит из кода вызванной функции,
возвращает инспектор в метод, вызвавший данную функцию.
«Run to Cursor» «Alt+F9»
отладчик будет выполнять код программы до той строки, на которой сейчас находится курсор
“Force run to cursor”
“Ctrl+Alt+F9”
аналогично команде Force step into,
принудительно выполняет команду Run to Cursor.
«Force step over»
«Shift+Alt+F8»
принудительно выполняет команду Step over даже если следующая строка — это вызов метода.
«Drop frame»
по умолчанию нет горячей клавиши позволяет вернуть исполнение программы на предыдущую инструкцию. Полезно если случайно прошли слишком далеко в исполнении программы. Стоит обратить внимание что эта функция только выводит предыдущее состояние,
фактическое состояние программы не меняется.
Таблица 1. Команда трассировки
Вторым по важности инструментом при отладке приложений является окно «Call
Stack». Оно содержит описание всех вызовов до возникновения исключения,
ошибки или прерывания в точке остановки.


Он позволяет быстро переключаться между вызовами и просматривать список локальных переменных для каждого вызова, а также устанавливать точки прерывания на любом вызове. Это позволяет быстро локализовать ошибку при отладке и значительно облегчает работу программисту.
С помощью этого инструмента удобно отслеживать и отыскивать нужные нам вызовы функций или процедур при очень большом коде приложения. Если ошибка эта происходит не всегда, а только при оперировании с определенными данными, в этом случае используется диалог настроек свойств точки остановки. Вызывается он через свойства точки останова в коде приложения [14].
Нужно отметить, что отладчик WebStorm не является профессиональным средством отладки сторонних приложений. Но, тем не менее, он является хорошим инструментом для контроля исполнения программы, поиска логических ошибок,
отслеживания вызовов функций.
В рамках данной главы мы рассмотрели виды существующих инструментов для отслеживания ошибок, получили практический опыт запуска приложения с выполнения теста, нашли ошибку и произвели отладку приложения с использованием инструмента отладки, в среде разработки приложений на языке
JavaScript. Данный практический опыт в полной мере позволяет утверждать о том,
что тестирование и отладка являются важным и неотъемлемым элементом разработки программного обеспечения.
ЗАКЛЮЧЕНИЕ
В большей степени успешность отладки программного продукта зависит от правильной и рациональной организации его тестирования. Во время отладки программы фиксируются и исправляются, как правило, лишь ошибки,
обнаруженные ранее при тестировании продукта. При тестировании не ставится цель доказывать правильность и оптимальность приложения, оно служит для того,
чтобы выявить ошибки и убедиться в том, что программа работает как ожидается в запланированных сценариях взаимодействия. Нет гарантии, что тестирование выявит все ошибки, находящиеся в программе. Отсюда и необходимость проведения тестирования и отладки, в ходе которых необходимо решить две основных задачи. Во-первых, протестировать программу на таком наборе тестов,
который позволит отыскать максимально возможное количество ошибок. При стоит учитывать возрастающую стоимость программы при слишком сложном и длительном тестировании. Во-вторых, необходимо определить:
когда стоит завершить отладку программного продукта;
когда уже достаточно исправлено ошибок;
когда работа программы была опробована во всех возможных ситуациях и появление ошибок сведено к минимуму.
При этом стоит понимать, что все эти критерии индивидуальны для каждого проекта разработки программного продукта, исходя из поставленных требований к качеству и надежности программного продукта.
Тестирование и отладка являются важным и ответственным этапом разработки программного обеспечения. Опираясь на историю тестирования, можно сделать вывод что так было всегда, так, наверное, и будет еще долго. Ошибки встречаются в любых приложениях, и в коммерческих, и в тех продуктах, что лежат в свободном доступе. Текущее развитие сети Интернет, позволяет легко распространять различные улучшения к уже выпущенным программным продуктам. Поэтому чаще всего даже после выпуска ПО конечному потребителю продолжается работа над поиском и устранением ошибок, допущенных при разработке.
Поскольку тестирование и отладка являются важной стадией разработки приложений, необходимо учитывать затраты на это в самом начале планирования.
Необходимо выделять время и ресурсы на отладку каждого элемента создаваемого программного обеспечения. Последние технологические решения в программировании позволяют производить отладку очень эффективно и встраивать в процесс разработки средства, упрощающие отладку. Но даже с учетом этого без стадии тестирования и отладки готового приложения обойтись нельзя. Важным показателем профессиональности и квалифицированности программиста является умение видеть слабые стороны приложения и принимать необходимые решение об их проверке и контроле.
Любая организация вынуждена беспокоиться об ошибках в ее программных продуктах, поскольку они могут принести высокие репутационные и финансовые потери. Более того, плохо написанный и нестабильно работающий код может потребовать значительно больших ресурсов на дальнейшую поддержку и развитие.
Что может негативно сказаться на общем положении компании с учетом того, что в условиях рынка всегда есть конкуренты, которые, в свою очередь, также

развивают свои версии аналогичных продуктов.
Основываясь на вышесказанном, можно утверждать, что качество и стабильность программного обеспечения играет важную роль в успешности бизнеса. Все это должно побуждать производителей к созданию более качественных программ.
В заключении, основываясь на проведенном исследовании и практическом опыте,
можно выделить нижеследующие выводы.
1. Необходимо считать тестирование и отладку важным этапом разработки программ.
2. Существует множество видов тестирования, и все они позволяют найти проблемы и ошибки в разрабатываемом приложении. Поэтому очень важно на этапе планирования сразу определить, какие виды тестирования будут применяться на протяжении всего цикла разработки ПО. Важны тесты как те,
которые убеждаются в работе приложения в ожидаемых сценариях, так и те,
которые стараются сломать его.
3. Тестирование следует проводить как с верными, так и с заведомо неверными данными.
4. Полезно вести протоколы исполнения тестов. Это позволит подробно изучать результаты тестирования в случае необходимости.
Разработчикам стоит внимательно изучить доступные инструменты по отладке исходного кода ПО. Это позволит значительно сократить временные затраты на поиск и устранение, выявленной тестированием, ошибки.
На основании всего вышесказанного можно с уверенностью утверждать, что тестирование и отладка — это важный неотъемлемый этап разработки программного обеспечения. Каждому разработчику следует изучать современные подходы к тестированию и применять их в работе, а компаниям выделять необходимые ресурсы для обеспечения наивысшего качества и стабильности разрабатываемого программного обеспечения.
1   2   3