ALMELN.ru

Хранилище текстов, отзывов и закладок о тестировании, обеспечении качества и литературе

View the Project on GitHub

Нефункциональные виды тестирования

В учебных программах по дисциплине “Обеспечение качества и тестирование программ” есть вопрос “Нефункциональные виды тестирования. Нагрузочное тестирование. Тестирование защищенности, безопасности, устойчивости. Тестирование безопасности Web приложений. Тестирование удобства использования. Инструментальные средства поддержки”. В программе обучения базового уровня International Software Testing Qualifications Board “Сертифицированный тестировщик” указано на необходимость “Идентифицировать и описать нефункциональные типы тестирования, основанные на нефункциональных требованиях”.

Собрал подборку материалов по теме.

Содержание

  1. Надежность программного обеспечения
  2. Государственный стандарт РФ ГОСТ Р ИСО/МЭК 9126-93 “Информационная технология. Оценка программной продукции. Характеристика качества и руководства по их применению”
  3. «Сертифицированный тестировщик. Программа обучения Базового уровня»
  4. Стандартный глоссарий терминов, используемых в тестировании программного обеспечения

«Надежность программного обеспечения»

Гленфорд Майерс, 1980. 12/359 страница:

Что такое надежность? Второй термин, который следует определить, - это надежность программного обеспечения. Мы опять начнем с исследования известного определения, согласно которому надежность есть вероятность того, что при функционировании системы в течение некоторого периода времени не будет обнаружено ни одной ошибки. Основной недостаток такого определения - это то, что в нем не учтено различие между ошибками разных типов. Рассмотрим авиационную системе диспетчеризации с двумя ошибками в программном обеспечении: из-за одной теряется след самолета, а другая состоит в том, что в сообщениии оператору неправильно печатается одно слово (например, ТРАНСАММЕРИКАНСКИЙ вместо ТРАНСАМЕРИКАНСКИЙ). По своим последствиям эти ошибки далеко не одинаковы, поэтому надежность должна быть определена как функция не только частоты ошибок, но и их серьезности. В соответствии с этим дадим следующее определение:

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

Таким образом, надежность программного обеспечения является функцией воздействия ошибок на пользователя системы; она не обязательно прямо связана с оценкой “изнутри” программного обеспечения. Даже крупный просчет в проектировании может оказаться не слишком заметным для пользователя. С другой стороны, как будто бы тривиальная ошибка может иметь катастрофические последствия. Например, первый запуск космического корабля на Венеру потерпел неудачу из-за того, что в операторе DO программы на Фортране была пропущена запятая.

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

В этой книге термин “надежность” используется довольно свободно. Иногда он просто означает некоторую количественную меру отсутствия ошибок в программе. Смысл, вкладываемый в это слово, всегда будет очевиден из контекста.

Государственный стандарт РФ ГОСТ Р ИСО/МЭК 9126-93 “Информационная технология. Оценка программной продукции. Характеристика качества и руководства по их применению”

Утвержден постановлением Госстандарта РФ от 28 декабря 1993 г. N 267.

Надежность (Reliability)

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

Примечания:

  1. Износ или старение программного обеспечения не происходит. Ограничения надежности проявляются из-за ошибок в требованиях, проекте и реализации. Отказы из-за этих ошибок зависят от способа использования программного обеспечения и ранее выбранных версий программ.
  2. В определении ИСО 8402 “надежность - способность элемента выполнять требуемую функцию”. В настоящем стандарте функциональная возможность является только одной из характеристик качества программного обеспечения. Поэтому определение надежности расширено до “сохранения своего уровня качества функционирования” вместо “выполнения требуемой функции” (см. также 3.4).

Комплексные показатели (подхарактеристики) качества надежность:

  1. Стабильность (Maturity). Атрибуты программного обеспечения, относящиеся к частоте отказов при ошибках в программном обеспечении.
  2. Устойчивость к ошибке (Fault tolerance). Атрибуты программного обеспечения, относящиеся к его способности поддерживать определенный уровень качества функционирования в случаях программных ошибок или нарушения определенного интерфейса. Примечание - Определенный уровень качества функционирования включает возможность отказобезопасности.
  3. Восстанавливаемость (Recoverability). Атрибуты программного обеспечения, относящиеся к его возможности восстанавливать уровень качества функционирования и восстанавливать данные, непосредственно поврежденные в случае отказа, а также к времени и усилиям, необходимым для этого.

