четверг, 16 октября 2014 г.

Урок 4. Слайд 201-202

Снежок...


Поехали:


Слайд 201
Вы достигните покрытия ветвей, если пройдете все операторы и все ветви.
Подавляющее большинство программистов и консультантов считают, что мы получаем 100% покрытия кода, если имеем 100% покрытия ветвей. Это глупо.
Со структурной точки зрения, вопиющая ошибка этого утверждения в том, что оно не учитывает прерывания. Операционная система может переключать контроль с программы на обработчик прерывания в любой момент выполнения программы и настолько, насколько нужно. Состояние системы за это время может изменится способом, который критичен для вас. Другое ПО может изменить данные на диске, в памяти, занять ресурсы, замедлить обработку ваших данных или могут случиться другие подобные вещи до того, как вы будете готовы работать с ними. Все это может вызвать сбои. Также все это может вызвать сбои в системе, на которой работает программа.
Я рассматриваю прерывания как ветви. Можно рационализировать их игнорирование, так как тестировать прерывания достаточно проблематично. Их нельзя увидеть в коде. Кроме того, обычно программисты не учитывают их в коде. Таким образом нельзя сказать, что мы учитываем эти ветви, когда говорим о покрытии кода.
И было бы неправильным говорить о полном покрытии кода, когда есть масса путей вызвать сбой.


Слайд 202
Продолжаем говорить о структурном покрытии (и игнорируем прерывания). Следующий уровень - многопараметрическое покрытие. Мы проверяем все комбинации логических переменных. Мы не просто проверяем обе ветви в двух условиях. Мы проверяем комбинации да-да, нет-нет, да-нет, нет-да, то есть нам  нужны 4 теста.
Есть способы оптимизации для уменьшения количества тестов при достижении этого варианта покрытия. Но, тем не менее, нам все равно понадобится больше тестов, чем при покрытии ветвей.

Комментариев нет:

Отправить комментарий