Давайте более подробно поговорим о типах нефункционального тестирования.
Тестирование производительности и нагрузкиНагрузочное тестирование или тестирование производительности - это автоматизированное тестирование, которое имитирует определенное количество бизнес-пользователей на общем ресурсе.
Задача тестирования производительности - определить возможности масштабирования приложения для различных уровней нагрузки.
Вот что при этом происходит:
- измерение времени выполнения отдельных операций при определенных уровнях интенсивности;
- определение количества пользователей, одновременно работающих с приложением;
- определение границ допустимой производительности при увеличении нагрузки (при увеличении интенсивности операций);
- анализ производительности при высоких, экстремальных и интенсивных нагрузках.
Тестирование при интенсивном использовании (stress testing)Стресс-тестирование позволяет проверить, работает ли приложение и вся система в целом в условиях интенсивного использования, и оценить способность системы к регенерации, т.е. к возвращению в нормальное состояние после окончания стресса.
Стрессом, в данном контексте, может быть увеличение интенсивности операций до очень высоких значений или экстренное изменение конфигурации сервера. Одной из задач стресс-тестирования также может быть оценка снижения производительности, поэтому цели стресс-тестирования могут пересекаться с целями тестирования производительности.
Проверка стабильности/надежностиЗадача тестирования стабильности (надежности) заключается в проверке производительности приложения при длительном использовании со средним уровнем нагрузки. Время выполнения операций может играть второстепенную роль в этом виде тестирования. Предпочтение отдается отсутствию утечек памяти, перезапусков сервера под нагрузкой и других элементов, влияющих на стабильность работы.
Объемное тестированиеЦель объемного тестирования - получить оценку производительности при увеличении объема данных в базе данных приложения.
В него входит:
- измерение времени выполнения выбранных операций при индивидуальной интенсивности этих операций;
- определяется максимальное количество пользователей, которые одновременно могут работать с приложением.
Тестирование установкиТестирование установки направлено на проверку успешной установки и конфигурации приложения, а также обновления или удаления приложения.
Тестирование удобства использованияТестирование удобства использования - это метод определения степени удобства использования, обучаемости, понятности и привлекательности для пользователей разрабатываемого продукта в заданных условиях.
Иногда мы сталкиваемся с непонятными, нелогичными приложениями, многие из функций и назначений которых бесполезны. В таких случаях пользователь редко обращается к этому приложению снова и скорее ищет более полезные аналоги.
Чтобы приложение было популярным, недостаточно, чтобы оно было функциональным - оно должно быть еще и удобным. Если задуматься, интуитивно понятные приложения экономят усилия пользователя и затраты работодателя на обучение, а также выделяют ваше приложение из общей массы. Поэтому тестирование удобства использования, о котором пойдет речь далее, является неотъемлемой частью тестирования любых продуктов массового потребления.
Тестирование на сбои и восстановление (тестирование на нагрузку)Этот тип тестирования анализирует способность продукта выдерживать и успешно восстанавливаться после возможных сбоев, вызванных ошибками приложения, отказами оборудования или проблемами связи (например, сбоем сети).
Целью данного вида тестирования является проверка систем восстановления (или способности дублировать основные функциональные возможности систем), которые в случае сбоев обеспечат сохранность и целостность данных тестируемого продукта.
Тестирование на сбои и восстановление важно для систем, которые работают по принципу «24x7». Предположим, вы создаете продукт, который будет работать в Интернете. В этом случае без такого тестирования просто не обойтись, потому что каждая минута простоя или потеря данных в случае отказа оборудования может стоить вам денег, потери клиентов и репутации на рынке.
Для наглядности рассмотрим некоторые варианты такого тестирования и общие методы их реализации.
Объектом тестирования в большинстве случаев с большой вероятностью являются проблемы эксплуатации, такие как:
- сбой питания на серверном компьютере;
- сбой питания на компьютере клиента;
- неполные циклы обработки данных (фильтры данных прерваны, синхронизация прервана);
- объявление или введение массивов данных невозможно или ошибочно;
- отказ носителя информации;
- тестирование конфигурации.
Тестирование конфигурации - это особый вид тестирования, направленный на проверку производительности приложения при различных конфигурациях системы (заявленные платформы, поддерживаемые драйверы, различные конфигурации компьютеров и т.д.).
Перед началом конфигурационного тестирования необходимо:
- создать матрицу покрытия (матрица покрытия - это таблица, в которую вносятся все возможные конфигурации);
- расставить приоритеты конфигураций (на практике, скорее всего, вы не сможете проверить все желаемые настройки);
- шаг за шагом проверять каждую конфигурацию в порядке приоритета.
Тестирование, связанное с изменениямиПосле внесения необходимых изменений, например, исправления ошибки/дефекта, приложение следует повторно протестировать, чтобы убедиться, что проблема действительно решена.
После установки приложения необходимо провести следующие виды испытаний для подтверждения правильной работы приложения или точного устранения дефекта:
- “дымовое” тестирование (smoke testing);
- регрессионное тестирование (regression testing);
- тестирование по проверке версий (build verification testing);
- “санитарное” тестирование (sanity testing).
“Дымовое” тестированиеКонцепция дымовых испытаний пришла из инженерной среды.
При вводе в эксплуатацию нового оборудования (аппаратуры) считалось, что испытание прошло успешно, если в результате установки оборудование не дымило“Дымовое” тестирование рассматривается как короткий цикл тестов, выполняемых для подтверждения того, что после сборки кода (нового или исправленного) установленное приложение успешно запускается и выполняет свои основные функции.