Практичность (Usability)

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

Примечания:

  1. “Пользователи” могут интерпретироваться как большинство непосредственных пользователей интерактивного программного обеспечения. Круг пользователей может включать в себя операторов, конечных пользователей и косвенных пользователей, на которых влияет данное программное обеспечение или которые зависят от его использования. Практичность должна рассматриваться во всем разнообразии условий эксплуатации пользователем, которые могут влиять на программное обеспечение, включая подготовку к использованию и оценку результатов.
  2. Практичность, определенная в данном стандарте как конкретный набор атрибутов программной продукции, отличается от определения с точки зрения эргономики, где рассматриваются как составные части практичности другие характеристики, такие как эффективность и неэффективность.

Комплексные показатели (подхарактеристики) качества практичность:

  1. Понятность (Understandability). Атрибуты программного обеспечения, относящиеся к усилиям пользователя по пониманию общей логической концепции и ее применимости.
  2. Обучаемость (Learnability). Атрибуты программного обеспечения, относящиеся к усилиям пользователя по обучению его применению (например оперативному управлению, вводу, выводу).
  3. Простота использования (Operability). Атрибуты программного обеспечения, относящиеся к усилиям пользователя по эксплуатации и оперативному управлению.

Эффективность (Efficiency)

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

Примечание - Ресурсы могут включать другие программные продукты, технические средства, материалы (например бумага для печати, гибкие диски) и услуги эксплуатирующего, сопровождающего или обслуживающего персонала.

Комплексные показатели (подхарактеристики) качества эффективность:

  1. Характер изменения во времени (Time behavior). Атрибуты программного обеспечения, относящиеся к временам отклика и обработки и к скоростям выполнения его функций.
  2. Характер изменения ресурсов (Resource behavior). Атрибуты программного обеспечения, относящиеся к объему используемых ресурсов и продолжительности такого использования при выполнении функции.

Сопровождаемость (Maintainability)

Набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций).

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

Комплексные показатели (подхарактеристики) качества сопровождаемость:

  1. Анализируемость (Analysability). Атрибуты программного обеспечения, относящиеся к усилиям, необходимым для диагностики недостатков или случаев отказов или определения составных частей для модернизации.
  2. Изменяемость (Changeability). Атрибуты программного обеспечения, относящиеся к усилиям, необходимым для модификации, устранению отказа или для изменения условий эксплуатации.
  3. Устойчивость (Stability). Атрибуты программного обеспечения, относящиеся к риску от непредвиденных эффектов модификации.
  4. Тестируемость (Testability). Атрибуты программного обеспечения, относящиеся к усилиям, необходимым для проверки модифицированного программного обеспечения. Примечание - Значения этой подхарактеристики могут быть изменены рассматриваемыми модификациями.

Мобильность (Portability)

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

Примечание - Окружающая обстановка может включать в себя организационное, техническое или программное окружение.

Комплексные показатели (подхарактеристики) качества мобильность:

  1. Адаптируемость (Adaptability). Атрибуты программного обеспечения, относящиеся к удобству его адаптации к различным конкретным условиям эксплуатации, без применения других действий или способов, кроме тех, что предназначены для этого в рассматриваемом программном обеспечении.
  2. Простота внедрения (Installability). Атрибуты программного обеспечения, относящиеся к усилиям, необходимым для внедрения программного обеспечения в конкретное окружение.
  3. Соответствие (Conformance). Атрибуты программного обеспечения, которые заставляют программу подчиняться стандартам или соглашениям, относящимся к мобильности.
  4. Взаимозаменяемость (Replaceability). Атрибуты программного обеспечения, относящиеся к простоте и трудоемкости его применения вместо другого конкретного программного средства в среде этого средства.

Примечания:

  1. Взаимозаменяемость используется вместо совместимости для того, чтобы избежать возможной путаницы со способностью к взаимодействию (см. А.2.1.3).
  2. Взаимозаменяемость с конкретным программным средством не предполагает, что данное средство заменимо рассматриваемым программным

«Сертифицированный тестировщик Программа обучения Базового уровня»

