Подход нагрузочного тестирования:

- Оценить критерии приемлемости производительности

- Определить критические сценарии

- Модель рабочей нагрузки

- Определить целевые уровни нагрузки

- Дизайн тестов

- Выполнить тесты

- Проанализировать результаты

Задачи нагрузочного тестирования: время отклика, пропускная способность, утилизация ресурсов, максимальная пользовательская нагрузка, бизнес-метрики.



Стресс-тестирование (Stress Testing) проверяет систему на ее устойчивость и обработку ошибок в условиях чрезвычайно высокой нагрузки (оценивает как система работает в экстремальных условиях, за пределами ограничений и лимитов). Стресс-тестирование проводится, чтобы убедиться, что система не будет аварийно завершать работу в критических ситуациях.



Тестирование стабильности/надежности (Stability/Reliability Testing) – тип тестирования программного обеспечения, который проверяет, может ли программное обеспечение выполнять безотказную работу в течение определенного периода времени в указанной среде.



Объемное тестирование (Volume Testing) – тип тестирования программного обеспечения, проводится для анализа производительности системы за счет увеличения объема данных в базе данных.



Тестирование параллелизма (Parallel Testing) – тип тестирования программного обеспечения, который проверяет несколько приложений или подкомпонентов одного приложения одновременно, чтобы сократить время тестирования. При параллельном тестировании тестировщик запускает две разные версии программного обеспечения одновременно с одним и тем же вводом. Цель состоит в том, чтобы выяснить, ведут ли себя прежняя система и новая система одинаково или по-разному.



🎃 Тестирование безопасности.



Направлено на оптимизацию безопасности системы при проектировании, разработке, использовании и обслуживании программных систем и их интеграции с критически важными для безопасности аппаратными системами в производственной среде.



Аспекты безопасности программного обеспечения:



- Функциональное программное обеспечение не должно создавать опасностей (например: управление современным самолетом НЕ должно направляться в океан).

- Системы мониторинга должны работать без сбоев (например: резервный компьютер должен запускаться автоматически при сбое основного).



Цели в тестировании безопасности:



- в сложных системах, где задействовано много взаимодействий, критически важные для безопасности функции должны быть идентифицированы и тщательно проанализированы;

- ошибки определены и устранены;

- количество критических ошибок поддерживается на низком уровне, чтобы избежать неработоспособности системы;

- атрибуты безопасности должны рассматриваться как часть всех уровней тестирования ПО.



Дополнительную информацию по безопасности приложений можно посмотреть тут: CHECK, ISACA, NIST Guideline, OSSTMM, OWASP Guide.



Принципы безопасности:



1. Конфиденциальность (ограничение или предоставление доступа к информации).

2. Целостность (возможность восстановить данные в полном объеме при их повреждении; доступ на изменение информации только определенной категории пользователей).

3. Доступность (иерархия уровней доступа и четкое их соблюдение).



Обработка ошибок и регрессионное тестирование.

После завершения разработки веб-приложения следует провести оценку и анализ выявленных ошибок для дальнейшего предотвращение их повтора. А также выполнить регрессионное тестирование.



🎃 Регрессионное тестирование.



Использует технику тестирования черного ящика (повторное выполнение тестов), на которые влияют изменения кода. Эти тесты должны выполняться как можно чаще в течение всего ЖЦПО при изменениях кода для исправления дефектов или для улучшения работы веб-приложения.