Компьютерные системы очень часто являются ми-
шенью незаконного проникновения.
Под проникновением понимается широкий
диапазон действий: попытки хакеров проникнуть в
систему из спортивного интереса, месть рассержен-
ных служащих, взлом мошенниками для незаконной
наживы.
Тестирование безопасности проверяет факти-
ческую реакцию защитных механизмов, встроенных
в систему, на проникновение. В ходе тестирования
безопасности испытатель играет роль взломщика.
Ему разрешено все:
попытки узнать пароль с помощью внешних
средств;
атака системы с помощью специальных утилит,
анализирующих защиты;
подавление, ошеломление системы (в надежде,
что она откажется обслуживать других клиентов);
целенаправленное введение ошибок в надежде
проникнуть в систему в ходе восстановления;
просмотр несекретных данных в надежде найти
ключ для входа в систему.
Тестирование удобства пользования приложе-
нием определяет, соответствует ли приложение по-
требностям целевой аудитории и отвечает ли оно
требованиям пользователя.
При тестировании во внимание принимаются
следующие аспекты: однородность, логика и струк-
тура, навигация.
Если создаваемая нагрузка на систему превышает
нормальные сценарии её использования, с целью про-
тестировать время отклика системы на высоких или
пиковых нагрузках, такое тестирование называется
стресс-тестированием.
В этом случае нагрузка обычно столь высока,
что предсказуема ошибочная работа системы, одна-
ко не существует четкой границы между тем, когда
тестирование является нагрузочным и тем, когда
оно становится стресс-тестированием [3].
Стресс-тестирование – один из видов тестиро-
вания программного обеспечения, которое оценива-
ет надежность и устойчивость системы в условиях
превышения пределов нормального функциониро-
вания.
Стресс-тестирование особенно необходи-мо
для "критически важного" программного обеспече-
ния, однако также используется и для остального
ПО.
Обычно стресс-тестирование лучше обнаружи-
вает устойчивость, доступность и обработку исклю-
чений системой под большой нагрузкой, чем то, что
считается корректным поведением в нормальных
условиях.
В общем случае методология стресс-
тестирования основана на снятии и анализе показа-
телей производительности приложения при нагруз-
ках, значительно превышающих ожидаемые на ста-
дии сопровождения и несёт в себе цель определить
выносливость или устойчивость приложения на
случай всплеска активности по его использованию.
Необходимость стресс-тестирования диктуется
следующими факторами: большая часть всех систем
разрабатываются с допущением о функционирова-
нии в нормальном режиме и даже в случае, когда
допускается возможность увеличения нагрузки, ре-
альные объёмы её увеличения не принимаются во
внимание.
В случае SLA-контракта (соглашения об
уровне услуг) стоимость отказа системы в экстре-
мальных условиях может быть очень велика.
Обнаружение некоторых ошибок или дефектов
в функционировании системы не всегда возможно с
использованием других типов тестирования.
Тестирования, проведенного разработ-чиком,
может быть недостаточно для эмуляции условий,
при которых происходит отказ системы. Предпочти-
тельнее быть готовым к обработке экстремальных
условий системы, чем ожидать её отказа [4]. Тести-
рование стабильности или надежности – один из видов
тестирования программного обеспечения, целью кото-
рого является проверка работоспособности приложе-
ния при длительном тестировании со средним (ожида-
емым) уровнем нагрузки.
Перед тем как подвергать программное обеспе-
чение экстремальным нагрузкам стоит провести
проверку стабильности в предполагаемых условиях
работы, то есть погрузить продукт в полную рабо-
чую атмосферу.
При тестировании, длительность его проведения
не имеет первостепенного значения, основная задача
- наблюдая за потреблением ресурсов, выявить утеч-
ки памяти и проследить чтобы скорость обработки
данных и/или время отклика приложения в начале
теста и с течением времени не уменьшалась.
В противном случае вероятны сбои в работе
продукта и перезагрузки системы.
Часто в "домашних" условиях тестирование
стабильности совмещают со стресс-тестированием,
то есть проверяют не только стабильность, но и спо-
собность приложения переносить жесткие условия и
сильные нагрузки длительное время.
Тестирование совместимости — метод, основ-
ной целью которого является обеспечение каче-
ственной работы конечного продукта с другими
программами, операционными системами,. аппарат-
ными средствами и т.д.
Модульное
тестирование,
или
юнит-
тестирование — процесс, позволяющий проверить
на корректность отдельные модули исходного кода
программы.
Идея состоит в том, чтобы писать тесты для
каждой нетривиальной функции или метода. Это