10 Тестирование программного обеспечения
Эта книга — о тестировании в условиях, когда те, с кем вы
работаете, не следуют, не хотят и не должны следовать
правилам.
На деле при разработке программного обеспечения бюджет всегда
слишком мал, сотрудников не хватает, согласия между ними для выработ-
ки единой линии добиться трудно, а работа при этом должна быть выпол-
нена "на вчера".
Качество большого продукта зависит от работы каждого, кто его проек-
тирует, программирует, тестирует и документирует. Никакие стандарты и
спецификации, никакой контроль и отслеживание изменений не гаранти-
руют качества продукции. Все зависит только от людей — их работоспособ-
ности, мастерства и умения работать в команде. Только это определяет
результат, а никак не правила.
У команды разработчиков имеется определенное видение будущего
продукта, горячее желание осуществить задуманное и понимание того, что
во многом работа будет делаться методом проб и ошибок. К тому време-
ни, когда каждый аспект разработки прорисуется до деталей, будет сфор-
мирована рабочая версия проекта, которую смогут понять и охватить
целиком один-два ведущих специалиста. Эта версия и называется специфи-
кацией. Спецификация не выгравирована на камне: позднее она не раз еще
будет пересматриваться и усовершенствоваться, пока не будет достигнута
полная согласованность со всей системой. И выполняя тестирование, вы
тоже примете участие в этой работе.
В реальной жизни изменения вносятся в продукт даже в самом конце
разработки. Если, например, программа разрабатывается на продажу, ваши
пользователи — потенциальные пользователи — ни на какую спецификацию
не соглашались. И если конкурент создает нечто более привлекательное,
отвечать приходится быстро.
Как часто приходится отказываться от внесения в программу полезных
дополнительных возможностей из-за нехватки времени. И часто первая
рабочая версия фрагмента, которую никак нельзя назвать профессиональ-
ной, остается последней, поскольку переписывать ее некогда. Бывает, что
программист "втихаря" по собственной инициативе все же выполнит нуж-
ную работу и без предупреждения внесет в проект значительные измене-
ния. Такая работа делается не по обязанности, сверх положенных 40 часов
в неделю. Она может значительно улучшить проект, а может и серьезно его
дестабилизировать на некоторое время. Но каким бы ни был результат,
личная инициатива всегда направлена на улучшение проекта.
Изменения в конце разработки есть всегда, и они нужны. Главное —
справиться с ними с минимумом потерь. Не стоит разводить бюрократию,
Предисловие 11
пытаясь запретить такие изменения. Профессионализм сотрудников груп-
пы тестирования заключается в том, чтобы принять реальность такой, как
она есть, не жалуясь и не пытаясь бороться с ней запретами, и успешно
закончить тестирование продукта вместе с внесенными изменениями.
Для кого предназначена эта книга
Эта книга предназначена для того, кто выполняет тестирование про-
граммного кода, обычно написанного кем-то другим. В ней обсуждаются
вопросы и решения, которые на наш взгляд интересны и полезны такому
человеку. Поэтому рассказ наш не академичен, в нем не затрагиваются
такие классические темы, как доказательства правильности программного
кода. Мы постарались больше уделить внимания темам, не характерным
для учебников, как, например, межличностные взаимоотношения и корпо-
ративная политика. Судить о работе других людей приходится даже начи-
нающему тестировщику — в этом суть тестирования. За высказывание
своих суждений тестировщики нередко подвергаются нападкам со стороны
разработчиков. (Бывает, что и заслуженно.) Поскольку группа тестирования
работает с программой последней и ее результаты у всех на виду, ее ответ-
ственность всегда оказывается больше возможностей — положение поли-
тически самое невыгодное. Решения этой проблемы у нас нет. Однако мы
готовы поделиться своим опытом в том, как повысить эффективность ра-
боты и избежать некоторых неприятных моментов и ошибок.
Поговорим мы также и об управлении проектом. Оценка, планирование
и составление календарного плана работ по тестированию программного
продукта — задача не из легких, ведь конечная точка фактически не опре-
делена. Всегда остаются тесты, которые еще полезно было бы провести, и
риск, связанный с отказом от их выполнения. Специалист по тестированию
должен это хорошо понимать и принимать во внимание при планировании
работ. Например, можно отложить важный тест, чтобы в совершенстве
выполнить другую часть работы, а потом обнаружить, что времени на от-
ложенный тест уже нет. В результате, пытаясь выполнить работу лучше, вы
на самом деле сделаете ее хуже. К сожалению, ситуация эта очень типич-
на. Поэтому в нашей книге много внимания уделено вопросам эффектив-
ности и правильной расстановки приоритетов.
Бывает, что при тестировании программного продукта приходится иметь
дело с ошибками, допущенными еще на стадии проектирования. Програм-
ма может в точности соответствовать спецификации, но, если специфика-
ция содержит ошибки, такая программа, увы, для работы не годится.
Часто в литературе, посвященной вопросам надежности программного
обеспечения и методикам его тестирования, совсем не уделяется внимания
пользовательскому интерфейсу программ. Ее авторы считают, что этим