December 12, 2023

Роль и задачи QA. Основные артефакты QA

Оглавление

  1. Основные задачи QA
  2. Артефакты
  3. Виды тестирования
  4. Типы багов
  5. Техники тестов

QA (Quality Assurance, Обеспечение Качества) является неотъемлемой частью процесса разработки программного обеспечения и других продуктов. QA необходим по следующим причинам:

1. Гарантия Качества Продукта:

  • Предотвращение Дефектов: QA помогает выявлять и устранять ошибки на ранних этапах разработки, что снижает стоимость их исправления в будущем.
  • Соответствие Стандартам: Обеспечивает, что продукт соответствует заранее определенным стандартам качества и требованиям пользователя.

2. Удовлетворенность Клиента:

  • QA уделяет особое внимание соответствию продукта ожиданиям и потребностям клиентов, что повышает их удовлетворенность и лояльность.

3. Надежность и Безопасность:

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

Основные Задачи QA:

  1. Разработка и Поддержка Тестовых Сценариев:
    • Создание детальных тестовых планов и сценариев для проверки функциональности продукта.
  2. Тестирование Продукта:
    • Выполнение различных видов тестирования, таких как функциональное, регрессионное, нагрузочное и безопасности.
  3. Анализ и Документирование Результатов:
    • Анализ результатов тестов для выявления ошибок и документирование их для команды разработчиков.
  4. Сотрудничество с Разработчиками:
    • Тесное взаимодействие с разработчиками для обеспечения понимания и быстрого устранения найденных проблем.
  5. Управление Рисками:
    • Оценка потенциальных рисков качества продукта и разработка стратегий для их минимизации.
  6. Поддержка Процесса Непрерывного Улучшения:
    • Участие в анализе процессов разработки и предложения улучшений для повышения качества продукта.
  7. Обеспечение Соблюдения Норм и Стандартов:
    • Гарантия того, что продукт соответствует всем необходимым стандартам и нормативным требованиям.
QA играет ключевую роль в обеспечении высокого качества продукта, повышая его конкурентоспособность и доверие клиентов. Это не только про тестирование, но и о проактивном участии в процессе разработки для предотвращения возникновения проблем на всех этапах создания продукта.

Основные артефакты QA (Quality Assurance, Обеспечения Качества) включают в себя следующие документы и материалы:

1. Тестовый План (Test Plan)

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

2. Тестовые Сценарии (Test Cases)

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

3. Тестовые Сценарии (Test Scripts)

  • Автоматизированные или ручные сценарии, используемые для выполнения тестов.

4. Тестовые Данные (Test Data)

  • Данные, используемые в тестировании для проверки функциональности и производительности продукта.

5. Чек-листы (Checklists)

  • Списки для быстрой проверки основных функций и характеристик продукта.

6. Отчеты о Дефектах (Defect Reports)

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

7. Отчеты о Тестировании (Test Reports)

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

8. Матрица Трассируемости Требований (Requirements Traceability Matrix)

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

9. Документы Стратегии и Методологии Тестирования

  • Описывают подходы, методы и инструменты, используемые для тестирования, включая процессы автоматизации тестирования, если таковые используются.
Эти артефакты помогают QA-специалистам систематизировать процесс тестирования, обеспечивать его прозрачность и повышать эффективность обнаружения и устранения дефектов.

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

1. Функциональное Тестирование (Functional Testing)

  • Цель: Проверка функциональности продукта, чтобы убедиться, что он работает в соответствии с требованиями.
  • Примеры: Тестирование пользовательских интерфейсов, API, баз данных, безопасности, клиент-серверных приложений.

2. Регрессионное Тестирование (Regression Testing)

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

3. Нагрузочное Тестирование (Load Testing)

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

4. Тестирование Безопасности (Security Testing)

  • Цель: Выявление уязвимостей в программе, которые могут привести к потере данных, несанкционированному доступу и другим угрозам.
  • Примеры: Проверка на SQL-инъекции, тестирование на проникновение, проверка шифрования.

5. Юзабилити Тестирование (Usability Testing)

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

6. Тестирование Совместимости (Compatibility Testing)

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

