Нефункциональное тестирование проводится для проверки нефункциональных требований приложения, таких как производительность, безопасность, совместимость, надежность, удобство использования и т. д. В большинстве случаев это выполняется методом black box testing. Оно проверяет, соответствует ли поведение системы требованиям по всем аспектам, не охваченные функциональным тестированием. В нашем повседневном тестировании много внимания уделяется функциональному тестированию и функциональным требованиям и клиенты также заинтересованы в выполнении функциональных требований, которые напрямую связаны с функциональностью приложения, но когда ПО выходит на рынок и используется реальными конечными пользователями, у них есть шансы столкнуться с проблемами. Эти проблемы не связаны с функциональностью системы, но могут негативно повлиять на пользовательский опыт.
Нефункциональные требования могут быть отражены как:
- Пользовательские / Технические истории (User /Technical Stories): запись нефункциональных требований в виде пользовательской истории такая же, как и запись любых других требований. Единственная разница между пользователем и технической историей заключается в том, что пользовательская история требует обсуждения и имеет видимость (? visibility);
- В критериях приемки (Acceptance criteria): это точка, которая определяется для принятия продукта заказчиком. Нефункциональное требование должно быть включено в критерии приемки, но иногда невозможно проверить нефункциональные требования с каждой историей, то есть с каждой итерацией. Следовательно, требования следует добавлять или тестировать только с соответствующей итерацией;
- В артефактах (Artifact): для нефункциональных требований следует подготовить отдельный артефакт, это, в свою очередь, поможет лучше понять, что нужно тестировать и как это можно делать в итерациях;
Документ подхода к тестированию (Approach Document):
Разработайте конкретный подход к этапу тестирования, уточнив общую стратегию тестирования. Этот подход к тестированию помогает при планировании и выполнении всех задач тестирования:
- Объем испытаний (Test Scope);
- Метрики тестирования;
- Инструменты тестирования;
- Основные даты и результаты;
Виды нефункционального тестирования (список не полный):
- Тестирование производительности (Performance Testing)
- Нагрузочное тестирование (Load Testing)
- Стрессовое тестирование (Stress Testing)
- Объемное тестирование (Volume Testing)
- Тестирование восстановления (Recovery Testing)
- Тестирование отказоустойчивости (Failover Testing)
- Тестирование эффективности (Efficiency Testing)
- Тестирование аварийного восстановления (Disaster Recovery Testing)
- Тестирование установки (Installation Testing)
- Тестирование документации (Documentation Testing)
- Тестирование на удобство использования (Usability Testing)
- Тестирование графического интерфейса пользователя (User Interface Testing)
- Тестирование совместимости (Compatibility Testing)
- Тестирование обслуживаемости (Maintainability Testing)
- Тестирование безопасности (Security Testing)
- Тестирование масштабируемости (Scalability Testing)
- Тестирование выносливости (Endurance Testing)
- Тестирование надежности (Reliability Testing)
- Тестирование соответствия (Compliance Testing)
- Тестирование локализации (Localization Testing)
- Тестирование интернационализации (Internationalization Testing)
- Тестирование переносимости (Portability Testing)
- Тестирование на основе базового уровня (Baseline Testing)
Примеры чек-листов:
Тестирование производительности:
- Время отклика (The response time) приложения, то есть сколько времени требуется для загрузки приложения, за какое время любой ввод, предоставленный приложению, обеспечивает вывод, время обновления браузера и т. д.;
- Пропускную способность (Throughput) следует проверять по количеству транзакций, завершенных во время нагрузочного теста;
- Настройка среды (Environment) должна быть такой же, как и в реальной среде, иначе результаты не будут такими же;
- Время процесса (Process time) - такие действия, как импорт и экспорт Excel, любые вычисления в приложении должны быть протестированы;
- Совместимость (Interoperability) должна быть проверена, т.е. программное обеспечение должно иметь возможность взаимодействовать с другим программным обеспечением или системами;
- Необходимо проверить время ETL, то есть время, затраченное на извлечение, преобразование и загрузку данных из одной базы данных в другую;
- Необходимо проверить возрастающую нагрузку (Load) на приложение;
Тестирование безопасности:
- Аутентификация (Authentication): только достоверный пользователь может войти в систему;
- Авторизация (Authorized): пользователь должен иметь возможность входить в те модули, для которых он авторизован или к которым пользователю был предоставлен доступ;
- Пароль: Требование пароля должно быть подтверждено, т.е. пароль должен соответствовать тому, как это требование определяется, то есть длине, специальным символам, числам и т. д.;
- Тайм-аут: если приложение неактивно, оно должно истечь по таймауту в указанное время;
- Резервное копирование данных: резервное копирование данных должно быть выполнено в указанное время и данные должны быть скопированы в безопасное место;
- Внутренние ссылки на веб-приложение не должны быть доступны, если размещены непосредственно в браузере;
- Вся коммуникация должна быть зашифрована;
Тестирование документации:
- Пользовательская и системная документация;
- Документы для учебных целей;
Источник: A Complete Non-Functional Testing Guide For Beginners