Алекс Смит: Тестирование ПО с Нуля до Специалиста
January 26, 2024

3.2 Функциональное и нефункциональное тестирование

Классификация тестирования

  1. Классификация по уровню функционального тестирования
  2. Классификация по уровню детализации приложения
  3. Классификация по запуску кода на исполнение
  4. Классификация в зависимости от исполнителей
  5. Классификация по позитивности сценария
  6. Классификация по цели тестирования

Но, как правило, когда на собеседовании спрашивают о видах тестирования, собеседующий имеет в виду классификацию по уровню функционального тестирования. Выделяют функциональное и нефункциональное тестирование

Функциональное тестирование

Функциональное тестирование – тестирование которое направленно на проверку соответствия функциональных требований ПО к его реальным характеристикам. Подтверждение того, что наш продукт обладает всем функционалом, который требует заказчик.

Функциональное тестирование отвечает на вопрос – что должен делать наш продукт?

Нефункциональное тестирование

Нефункциональное тестирование – направленно на проверку соответствия свойств ПО с его нефункциональными требованиями. Тестирование свойств, которые не относятся к функциональности системы – надежность, производительность и т.д.

Нефункциональное тестирование отвечает на вопрос – как это должен делать наш продукт?

Виды функционального тестирования:

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) – доступность людям с ограниченными возможностями, необязательно инвалиды.

Тут можно привести пример с возможностью просматривать субтитры, например в том же ютубе, если у вас нет наушников, а вы не хотите пользоваться звуком, то можете включить субтитры. Или же возможность увеличить шрифт и размер кнопок на мобильном приложении. Аудио воспроизведение текста и т.д.