Типы тестирования программного обеспечения

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

Что такое тип тестирования?

В настоящее время нет общепринятого определения «типа тестирования программного обеспечения». Это не редкость, когда методы, уровни или даже тестовая дизайн техника определяются как тип тестирования. Например, иногда white box тестирование, интеграционное тестирование или даже тестирование граничный значений рассматриваются как типы тестирования.

Необходимо обратиться к официальным источникам, чтобы избежать неоднозначных толкований. Международная квалификационная коллегия по тестированию программного обеспечения (International Software Testing Qualifications Board - ISTQB) - это уважаемая международная организация, которая предлагает стандарты в тестировании программного обеспечения, которые признаны во всем мире.

Согласно определению ISTQB, типы тестирования являются «средством четкого определения цели определенного уровня для программы или проекта». Тестер фокусируется на конкретной цели тестирования во время выполнения тестового случая. В зависимости от его целей существует четыре типа тестирования программного обеспечения:

  • Функциональное тестирование
  • Нефункциональное тестирование
  • Структурное тестирование
  • Изменение связанного тестирования

Конечно, существует множество подтипов тестирования. Вы можете увидеть их на рисунке ниже:

 

software testing types

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

Функциональное тестирование

Функциональное тестирование подтверждает, что каждая функция программного приложения работает в соответствии с требованиями спецификации. Функциональное тестирование показывает «Что делает система». Цель этого тестирования - проверить, является ли система функционально совершенной.

 

В функциональном тестировании необходимо учитывать пять шагов:

 

  • Подготовка тестовых данных на основе функций в спецификации
  • Бизнес-требования являются вкладом в функциональное тестирование
  • Вывод результатов работы на основе функциональных спецификаций;
  • Выполнение тестовых случаев
  • Соблюдайте фактические и ожидаемые результаты.

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

Тестирование на основе требований выполняется в строгом соответствии с установленными требованиями.

Тестирование на основе бизнес-процесса выполняется в соответствии с знаниями, основанными на повседневном использовании системы в бизнесе.

Преимущества функционального тестирования:

  • Функциональное тестирование имитирует фактическое использование системы.
  • Оно выполняется в условиях, близких к клиентским.
  • Легко провести ручное тестирование.

Ограничения функционального тестирования:

  • Существует высокая вероятность избыточного тестирования.
  • Логические ошибки в программном обеспечении могут быть пропущены при обеспечении функционального тестирования.

Легко найти и использовать инструменты для функционального тестирования. Наиболее известными из них являются: Selenium (как веб-приложения, так и настольные приложения), Robotium (приложение для Android), Linux Test Project, JUnit, Sprinter by Hewlett Packard Entreprise (ручное тестирование), Browserstack (как автоматическое, так и ручное тестирование), Usersnap (ручное тестирование).

Нефункциональные типы тестирования

Нефункциональные типы тестирования связаны с нефункциональными требованиями. Нефункциональное тестирование помогает оценить готовность системы в соответствии с различными критериями, которые не охватываются функциональным тестированием. В отличие от функционального тестирования, он показывает «Как хорошо работает система».

Давайте рассмотрим вариации многотипных подтипов нефункционального тестирования.

Тестирование пользовательского интерфейса (User Interface - UI) предназначено для обеспечения соответствия графического пользовательского интерфейса приложения требованиям. Это помогает оценить элементы дизайна, такие как макет, цвета, шрифты, размеры шрифта, метки, текстовые поля, форматирование текста, титры, кнопки, списки, значки, ссылки и контент.

Подходы к тестированию пользовательского интерфейса: руководство, запись и ответ, основанные на модели.

Самые популярные специальные инструменты и рамки для тестирования пользовательского интерфейса: FitNesse, iMacros, Coded UI, Jubula, LoadUI.

Тестирование опыта взаимодействия (User Experience - UX) нацелено на проверку взаимодействия с продуктами и услугами компании. Собственно, UX намного больше, чем визуальный интерфейс вашего продукта. Он содержит:

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

Специальные инструменты и рамки для тестирования UX: Usabilla, Omnigraffle, Visual Web Optimizer, UXPin, Crazy Egg.

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

Инструменты часто используются для тестирования хранилища: HCIbench, Iometer, Diskspd Utility.

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

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

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

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

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

Такие инструменты, как Retina CS Community, OWASP Zed Attack Proxy, Veracode, Google Nogotofail, и SQL Map часто используются для тестирования безопасности.

