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

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

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

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

Добавлен: 29.03.2023

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

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

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

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

  1. Циклическое тестирование

Сосредоточено исключительно на валидности конструкции цикла.

Преимущества:

  1. Обнаруживает ошибку в скрытом коде, удаляя лишние строки кода.
  2. Максимальный охват достигается при написании тестового сценария [20.].
  3. Разработчик тщательно обосновывает причины реализации.

Недостатки:

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

2.3 Метод серого ящика

Тестирование по методу серого ящика пытается и в целом успешно сочетает в себе преимущества тестирования как по методу черного, так и по методу белого ящика. Тестирование «серого ящика» использует прямой подход к тестированию «черного ящика», но также использует некоторые ограниченные знания о внутренней работе приложения. Белый ящик + черный ящик = серый ящик, это методика тестирования приложения с ограниченными знаниями о внутренней работе приложения, а также со знанием фундаментальных аспектов системы. Таким образом, тестер может проверить как вывод пользовательского интерфейса, так и процесс, который приводит к выводу этого пользовательского интерфейса. Тестирование по этому методу может быть применено к большинству этапов; однако в основном оно используется в интеграционном тестировании.

Этот метод включает в себя следующие техники:

  1. Тестирование ортогональных массивов

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

  1. Матричное тестирование

В матричном тестировании указывается отчет о состоянии проекта.

  1. Регрессионное тестирование

Если в программное обеспечение вносятся новые изменения, регрессионное тестирование подразумевает выполнение тестовых случаев.

  1. Тестирование шаблонов

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

Преимущества:

1. Данный метод обеспечивает совместное преимущество методов тестирования «черного ящика» и «белого ящика».

2. При тестировании по этому методу специалист может разработать отличные сценарии тестирования.


3. Беспристрастное тестирование.

Недостатки:

1. Тестовое покрытие в данном случае ограничено, так как доступ к исходному коду невозможен.

2. Многие пути программы остаются непроверенными.

3. Контрольные примеры могут быть избыточными.

Сравнение методов тестирования приведено в таблице ниже.

Сравнение методов тестирования по некоторым критериям

Номер

критерия

Метод черного ящика

Метод белого ящика

Метод серого ящика

1

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

Полное знание внутренней работы

Частичное знание внутренней работы

2

Это наименее исчерпывающий и трудоемкий процесс

Потенциально наиболее исчерпывающий и отнимающий много времени

Среднее между критериями для черного и белого ящиков

Продолжение таблицы

Номер

критерия

Метод черного ящика

Метод белого ящика

Метод серого ящика

3

Не подходит для тестирования алгоритмов

Подходит для тестирования алгоритмов (любых)

Не подходит для тестирования алгоритмов

4

Степень точности тестирования низкая

Степень точности тестирования высокая

Степень точности тестирования средняя

5

Выполняется конечными пользователями, а также специалистом по тестированию и разработчиками (приемочное тестирование пользователя)

Выполняется специалистом по тестированию и разработчиками

Выполняется конечными пользователями, а также специалистом по тестированию и разработчиками (приемочное тестирование пользователя)

3. Механизмы отладки и тестирования на конкретных примерах

3.1 Особенности современных сред разработки программ

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


  • Ускоренная настройка. Без графического интерфейса, предоставляемого визуальной интегрированной средой, разработчикам придется тратить время на настройку нескольких инструментов разработки. Благодаря возможностям интегрированной среды разработчики получают один и тот же набор функций в одном месте без необходимости постоянного переключения инструментов.
  • Ускоренные задачи разработки. Более тесная интеграция всех задач разработки повышает производительность труда разработчиков. Например, код может быть проанализирован лексически и синтаксически во время редактирования, если среда обеспечивает мгновенную обратную связь при появлении синтаксических ошибок. Разработчикам не нужно переключаться между приложениями для выполнения задач. Кроме того, инструменты и функции интегрированной среды разработки помогают разработчикам оптимизировать ресурсы, предотвращать ошибки и использовать наиболее рациональные способы решения задач. Кроме того, интегрированные среды разработки улучшают мыслительный процесс, заставляя разработчиков думать о своих действиях с точки зрения всего жизненного цикла разработки, а не как серии отдельных задач.
  • Непрерывное обучение. Поддержка проектов и самообразование при помощи интегрированных сред – еще одно преимущество. Например, разделы справки или помощи в современных средах разработки постоянно обновляются, а также появляются новые образцы кода, шаблоны проектов и т.д. Программисты, которые постоянно учатся и знакомятся с лучшими практиками, с большей вероятностью будут приносить пользу команде и предприятию и повышать производительность.
  • Стандартизация. Интерфейс интегрированной среды стандартизирует процесс разработки, что помогает разработчикам более комфортно работать вместе и быстрее привлекать к совместному сотрудничеству новых специалистов.

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

