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

  • по целям тестирования
    • функциональное
      • тестирование функциональности, валидация ссылок;
      • тестирование защищенности и безопасности;
      • тестирование данных (достоверность, орфография, типографика).
    • нефункциональное
      • тестирование требований;
      • тестирование прототипа;
      • валидация кода, соблюдение стандартов оформления кода (code style);
      • валидация SEO;
      • тестирование пользовательского интерфейса (верстки);
      • тестирование производительности и нагрузки:
        • нагрузочное тестирование;
        • объемное тестирование;
        • тестирование стабильности и надежности;
        • стрессовое тестирование;
        • тестирование на отказ и восстановление.
      • тестирование удобства использования (навигация, подсказки);
      • тестирование удобства сопровождения (логирование, мониторинг);
      • тестирование доступности;
      • тестирование интернационализации / локализации;
      • тестирование переносимости (совместимости):
        • кроссбраузерное тестирование;
        • кроссплатформенное тестирование;
        • тестирование адаптивности.
      • тестирование установки и лицензирования.
    • связанное с изменениями
      • дымовое;
      • дефект валидация;
      • тестирование новой функциональности;
      • регрессионное.
  • по знанию системы
    • черный ящик;
    • белый ящик;
    • серый ящик.
  • по степени автоматизации
    • ручное;
    • автоматизированное;
    • полуавтоматизированное.
  • по уровням тестирования
    • операционное;
    • приемочное / минимальное приемочное (позитивное);
    • системное;
    • интеграционное;
    • модульное.
  • по хронологии выполнения
    • дымовое (проверка пригодности системы к тестированию);
    • основное (проверка функциональных/нефункциональных требований);
    • повторное (проверка исправления дефектов);
    • регрессионное (проверка того, что новая фича не повлияла на работу других компонент);
    • тестирование сборки;
    • санитарное тестирование.
  • по способу разработки сценария
    • на основе требований;
    • по вариантам использования;
    • на основе модели.
  • по позитивности сценария
    • позитивное;
    • негативное.
  • по исполнению кода
    • статическое (статический анализ кода, рецензирование);
    • динамическое.
  • по формальности проведения
    • по тест-кейсам, чек-листам;
    • исследовательское;
    • специализированное (свободное).
  • по исполнителям тестирования
    • альфа-тестирование (внутреннее - сотрудники компании);
    • бета-тестирование (внешнее - добровольцы, центры сертификации).

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

Тестирование защищенности
проверяет фактическую реакцию защитных механизмов, встроенных в систему, на проникновение:

  • логин/пароль (перебор, лимитирование попыток ввода, блокирование аккаунта после N попыток);
  • раскрытие путей и информации (файл robots.txt, текст сообщений об ошибках базы данных);
  • подмена параметров запроса;
  • подбор системных папок;
  • обратный путь в директории (переход в родительскую папку);
  • инъекции.

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

Тестирование данных
проверяется качество данных на соответствие следующим характеристикам:

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

Тестирование требований
проверка требований на соответствие характеристикам качества продукта и характеристикам качества требований.

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

Валидация кода
проверка на соответствие стандартам и правилам оформления кода:

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

Валидация SEO
проверка на соответствие требованиям по размещению сайта в поисковых системах (наличие заголовков H1-H6, meta тегов, размер картинок).

Тестирование пользовательского интерфейса (верстки)
выполняется путем взаимодействия с системой через интерфейс пользователя (графический, командная строка):

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

Тестирование производительности и нагрузки
процесс тестирования с целью определения производительности программного продукта:

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

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

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

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

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

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

Тестирование переносимости (тестирование окружения)
проверка работоспособности приложения в различных средах (браузеры, операционные системы, их типы, версии и разрядность):

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

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

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

Дымовое тестирование (Smoke, позитивное тестирование критического пути)
тестирование системы для определения корректной работы базовых функций программы в целом, без углубления в детали. При проведении теста определяется пригодность сборки для дальнейшего тестирования.
Цель - как можно быстрее убедиться в работе основного функционала и обозначить наиболее критичные баги. В случае отсутствия дефектов тестирование объявляется пройденным и программа передается для проведения полного цикла тестирования.

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

Тестирование новой функциональности
определение качества поставленной на тестирование новой функциональности, которая ранее не тестировалась. Данный тип тестирования включает в себя:

  • проведение полного теста (АТ) непосредственно новой функциональности;
  • тестирование новой функциональности на соответствие документации;
  • проверка всевозможных взаимодействий ранее реализованной функциональности с новыми модулями и функциями.

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

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

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

Проводится на уровне Smoke, MAT или AT и применяется в случаях:

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

В среде эксплуатации, соглано бизнес-модели, проводятся проверки в следующих случаях:

  • при возникновении ошибок в одной из компонент системы;
  • при возникновении ошибок сети;
  • при откате и восстановлении системы.

ЧТО система должна делать: бизнес-процессы + нефункциональные требования.

Объем и структура тестирования зависит от того кто принимает и на каком этапе разработки.

Система проверяется на соответствие требованиям заказчика (пользователя) или приемочным критериям. На основании полученных результатов, заказчик выносит решение о принятии системы в эксплуатацию или необходимости ее доработки.

Различают следующие виды приемочного тестирования:

  • Минимальное приемочное (позитивное) - Minimal Acceptance Test (MAT, Positive test)
    тестирование системы или ее части только на валидных данных (данных, которые необходимо использовать для корректной работы модуля или функции).
    Для крупных и сложных приложений используется ограниченный набор сценариев и функций.
  • Приемочное - Acceptance Test (AT)
    полное тестирование системы или ее части как на корректных, так и на некорректных данных и сценариях. Направлено на подтверждение того, что приложение может использоваться по назначению при любых условиях.
    Тест на этом уровне покрывает все возможные сценарии тестирования:
    • проверку работоспособности модулей при вводе корректных значений;
    • проверку при вводе некорректных значений;
    • использование форматов данных отличных от тех, которые указаны в требованиях;
    • проверку исключительных ситуаций, сообщений об ошибках;
    • тестирование на различных комбинациях входных параметров;
    • проверку всех классов эквивалентности;
    • тестирование граничных значений интервалов;
    • сценарии не предусмотренные спецификацией и т.д.

КАК система должна работать: бизнес-процессы + технические процессы + нефункциональные требования.

Проводится с точки зрения конечного пользователя по User-story. Максимальное количество модулей (тестирование путей и потоков данных, максимальный сбор информации о работоспособности всех частей приложения как единого целого - длинные Е2Е тесты + окружение + роли).

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

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

Позволяет обнаружить следующие дефекты:

  • неверное использование ресурсов системы;
  • несовместимость с окружением;
  • непредусмотренные сценарии использования;
  • отсутствующая или неверная функциональность;
  • неудобство использования и т.д.

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

Позволяет обнаружить следующие дефекты:

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

Что тестировать:

  • аутентификация и параметры сервиса;
  • корректность отправляемых данных;
  • корректность обработки полученных данных;
  • сервис используется в тех местах, где это нужно и только когда нужно;
  • обработка ошибок:
    • уровень сервиса - ошибки, описанные в документации;
    • уровень протокола - ошибки HTTP 401, 404, 500;
    • уровень сети - обрыв связи, отсутствие ответа.

Направлено на проверку отдельного модуля или части приложения:

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

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

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

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

Белый ящик
тестирование основанное на анализе внутренней структуры компонентов или системы. У тестировщика есть доступ к внутренней структуре и коду приложения.

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

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

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

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

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

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