Тестирование конфигурации выполняется для проверки системы с каждой из поддерживаемых программных и аппаратных конфигураций:

  • Конфигурация OС - Win 7 32 bit/64 bit, Win 8 32 bit/64 bit, Win 7 32 bit/64 bit, Win 8 32 bit/64 bit.
  • Конфигурация базы данных - Oracle, DB2, MySql, MSSQL Server, Sybase.
  • Конфигурация браузера - IE 10, IE 11, Mozilla Firefox, Google Chrome.

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

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

Кросс-браузерное тестирование выполняется для проверки правильной работы приложения или системы в разных конфигурациях браузера: Mozilla Firefox, Google Chrome, Internet Explorer и Opera и т. Д.

В отличие от кросс-браузерного тестирования, кросс-платформенное тестирование нацелено на оценку работы приложения в разных ОС: Windows, iOS / Mac OS, Linux, Android и BlackBerry и т. Д.

Тестирование двоичной портативности позволяет оценить переносимость программного обеспечения, выполнив программное обеспечение на разных платформах и в среде. Он используется для подтверждения спецификации прикладного двоичного интерфейса (Application Binary Interface - ABI).

Основные инструменты, которые часто используются для тестирования всех конфигураций: BrowserStack, CrossBrowserTesting by Smart Bear, Litmus, Browsera, Rational Clearcase by IBM, Ghostlab.

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

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

Тестирование на интернационализацию проверяет правильность содержимого контента на разных языках и местах.

Локализация обычно осуществляется с использованием некоторой комбинации внутренних ресурсов, независимых подрядчиков и полномасштабных услуг компании локализации. Вот некоторые инструменты для обеспечения тестирования локализации – eggPlant, Babylon.NET by Redpin, и smartCAT.

Тестирование производительности (Performance testing) намеревается определить, как система работает с точки зрения быстроты реагирования и стабильности при определенной нагрузке. Виды тестирования производительности: стресс-тестирование (Stress testing), нагрузочное тестирование (Load testing), тестирование стабильности (Stability testing), объемное тестирование (Volume testing), тестирование паралелизма (Concurrency testing), тестирование на масштабируемость (Scalability testing), тестирование на выносливость (Endurance testing) и т. Д.

Стресс-тестирование оценивает поведение системы в пределах ее ожидаемой рабочей нагрузки или выходит за ее пределы.

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

Тестирование на стабильность направлено на то, чтобы проверить, может ли приложение непрерывно работать в пределах или чуть выше допустимого периода.

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

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

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

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

Тестирование Ramp - это испытание на выносливость, которое заключается в непрерывном повышении входного сигнала до тех пор, пока система не сломается.

Apache JMeter, HP LoadRunner, Silk Performer from Micro Focus, WebLOAD, и Gatling часто используются для выполнения различных видов тестирования производительности.

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

TestDisk, Recuva by Piriform, Wise Data Recovery by WiseCleaner и Restoration by Softonic

являются основными специальными инструментами для тестирования восстановления.

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

Тестирование обратной совместимости гарантирует, что новая версия продукта продолжит работу с более старым продуктом.

 Тестирование прямой совместимости обеспечивает подключение к будущей версии продукта.

Для тестирования совместимости могут использоваться бесплатно

Browsershots и MultiBrowser

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

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

Популярные инструменты для тестирования юзабилити: User Zoom, Reflector, Loop11.

Структурное тестирование

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

Основные цели структурного тестирования:

  • Очевидная неадекватность идентификации
  • Функциональное тестирование
  • Чтобы понять, не хватает ли чего в нашем наборе тестов

Методы структурного тестирования:

  • Statement Coverage проверяет, что каждый оператор в программе выполняется хотя бы один раз во время тестирования программы.
  • Path Coverage предназначен для удовлетворения критериев охвата каждого логического пути через программу.
  • Branch Coverage проверяет, имеют ли каждое условие ветвления для программы истинные или ложные значения.
  • Condition Coverage похоже на Branch Coverage. Основное различие заключается в проверке состояния покрытия для условных и не условных ветвей.

Преимущества структурного тестирования:

  • Удаление мертвого кода
  • Существует возможность обнаруживать ошибки на ранней стадии.
  • Это обеспечивает более тщательное тестирование программного обеспечения.
  • Структурное тестирование не является трудоемким процессом.

Недостатки структурного тестирования:

  • Структурное тестирование затратное.
  • Оно требует знания кода.
  • Оно требует глубокого знания инструмента, используемого для тестирования.

Специальные инструменты для структурного тестирования: JBehave, Cucumber, JUnit, Cfix.

Тестирование изменений

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

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

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

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

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

 

test

Инструменты для тестирования, связанные с изменением: Selenium, HP Quick Test Professional, TestComplete, TestDrive, SoapUI.

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