Сказка о тестировании

http://www.ayeconference.com/test-trimming-a-fable-about-testing/
  • Перевод

От переводчика


Хотелось бы поделиться переводом сказки (или даже басни), написанной Джеральдом Уинбергом, автором известной книги «Психология программирования». Сказка повествует о неприятных последствиях «вырезания» тестирования из процесса разработки ПО.
Несмотря на то, что контекст, в котором сказка подает процесс «готовки-разработки» довольно утопичен (знаем, что, когда и как), сама мысль, лежащая в её основе, универсальна и близка многим, работавшим в компьютерной индустрии. К тому же форма, в которой она подана, весьма ненавязчива и оригинальна.
Приятного чтения.


Сказка о тестировании


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

Я не раз писал о том, как опасно урезание тестирования, но, похоже, меня так никто и не понял. Это заставило меня задуматься: «А что, если я делаю что-то не так? Что, если я на самом деле не следую тем правилам, которые навязываю другим? Что, если я сам «урезаю» тестирование? Может быть, мне следовало бы получше тестировать собственную писанину!»

В результате таких размышлений я написал сказку о том, как опасны короткие пути, и рассказал её своей внучке Камилле. Вот она:

Ревеневый пирог для Лесной Королевы


С самого утра лес гудел от возбуждения. Ворон только что объявил, что всего через два часа сама Лесная Королева посетит их, чтобы выбрать себе нового Королевского Пекаря.

«Она хочет устроить турнир пекарей, — важно прокаркал Ворон. — Победитель получит звание Королевского Пекаря и сто золотых впридачу!»

«Что же нам надо ей испечь?» — проревел Медведь.

«Ревеневый пирог, — ответил Ворон. — Это её любимое лакомство».

Кролик начал нервно бегать вокруг куста, причитая: «Ревеневый пирог? Но Королева будет тут всего через два часа, а мне, чтобы приготовить пирог, нужно целых три».

«И мне тоже», — пожаловался Койот.

Медведь от волнения начал точить когти о кору ближайшего дерева: «И мне».

Тем временем из большой норы вылезла Мудрая Дикобразиха и тут же направилась к своей кухне. «Раз так, лучше поскорее приступить к делу, а не тратить время на пустые жалобы».

И каждый из пекарей начал думать, как бы им приготовить ревеневый пирог за два часа.

«О, знаю, — подумал Кролик. – Больше всего времени теряешь из-за того, что приходится добавлять немного сахара каждые пять минут, да еще постоянно пробовать на вкус. Вовсе это не обязательно. Сразу положу столько сахара, сколько нужно, и выиграю на этом целый час».

Медведь рассуждал так: «У меня самая большая духовка во всем лесу, поэтому я положу пирог на самый её верх, там горячее всего. А топить буду яблоневыми ветками, они лучше всего горят. Пирог изжарится в момент и как раз будет готов к приезду Королевы».

У Койота не было такой большой печки, но и он нашел короткий путь: «Если я буду печь на час меньше, то пирог, может, и окажется немного сыроват, но я положу туда столько сахара, что из-за его сладости Королева ничего не заметит».

А вот Дикобразиха думала совсем по-другому: «Мой ревеневый пирог один из самых вкусных в лесу, но если я как-нибудь попытаюсь ускорить готовку, то почти наверняка ничего не получится. Придется объяснить Королеве, что пирог не будет готов вовремя, зато он будет стоить своих ожиданий».

К приезду Королевы Кролик, Медведь и Койот уже выставили свои пироги на столики и пригласили Королеву их отведать.

Первым Королева попробовала пирог Кролика и недовольно сморщила нос. «Фу, он совсем горький. Ты что, пожалел на него сахара?»

Взглянув на пирог Медведя, она удивилась: «Почему он так сильно подгорел? Ну, может начинка будет вкусной». Она попыталась отрезать кусочек, но корка так сильно подгорела, что никак не поддавалась ножу. Королева направилась к столику Койота, даже не попробовав пирог Медведя.

Она начала резать пирог Койота: «Что-то он мягковат. Ой, да он мягкий как студень. Мы думаем, что он будет противный на вкус». (Королевы всегда говорят «Мы», потому что думают, что говорят от имени целого народа). Королева состроила пирогу рожицу и отказалась его пробовать.

