3.2 Функциональное и нефункциональное тестирование
Классификация тестирования
- Классификация по уровню функционального тестирования
- Классификация по уровню детализации приложения
- Классификация по запуску кода на исполнение
- Классификация в зависимости от исполнителей
- Классификация по позитивности сценария
- Классификация по цели тестирования
Но, как правило, когда на собеседовании спрашивают о видах тестирования, собеседующий имеет в виду классификацию по уровню функционального тестирования. Выделяют функциональное и нефункциональное тестирование
Функциональное тестирование
Функциональное тестирование – тестирование которое направленно на проверку соответствия функциональных требований ПО к его реальным характеристикам. Подтверждение того, что наш продукт обладает всем функционалом, который требует заказчик.
Функциональное тестирование отвечает на вопрос – что должен делать наш продукт?
Нефункциональное тестирование
Нефункциональное тестирование – направленно на проверку соответствия свойств ПО с его нефункциональными требованиями. Тестирование свойств, которые не относятся к функциональности системы – надежность, производительность и т.д.
Нефункциональное тестирование отвечает на вопрос – как это должен делать наш продукт?
Виды функционального тестирования:
Smoke test
Дымовое тестирование (smoke test) — тестирование, которое проводится после появления нового билда . Направлено на проверку готовности разработанного продукта к проведению расширенного тестирования и определения общего качества продукта.
Дает ответ готово ли приложение к выполнению своих основных функций.
Давайте это рассмотрим на примере интернет магазина: Авторизуемся - производим выбор продукта – оплату - получаем подтверждение оплаты. Так же для примера рассмотрим сайт для размещения и скачивания фото. Ожидание совпадает с фактическим результатом. Должны быть быстрыми
К примеру: Авторизуемся - производим выбор продукта – оплату - получаем подтверждение оплаты.
Сразу уточню, в продукте может быть различный функционал. Например, возьмем сайт ВКонтакте. Это социальная сеть, основная его цель – это общение людей. Но она не заключается только в том, чтоб один человек зарегистрировался и мог написать другому зарегистрированному пользователю. По мимо писем, здесь так же есть возможность создавать сообщества, прослушивать музыку, смотреть видео, производить оплату и т.д, и для тестирования данных направлений так же проводится дымовое тестирование, например создание нового сообщества, прослушивание и подгрузка новой песни и т.д. Это очень важно понимать. Любую крупную бизнес-логику можно разбить на шаги, каждый этот шаг нужно тестировать, в том числе применяя дымовое тестирование.
Critical path
Тестирование критического пути (critical path) — направлено для проверки функциональности, используемой обычными пользователями во время их повседневной деятельности.
Основной тип тестовых испытаний, во время которого значимые элементы и функции приложения проверяются на предмет правильности работы при их стандартном использовании. Проверка типичных повседневных заданий пользователя. Выбор шрифта, возможность вставки текста, картинок, фильтры и т.д
Давайте рассмотрим пример интернет-магазина – мы авторизовались, перешли в каталог продукции и начали производить фильтрацию результатов поиска
Другой пример – отправка сообщения в почтовом сервисе – изменение вида шрифта, цвета, размера и т.д
Расширенное тестирование
Расширенное тестирование (extended) — направлено на исследование всей заявленной в требованиях функциональности.
Проверка нестандартного использования продукта (например, вводить не корректные логин и пароль в окне авторизации, работать на многих вкладках одновременно, подгрузка файлов недопустимых размеров или форматов. Максимально загружать нашу систему, проводить множество негативных тестов.
Виды нефункционального тестирования:
Тестирование производительности (performance testing)
Тестирование производительности (performance testing) – комплекс видов тестирования целью которых является проверка работоспособности, стабильности, потребления ресурсов и других атрибутов в условиях других сценариев использования и нагрузок.
Это очень важный вид тестирование, ведь стабильность работоспособности нашего продукта – это очень важный показатель, ведь если наше приложение будет виснуть, не возвращать вовремя информацию, то пользователь перестанет им пользоваться.
Рассмотрим подвиды тестирования производительности:
Давайте для пример установим дефолтное значение, то есть значение по умолчанию – что норма посещения нашего сайта одновременно – 1000 человек.
-Нагрузочное (load testing) — определение или сбор показателей производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству). Т.е. производительность в пределах нормы, например одновременное присутствие до 1000 пользователей на сайте (то есть наша норма), в идеале конечно установить это значение именно при 1000 пользователях.
-Стресс (stress testing)- экстремальная нагрузка, в разы превышающая норму.
Пример: все мы знаем, что такое черная пятница, день в году, когда товары продаются с большой скидкой. Предположим, что у нас есть интернет-магазин, норма его посещения одновременно 1000 пользователей. Наступает черная пятница и к нам на сайт заходит 5000 пользователей.
Что происходит? Начинаются сбои, руководству магазина это не нужно. Именно поэтому важно производить данное тестирование, чтоб подготовиться к стресс нагрузкам
-Стабильность – проверка приложения при длительной работе.
То есть происходит нагрузка нашей системы в пределах нормы, к примеру на день, неделю, месяц и смотрим как она будет себя вести.
-Объемное (volume testing)– тестирование при увеличенных объемах обрабатываемых данных (например, 1000 пользователей отправляют одновременно сообщения, загружают файлы).
Инсталляционное тестирование (installation testing)
Инсталляционное тестирование (installation testing) — тестирование, направленное на проверку успешной установки и настройки, обновления или удаления приложения. К примеру, проверка устанавливается ли наше мобильное приложение через плей-маркет, когда мы скачиваем с браузера нашего смартфона, установка с флешки, с компьютера и т.д
Проверяем обновление нашего приложение, возможность откатиться к предыдущей версии. Удаление нашего приложения, повторная установка и т.д
Проверка удобства (Usability)
Проверка удобства (Usability) – проверка на удобство, соотношение дизайна ПП к функциональности, цветового оформления, текста, обучаемость и т.д то на сколько наш продукт удобен конечному пользователю.
Это очень важно, так как наш продукт должен быть удобен и интуитивно понятен нашему пользователю, для того, чтоб он хотел пользоваться им снова и снова
Тестирование безопасности (security testing)
Тестирование безопасности (security testing) — это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
Тестирование локализации( L10N) и интернационализации(I18N)
Тестирование локализации( L10N) и интернационализации(I18N) – процесс адаптации нашего ПО к языку и культуре клиента (перевод, дата и время, символика, единицы измерения, цветов, валюта). К примеру, в некоторых странах используют как единицу расчета сантиметры, метры, километры, а в других дюймы, футы, мили. На сайтах должна быть возможность автоматического перевода единицы измерения или предусмотрен такой функционал. Насколько наш продукт может в дальнейшем адаптироваться к той или иной локации – особенности языка, удобность перестройки под него. Например, в азиатских странах.
Тестирование доступности(accessibility)
6)Тестирование доступности(accessibility) – доступность людям с ограниченными возможностями, необязательно инвалиды.
Тут можно привести пример с возможностью просматривать субтитры, например в том же ютубе, если у вас нет наушников, а вы не хотите пользоваться звуком, то можете включить субтитры. Или же возможность увеличить шрифт и размер кнопок на мобильном приложении. Аудио воспроизведение текста и т.д.