Философия тестирования — Тестирование программного средства

ФИЛОСОФИЯ ТЕСТИРОВАНИЯ

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

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

Ни одна из этих крайностей не является хорошей стратегией. Первая из них, а именно та, в соответствии с которой программа рассматривается как «черный ящик», предпочтительней. К сожа­лению, она страдает тем недостатком, что совершенно неосуще­ствима. Рассмотрим попытку тестирования тривиальной програм­мы, получающей на входе три числа и вычисляющей их среднее арифметическое. Тестирование этой программы для всех значе­ний входных данных невозможно. Даже для машины с относи­тельно низкой точностью вычислений количество тестов исчис­лялось бы миллиардами. Даже имея вычислительную мощность, достаточную для выполнения всех тестов в разумное время, мы потратили бы на несколько порядков больше времени для того, чтобы эти тесты подготовить, а затем проверить.

Такие програм­мы, как системы реального времени, операционные системы и программы управления данными, которые сохраняют «память» о предыдущих входных данных, еще хуже. Нам потребовалось бы тестировать программу не только для каждого входного зна­чения, но и для каждой последовательности, каждой комбинации входных данных. Поэтому исчерпывающее тестирование для всех входных данных любой программы неосуществимо.

Эти рассуждения приводят ко второму фундаментальному принципу тестирования: тестирование — проблема в значитель­ной степени экономическая. Поскольку исчерпывающее тестиро­вание невозможно, мы должны ограничиться чем-то меньшим. Каждый тест должен давать максимальную отдачу по сравнению с нашими затратами. Эта отдача измеряется вероятностью того, что тест выявит не обнаруженную прежде ошибку. Затраты из­меряются временем и стоимостью подготовки, выполнения и про­верки результатов теста. Считая, что затраты ограничены бюд­жетом и графиком, можно утверждать, что искусство тестирова­ния, по существу, представляет собой искусство отбора тестов с максимальной отдачей.

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

Популярные статьи

 

БАНКИ ДАННЫХ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ УПРАВЛЕНИЯ
ДОСТОИНСТВА И НЕДОСТАТКИ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ОБРАБОТКИ ДАННЫХ
ВИДЫ ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ 
ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ АЛГОРИТМОВ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ АВТОМАТИЗАЦИИ ОФИСА
КОМПЛЕКСНОЕ ТЕСТИРОВАНИЕ
КОМПОНЕНТЫ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ АВТОМАТИЗАЦИИ ОФИСА
АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО СПЕЦИАЛИСТА
ЭТАПЫ РАЗВИТИЯ ИНФОРМАТИЗАЦИИ
ПОНЯТИЕ МУНИЦИПАЛЬНОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ 
РЕЖИМЫ ОБРАБОТКИ ИНФОРМАЦИИ
ФУНКЦИИ АВТОМАТИЗИРОВАННОЙ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ
МЕТОДЫ ОБЕСПЕЧЕНИЯ НАДЕЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ
ПРАВИЛА ЗАЩИТЫ ОТ КОМПЬЮТЕРНЫХ ВИРУСОВ
ДОКУМЕНТАЛЬНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ
ПРОТОКОЛЫ ТЕСТИРОВАНИЯ
ДЕСТРУКТИВНЫЕ ВОЗМОЖНОСТИ ВИРУСОВ
КЛАССИФИКАЦИЯ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КОНЦЕПТУАЛЬНАЯ, ЛОГИЧЕСКАЯ И ФИЗИЧЕСКАЯ МОДЕЛИ
КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ ПОДГОТОВКИ ТЕКСТОВЫХ ДОКУМЕНТОВ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ЭКСПЕРТНЫХ СИСТЕМ
ДИАЛОГОВЫЙ РЕЖИМ АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ ИНФОРМАЦИИ
ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