Шрифт:
Интервал:
Закладка:
— Тестирование производительности — проводится для оценки скорости, стабильности, масштабируемости и ресурсоемкости программного продукта под различными нагрузками. Включает в себя проверку времени отклика, пропускной способности, использования ресурсов и способности системы обрабатывать большое количество одновременных запросов.
— Тестирование безопасности — проводится для выявления уязвимостей, дыр в безопасности и потенциальных угроз для программного продукта. Задачи включают проверки на уязвимость к взлому, SQL — инъекциям, переполнению буфера и другим атакам, а также оценку политик безопасности, механизмов аутентификации и авторизации.
— Тестирование совместимости — проводится с целью убедиться, что программное обеспечение совместимо с различными операционными системами, браузерами, устройствами и другим программным обеспечением. Задачи включают проверку работоспособности продукта и его отображения на различных платформах и устройствах.
— Тестирование конфигурации — это оценка работоспособности программного продукта в различных конфигурациях аппаратного и программного обеспечения, проверка системы на устойчивость к изменениям в конфигурации окружения.
— Тестирование локализации — это проверка адаптации продукта под специфику определенного региона или культурного контекста. Включает в себя перевод текстов, контроль корректировки форматов дат и валюты, культурных особенностей и локальных норм.
— Тестирование доступности — используется с целью убедиться, что программное обеспечение доступно для использования широкому кругу пользователей, включая людей с ограниченными возможностями (например, с нарушениями зрения, слуха). Тестирование включает проверку соответствия стандартам доступности.
— Тестирование юзабилити — это оценка удобства и интуитивности интерфейса пользователя, легкости освоения и использования программного продукта. Задачи включают изучение поведения реальных пользователей при работе с продуктом и выявление потенциальных проблем в интерфейсе.
— Тестирование миграции данных — проводится, чтобы убедиться, что данные правильно переносятся из одной системы в другую, без потерь или искажений. Включает проверку корректности миграции, соответствия структур данных и полноты переноса.
— Тестирование восстановления после сбоя — это определение способности программного продукта восстанавливаться после сбоев или ошибок, проверка механизмов резервного копирования и восстановления.
4. БАЗОВАЯ ТЕОРИЯ О ТЕСТИРОВАНИИ
4.1. Тестирование и его цели
Тестирование имеет два определения:
— Тестирование как процесс — это систематический, структурированный подход к оценке и улучшению качества программного продукта, включающий в себя разные этапы.
— Тестирование как деятельность — это выполнение тестовых процедур и методик с целью обнаружения дефектов в программном обеспечении и оценки его соответствия требованиям и ожиданиям.
Цели тестирования:
— Подтверждение факта того, что программное обеспечение соответствует различным требованиям и спецификациям на всех этапах тестирования.
— Оценка качества программного обеспечения в каждый момент времени.
— Снижение риска появления дефектов на всех этапах жизни программного обеспечения и уменьшение последствий при их возникновении.
Это цели тестирования как науки. В документации проекта прописано, какие цели тестирования преследуются, но они будут описаны более конкретно уже в контексте самого проекта.
Опытные инженеры, возможно, зададутся вопросом, почему здесь перечислены только три цели, а не больше, как иногда приводится в других источниках. Поясню причины.
Обычно список дополнен пунктами, которые звучат примерно так:
— Обнаружение дефектов. Однако их мы обнаруживаем при проверке соответствия программного обеспечения требованиям. Обнаружение или не обнаружение является следствием, а не самоцелью.
— Подтверждение безопасности. Но критерии безопасности в работе приложения — это такие же обычные требования, которые мы проверяем. Кроме области применения они ничем не отличаются от других требований.
— Подтверждение надежности и стабильности. То, насколько стабильно и надежно работает приложение в разных условиях, это тоже формализованные требования к нему или системе в целом.
— Подтверждение производительности. Производительность любого элемента системы это требование к ней, которое формализуют и проверяют.
— Обеспечение соответствия стандартам, законам и т. д. Любой стандарт или закон это требование, которое должно быть выполнено или учтено в программном обеспечении и впоследствии проверено.
А вот в контексте самого проекта можно более подробно описать первую цель тестирования, акцентируя его на безопасности, надежности, стандартах и т. д.
4.2. QA, QC и Testing
В последние годы на рынке все меньше вакансий, звучащих как «QC Engineer» или «Tester», а половину предложений с таким названием на самом деле стоит именовать «QA Engineer». Причина в том, что сейчас все инженеры в той или иной степени выполняют работу в области QA. То есть, специалисты тестирования чаще обеспечивают качество, а не только контролируют его или тестируют. Далее подробнее о том, что это такое и в чем разница.
4.2.1. Testing
Целью Testing (Тестирования) является вся деятельность для выполнения проверок и обнаружения несоответствий между ожидаемыми и фактическими результатами работы тестируемого продукта.
Тестирование включает в себя создание баг репортов, чек — листов, тестовых сценариев, их выполнение. Оно является частью Quality Control и полностью входит в него.
4.2.2. QC (Quality Control)
Цель QC (Контроль качества) — удостовериться, что программное обеспечение соответствует требованиям, то есть получение глобального представления о программном обеспечении.
Контроль качества включает в себя результаты проведенного тестирования (Testing), их анализ и оценку для получения картины о том, каким качеством обладает программное обеспечение. Контроль качества является частью Quality Assurance и полностью входит в него.
4.2.3. QA (Quality Assurance)
Целью QA (Обеспечение качества) является всестороннее предотвращение дефектов с помощью процессов и регламентов. Оно включает в себя создание процессов и регламентов на всех уровнях (от компании до конкретной функции приложения), а также их исполнение и обновление. Quality Assurance влияет на качество как внутри команды тестирования, так и во всех других командах (аналитики, разработчики и т. д.).
Визуально QA — QC — Testing можно представить так:
Таким образом, QA — QC — Testing являются более подробным описанием трех целей тестирования и того, какие действия проводят для их достижения, без привязки к конкретному программному обеспечению/проекту/компании.
Если более коротко, то:
— Testing — это исследование качества.
— QC — это оценка и контроль уровня качества.
— QA — это создание, улучшение, выполнение регламентов по предотвращению появления дефектов.
4.3. Принципы тестирования
Принципы тестирования — это основные положения, которые помогают определить эффективные методы и подходы к процессу тестирования.
Всего есть шесть основных принципов тестирования:
— Исчерпывающее тестирование невозможно. Это означает, что проверить абсолютно все комбинации невозможно или крайне дорого. Отсюда вывод: надо тестировать только те комбинации, которые лучше выявляют дефекты. Следование этому принципу позволяет многократно сократить время на тестирование, при этом оставляя качество проверок на высоком уровне.
— Тестирование демонстрирует наличие дефектов, а не их отсутствие. Это значит, что, когда мы не находим дефекты, мы даем гарантию, что их нет именно