December 12, 2023
Роль и задачи QA. Основные артефакты QA
QA (Quality Assurance, Обеспечение Качества) является неотъемлемой частью процесса разработки программного обеспечения и других продуктов. QA необходим по следующим причинам:
1. Гарантия Качества Продукта:
- Предотвращение Дефектов: QA помогает выявлять и устранять ошибки на ранних этапах разработки, что снижает стоимость их исправления в будущем.
- Соответствие Стандартам: Обеспечивает, что продукт соответствует заранее определенным стандартам качества и требованиям пользователя.
2. Удовлетворенность Клиента:
- QA уделяет особое внимание соответствию продукта ожиданиям и потребностям клиентов, что повышает их удовлетворенность и лояльность.
3. Надежность и Безопасность:
- QA проверяет, что продукт надежен и безопасен в использовании, что особенно важно в чувствительных к безопасности отраслях.
Основные Задачи QA:
- Разработка и Поддержка Тестовых Сценариев:
- Тестирование Продукта:
- Выполнение различных видов тестирования, таких как функциональное, регрессионное, нагрузочное и безопасности.
- Анализ и Документирование Результатов:
- Сотрудничество с Разработчиками:
- Тесное взаимодействие с разработчиками для обеспечения понимания и быстрого устранения найденных проблем.
- Управление Рисками:
- Поддержка Процесса Непрерывного Улучшения:
- Обеспечение Соблюдения Норм и Стандартов:
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)
- Цель: Исследование системы, обнаружение неочевидных ошибок.
- Примеры: Неструктурированное тестирование, при котором тестировщик одновременно изучает систему и проектирует тесты.
Типы Дефектов (Багов):
- Функциональные Дефекты:
- Логические Дефекты:
- Ошибки Интерфейса:
- Проблемы в визуальном отображении и взаимодействии пользователя с системой. Пример: неправильное расположение элементов на странице.
- Ошибки Совместимости:
- Проблемы, возникающие при использовании продукта на различных платформах или устройствах. Пример: сайт, который не отображается корректно в определенном браузере.
- Производительности:
- Безопасности:
- Уязвимости, которые могут привести к несанкционированному доступу или утечке данных. Пример: SQL-инъекция.
- Ошибки Установки:
- Ошибки Конфигурации:
- Ошибки Интеграции:
- Проблемы во взаимодействии между разными компонентами или системами. Пример: сбой в API-взаимодействии.
- Ошибки Пользовательского Опыта:
Техники тестов
- Эквивалентные классы: Эта техника разбивает входные данные на группы, где каждая группа представляет эквивалентный класс входных данных. Затем для каждого класса выполняются тесты.
- Граничные значения: Эта техника фокусируется на граничных значениях входных данных, таких как минимальные и максимальные значения, а также значения, близкие к ним. Тестирование на граничных значениях может выявить ошибки, связанные с обработкой крайних ситуаций.
- Парные комбинации (Pairwise Testing): Это методика, которая помогает снизить количество тестов, путем тестирования всех возможных комбинаций пар входных данных, таким образом экономя время и ресурсы.
- Таблицы принятия решений (Decision Tables): Этот метод используется для моделирования различных вариантов поведения системы на основе разных комбинаций входных условий.
- Тестирование состояний (State Transition Testing): Эта техника подходит для систем, имеющих разные состояния, и она направлена на проверку переходов между этими состояниями.
- Тестирование методом "Черного ящика" (Black Box Testing): При этом методе тестировщик сосредотачивается на функциональности системы без знания внутренней реализации. Это позволяет тестировать систему с точки зрения пользователя.
- Тестирование методом "Белого ящика" (White Box Testing): Здесь тестировщик имеет доступ к внутренней структуре кода и тестирует его на основе логики и структуры программы.
- Тестирование с использованием техники "Пути выполнения" (Path Testing): Этот метод фокусируется на проверке всех возможных путей выполнения программы.
- По убыванию степени важности тестируемых функций (по уровню функционального тестирования):
- Дымовое тестирование (smoke) — проверка самой важной, самой ключевой функциональности, неработоспособность которой делает бессмысленной саму идею использования приложения.
- Тестирование критического пути — проверка функциональности, используемой типичными пользователями в типичной повседневной деятельности.
- Расширенное тестирование — проверка всей (остальной) функциональности, заявленной в требованиях.