Тестирование часто обсуждается в контексте проверки и валидации (V & V), цель которого состоит в том, чтобы «гарантировать, что клиент получает качественный продукт, и что ни клиент, ни поставщик не обременены стоимостью переделки из-за сбоев продукта после доставки».
В этом контексте тестирование обычно рассматривается как один из нескольких методов, которые могут использоваться для поддержки V & V, и часто является наиболее интенсивным по данным из этих методов. В дополнение к тестированию, другие методы V & V включают анализ, проверку свойств и простую демонстрацию функциональности.
В контексте V & V тесты часто предназначены для демонстрации того, что проект ведет себя так, как ожидалось и как указано в технических требованиях, до его выпуска. Как таковое тестирование тесно связано с качеством. В частности, качество может рассматриваться как способность продукта удовлетворять явные или неявные потребности, а тестирование может помочь выявить и устранить недостатки качества.
Общие затраты, связанные с качеством, можно разложить на три компонента:
- стоимость выполнения операций верификации, валидации и тестирования VVT
- стоимость доработки для исправления ошибок качества, обнаруженных во время этих операций VVT
- стоимость обработки ошибок качества, которые не обнаружены VVT.
Общая стоимость качества может быть сведена к минимуму путем надлежащего планирования деятельности VVT, которая потенциально влияет на все три компонента, описанных выше.
Планированию могут помочь такие методы, как «Дизайн экспериментов» для планирования отдельных тестов на микроуровне, «Анализ сбоев режимов и анализ эффектов» (DFMEA), чтобы помочь определить, где тестирование может быть полезным и методы оптимизации общей стратегии VVT .
Отдельные тесты или план тестирования сами по себе могут содержать недостатки или быть плохо спроектированы, так что тесты дают неверную или неполную информацию. Поэтому в целом внимание к качеству тестирования и более широкому плану V & V важно для обеспечения качества проектируемого продукта или системы.
Помимо V & V, тестирование также играет другие роли в процессе разработки:
- Тестирование может быть предпринято для обучения в отношении дизайна, например, чтобы понять или усовершенствовать новую технологию, или исследовать пространство дизайна. Аналогичным образом, пользовательское тестирование может быть интегрировано в процесс проектирования, чтобы получить обратную связь с заинтересованными сторонами о появившемся дизайне, что может быть полезно в ситуациях, когда потребности сложно выразить и / или формализовать в виде технических требований.
- Тестирование может генерировать информацию и знания о тестовом устройстве и методе тестирования, тем самым способствуя пониманию того, как будущие тесты могут быть наиболее полезными.
- Тестирование может выявить информацию о моделях или допущениях, использованных в процессе проектирования, что поможет улучшить их.
Тестирование может быть относительно простым для простых проектов или может включать сложные процессы сами по себе. Например, в авиационных программах должны быть спроектированы, изготовлены и введены в эксплуатацию крупномасштабные испытательные стенды с учетом специфики каждой конструкции.
Тестирование также требуется в производственных процессах как неотъемлемая часть обеспечения качества, хотя обсуждение этого вопроса выходит за рамки настоящей статьи.
Другим видом деятельности, тесно связанным с тестированием, является создание прототипов . Прототип, определяемый как «предпроизводственное представление некоторого аспекта концепции или окончательного проекта» , требуется для многих ситуаций тестирования, хотя прототипирование может иметь и другие цели, например, для поддержки связи между проектами.
.
Сложность конструкции
Можно ожидать, что увеличение сложности конструкции приведет к увеличению сложности тестирования. В частности, каждый дополнительный компонент или подсистема в проекте требует дополнительного тестирования и валидации .
Точно так же, более сложные интерфейсы означают, что в процессе интеграции можно ожидать больше проблем, и тем более важной ролью тестирования может быть их обнаружение и устранение .
Другой проблемой, связанной со сложностью тестирования, является количество комбинаций параметров тестирования, необходимых для выявления всех недостатков.
Часто система будет зависеть от множества факторов при использовании, и в конструкции со значительной внутренней сложностью недостатки вряд ли будут обнаружены при изменении этих условий по одному. Например, в исследовании приложения базы данных НАСА только 67% недостатков были выявлены при тестировании по одному фактору; 93% путем тестирования всех возможных парных комбинаций факторов, отклоняющихся от номинальных значений; и 98% по всем трехсторонним комбинациям .
Этот пример из области программного обеспечения. Тем не менее, те же проблемы можно ожидать при тестировании аппаратных продуктов с участием значительных программных компонентов.
В тех случаях, когда число перестановок в сочетании с индивидуальными затратами на тестирование слишком велико для проведения исчерпывающего тестирования, как в большинстве реальных ситуаций, может быть особенно важно рассмотреть вопрос о том, как можно оптимизировать стратегию тестирования .
Тестирование может быть сосредоточено на частях системы (называемых модульным тестированием в контексте разработки программного обеспечения) на конкретных комбинациях частей (называемых интеграционным тестированием) или на поведении всей системы.
При физическом тестировании сложных аппаратных продуктов, тестирование всей системы, в частности, может быть дорогостоящим и занимать много времени. В некоторых случаях запуск тестов на всей системе перед развертыванием может оказаться невозможным вообще.
Тестирование и связанные с ним действия особенно сложны в контексте систем систем, и для этого требуется иной подход к тестированию в традиционной системной инженерии, поскольку задействовано много составляющих систем, со временем развиваются подсистемы со значительной управленческой независимостью, так что возникающее поведение может быть ожидается, и операционная среда, как ожидается, будет включать в себя значительные будущие неизвестные.
В таких условиях исчерпывающее тестирование невозможно, и необходимо управлять сложностью тестирования, выявляя и концентрируя внимание на критических подсистемах и взаимодействиях.