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

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

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

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

Добавлен: 14.06.2023

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

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

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

Рисунок 1 – Работа с тестовым проектом с использованием JUnit в IDE IntellijIdea

При подключения возможностей проведения модульного тестирования в разрабатываемое ПО [6]:

— тесты строятся не только для очевидных методов взаимодействия с системой;

— ошибки идентифицируются непосредственно в процессе разработки класса или метода;

— наибольшим приоритетом являются тесты, ориентированные на положительные сценарий взаимодействия с системой;

— разработчик вынужден тратить большее количество времени на анализ альтернативных сценариев поведения пользователя, в силу того, что они являются основным источником ошибок, которые могут быть выявлены лишь на поздних стадиях реализации ПО;

— разработчику необходимо имплементировать четко сфокусированные на своих обязанностях фрагменты программного кода, по причине сложности тестирования хаотичного и не структурированного кода;

— уменьшается возможное число новых ошибок в случае имплементации новых функциональностей;

— устаревшие тесты необходимо регулярно убирать;

— некорректное завершение модульного теста позволяет информировать о нарушении технических заданных требований от заказчика;

— каждое техническое требование должно иметь конкретный модульный тест;

— обеспечение работоспособного кода с минимальными затратами.

Библиотека JUnit 4 позволяет организовать целостную поддержку набора аннотаций, путем обеспечения улучшений в настройке и конфигурации тестов, расширенной поддержки классовых аннотаций для запуска тестов, а также ряд методов для выполнения сравнений массивов. JUnit на практике является наиболее популярным средством тестирования ПО, написанного на базе использования языка программирования Java. Это обусловило тот факт, что практически каждая среда разработки для языка Java поддерживает библиотеку JUnit. Это позволяет исключить необходимость установки дополнительных плагинов [20].

Язык Groovy. Разработан для платформы Java в качестве альтернативы с поддержкой возможностей Ruby, Python и Smalltalk.

Groovy имплементирует синтаксис, который во многом схож с языком Java, поддерживает динамическую компиляцию в JVM байт-код, позволяет напрямую работать со сторонним Java кодом и различными библиотеками данного языка. Groovy поддерживается в практически любом Java проекте в качестве скриптового языка. Данный язык реализует парадигму объектно-ориентированного программирования (ООП). Все имеющиеся примитивные типы данных автоматически упаковываются в соответствующие объекты.


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

Пример работы с тестовым проектом в языке Groovy с использованием Groove.Test.Suite в IDE Eclipse приведен на рис.2.

Рисунок 2 – Работа с тестовым проектом в языке Groovy с использованием Groove.Test.Suite в IDE Eclipse

Принципиальные отличия Groovy от Java [19,20]:

— Поддержка как статической, так и динамической типизации.

— Интеграция синтаксиса обработки различных коллекций: ассоциативных массивов, массивов, а также регулярных выражений.

— Поддержка замыканий различных уровней.

— Перегрузка выполняемых операций.

В связке с Groovy часто применяется Spock Framework, для обеспечения возможностей комплексного тестирования десктопных программных продуктов и различных веб-приложений. Чаще всего для задач тестирования использут такие методы [14]:

  • setup() — выполняется перед каждым тестовым сценарием;
  • cleanup() — выполняется после каждого тестового сценария;
  • setupSpec() — выполняется только до первого сценария в спецификации;
  • cleanupSpec() — выполняется только после последнего сценария в спецификации.

Язык C#. Данный язык программирования реализует компонентно-ориентированный подход в программировании приложений, что позволяет снизить машинно-архитектурную зависимость полученного кода, благодаря чему достигается высокая степень переносимости и повторного использования кода. Преимущества языка: включает расширенную и гибкую поддержку событийно-ориентированного программирования, эффективно интегрируется с существующими продуктами от Microsoft. Главными недостатками языка является довольно сложный синтаксис и не высокая, в сравнении с С++, производительность [5].

Для среды MS Visual Studio существует различное количество фреймворков и библиотек для тестирования программных приложения, как десктопных, так и имеющих веб-архитектуру. К наиболее часто используемым на практике относятся MS Unit Testing Framework, Selenium Webdriver и NUnit.

NUnit — открытая среда модульного-тестирования ПО для платформ семейства .NET. В прошлом ее портировали с библиотеки JUnit. Первые версии NUnit были написаны на языке программирования J#, однако в дальнейшем программный код был переписан под язык C# с поддержкой атрибутов.

Существуют наборы расширений пакета NUnit, большая часть из которых являются проектами с открытым исходным кодом. NUnit.Forms обеспечивает NUnit набором средств тестирования имеющихся элементов пользовательского интерфейса, выполненного на базе Windows Forms. NUnit.ASP предназначено для выполнения аналогичных действий над элементами интерфейса в ASP.NET [10].


Пример работа с тестовым проектом на С# с использованием NUnit приведен на рис.3.

Рисунок 3 – Работа с тестовым проектом на С# с использованием NUnit

