— Тестирование безопасности — проводится для выявления уязвимостей, дыр в безопасности и потенциальных угроз для программного продукта. Задачи включают проверки на уязвимость к взлому, SQL — инъекциям, переполнению буфера и другим атакам, а также оценку политик безопасности, механизмов аутентификации и авторизации.
— Тестирование совместимости — проводится с целью убедиться, что программное обеспечение совместимо с различными операционными системами, браузерами, устройствами и другим программным обеспечением. Задачи включают проверку работоспособности продукта и его отображения на различных платформах и устройствах.
— Тестирование конфигурации — это оценка работоспособности программного продукта в различных конфигурациях аппаратного и программного обеспечения, проверка системы на устойчивость к изменениям в конфигурации окружения.
— Тестирование локализации — это проверка адаптации продукта под специфику определенного региона или культурного контекста. Включает в себя перевод текстов, контроль корректировки форматов дат и валюты, культурных особенностей и локальных норм.
— Тестирование доступности — используется с целью убедиться, что программное обеспечение доступно для использования широкому кругу пользователей, включая людей с ограниченными возможностями (например, с нарушениями зрения, слуха). Тестирование включает проверку соответствия стандартам доступности.
— Тестирование юзабилити — это оценка удобства и интуитивности интерфейса пользователя, легкости освоения и использования программного продукта. Задачи включают изучение поведения реальных пользователей при работе с продуктом и выявление потенциальных проблем в интерфейсе.
— Тестирование миграции данных — проводится, чтобы убедиться, что данные правильно переносятся из одной системы в другую, без потерь или искажений. Включает проверку корректности миграции, соответствия структур данных и полноты переноса.
— Тестирование восстановления после сбоя — это определение способности программного продукта восстанавливаться после сбоев или ошибок, проверка механизмов резервного копирования и восстановления.
4. БАЗОВАЯ ТЕОРИЯ О ТЕСТИРОВАНИИ
4.1. Тестирование и его цели
Тестирование имеет два определения:
— Тестирование как процесс — это систематический, структурированный подход к оценке и улучшению качества программного продукта, включающий в себя разные этапы.
— Тестирование как деятельность — это выполнение тестовых процедур и методик с целью обнаружения дефектов в программном обеспечении и оценки его соответствия требованиям и ожиданиям.
Цели тестирования:
— Подтверждение факта того, что программное обеспечение соответствует различным требованиям и спецификациям на всех этапах тестирования.
— Оценка качества программного обеспечения в каждый момент времени.
— Снижение риска появления дефектов на всех этапах жизни программного обеспечения и уменьшение последствий при их возникновении.
Это цели тестирования как науки. В документации проекта прописано, какие цели тестирования преследуются, но они будут описаны более конкретно уже в контексте самого проекта.
Опытные инженеры, возможно, зададутся вопросом, почему здесь перечислены только три цели, а не больше, как иногда приводится в других источниках. Поясню причины.
Обычно список дополнен пунктами, которые звучат примерно так:
— Обнаружение дефектов. Однако их мы обнаруживаем при проверке соответствия программного обеспечения требованиям. Обнаружение или не обнаружение является следствием, а не самоцелью.
— Подтверждение безопасности. Но критерии безопасности в работе приложения — это такие же обычные требования, которые мы проверяем. Кроме области применения они ничем не отличаются от других требований.
— Подтверждение надежности и стабильности. То, насколько стабильно и надежно работает приложение в разных условиях, это тоже формализованные требования к нему или системе в целом.
— Подтверждение производительности. Производительность любого элемента системы это требование к ней, которое формализуют и проверяют.
— Обеспечение соответствия стандартам, законам и т. д. Любой стандарт или закон это требование, которое должно быть выполнено или учтено в программном обеспечении и впоследствии проверено.