Наконец Королева повернулась к столику Дикобразихи. Не увидев пирога, она возмущенно спросила: «Почему здесь ничего нет? Мы приказали ВСЕМ пекарям приготовить по пирогу. Кто тут смеет не подчиняться Королевскому Указу?»

Дикобразиха вышла к Королеве, поклонилась ей и сказала: «Мой пирог сейчас в печке, Ваше Величество. Вы сможете его отведать ровно через час».

«Но по Нашему приказу пирог должен был быть готов УЖЕ СЕЙЧАС! — воскликнула Королева в ярости. – Такова Королевская Воля и никто не смеет ей перечить!»

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

«Хм», — пробурчала Королева, выбирая подходящее наказание.

Пока она думала, Дикобразиха стряхнула с себя листья и сказала: «Но все-таки мой пирог уже в духовке. Как видите, от одного его запаха слюнки текут. Через час он будет готов и вы сможете его как следует распробовать. А пока я с радостью расскажу вам сказку, чтобы скоротать время».

«Какую сказку?» — с любопытством спросила Королева.

«Про Принцессу и Горошину», — предложила Дикобразиха. Королева обрадовалась, ведь эта сказка была про неё, когда она еще была маленькой принцессой. Королева внимательно слушала сказку, весело смеялась, жалобно плакала и от души хлопала в ладоши – час прошел совсем незаметно.

И вот Дикобразиха надела рукавицы, открыла духовку и вытащила ревеневый пирог. Он так понравился Королеве, что она съела его целиком, оставив Дикобразихе только совсем маленький кусочек. Затем она протянула ей мешочек с сотней золотых и объявила всем жителям леса, что Дикобразиха, пусть и отпускает иногда колкости, все-таки самый лучший пекарь в лесу, и отныне будет Королевским Пекарем.

**********


Когда я закончил свой рассказ, то спросил у Камиллы, какая же у сказки мораль. Она ответила: «Медведь, Кролик и Койот не были настоящими пекарями. Они только притворялись ими, потому что хотели выиграть турнир. На самом деле они не знали, как приготовить настоящий пирог»

«Хорошо», — сказал я – «А ты не думаешь, что они знали, но боялись гнева Королевы».

«Если ты боишься делать то, что кажется тебе правильным, то ты не настоящий пекарь».

Камилла поняла сказку абсолютно правильно и прошла мой тест – и это при том, что ей не исполнилось и пяти лет!

Интересно, поймут ли эту сказку сорокалетние менеджеры?
Поделиться публикацией

