FORESIGHT Pro

Управление тестированием, валидацией и верификацией систем

 

1. Введение

Современный мир изобилует техническими устройствами разной степени сложности. Практически любое действие, которое хочет совершить человек, связано с использованием приборов и устройств. Чем сложнее действие – тем более сложное устройство приходится использовать. Чем сложнее устройство – тем более сложное программное обеспечение должно обеспечить его бесперебойное функционирование. Вокруг себя мы видим большое количество приборов, компьютеров, программ, систем, реализующих наши повседневные потребности, помогающих в работе, учебе, лечении, перемещении и других полезных и приятных делах. Всегда неприятно видеть, что устройство вместо выполнения своих прямых функций «висит», «тормозит» или просто ломается. Особенно разрушительные последствия отказов устройств мы получаем в отраслях с повышенным уровнем риска, где жизненно необходимо обеспечивать отказоустойчивость и отказобезопасность приборов и устройств, нужное время выполнения операций в сложных системах – примерами таких отраслей могут быть авиация, флот, медицина, атомная промышленность и многие другие.

 

2. Типы ошибок

Ошибки, допущенные на разных уровнях разработки продуктов (будь то программа, прибор, сложная система), несут компаниям разный по масштабу урон – безопасности, финансам, имиджу. Из-за чего возникают ошибки? Из-за недостаточно скрупулезных проверок, не выявленных вовремя несоответствий требованиям, неправильно разработанных требований и других подобных причин. В зависимости от предметной области возникающие ошибки могут быть разных типов. Каждая отрасль фиксирует свою иерархию таких ошибок на уровне стандартов, нормативов и требований, выполнение которых должно предотвратить возникновение неполадок и проблем. Например, авиационный стандарт 2011 года RTCA DO-178C (и соответствующий ему EUROCAE ED-12C) определяет следующую классификацию уровней программного обеспечения в зависимости от уровня отказных состояний, которые может спровоцировать данное ПО (Таблица 1).

 

 

Таблица 1. Определение уровней программного обеспечения по DO-178C/ED-12C

 

3. Путаница понятий

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

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

Изучив стандарты и другие нормативные документы, можно овладеть лучшими практиками и перейти от проверок к пониманию подходов тестирования, валидации и верификации. Область проверки соответствия какого-то результата каким-то требованиям достаточно широка, поэтому часто возникает путаница понятий. Разберем значения основных терминов (Рисунок 1).

 

 

Рисунок 1. Облако понятий

 

Что и на соответствие чему мы проверяем? Чтобы оценить, соответствует ли какой-то параметр нужному значению или требованию, этот параметр нужно измерить. 

 

3.1. Характеристики качества

Определим сначала параметры, которые можно и нужно измерять в контексте оценок качества. Некоторые из характеристик качества программного обеспечения по ГОСТ 28806-90 (Качество программных средств) и ГОСТ 9126-93 (Оценка программной продукции) приведены в таблице ниже (Таблица 2).

 

 

 

Таблица 2. Характеристики качества ПО по ГОСТ 288806-90 и ГОСТ 9126-93

 

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

 

3.2. Валидация, верификация и другие термины

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

Ниже (Таблица 3 и далее) приведены определения таких понятий и терминов, как валидация, верификация, обеспечение качества, контроль качества, тестирование.

 

 

Таблица 3. Валидация и верификация

 

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

Контроль качества - Quality Control – комплекс мероприятий, результатом которых является оценка качества результирующего продукта и анализ несоответствия результата предъявляемым требованиям.

Тестирование - Testing – испытания, тестирование, каким мы хотим его видеть, по сути и должно являться контролем качества.

 

4. О тестировании

Тестирование может быть разных типов в зависимости от этапа жизненного цикла, объекта тестирования, цели, имеющейся информации и других факторов. В качестве примеров можно привести ручное и автоматизированное тестирование, регрессионное тестирование и тестирование производительности, есть и другие виды. Некоторые виды тестирования отображены в облаке на рисунке ниже (Рисунок 2).

 

 

Рисунок 2. Облако видов тестирования

 

4.1. Валидация требований 

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

Валидация требований – процесс проверки требований на то, что они действительно описывают именно ту систему, которую пользователь хочет видеть. Процесс валидации требований смежен с анализом требований, так как он напрямую касается поиску проблем в требованиях. Валидация требований – очень важные процесс по причине того, что ошибки в требованиях приводят к огромным финансовым потерям на исправление этих ошибок. Эти затраты тем больше, чем на более позднем этапе жизненного цикла произошло выявление ошибок в требованиях (Рисунок 3). 

 

 

Рисунок 3. Рост стоимости исправления ошибок в требованиях

 

Причина такого роста очень проста – изменение в требования обычно влечет за собой необходимость проведения проектирования и разработки заново. А следовательно, продукт должен подвергнуться повторному тестированию, валидации и верификации на соответствующих стадиях жизненного цикла. Процесс валидации требований состоит из проверок, совершаемых в соответствии с определенными техниками (Ian Sommerwille “Software Engineering”).

Чтобы оценить качество проведенных испытаний, можно использовать метрики оценки качества тестирования. Одной из таких метрик является тестовое покрытие – насколько требования покрыты тестами.

 

5. Процесс управления тестированием, валидацией и верификацией

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

 

 

Рисунок 4. Эволюция требования в ходе ЖЦ

 

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

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

 

6. Наш опыт

  • Разработка и внедрение процессов управления тестированием на предприятиях
  • Разработка и внедрение комплексного процесса управления качеством
  • Постановка и сопровождение процессов автоматизации тестирования
  • Постановка и сопровождение сквозных процессов управления тестированием, валидацией и верификацией в связке с процессами управления требованиями и другими процессами программной и системной инженерии
  • Тестирование встроенных приложений и систем, сложных систем
  • Обучение методологии и технологиям реализации процессов тестирования, менторинг
  • Подбор методологий и инструментария под требования Заказчика