Некоторые современные интегрированные среды предназначены для определенного языка программирования или набора языков, предоставляя набор функций, который согласуется с особенностями этого языка [11.]. Например, среда Xcode поддерживается только для языков Objective-C и Swift. Однако также существует много так называемых мультиязычных сред, таких как Eclipse (для языков C, C ++, Python, Perl, PHP, Java, Ruby и других), Komodo (Perl, Python, Tcl, PHP, Ruby, Javascript и других) и NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C ++ и других). Поддержка альтернативных языков часто обеспечивается плагинами. Например, Flycheck является расширением проверки синтаксиса для GNU Emacs с поддержкой 39 языков.


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

Как правило, большинство современных интегрированных сред снабжены графическими интерфейсами. При этом среда может быть автономным приложением, а в некоторых случаях она может быть частью существующего и совместимого приложения. Например, язык программирования BASIC можно использовать вместе с приложениями Microsoft Office, и можно написать программу WordBasic в приложении Microsoft Word. Современные интегрированные среды стремятся обеспечить удобную среду программирования для современных языков, таких как Visual Basic, Java, C# и многих других.

Вряд ли есть какое-либо определение, которое четко проводит границу между интегрированными средами и другими более широкими средами разработки программного обеспечения. Поэтому некоторые среды могут содержать компилятор, а некоторые – интерпретатор, в то время как в некоторых случаях интегрированные среды могут использоваться как компиляторы, так и интерпретаторы [7.]. Некоторыми примерами таких сред, которые поддерживают как компилятор, так и интерпретатор, являются Microsoft Visual Basic и Eclipse, в то время как другие, такие как SharpDeveloper и Lazarus, не допускают и того, и другого. В некоторых случаях для упрощения построения графического интерфейса пользователя в среды могут быть интегрированы системы контроля версий и различные другие инструменты.

Многоязычные интегрированные среды, такие как Eclipse, NetBeans, Komodo, Aptana и Geany, поддерживают несколько языков программирования.

Eclipse: поддерживает C, C++, Python, Perl, PHP, Java, Ruby и другие. Этот бесплатный редактор с открытым исходным кодом является моделью для многих сред разработки. Eclipse начинался как среда разработки Java и расширился с помощью плагинов. В настоящее время Eclipse управляется и направляется Консорциумом Eclipse.org.

NetBeans: поддерживает Java, JavaScript, PHP, Python, Ruby, C, C++ и другие языки программирования. Эта среда также бесплатная и с открытым исходным кодом. Все ее действия определены модулями, каждый из которых обеспечивает четко определенную функцию. Поддержка других языков программирования может быть добавлена ​​путем установки дополнительных модулей.


Komodo: поддерживает Perl, Python, Tcl, PHP, Ruby, Javascript и другие. Эта среда предназначена для промышленной разработки и имеет более высокую цену.

Aptana: поддерживает HTML, CSS, JavaScript, AJAX и другие языки программирования за счет использования специализированных плагинов. Эта среда является довольно популярным выбором для разработки веб-приложений.

Geany: поддерживает C, Java, PHP, HTML, Python, Perl, Pascal и многие другие языки программирования. Это настраиваемая среда с большим набором плагинов.

В последние годы облачные интегрированные среды разработки начинают становиться мейнстримом. Возможности этих веб-ориентированных сред быстро растут, и большинству крупных компаний-разработчиков, скорее всего, придется предлагать свою среду, чтобы быть конкурентоспособным. Облачные среды предоставляют разработчикам доступ к своему коду из любой точки мира. Например, Nitrous – это облачная платформа среды разработки, которая поддерживает Ruby, Python, Node.js и другие. Cloud9 поддерживает более 40 языков, включая PHP, Ruby, Python, JavaScript с Node.js и Go. Heroku – еще одна популярная облачная платформа разработки, поддерживающая несколько языков программирования.

Ниже перечислены среды разработки, предназначенные для тех, кто работает в средах Microsoft или Apple:

Visual Studio: поддерживает Visual C++, VB.NET, C#, F# и другие языки программирования. Visual Studio является средой компании Microsoft и предназначена для создания приложений для платформы Microsoft [8.].

MonoDevelop: поддерживает C / C++, Visual Basic, C# и другие языки .NET.

Xcode: поддерживает языки Objective-C и Swift, а также API-интерфейсы Cocoa и Cocoa Touch. Эта среда предназначена только для создания приложений для iOS и Mac и включает в себя симулятор iPhone / iPad и конструктор графического интерфейса пользователя.

Espresso: поддерживает HTML, CSS, XML, JavaScript и PHP. Это инструмент для веб-разработчиков Mac.

Coda: поддерживает PHP, JavaScript, CSS, HTML, AppleScript и API Cacao.

Учитывая цели данной курсовой работы, для дальнейшего рассмотрения был выбран язык программирования Cи как один из наиболее популярных среди современных языков программирования, предназначенных для обучения [9.]. Выбор среды разработки для реализации программного приложения основывается на том, что выбираемая среда должна быть простой в использовании, чтобы позволить сосредоточиться на изучении концепций программирования, а также многофункциональной, для того, чтобы научиться создавать простые программы для решения прикладных задач [10.].

В качестве интегрированной среды разработки для выполнения отладки были выбраны следующие среды: