четверг, 8 ноября 2012 г.

Lesson 200

И о политике.

Было плохо им обоим менее полмесяца, а потом Иван просрался, а Сергей повесился. ЧиЖ «Диалог»

Слово Канеру

Чем более независимые измерители покрытия вы используете, тем больше вы знаете.

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

Вместе с количеством ошибок, покрытие строк кода считается полезным для демонстрации того, как далеко вы находитесь от полного покрытия. Если вы проверили только 10% строк кода, вы не должны иметь уверенность в надежности ПО. Но когда вы получили 100% покрытие - это не значит, что вы близки к релизу. Это значит, что согласно этому измерению, продукт недалеко от релиза. (See Marick 1999 для дополнительных комментариев по этому показателю)

Предположим, что вы разрабатываете продукт для массового рынка. Вы решили проверить его на десятках различных версий Windows, под десятью разными браузерами, использующих 10 разных видов соединений (модемы с разной скоростью, Ethernet и т. д.), и так для нескольких других значений переменных конфигурации. Программа должна быть совместима со всем и протестирована на все сто.
- После того, как вы проверили продукт на первых нескольких конфигурациях запущенные тесты уже не смогут выполнить ни одну лишнюю строку или ветку кода. Если мы считаем, что строки кода являются мерой полноты тестирования, то нам нужно отменить конфигурационное тестирование. Это решение, вероятно, было бы губительным для массового рынка.
- Если существуют 100 конфигураций, а вы проверили 30 из них, то у вас есть еще одна метрика покрытия, не зависящая от строк кода, но по-прежнему важная. Вы протестировали 30 процентов конфигураций.


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

Любой процент может быть полезен. Ни один из них не измеряет что-то большее, чем ваш прогресс по какому-либо измерению, будь то линии кода, проверенные конфигурации, потоки, риски (деление на ноль, ошибка заключается в отсутствии кода для перехвата) или что-либо иное. Вы можете придумать сотни измерений для каждого класса отказов (Kaner 1995a and 2000a).

Даже это является упрощением. Один наш обозреватель, Noel Nyman, объяснил: «Это значит, что все наши тесты имеют равную стоимость, равную единице. Тесты, так же как и дефекты, имеют разную критичность, время выполнения. We may have run 80% of our tests and still have 50% of our most important tests remaining to be done. Любая метрика, игнорирующая это и говорящая о полном покрытии дает недостоверную информацию, а следовательно, ложные надежды.»

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

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