Версия 2011 от 13 апреля 2011 года, International Software Testing Qualifications Board, Андрей Конушин (председатель), Александр Александров, Алексей Александров, Татьяна Смехнова, Елена Абрамова. 36/101 страница:

Нефункциональное тестирование включает, но не ограничивается, нагрузочное тестирование, тестирование производительности, стресс-тестирование, тестирование удобства использования, тестирование восстановления, тестирование надежности и тестирование переносимости. Это тестирование того, «как» система работает.

Нефункциональное тестирование может выполняться на всех уровнях тестирования. Термин нефункциональное тестирование описывает тесты, необходимые для оценки характеристик систем и программ, которые могут быть количественно измерены, такие как время отклика при тестировании производительности. Эти тесты могут ссылаться на модели качества, такие как «Разработка программного обеспечения – Качество программного продукта» (ISO 9126). Нефункциональное тестирование рассматривает внешнее поведение программного обеспечения и в большинстве случаев использует разработку тестов методом черного ящика.

“Стандартный глоссарий терминов, используемых в тестировании программного обеспечения”

Версия 2.3 (от 9 июля 2014 года), International Software Testing Qualifications Board, ред. пер. Александр Александров. 34, 58, 59 стр.:

Инструмент тестирования производительности (performance testing tool): Инструмент для проведения тестирования производительности, обычно имеющий две основные функции: генерация нагрузки и измерения тестовых операций. Генерация нагрузки может имитировать множественных пользователей или же большие объемы данных. Во время выполнения, с определенных операций снимаются и протоколируются замеры времени отклика. Инструменты тестирования производительности обычно выдают отчеты на основе протокола тестирования и графики нагрузки относительно времени отклика.

Нагрузочное тестирование (load testing): Вид тестирования производительности, проводимый с целью оценить поведение компонента или системы под увеличивающейся нагрузкой (число одновременно работающих пользователей и/или число транзакций) для определения максимально допустимого уровня нагрузки для исследуемого компонента или системы. См. также тестирование производительности, стрессовое тестировение.

Нефункциональное тестирование (non-functional testing): Тестирование атрибутов компонента или системы, не относящихся к функциональности, то есть надежность, эффективность, практичность, сопровождаемость и переносимость.

Нефункциональные требования (non-functional requirement): Требования, относящиеся не к функциональности, а к таким аттрибутам как надежность, эффективность, практичность, сопровождаемость и переносимость.

Производительность (performance): Степень, с которой система или компонент выполняет заложенные в нее функции в установленных рамках на время обработки и пропускную способность. [IEEE 610] См. также эффективность.

Cопровождаемость (maintainability): Легкость изменения программного продукта для исправления дефектов, для соответствия новым требованиям, с целью облегчения последующего сопровождения или для адаптации к изменившемуся окружению. [ISO 9126]

Cопровождение (maintenance): Модификация программного продукта после его поставки с целью исправления дефектов, улучшения производительности или других характеристик или для адаптации продукта к изменившемуся окружению. [IEEE 1219]

Стрессовое тестировение (stress testing): Вид тестирования производительности, оценивающий систему или компонент на граничных значениях рабочих нагрузок или за их пределами, или же в состоянии ограниченных ресурсов, таких как память или доступ к серверу. [IEEE 610] См. тестирование производительности, нагрузочное тестирование.

Тестирование надежности (reliability testing): Процесс тестирования, исследующий надежность программного продукта.

Тестирование отказоустойчивости (failover testing): Тестирование при помощи эмуляции отказов системы или реально вызываемых отказов в управляемом окружении. После вызванного отказа проверяется механизм отказоустойчивости с целью удостовериться, что данные не потеряны или не испорчены, и достигнут оговоренный уровень обслуживания (например, доступности функций или время отклика). См. также тестирование восстановимости.

Тестирование переносимости (portability testing): Процесс тестирования с целью определить переносимость программного продукта.

Тестирование практичности (usability testing): Тестирование с целью определения степени понятности, легкости в изучении и использовании, привлекательности программного продукта для пользователя при условии использования в заданных условиях эксплуатации. [ISO 9126]

Тестирование производительности (performance testing): Процесс тестирования с целью определить производительность программного продукта. См. тестирование эффективности.

Тестирование сопровождаемости (maintainability testing): Процесс тестирования для определения сопровождаемости программного продукта.

13.02.2018. Перейти на Главную страницу