Достоинства NUnit:

  1. Экономия времени. Тестирование ПО осуществляется в полностью автоматическом режиме, что является ключевым преимуществом в тех случаях, когда создано значительное колличество unit тестов.
  2. Гарантия правильности написанного программного кода. Измерить уровень правильности и корректности кода можно наиболее полно в тех случаях, когда имеется информация об уровне покрытия кода тестами.
  3. Простота тестирования. С повышением сложности структуры программного модуля возрастает трудоемкость его тестирования, в связи с чем его разбивают на простые составляющие (подмодули). В таком случае сложное тестирование модуля сводится к тривиальному проведению серии простых тестов.
  4. Простой механизм рефакторинга. В случае наличия правильных и корректных тестов можно вносить изменения, осуществляя оперативную проверку правильности прохождения тестов, что существенно сокращает время отладки.

Выводы по главе 1

В рамках данной главы рассмотрены основы тестирования программ. Рассмотрена современная терминология тестирования программных продуктов, проведен анализ существующих видов тестирования ПО. Осуществлен обзор существующих библиотек для обеспечения тестирования программ, написанных на различных языках программирования, таких как Java, С# и Groove. Выделены основные достоинства библиотеки тестирования NUnit.

ГЛАВА 2. ОБЗОР СРЕДСТВ И ТЕХНОЛОГИЙ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

2.1. Анализ функциональных возможностей системы Soap UI и Selenium

SoapUI — это кроссплатформенное клиентское оконное приложение с открытым исходным кодом, лицензией GNU и реализацией на языке Java. Поддерживаются версии для Linux, Windows и MacOS.

Поддерживаются технологии SOAP/WDSL, REST, Web и HTTP, AMF, JDBC, JMS и системы автоматической сборки Maven, Hudson, Bamboo, Ant, JUnit и другие. Возможности интеграции с IDE IntellijIdeam, NetBeans, Eclipse.


SoapUI обладает гибкими возможностями для тестирования веб-сервисов путем отправки им сообщений и получения ответов. 

SoapUI является одним из ведущих функциональных инструментов для тестирования SOA и Web-сервисов. С помощью понятного в использовании графическому пользовательскому интерфейсу, функциям корпоративного сегмента, данное приложение обеспечивает простоту и мобильность создания и выполнения функциональных, регрессионных и нагрузочные тестов разрабатываемого ПО. Таким образом в рамках единой среды SoapUI обеспечивает комплексное покрытие тестов – от SOAP и REST, на базе применения различных веб-служб, до JMS сообщающихся слоев предприятий, баз данных, Rich Internet Applications, и др [13].

При необходимости, возможно напрямую добавить WSDL, разработав образец запроса для всех операций в службе, и создать макет импортированного WSDL. После создания проекта предоставляются функциональные возможности создания и запуска любое количество функциональных / нагрузочных тестов и MockServices. Наличие окна Navigator, отображающего структуру дерева в левой части главного окна, прогресс испытания тестов постоянно находится в поле зрения. Из главного окна приложения можно управлять и контролировать все, что связано с проектом.

Пример работы с тестовым проектом в SoapUI приведен на рис.4.

Рисунок 4 – Работа с тестовым проектом в SoapUI

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

К преимуществам Soap UI относятся [7]:

  1. Поддержка Mock-сервисов.
  2. Использование скриптов с возможностью расширения.
  3. Поддержка функционального, нагрузочного тестирования.
  4. Широкие возможности тестирование безопасности приложений.
  5. Интеграция с JUnit, Maven, Ant, CI (Hudson & Bamboo).
  6. Поддержка плагинов для работы с IDE: NetBeans, Eclipse, IDEA.

Окно работы с тестовым проектом в SoapUI представлено на рис.1.5. Окно состоит из нескольких отдельных фрагментов:

  1. Информация о проектах.
  2. Настройки для рассматриваемого проекта.
  3. Запрос для отправки.
  4. Полученный ответ.

Существенными достоинствами Soap UI являются:

  1. Возможности адаптации WSDL схем для четкого и понятного восприятия.
  2. Поддержка различных заглушек для тестирования.
  3. Гибкие возможности хранения и поддержания тестов и тесткейсов [13].

Система Selenium включает ряд инструментов, имеющих свое прикладное назначение. Перечислим основные из них [3].


1. Selenium Webdriver.

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

Пример работы с тестовым проектом в Selenium IDE приведен на рис.5.

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

Рисунок 5 – Работа с тестовым проектом в Selenium IDE

2. Selenium Remote Control – первая версия данного инструмента. Selenium 1 широко применяется на практике тестирования в режиме сопровождения, в силу того, что позволяет обеспечить ряд возможностей, не до конца реализованных в рамках Selenium 2. В частности, это поддержка ряда устаревших языков программирования (Perl, Fortran) и поддержку ряда браузеров [8].

3. Selenium IDE — это среда разработки, которая применяется ждя создания и выполнения тестовых сценариев. Является удобным в использовании дополнением (плагином) к распространенному бесплатному браузеру Firefox. Плагни поддерживает возможность использования контекстного меню, обеспечивающего пользователю возможность выбора различных элементов интерфейса на открытой странице в веб-браузере, после чего есть возможность выбора команды из списка Selenium с необходимыми параметрами. 

4. Selenium Grid.

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

Selenium Grid обеспечивает возможность запуска тестов в параллельном режиме, что позволяет различным тестам проходить проверку одновременно на нескольких удаленных рабочих станциях или серверах. В связи с этим появляется два значительных преимущества [3].

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