Виды тестирования

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

Класиификация

  1. По знанию внутренней системы
    • черный ящик
    • серый ящик
    • белый ящик
  2. По объекту тестирования
    • функциональное тестирование
    • тестирование интерфейса пользователя
    • тестирование локализации
    • тестирование скрости и надежности
    • тестирование безопасности
    • тестирование опыта пользователя
    • тестирование совместимости
  3. По субъекту тестирования
  • альфа -тестировщик
  • бета - тестировщик
  1. По времени проведения тестирования
  • до передачи пользователю - альфа - тестирование
  • тест - приемка (дымовое тестирование, санитарное)
  • регрессионное тестирование
  • тест - сдачи
  1. По критерию позитивности сценариев
  • позитивное тестирование
  • негативное тестирование
  1. По степени изолированности тестируемых компонентов
  • компонентное тестирование
  • интеграционное тестирование
  • системное тестирование
  1. По степени автоматизированности тестирования
  • ручное тестирование
  • автоматизированное тестирование
  • смешанное/полуавтоматизированное тестирование
  1. По степени подгот овки к тестировани.
  • тестирование документации
  • эд хок - тестирование

Более детально рассмотрю наиболее часто используемые виды тестирования.

Smoke test (дымовое тестирование):

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

Преимущества дымового тестирования.

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

*Основополагающим принципом этого процесса является простая идея билдования и прогонки дымовых тестов ЕЖЕДНЕВНО.

...наряду с дымовым тестированием стоит санитарное тестирование

Санитарное тестирование:

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

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

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

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

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

В зависимости от цели, функциональное тестирование может проводиться:

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

  • На основе бизнес-процессов, которые должно обеспечить приложение. В этом случае, нас интересует не так работоспособность отдельных функций ПО, как корректность выполняемых операций, с точки зрения сценариев использования системы. Таким образом, тестирование в данном случае будет основываться на вариантах использования системы (usecases).

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

Все виды тестирования производительности:

  • нагрузочное тестирование (Performance and Load Testing) - это автоматизированное тестирование, имитирующее работу определенного количества бизнес пользователей на каком-либо общем (разделяемом ими) ресурсе.

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

  • тестирование стабильности или надежности (Stability / Reliability Testing)
    Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Время выполнения операций может играть в данном виде тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек памяти, перезапусков серверов под нагрузкой и другие аспекты влияющие именно на стабильность работы.

  • объемное тестирование (Volume Testing)
    Задачей объемного тестирования является получение оценки производительности при увеличении объемов данных в базе данных приложения, при этом происходит:
    - измерение времени выполнения выбранных операций при определенных интенсивностях выполнения этих операций
    - может производиться определение количества пользователей, одновременно работающих с приложением.

Тестирование установки (Installation testing)
Hаправленно на проверку успешной инсталляции и настройки, а также обновления или удаления программного обеспечения.

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

Тестирование на отказ и восстановление (Failover and Recovery Testing)
Тестирование на отказ и восстановление (Failover and Recovery Testing) проверяет тестируемый продукт с точки зрения способности противостоять и успешно восстанавливаться после возможных сбоев, возникших в связи с ошибками программного обеспечения, отказами оборудования или проблемами связи (например, отказ сети). Целью данного вида тестирования является проверка систем восстановления (или дублирующих основной функционал систем), которые, в случае возникновения сбоев, обеспечат сохранность и целостность данных тестируемого продукта.

Тестирование на отказ и восстановление очень важно для систем, работающих по принципу “24x7”. Если Вы создаете продукт, который будет работать, например в интернете, то без проведения данного вида тестирования Вам просто не обойтись. Т.к. каждая минута простоя или потеря данных в случае отказа оборудования, может стоить вам денег, потери клиентов и репутации на рынке.

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

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

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