Виды тестирования
Функциональное
один из видов тестирования, направленного на проверку соответствий функциональных требований ПО к его реальным характеристикам. Основной
задачей функционального тестирования является подтверждение того, что разрабатываемый программный продукт обладает всем функционалом, требуемым заказчиком.
Как правило, эти функции описываются в требованиях, функциональных спецификациях
Примеры функционального тестирования:
Модульное тестирование
Тестирование дыма
Тестирование в здравом уме
Интеграционное тестирование
Тестирование белого ящика
Тестирование черного ящика
Пользовательское тестирование
Регрессионное тестирование
ПО исполению кода
Статический
Динамический
Виды нефункционального тестирования
Тестирование производительности
Проверяет, как программный продукт работает под определенной нагрузкой.
Тестирование пользовательского интерфейса (Graphical user interface, GUI)
Определяет удобство пользовательского интерфейса (кнопки, цвета, выравнивание и т.д.).
Основные моменты при проверке:
-расположение, размер, цвет, ширина, длина элементов; возможность ввода букв или цифр
-реализуется ли функционал приложения с помощью графических элементов
-размещение всех сообщений об ошибках, уведомленией (а также шрифт, цвет, размер, расположение и орфография текста)
-читабелен ли использованный шрифт
- переходит ли курсор из текстового в поинтер при наведении на активные элементы, выделяются ли выбранные элементы
- выравнивание текста и форм
- качество изображений
- проверить текст на орфографические, пунктуационные ошибки
Тестирование удобства использования/Юзабилити тестирование (usability testing)
Это метод тестирования, направленный на установление степени удобства использования, «обучаемости», понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий.
Инсталляционное тестирование/Тестирование установки (Installation Testing)
Проверяет, не возникает ли проблем при установке, удалении, а также обновлении программного продукта.
Объемное тестирование (Volume Testing)
Для получения оценки производительности при увеличении объёмов данных в базе данных приложения.
Тестирование стабильности/надежности (Stability / Reliability Testing)
Проверяет, выдержит ли программный продукт длительную нагрузку.
Стрессовое тестирование (Stress Testing)
Определяет работоспособность программного продукта при максимальной нагрузке.
Нагрузочное тестирование — это все же тестирование средних нагрузок. А стрессовое — это тестирование запредельных нагрузок
Нагрузочное тестирование (Performance and Load Testing)
Определяет, как программа работает под ожидаемой нагрузкой.
Тестирование локализации (Localization testing)
Локализация — это процесс адаптации интерфейса ПО под разные регионы, культуры, языки.
Язык. В разных странах говорят на разных языках. Это верно не только для стран, но и для регионов.
Правописание.
с лева на право, и наоборот (еврит)Китай сверху вниз
Валюта. Использование разных значков перед суммой ($ или £).
Форматы даты и времени.
Тестирование защищенности/безопасности (Security testing)
Определяет, насколько безопасно использование программного продукта, т.е. защищен ли программный продукт от атак хакеров, несанкционированного доступа к данным и т.д.
Тестирование на отказ и восстановление (Failover and Recovery Testing)
Исследование программной системы на предмет восстановления после ошибок, сбоев. Оценивание реакции защитных свойств приложения
• Поведение ПО при прерывании обработки данных.
• При потере сети.
• При отключении электричества (на стороне клиента или сервера).
Данные ситуации могут быть воспроизведены, как только достигнута некоторая точка в разработке, когда все системы восстановления или дублирования готовы выполнять свои функции. Технически реализовать тесты можно следующими путями:
Симулировать внезапный отказ электричества на компьютере (обесточить компьютер).
Симулировать потерю связи с сетью (выключить сетевой кабель, обесточить сетевое устройство)
Симулировать отказ носителей (обесточить внешний носитель данных)
Симулировать ситуацию наличия в системе неверных данных (специальный тестовый набор или база данных).
Тестирование на отказ и восстановление особенно актуально при разработке систем, которые должны работать на протяжении длительного времени, вплоть до 24х7.
Тестирование совместимости (Compatibility testing)
Это тестирование работы программного продукта в определенном окружении. Окружение может включать в себя следующие элементы:
Пример. Приложение разработано для работы с семейством Windows. При тестировании его на различных видах Windows (XP, 7, 10, ...), это будет конфигурационное тестирование. Но когда мы начнем тестировать его на Linux, то это уже будет тестирование совместимости.
Конфигурационное тестирование (Configuration Testing)
Определяет, как программный продукт будет работать в условиях смены конфигурации (платформы, драйверов, компьютеров). Данный вид тестирования применяется, если известно, что продукт будет использоваться на разных платформах, в различных браузерах, будет поддерживать разные версии драйверов и т.п.
Связанное с изменениями
Тестирование сборки (Build Verification Test)
Направлено на определение соответствия выпущенной версии критериям качества для начала тестирования. По своим целям является аналогом дымового тестирования, направленного на приемку новой версии в дальнейшее тестирование или эксплуатацию.
Вглубь оно может проникать дальше, в зависимости от требований к качеству выпущенной версии.
Санитарное тестирование (Sanity Testing)-
используется с целью доказательства работоспособности конкретной функции или модуля согласно заявленным техническим требованиям.
Санитарное тестирование ориентировано на глубинное исследование определенной функции, а дымовое — на тестирование большого количества функционала за самые короткие сроки.
Дымовое тестирование (Smoke Testing)-
после сборки кода (нового или исправленного) устанавливаемое приложение, стартует и выполняет основные функции.
Данный тип тестирования позволяет на начальном этапе выявить основные быстро находимые критические дефекты.
Регрессионное тестирование (Regression Testing)-
не вызвало ли исправление бага или написание нового кода каких-либо изменений в других местах.
изменение, внесенное в одну часть кода, будь то исправление или что-либо другое, может случайно повлиять на поведение других частей кода.
Подтверждающее тестирование (Re-testing)-
тестирование направлено на проверку исправления бага.
Целью подтверждающего тестирования является удостоверение в том, что найденный дефект был исправлен.
По доступу к коду
Серый ящик
предполагает, комбинацию White Box и Black Box подходов. То есть, внутреннее устройство программы нам известно лишь частично. Предполагается, например, доступ к внутренней структуре и алгоритмам работы ПО для написания максимально эффективных тест-кейсов, но само тестирование проводится с помощью техники черного ящика, то есть, с позиции пользователя.
Белый ящик
есть доступ к коду
При тестировании черного ящика, нам необходимо запускать программу и смотреть, что она делает. А в белом этого не требуется. Достаточно смотреть на код программы.
Включает в себя:
- Unit-тестирование;
- интеграционное;
- системное;
- тестирование безопасности.
Черный ящик
При таком тестировании тестировщик очень похож на обычного пользователя:
тест анализ и исследование продукта он проводит опираясь на ТЗ (техническое задание), спецификации и прочую документацию
Включает в себя :
- функциональное;
- регрессионное;
- usability;
- smoke;
- GUI.
По степени автоматизации
Полуавтоматизированное
Например, с помощью программы создается новый аккаунт, а потом вручную генерируются транзакции покупки.
Автоматизированное
предполагает использование специального программного обеспечения (помимо тестируемого)
помогает автоматизировать часто повторяющиеся, но необходимые для максимизации тестового покрытия, задачи.
ручное
По сценарию
негативный
Позитивный