48 Часть I: Основы
ошибки да ошибки! Когда же наконец вы подтвердите, что программа
работает и мы можем ее продавать?" Столкнувшись с таким отношением,
не стоит теряться. Убедиться, что программа работает — это мечта неопыт-
ных менеджеров, а вовсе не ваша задача.
Не стоит приступать к тестированию с надеждой на
отсутствие ошибок
Для работы тестировщика очень важно то, как он настроен (Майерс,
1979). Если вы уверены, что в программе есть ошибки, вы будете искать их
гораздо тщательнее, чем если скажете себе: "Это прекрасная программа, и
она правильно работает, мне нужно просто в этом убедиться". Любой пси-
холог охотно подтвердит, что человек всегда видит только то, что хочет
видеть. Поэтому, например, так трудно при чтении текста заметить в нем
орфографические ошибки: ведь ум сразу корректирует увиденное глазами.
Изучая работу различных исследователей ученые-психологи выявили
ряд интересных закономерностей. Они обнаружили, что, если исследова-
тель подсчитывает количество определенных сигналов, регистрируемых не
приборами, а его собственными органами восприятия, результаты подсче-
тов очень сильно зависят от его ожиданий (Green & Sweets, 1966). Напри-
мер, если исследователь предполагает, что сигналов будет мало, он может
часть их просто не заметить. Если к влиянию собственных предположений
исследователя добавляются еще и другие психологические факторы, напри-
мер, поощрение при одних результатах исследования и неприятности при
других, результаты эти будут искажены еще сильнее.
То же будет и с вами: если вы ожидаете, что программа полна ошибок,
за выявление которых вас к тому же еще и поощряют, то обнаружите их
множество. Несколько выявленных ошибок будут даже ложной тревогой.
Но если вы думаете, что программа работает правильно, а заказчики еще
и жалуются на каждую найденную ошибку и очень недовольны, если тре-
вога оказывается ложной — тогда вы пропустите много серьезных проблем.
А вот еще одно наблюдение психологов: даже самые умные, опытные,
аккуратные и ответственные экспериментаторы подсознательно пропускают
те тесты, которые могут опровергнуть их теорию или создать сложности в
дальнейшей работе. Если же пропустить тест невозможно, его результаты
неверно интерпретируются, игнорируются или при их анализе допускаются
ошибки (Rosenthal, 1966).
Итак, чтобы лучше всего выполнить свою работу, нацельте себя на
выявление максимального количества ошибок. Нужно считать программу
плохой, желать, чтобы в ней произошел сбой, и концентрироваться на
поиске ее самых слабых мест.
Какой бы суровой ни казалась такая позиция, именно она наиболее
эффективна.
Глава 2: Желаемое и действительное в жизни тестировщика 49
Если вы хотите, чтобы программа работала, если вы этого
ждете, то, скорее всего, вы увидите то, чего ждали, и
пропустите имеющиеся ошибки. А рассчитывая найти ошибки,
вы обязательно их найдете. Если за отчеты об ошибках вас
ожидают неприятности, вы не только не составите нужных
отчетов, но даже не заметите самих ошибок.
Итак, для чего же тестируют программы?
Всех ошибок все равно не найти. И вы никогда не сможете сказать с
уверенностью, что программа работает правильно. Так зачем же ее тести-
ровать?
Программу тестируют для того, чтобы найти в ней ошибки
Смысл тестирования заключается в поиске проблем. Ваша цель — найти
их как можно больше, и чем серьезнее найденные проблемы, тем лучше.
Помните, что времени всегда очень мало, и старайтесь использовать его
как можно эффективнее. Мы еще не раз с вами поговорим о том, как
правильно спланировать работу и как расставить приоритеты (в частности,
в главах 7, 8, 12, 13). Главное же, на что нужно опираться, можно сфор-
мулировать очень просто.
Если тест позволил выявить проблему, значит, он успешный.
А тест, не выявивший проблем, был потерей времени.
Эту мысль подтверждает одна очень наглядная аналогия (Майерс, 1979).
Представьте, что с вашим здоровьем что-то не в порядке. Вы приходите к
врачу, и он проводит целый ряд анализов. Однако врач ничего не находит
— он утверждает, что вы здоровы. Хороший ли он диагност? Если вы в
самом деле больны, остается признать, что врач некомпетентен, а дорого-
стоящие анализы были пустой тратой сил, времени и денег. При тестиро-
вании диагност — это вы, а программа (абсолютно наверняка) — больной
пациент. Так найдите же, что с ней не так!
Ошибки ищут для того, чтобы их исправить
Вконечном счете большинство найденных ошибок исправляют, и ка-
чество программного продукта улучшается. Это и есть настоящая цель
тестирования — согласитесь, что, несмотря на суровое обращение тестиров-
--в с программой, она весьма благородна.