| BH TT Нефункциональное тестирование Примеры студентов -- Ожидаемого результата часто нет, но тогда нужно обязательно что-то замерить, для того, чтобы потом сверить с конкурентами или со своей же старой версией. -- На продакшене не тестировать! И на чужом тоже. // 4. Важные виды нефункционального тестирования // 5. Виды нефункционального тестирования - подробнее // 6. Тестирование совместимости и окружений (Compatibility testing) (браузеры) // 7. TODO: Ещё примеры // 4. Важные виды нефункционального тестирования: -- Производительность и нагрузка // Важно для пользователя! -- Удобство использования (Usability) // Важно для пользователя! -- Защищенность -- Тестирование окружений // 5. Виды нефункционального тестирования - подробнее 3A1. Функциональная пригодность (Functional Suitability) -- Функциональная полнота (Functional Completeness) -- Функциональная корректность (Functional Correctness) -- Функциональная целесообразность (Functional Appropriateness) 3B1. Уровень производительности (Performance Efficiency) -- Временные характеристики (Time Behaviour) -- Использование ресурсов (Resource Utilization) -- Потенциальные возможности (Capacity) 3B2. Совместимость (Compatibility) -- Сосуществование (Co-existence) -- Интероперабельность (Interoperability) 3B3. Удобство использования (Usability) -- Определимость пригодности (Appropriateness Recognizability) -- Изучаемость (Learnability) -- Управляемость (Operability) -- Защищенность от ошибки пользователя (User Error Protection) -- Эстетика пользовательского интерфейса (User Interface Aesthetics) -- Доступность (Accessibility) 3B4. Надежность (Reliability) -- Завершённость (Maturity) -- Готовность (Availability) -- Отказоустойчивость (Fault Tolerance) -- Восстанавливаемость (Recoverability) 3B5. Защищенность (Security) -- Конфиденциальность (Confidentiality) -- Целостность (Integrity) -- Неподдельность (Non-Repudiation) -- Отслеживаемость (Authenticity) -- Подлинность (Accountability) 3B6. Сопровождаемость (Maintainability) -- Модульность (Modulariy) -- Возможность многократного использования (Reusability) -- Анализируемость (Analysability) -- Модифицируемость (Modifiability) -- Тестируемость (Testability) 3B7. Переносимость (мобильность) (Portability) -- Адаптируемость (Adaptability) -- Устанавливаемость (Installability) -- Взаимозаменяемость (Replaceability) // 3B1. Тестирование производительности (Performance testing) --> Скорость работы -- Производительность с разными: Параметрами, Настройками, Условиями, Сравнение с конкурентами ( (Пр. разные размеры файла; Разное железо) -- Сравнение с конкурентами (Может стать обоснованием бага) -- Работоспособность системы под разными нагрузками -- Измерение времени выполнения выбранных операций при определенных интенсивностях выполнения этих операций -- Определение количества пользователей, одновременно работающих с приложением -- Определение границ приемлемой производительности при увеличении нагрузки (при увеличении интенсивности выполнения этих операций) -- Исследование производительности на высоких, предельных, стрессовых нагрузках Нагрузочное тестирование vs Тестирование производительности // 3B1-A. Нагрузочное тестирование (Load Testing) --> Возможность одновременной работы (Кол-во пользователей) 1) Проверить что сервис функционирует под проектной нагрузкой 2) Узнать до какой нагрузки сервис остается функционален 3) Узнать под какой нагрузкой начинаются отказы Можно пойти дальше и сделать Crash/restore 4) Узнать под какой нагрузкой сервис перестанет функционировать 5) Узнать восстановится ли сервис после снятия нагрузки/ после возвращения к проектной нагрузке. замерить сколько ему потребуется на это времени. Инструменты: Apache JMeter // LoadSophia // HP LoadRunner // Load Impact Учитывать что Update сложнее чем Create/Insert. Поэтому например при тесте 100 пользователей делать 50 на создание и 50 на обновление Больше 100 пользователей в секунду скорее всего не будет, так-что лучше увеличивать число пользователей в секунду с шагом 5 пользователей // 3B3. Тестирование удобства использования (Usability) // -1- -2- -3- -- Скорость обучения (Как пользоваться сайтом. Как быстро юзер поймёт что и как делать) -- Скорость использования (Фотошоп, спецсофт. Как ускорится работа после обучения) -- Количество пользовательских ошибок -- Субъективная удовлетворённость -- Следование стандартам (В принципе не так уж и важно --> Свой стиль!) -- Интуитивность -- Одинаковость (Consistent) (Типичные вещи как у конкурентов. Например F1) -- Гибкость (Например 2 режима калькулятора) -- Корректность -- Полезность -- Тестирование GUI Масштабируемость (Требования к горизонтальному или вертикальному масштабированию приложения). // 3B4. Тестирование надежности / стабильности (Reliability / Stability Testing) -- Реакция системы на непредвиденные ситуации -- Выяснить сколько времени сервис может проработать безотказно в конкретном окружении (никакого экстрима, просто конкретика) под конкретной нагрузкой (обычно рассчеткая, может быть + некоторый процент) при этом ставится некоторый лимит. по достижении которого тест считается пройденным. -- Выявить утечки ресурсов. то есть в процессе теста тщательно мониторятся ресурсы системы (память, процессор, загрузка диска, файловые дескрипторы, сокеты) -- Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Время выполнения операций может играть в данном виде тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек памяти, перезапусков серверов под нагрузкой и другие аспекты влияющие именно на стабильность работы. // 3B5. Тестирование защищённости / безопасности (Security) -- Защищенность / Безопасность пользовательских данных // 3B7. Переносимость (мобильность) (Portability) Портируемость (Переносимость приложения на различные платформы). Тестирование установки (Installation testing) – проверка успешности установки приложения, его настройки и удаления. Снижает риски потери пользовательских данных, потери работоспособности приложения и пр. Конфигурационное тестирование (или тестирование портируемости) – исследование работоспособности программной системы в условиях различных программных конфигураций. // 6. Тестирование совместимости и окружений (Compatibility testing) (браузеры) Разные ОС (Windows, Linux, MAC) Разное железо Разные браузеры Разный сторонний софт (Конфликты двух похожих прог) Плагины в браузере // 7. TODO: Ещё примеры Локализация (языковая) Тестирование установки (Installation testing) Тестирование на отказ и восстановление (Failover and Recovery Testing) – исследование программной системы на предмет восстановления после ошибок, сбоев. Оценивание реакции защитных свойств приложения. Тестирование установки (Installation testing) Конфигурационное тестирование (или тестирование портируемости) Тестирование на отказ и восстановление (Failover and Recovery Testing) |