Инструменты пользователя

Инструменты сайта


методология_devops:понимание_задач_тестирования_и_качества:start

Различия

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

Ссылка на это сравнение

методология_devops:понимание_задач_тестирования_и_качества:start [2025/05/31 21:00] (текущий)
kirill создано
Строка 1: Строка 1:
 +# Понимание задач тестирования и качества
  
 +## Введение в тестирование и качество ПО
 +
 +* **Важность качества ПО:**
 +    * Удовлетворенность пользователей.
 +    * Снижение затрат на исправление ошибок после релиза.
 +    * Улучшение репутации компании.
 +    * Предотвращение критических сбоев и проблем безопасности.
 +* **Определение качества ПО:** Соответствие программного обеспечения требованиям, как функциональным, так и нефункциональным (производительность, надежность, удобство использования, безопасность и т.д.).
 +* **Роль тестирования:** Процесс оценки качества программного обеспечения с целью обнаружения дефектов (багов, ошибок). Тестирование не гарантирует отсутствие ошибок, но значительно снижает их вероятность.
 +
 +## Задачи тестирования:
 +
 +* **Обнаружение дефектов:** Основная цель тестирования - выявить как можно больше ошибок в программном обеспечении до его релиза.
 +* **Оценка качества:** Предоставление информации о текущем состоянии качества продукта заинтересованным сторонам (разработчикам, менеджерам, заказчикам).
 +* **Предотвращение дефектов:** Анализ найденных дефектов и причин их возникновения для улучшения процесса разработки и предотвращения появления новых ошибок.
 +* **Подтверждение соответствия требованиям:** Убедиться, что разработанное ПО соответствует заявленным функциональным и нефункциональным требованиям.
 +* **Повышение уверенности в продукте:** Предоставление уверенности в том, что продукт работает должным образом и готов к использованию.
 +
 +## Уровни тестирования:
 +
 +* **Модульное тестирование (Unit Testing):** Тестирование отдельных компонентов (модулей, функций, классов) кода разработчиками. Фокус на проверке корректности работы изолированных частей системы.
 +    * **Цель:** Раннее обнаружение ошибок на уровне кода, облегчение рефакторинга.
 +    * **Кто выполняет:** Разработчики.
 +    * **Примеры инструментов:** JUnit, TestNG (Java), pytest, unittest (Python), NUnit (C#).
 +* **Интеграционное тестирование (Integration Testing):** Тестирование взаимодействия между различными модулями или подсистемами. Проверка корректности передачи данных и совместной работы компонентов.
 +    * **Цель:** Проверка интеграции между различными частями системы.
 +    * **Кто выполняет:** Тестировщики (часто с участием разработчиков).
 +    * **Типы:** Тестирование "снизу-вверх", "сверху-вниз", "большого взрыва".
 +* **Системное тестирование (System Testing):** Комплексное тестирование всей интегрированной системы. Проверка соответствия системы требованиям в целом.
 +    * **Цель:** Оценка поведения системы как единого целого.
 +    * **Кто выполняет:** Независимые тестировщики.
 +    * **Типы:** Функциональное, нефункциональное тестирование (производительность, безопасность, удобство использования и т.д.).
 +* **Приемочное тестирование (Acceptance Testing):** Тестирование, проводимое заказчиком или конечными пользователями для определения, соответствует ли система их потребностям и готова ли к эксплуатации.
 +    * **Цель:** Получение подтверждения от заказчика о готовности системы.
 +    * **Кто выполняет:** Заказчики, конечные пользователи.
 +    * **Типы:** User Acceptance Testing (UAT), Business Acceptance Testing (BAT), Operational Acceptance Testing (OAT).
 +
 +## Виды тестирования:
 +
 +* **Функциональное тестирование (Functional Testing):** Проверка того, что программное обеспечение выполняет заявленные функции правильно. Тестирование "черного ящика" (black-box testing) - без знания внутренней структуры системы.
 +* **Нефункциональное тестирование (Non-functional Testing):** Тестирование характеристик качества, не связанных с функциональностью:
 +    * **Тестирование производительности (Performance Testing):** Оценка скорости, стабильности и отзывчивости системы при различных нагрузках.
 +    * **Тестирование безопасности (Security Testing):** Выявление уязвимостей и проверка защищенности системы от несанкционированного доступа.
 +    * **Тестирование удобства использования (Usability Testing):** Оценка того, насколько легко и удобно пользователям взаимодействовать с системой.
 +    * **Тестирование надежности (Reliability Testing):** Оценка способности системы работать без сбоев в течение определенного периода времени.
 +    * **Тестирование восстановления (Recovery Testing):** Проверка способности системы восстанавливаться после сбоев.
 +    * **Тестирование совместимости (Compatibility Testing):** Проверка работы системы в различных окружениях (браузеры, операционные системы, устройства).
 +* **Тестирование "белого ящика" (White-box Testing):** Тестирование, основанное на знании внутренней структуры и кода программы. Проверка логики, путей выполнения, условий.
 +* **Тестирование "серого ящика" (Gray-box Testing):** Комбинация подходов "черного" и "белого" ящиков. Частичное знание внутренней структуры системы.
 +* **Регрессионное тестирование (Regression Testing):** Повторное тестирование ранее протестированных частей системы после внесения изменений (исправления ошибок, добавления новых функций) для убеждения, что изменения не привели к новым дефектам или не нарушили существующую функциональность.
 +* **Дымовое тестирование (Smoke Testing):** Быстрая проверка основных функций системы для определения ее стабильности перед более глубоким тестированием.
 +* **Исследовательское тестирование (Exploratory Testing):** Одновременное изучение системы, разработка тестов и их выполнение. Гибкий подход, ориентированный на обнаружение неожиданных проблем.
 +
 +## Качество программного обеспечения:
 +
 +* **Атрибуты качества (ISO 25010):**
 +    * **Функциональная пригодность (Functional suitability):** Полнота, корректность, соответствие.
 +    * **Производительность (Performance efficiency):** Время реакции, использование ресурсов, пропускная способность.
 +    * **Совместимость (Compatibility):** Совместное существование, интероперабельность.
 +    * **Удобство использования (Usability):** Понятность, обучаемость, работоспособность, привлекательность, соответствие руководствам.
 +    * **Надежность (Reliability):** Зрелость, отказоустойчивость, восстанавливаемость.
 +    * **Безопасность (Security):** Конфиденциальность, целостность, подотчетность, подлинность, неотказуемость.
 +    * **Сопровождаемость (Maintainability):** Модульность, повторное использование, анализируемость, изменяемость, тестируемость.
 +    * **Переносимость (Portability):** Адаптируемость, устанавливаемость, заменяемость.
 +* **Обеспечение качества (Quality Assurance - QA):** Процесс, направленный на предотвращение дефектов и обеспечение соответствия процесса разработки стандартам и требованиям. Включает в себя планирование, документирование, определение стандартов и процедур.
 +* **Контроль качества (Quality Control - QC):** Процесс, направленный на обнаружение дефектов в уже разработанном продукте. Включает в себя тестирование, инспектирование, анализ результатов.
 +
 +## Взаимосвязь тестирования и качества:
 +
 +* Тестирование является **основным инструментом контроля качества**.
 +* Результаты тестирования предоставляют **информацию для оценки качества** продукта.
 +* Анализ дефектов, выявленных в процессе тестирования, помогает **улучшить процессы разработки и повысить качество** на ранних этапах.
 +* **Обеспечение качества создает основу** для эффективного тестирования и достижения высокого уровня качества продукта.
 +
 +## Заключение:
 +
 +Понимание задач тестирования и различных аспектов качества программного обеспечения является фундаментальным для разработки успешных и надежных продуктов. Эффективное тестирование на всех уровнях и применение принципов обеспечения качества позволяют снизить риски, повысить удовлетворенность пользователей и достичь бизнес-целей.
методология_devops/понимание_задач_тестирования_и_качества/start.txt · Последнее изменение: 2025/05/31 21:00 — kirill

DokuWiki Appliance - Powered by TurnKey Linux