Практическое занятие № 23 Тема: Нефункциональное тестирование ИС
Цель работы: рассмотреть виды нефункционального тестирования. Разработка тестов.
Оборудование, материал
-Персональный компьютер,
Краткие теоритические сведения:
Нагрузочное тестирование (load testing)– испытание информационной системы в условиях прогнозируемой нормальной нагрузки. Под величиной нагрузки понимается коли- чество запросов к системе, которое она должна успевать обрабатывать, не превышая опреде- ленное исходными требованиями время отклика.
Стрессовое тестирование (stress testing)– испытание информационной системы в условиях минимальных аппаратных ресурсах и максимально допустимой нагрузки. Цель стрессового тестирования, как понятно из названия, - проверить работоспособность системы в стрессовых ситуациях.
Объемное тестирование (volume testing)– испытания информационной системы в условиях максимальных (предельно допустимых) объемов информации в базе данных. Ос- новным объектом тестирования в данном случае является зависимость времени отклика и прочих аспектов производительности системы от объемов контролируемых данных.
Тестирование стабильности (stability testing)– проверка, может ли испытываемая ин- формационная система длительное время нормально функционировать в условиях, близких к нормальным условиям (средняя нагрузка, средние объемы данных, рекомендуемые аппарат- ное ресурсы и т.д.).
Тестирование надежности (reliability testing)– гибрид всех перечисленных ранее ви- дов тестирования, направленный на то, чтобы проверить способность системы возвращаться к нормальному режиму работы после коротких периодов максимальной нагрузки, стрессов, предельных объемов данных и т.д.
Тестирование эргономики решений– испытания пользовательского интерфейса на предмет удобства и безопасности эксплуатации информационной системы.
Проектирование надежных информационных систем
Способы обеспечения надежности ИС
Надежность информационной системы (ИС) в может рассматриваться в совокупности надежности ее аппаратного и программного обеспечения. Под надежностью ИС понимается свойство системы выполнять возложенные на нее задачи в определенных условиях эксплу- атации. При наступлении отказа, который может насупить при сбое в работе аппаратной или программной составляющей, информационная система не может выполнять все преду- смотренные документацией задачи, т. е. переходит из исправного состояния в неисправное. Если при наступлении отказа компьютерная система способна выполнять заданные функ- ции, сохраняя значения основных характеристик в пределах, установленных технической документацией, то она находится в работоспособном состоянии.
С точки зрения обеспечения целостности информации необходимо сохранять хотя бы работоспособное состояние ИС. Для решения этой задачи необходимо обеспечить высокую надежность функционирования алгоритмов, программ и технических (аппаратных) средств. Поскольку алгоритмы в ИС реализуются за счет выполнения программ или аппарат-
ным способом, то надежность алгоритмов отдельно не рассматривается. В этом случае счи- тается, что надежность ИС обеспечивается надежностью программных и аппаратных средств.
Надежность достигается на этапах:
разработки, производства, эксплуатации.
Для программных средств рассматриваются этапы разработки и эксплуатации. Этап разработки программных средств является определяющим при создании надежных инфор- мационных систем.
На этом этапе можно выделить основные направления повышения надежности про- граммных средств: корректная постановка задачи на разработку, использование прогрес- сивных технологий программирования, контроль правильности функционирования.
Корректность постановки задачи достигается в результате совместной работы специа- листов предметной области и высокопрофессиональных программистов-алгоритмистов.
В настоящее время для повышения качества программных продуктов используются современные технологии программирования (например, CASEтехнология). Эти технологии позволяют значительно сократить возможности внесения субъективных ошибок разработ- чиков. Они характеризуются высокой автоматизацией процесса программирования, исполь- зованием стандартных программных модулей, тестированием их совместной работы.
Контроль правильности функционирования алгоритмов и программ осуществляется на каждом этапе разработки и завершается комплексным контролем, охватывающим все решаемые задачи и режимы.
На этапе эксплуатации программные средства дорабатываются, в них устраняются за- меченные ошибки, поддерживается целостность программных средств и актуальность дан- ных, используемых этими средствами.
Надежность технических средств (ТС) ИС обеспечивается на всех этапах. На этапе разработки выбираются элементная база, технология производства и структурные решения, обеспечивающие максимально достижимую надежность ИС в целом.
Велика роль в процессе обеспечения надежности ТС и этапа производства. Главными условиями выпуска надежной продукции являются высокий технологический уровень про- изводства и организация эффективного контроля качества выпускаемых ТС.
Удельный вес этапа эксплуатации ТС в решении проблемы обеспечения надежности КС в последние годы значительно снизился. Для определенных видов вычислительной тех- ники, таких как персональные ЭВМ, уровень требований к процессу технической эксплуа- тации снизился практически до уровня эксплуатации бытовых приборов. Особенностью нынешнего этапа эксплуатации средств вычислительной техники является сближение экс- плуатации технических и программных средств (особенно средств общего программного обеспечения). Тем не менее роль этапа эксплуатации ТС остается достаточно значимой в решении задачи обеспечения надежности КС и прежде всего надежности сложных компью- терных систем.
Отказоустойчивые ИС
Отказоустойчивость — это свойство ИС сохранять работоспособность при отказах отдельных устройств, блоков, схем.
Известны три основных подхода к созданию отказоустойчивых систем: простое резервирование, помехоустойчивое кодиро-
вание информации, создание адаптивных систем.
При разработке предварительного проекта ИС необходимо указать основные модули и информационные потоки. Указать основные мероприятия по повышению надежности ИС.
Ход работы: Изучить теоретический материал и ответить на вопросы:
1. Что такое нефункциональное тестирование и чем оно отличается от функционального тестирования?
2. Каковы основные цели нефункционального тестирования?
3. Какие типы нефункционального тестирования вы знаете?
4. Объясните разницу между нагрузочным и стрессовым тестированием.
5. Что такое "узкое место" в контексте тестирования производительности?
6. Что такое юзабилити-тестирование (usability testing) и зачем оно нужно?
7. Какие метрики обычно используются для оценки производительности ИС?
8. Что такое тестирование безопасности (security testing) и какие угрозы оно помогает выявить?
9. Что такое тестирование надежности (reliability testing) и как оно проводится?
10. Какие инструменты используются для автоматизации нагрузочного тестирования? Приведите примеры.
11. Как можно оценить масштабируемость ИС?
12. Опишите процесс проведения юзабилити-тестирования.
13. Как можно измерить доступность (availability) ИС?
14. Как определить, достаточно ли хорошо протестирована производительность ИС?
15. Какие риски связаны с недостаточным нефункциональным тестированием?
16. Как нефункциональное тестирование интегрируется в процесс разработки программного обеспечения (SDLC)?
17. В чем разница между тестированием производительности на этапе разработки и тестированием производительности в производственной среде?