7. Интеграционное Тестирование (Integration Testing)

  • Цель: Проверка взаимодействия между различными модулями или сервисами в системе.
  • Примеры: Тестирование API, клиент-серверных взаимодействий.

8. Юнит-Тестирование (Unit Testing)

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

9. Тестирование Производительности (Performance Testing)

  • Цель: Оценка скорости, масштабируемости и стабильности системы под нагрузкой.
  • Примеры: Тестирование отклика при высокой нагрузке, стресс-тестирование.

10. Эксплораторное Тестирование (Exploratory Testing)

  • Цель: Исследование системы, обнаружение неочевидных ошибок.
  • Примеры: Неструктурированное тестирование, при котором тестировщик одновременно изучает систему и проектирует тесты.

Типы Дефектов (Багов):

  1. Функциональные Дефекты:
    • Проблемы, связанные с функциональностью продукта. Пример: неверно работающая кнопка в интерфейсе.
  2. Логические Дефекты:
    • Ошибки в бизнес-логике или алгоритмах. Пример: неправильный расчет в финансовой системе.
  3. Ошибки Интерфейса:
    • Проблемы в визуальном отображении и взаимодействии пользователя с системой. Пример: неправильное расположение элементов на странице.
  4. Ошибки Совместимости:
    • Проблемы, возникающие при использовании продукта на различных платформах или устройствах. Пример: сайт, который не отображается корректно в определенном браузере.
  5. Производительности:
    • Проблемы, связанные с производительностью системы. Пример: долгое время загрузки приложения.
  6. Безопасности:
    • Уязвимости, которые могут привести к несанкционированному доступу или утечке данных. Пример: SQL-инъекция.
  7. Ошибки Установки:
    • Проблемы, возникающие во время установки или настройки программы. Пример: ошибка установщика.
  8. Ошибки Конфигурации:
    • Неправильная настройка параметров системы. Пример: неправильные настройки сервера.
  9. Ошибки Интеграции:
    • Проблемы во взаимодействии между разными компонентами или системами. Пример: сбой в API-взаимодействии.
  10. Ошибки Пользовательского Опыта:
    • Проблемы, затрудняющие использование продукта конечными пользователями. Пример: запутанный пользовательский интерфейс.

Техники тестов

  1. Эквивалентные классы: Эта техника разбивает входные данные на группы, где каждая группа представляет эквивалентный класс входных данных. Затем для каждого класса выполняются тесты.
  2. Граничные значения: Эта техника фокусируется на граничных значениях входных данных, таких как минимальные и максимальные значения, а также значения, близкие к ним. Тестирование на граничных значениях может выявить ошибки, связанные с обработкой крайних ситуаций.
  3. Парные комбинации (Pairwise Testing): Это методика, которая помогает снизить количество тестов, путем тестирования всех возможных комбинаций пар входных данных, таким образом экономя время и ресурсы.
  4. Таблицы принятия решений (Decision Tables): Этот метод используется для моделирования различных вариантов поведения системы на основе разных комбинаций входных условий.
  5. Тестирование состояний (State Transition Testing): Эта техника подходит для систем, имеющих разные состояния, и она направлена на проверку переходов между этими состояниями.
  6. Тестирование методом "Черного ящика" (Black Box Testing): При этом методе тестировщик сосредотачивается на функциональности системы без знания внутренней реализации. Это позволяет тестировать систему с точки зрения пользователя.
  7. Тестирование методом "Белого ящика" (White Box Testing): Здесь тестировщик имеет доступ к внутренней структуре кода и тестирует его на основе логики и структуры программы.
  8. Тестирование с использованием техники "Пути выполнения" (Path Testing): Этот метод фокусируется на проверке всех возможных путей выполнения программы.
  9. По убыванию степени важности тестируемых функций (по уровню функционального тестирования):
  • Дымовое тестирование (smoke) — проверка самой важной, самой ключевой функциональности, неработоспособность которой делает бессмысленной саму идею использования приложения.
  • Тестирование критического пути — проверка функциональности, используемой типичными пользователями в типичной повседневной деятельности.
  • Расширенное тестирование — проверка всей (остальной) функциональности, заявленной в требованиях.