Комментарии 32

    +33
    «а пока проект не укладывается в сроки рассказываем заказчикам сказки» :)

    проблема не столько в том, что мы пытаемся сократить время, опуская какие-то шаги, сколько в том, что мы не знаем, сколько времени займет «приготовление» продукта — отсюда и срывы сроков, установленных «от балды».
      +6
      В этом плане Уинберг, конечно, берет идеальную ситуацию — «Знаем, что надо сделать, знаем, как надо сделать, знаем, когда сможем сделать, но заказчик противная злюка».
      Мне тут очень нравится сама мораль про «не бойся делать то, что правильно».
        0
        но все относительно, к сожалению (или к счастью?)

        возьмем такой пример:
        есть ТЗ, по нему разработчики должны сделать систему.
        Как водится, сроки не реальны, а выпуск затягивается. Такое положение вещей известно заказчику, и он готов внедрить и использовать ту часть, которая будет реализована к сроку, а остальное будет внедрено через некоторое время по мене готовности продукта.

        будет ли менеджер в данном случае перечить заказчику и не отдавать «недопеченый» продукт? наверно, нет. хотя отдавать неготовую систему не очень-то «правильно».
          +1
          Я бы не сказал, что это «неправильно» — качество готового функционала, судя по всему, удовлетворяет заказчика.
          В этом случае сказку можно модифицировать следующим образом: вместо пирога будет печенье, а за отведенное время можно приготовить только один протвинь, а не нужные два. И смысл останется примерно тот же. :)
            +1
            да, так получается ближе к истине :)

            а сказка получается не про тестирование, а про управление проектами в целом.
              +1
              Тестирование — неотъемлемая часть процесса разработки, так что неудивительно.
            0
            «хотя отдавать неготовую систему не очень-то «правильно»»
            Да нет, это как раз нормально — для этого и используются (в ИТ) адаптивные подходы и короткие итерации. Такой подход должен принять на вооружение (ну а как минимум — во внимание) каждый современный менеджер ИТ-проекта.
              0
              Но ведь, исходя из постоянной практики не реальных сроков и затягивающихся выпусков, можно заранее продумать минимальный функционал, который устроил бы клиента и запускать проект версиями — первая, вторая и так далее. Опять же вопрос не столько тестирования, сколько грамотной работы менеджера.
                +1
                а это называется итеративная разработка, и она применяется часто. Этот подход гарантирует, что мы получим рабочий продукт раньше, и при этом заказчик получит то, что хоть как-то, но решает его задачи.

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

                  Тестирование для Уинберга — это больная тема, поэтому он про него во вступлении и говорит.
                  А так его можно заменить любым процессом, без которого гарантировать качество становится проблематично — планированием, управлением рисками и т.п.
                0
                Соглашусь, в отличии от пирога, в программировании нет идеальных рецептов и сроков, по этому при приблизительной оценки «идеального» срока, надо учитывать слишком много факторов…
              +3
              Agile-мудрая-дикобразиха выдала бы королеве начинки по-отдельности. Потом — испеченное «тело» пирога. К тому времени принцесса, которая обожралась варенья и сахара по-отдельности, сказала бы «Спасибо, больше не могу!»

              Был бы рулез :)
                +3
                Думаю, неправильное сравнение с agile. Agile используется именно потому что нужно держать качество на высоком уровне. Его можно сравнить с аналогичной сказкой, но когда королеве нужно 100 пирогов, и они выдаются ей партиями, скажем, по 20.
                +2
                Во время чтения, вспомнилась мне история создания продукта «Галактика».
                Вот только так и не определился, кто из зверей больше всего подходит на автора сего продукта :)
                  0
                  Королева!
                  Она отвечала за выпуск и просто взяла пирог из печки, не спросив пекаря :)
                  +6
                  Черт возьми, это просто квинтессенция сути большинства современных айтишных проектов!!! :)

                  За исключением того, что первые три неудачника безуспешно пробовали бы доделывать свои пироги лишний час :)
                    0
                    О, это верно! Даже если бы им удалось уговорить Королеву (Заказчика) подождать ещё час, ничего из их проектов уже не получилось бы :) Так что лучше уж делать сразу на совесть и, как сказано в первом комментарии, «рассказывать заказчикам сказки» :)
                    0
                    Мне понравился подход. Хотя он используется во всех сказках и баснях: проекция реальной жизни на мир фантазии, доступный и понятный.
                      0
                      Королевы всегда говорят «Мы», потому что думают, что говорят от имени целого народа.
                      Замечательная метафора!
                        0
                        Только вот они не думают, а знают. (Это чистая правда, и без преувеличения)
                        Если дурак на улице ляпнет что «америкосы дураки», то если такое «ляпнет» президент, то это попахивает как минимум большим скандалом. (Все вокруг будут думать что он сказал это от имени народа.)
                          +2
                          В прямом смысле — да. Но я про метафору. Ладно, расшифрую её для вас:
                          Начальники заказчика всегда говорят «Мы», потому что думают, что говорят от имени пользователей.
                        0
                        Проблема не в желании уложиться в срок за счет урезания тестирования. Скорее проблема в изначально неправильном определении сроков по причине либо невнятности ТЗ, либо игнорирования прогнозов разработчиков, либо в не полной мере описанных заказчиком хотелок.
                          0
                          Да, просто когда сроки начинают напрягать, сокращают в первую очередь, как кажется Уинбергу, именно тестирование.
                          Он, понятно, в первую очередь за сотрудничество и взаимопонимание заказчика и разработчиков.
                          0
                          Как показывает практика, заказчики далеко не всегда способны в полной мере описать свои хотелки. В случае хотелок заказчика часто требуется собстенный опыт разработчиков и заранее спланированная и заложенная в бюджет и срок работ подушка безопасности под названием «доработка проекта», как правило составляющая 20-25% от общей стоимости и сроков работ.
                            0
                            «весело смеялась, жалобно плакала и от души хлопала в ладоши» менеджеру просто необходимо быть артистом ансамбля «творчества и плясок», я считаю, одного бубна явно будет недостаточно. Для меня мораль сей басни такова что менеджер и разработчик должны сотрудничать и решать проблемы совместно, не пытаясь выехат за счет других, тогда все будет ок.
                              0
                              откровенно в тему, но королеве пришлось пребывать целый час в ожидании пирога и тратить заветные «златые»…
                              проще было заранее ей сказать, что же ее будет ждать когда она приедет )
                                +1
                                Похоже в этой статье был использован прием «тройная спираль» из нлп, про который я раньше где-то читал.
                                Вы написали статью про человека который рассказывал сказку некой Камилле про Дикобразиху, которая рассказывала сказку королеве про принцессу и горошину. НЛП утверждает что вложенная таким образом информация пойдет напрямую в подсознание, потому что сознание перестает нормально ориентироваться во всех этих вложенных друг в друга сказках.
                                  0
                                  Не просто статью про человека, который рассказывал сказку про Дикобразиху, которая рассказывала сказку Королеве про Принцессу и горошину,
                                  а перевод статьи человека, который рассказывал о том, как он рассказывал сказку про Дикобразиху, которая рассказывала сказку Королеве про Принцессу и горошину :)
                                  0
                                  да я понимаю, что это всего лишь метафора, но все же: очень противоречивые ощущения вызывает эта сказка. Подано все очень красиво, но несколько ключевых моментов в сказке, которые у меня вызывают «отторжение»:
                                  — королева заказала испечь пирог одновременно нескольким поварам. В реальной жизни скорее всего заказчик не может себе такого позволить, как бы богат и влиятелен он не был
                                  — королева и все повара четко знали — каким должен быть пирог на цвет/консистенцию/вкус (т.е. требования к конечному продукту были настолько точными, что даже никак не обсуждались). согласитесь что в жизни такого практически не бывает, определить «чем же плох пирог» заказчик сможет только по прошествии времени и получения реального опыта «поедания плохого пирога»
                                  — у королевы была возможность сравнить неудачные варианты и сразу же их отбросить, как негодные. В реальной жизни она была бы вынуждена тратить время и ресурсы на допекание одного из «неудачных пирогов». И уж тем более не смогла бы понять, что дикообразиха способна выдать лучший продукт, потратив чуть больше времени, чем другие претенденты уложившиеся в выделенное время.
                                  — и главное мораль сказки «Если ты боишься делать то, что кажется тебе правильным, то ты не настоящий пекарь», т.е. иными словами «заказчик глуп, требуя сократить сроки, стой на своем — если веришь в себя!». Практически главный постулат дизайнерской культуры — по моему это ключ к понимаю направления мыслей автора.
                                    0
                                    Любопытная мысль пришла в голову- если отвязать описанную в сказке метафору от схемы «заказчик-проект-исполнитель», и применить к схеме «конкурсная комиссия-задание-конкурсант» (a-la многочисленные конкурсы для программистов или организумые крупными компаниями для найма), что намного ближе к ее сути (ибо по сюжету — это конкурс), все становится на свои места, но меняется мораль и вывод: при жестком ограничении по времени дикообразиха точно бы не победила, не выполнив главное условие конкурса.
                                    0
                                    Я не дизайнер, а разработчик, но могу сказать что автор прав — основной причиной просадки проекта как по срокам, так и по качеству является недостаточная тщательность исполнения, которую обосновывают жесткими сроками.
                                    А на деле грубая или даже грязная работа дает строго обратный эффект, так как перегружает все остальные, и без того наиболее трудоемкие стадии выпуска — рецензирование, отладку, тестирование, внедрение и сопровождение.
                                    Парадоксально, но лучший способ попасть в сроки — считать их рекомендацией, а думать прежде всего о качестве решений и исполнения.
                                    Исключение составляют задачи, которые после определенного срока не имеет смысла делать вообще. Это спортивное программирование и написание прототипов, но такой код никогда не должен попасть в релиз (лучше всего — выкинут сразу после демонстрации).
                                      0
                                      А на деле грубая или даже грязная работа дает строго обратный эффект

                                      Знаменитый парадокс — высокое качество работы ведет к тому, что она будет выполнена быстрее — потому что не придется потом все переделывать.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое