А что я знаю о былинных, лютых фэйлах, от рассказа о которых стынет кровь не только у холоднокровных монстров Мариинской впадины, но даже у дежурного инспекторах святошинского райотдела киевской налоговой службы?
Ну, кое-что знаю…
Когда-то один сэр Тестировщик был очень юн и уверен в себе. За большие (для тогдашнего его) деньги он схантился в одну динамично загибающуюся кишиневскую компанию, которая хотела «изменить мир, а не просто продавать сладкую воду». О, да…
Всё же было не просто так. Умный и опытный сэр Тестировщик спросил на собеседовании:
— А svn у вас есть?
— Конечно! — ответили ему. — И ещё у нас есть корпоративы на природе!
— Тааак. А программисты у вас опытные?
— Конечно! И еще у нас есть премии за хорошую работу!
— А документацию вы где держите? Внутренняя вики есть?
— Конечно! И еще у нас полное оформление на работу!
В общем, был сэр сам себе дурак. Если выяснил, что svn в компании есть, то надо было также спросить «А им кто-то пользуется?» А он не спросил.
Опытные программисты там были, но он же не спросил, сколько именно. Позже оказалось, что опытных там было трое из двадцати двух. С тех пор термин «программист-студент» кому ок, а у кого от этого термина начинается сыпь, режутся клыки и шерсть на загривке топорщится.
И документацию на вики действительно держали. Точнее, документацию по этой самой вики. По проектам документация хранилась в svn, в виде doc файлов с постоянно обновляемыми планами проектов…
Что там творили (от слова «творчество») программисты-студенты… Ну, представьте себе комнату, в которой сидят вроде бы адекватные молодые люди. Каждый по-отдельности вроде бы умеет писать код. Каждый знает, что существуют все эти svn и вики, но лично ему они ещё ни разу не понадобились. Ну да, программисту-одиночке подобные инструменты действительно не нужны, они крайне необходимы только для совместной работы. Но теперь представьте, что все люди в этой большой комнате работают над одним и тем же проектом, но — каждый по-отдельности. И каждый обоснованно уверен в том, что лично ему все эти фигни вроде svn ему нафиг не упёрлись.
Схема работы у каждого из них идеальная: каждый программист целый день педалит код, решая какие-то ёб*** задачи. Вечером он весь свой код запахивает в zip-файл, и скидывает его по почте главному программисту. И уходит домой.
Главный программист получает вечером десяток версий проекта, поочередной их открывает и начинает интегрировать внесенные изменения в уже существующий проект. Каждый вечер он занимается этим увлекательным делом до трех часов ночи, бо он отвечает за три проекта сразу, и на каждом проекте вот такой вот хардкор. И каждый вечер ситуация повторяется.
Сэр Тестировщик тестирует, тестирует, и замечает, что тестировать-то есть что, но незачем, бо ошибки повторяются крайне регулярно. И вообще, начальство сэром недовольно. До него в компании был тоже один тестировщик, хотя и без образования, но вот он работал хорошо и находил много багов, и главное, находил их быстро. А этот сэр, многодолларовый супер-специалист, чего-то тупит, и работает медленно…
А сэр Тестировщик действительно работал медленно. Тестировать предлагалось так: проект у каждого программиста поднят на Tomcat-сервачке на его же машинке. Сэр по сети открывает сайт-проект в своём браузере, и всласть тестирует. А программист в этом время на ходу вносит свои ёб*** функциональные изменения в проект, ведь ему надо работать, ему некогда ждать.
Сэр Тестировщик вдруг понял, почему главный программист (тот, который рефакторит код до трех ночи) больше не хочет быть ёб*** главным программистом.
Сэр Тестировщик начал звереть.
В частности, сэр бросил всё и начал фигачить тест-кейсы в эксельчике. Нафигачил около сотни. Забугорный менеджер сказал, что это оооочень круто, что есть тест-кейсы наконец-то. Взял сэр Тестировщик очередное творение программиста и стал проверять его по тест-кейсам. Дело продвигалось медленно. Тест-кейсы дико алели красным.
Первый же попавшийся программист на них посмотрел, и сказал «Да, не работает, но я не этот функционал делал, я делал вон тот функционал…»
Ок, ответствует ему сэр Тестировщик, в твоем секторе, хм, тоже много красного. Впрочем, я туда ещё не добрался толком…
«Э, ты не то тестируешь! Ты найди мне все места, где вместо рендеринга страницы выпадает только белая страница, где скрипт не генерит контент!» — заявляет этот штырь.
Взял себя сэр Тестировщик в руки, но вскоре эти руки достаточно быстро опустились к плинтусу. Основной массив ёб*** багов состоял из настолько мелких проблем, что их и функциональными не назовешь, а посему «незачем было такой баг искать».
Например, один из программистов постоянно закрывал кнопку ‘Register’ заглушкой ‘#’, и забывал к вечеру перед сдачей проекта эту заглушку снять. А чего там проверять регистрацию, ей-богу. Её уже когда-то проверяли.
Другой постоянно оставлял на экране в неожиданных местах строки типа ‘hzhzhzhzh’ – ну просто для того, чтобы ориентироваться, в каком месте должна выводиться информация, которую подкачивал его скрипт.
Тест-кейсы в этой кутерьме совершенно не требовались.
В общем, руки у сэра были, но очередной кино-кадр эти руки к плинтусу прибил. Тестирует сэр Тестировщик очередной проект, разумеется, поднятый на машинке программиста на Tomcat-сервачке. И что-то там нашлось, мелкое, стилистическое. А программист-демон этот баг взял и моментально исправил. А сэр Тестировщик ж не знал! У него ж ВНЕЗАПНО все страницы проекта лишаются ёб*** стилистического оформления! Поскакал сэр Тестировщик к этому волшебному кадру, и начали они три дня и три ночи общаться друг с другом на грамотном румынском языке с применением русской блатной фени:
— Достопочтенный сэр Пеньтьюм, можете ли вы объяснить, в чём проблема?
— Ах, да, мистер сэр тестировщик, это я поправил тот баг, о котором вы соизволили мне сообщить, и не заметил, что вот это вот явление произошло. Обязуюсь исправить сегодня же.
— Но позвольте, уважаемый сэр, в текущем состоянии продолжать тестировать проект не представляется возможным. Не соизволите ли вы откатить изменения к предыдущему состоянию?
— Ой, а я ж не знаю, как это сделать, я же уже не помню, какие изменения я сделал.
— А svn на что нам был даден небесным подарком свыше?
— А кто этот джентльмен, Эсвээн? Я его не знаю.
— Что ж, достопочтенный сэр Пеньтьюм, имейте хороший день!
Совершенно рассвирепев, сэр Тестировщик переключился на другой проект, и за один час нашел там 22 крупных багов. Из них восемь вообще уж гугенотско-критикальных. Снова оседлал он своего Росинанте, и поскакал к менеджеру этого проекта, и сообщает, мол, девушка, на твоём проекте баги же, баги! Ёб*** б*** с*** баги!
— Ах, да… — ответствует заколдованная принцесса, — Программисты с этого проекта говорили мне, что знают о восьмидесяти багах на этом проекте, и что они должны исчезнуть, когда они перепишут код на язык Java.
— А до этого они на каком языке писали?
— Кажется, на C++, я точно не знаю. Они сейчас учат Java, и заново переписывают проект по-новому. В третий раз.
Йоговское состояние «ahooy» вам знакомо? Сэр Тестировщик познал его сполна…
Полностью несгибаемый тестировщицкий дух был сломлен на той же неделе, когда сэр Тестировщик открыл в браузере очередной проект портала по продаже картинок через мобильные телефоны, поднятый на всё том же Tomcat-сервачке. А картинки эти оказались порно-картинками. Ну, что ж… Но понад всеми этими порно-картинками красными буквами совершенно вне дизайна было крупно написано «Liudochka, eu te iubesc!» («Людочка, я тебя люблю!»).
Сделал сэр Тестировщик скриншот этого признания, и понёсся к менеджеру этого порно-картиночного проекта с тревожным донесением. Парень очень оживился:
— А, это нормально, это я написал привет моей новой девушке, я недавно влюбился, хочу жениться. Видишь, ее фотография первая в галерее… Сейчас я эту надпись сниму, не заводи это в Jira, это не баг…
Не стал сэр заводить это в Jira. Дело в том, что в тот же день семеро программистов с утра на работу не пришли, и вопросы о проекту, которым они заведовали, оставались нерешёнными. ВНЕЗАПНО они появились, все в костюмчиках с галстучками. Это было действительно эффектно, с ихними-то рожами…
— Вы где были?
— А, мы экзамен на бакалавра сдавали…
С какого-то времени в Молдове можно поступать в высшее учебное заведение только при наличии первой ученой степени — бакалавр. Экзамен на эту степень принудительно держат все великовозрастные лицеисты. Но в те доистерические времена в вузы ещё принимали абитуриентов без «бака», однако в течение первого года обучения такие студенты были обязаны отдельно подготовиться и все-таки сдать экзамен на бакалавра, чем наши программисты в тот день и занялись. Атестат зрелости, значит, получили. Мужики, значит, восемнадцатилетние. Они изменят мир.
Вскоре на дежурный вопрос «Как дела у нас в отделе тестирования?» сэр Тестировщик искренне ответил «Очень плохи дела», и был он полностью прав, бо там всё было плохо.
Сэра Тестировщика назвали мудаком, который берет много денег, а тестирует очень медленно и плохо, много требует от окружающих, и вообще хмурый и неприветливый, а ведь его «брали с надеждой» на то, что он наведет порядок в области тестирования, а он со всеми этими утверждениями быстро и полностью согласился, лишь бы поскорее завершился пред-увольненьческий дежурный разговор.
Сэр Тестировщик понял, что не всякому коню рябина ягода, и что кроме умения искать баги надо ещё уметь грамотно разруливать процессы, и поехал учиться этому делу в стольный град.
А что ты знаешь про лютые фэйлы, а, ${username}?
Хм.
Процессы.., без человека с револьвером и средне-специальным образованием тоже никуда.
Тестировщик.. да и не тестировщик даже, а образ собирательный, обезличенный.
Попал как-то он — в другую команду.
Опытных программистов в команде было не меньше половины. светлы лицом, умны и добры были программисты, новому открыты. гитом пользовались. Непрерывную интеграцию одобряли. И были процессы. Процессы, которые не просто указатели на дороге, но сугубо рельсы стальные.
Проблема была только одна. 9 ошибок после релиза клиенты находили.
И воскликнул тестировщик — будет отныне тестирование перед релизом.
И было оно. И таски в JIRA помечались нужной версией. И не выпускали релиз, не починив их все. И находили клиенты после релиза… ну скажем 10 ошибок.
И молвил тестировщик — да будет тестирование фичи после слияния ее с основным кодом.
И случилось это, ни одна фича не проходила мимо зорких глаз его.
И нашли клиенты после релиза… ну скажем 12 ошибок.
И изрек он — да будет тестирование перед коммитом в основной код, да на стенде разработчика. И стало слово его — делом.
И нашли клиенты после релиза… ну скажем 8 ошибок.
И приказал тестировщик всем смертным работающим на проекте писать все свои дефекты и мысли в JIRA и дублировать в вики и в постановки (да, постановки там тоже были). И помнить о трассировке с версионированием. И наполнилась JIRA и вики данными полезными.
И нашли клиенты после релиза… ну скажем 9 ошибок.
И возопил он — да будут тесты автоматические и приведут нас к покрытию кода полному. Загудели сервера, нагрелись процессоров сотни, гоняя CI непрерывно и осветили тесты каждый уголок приложения.
И нашли клиенты после релиза… ну скажем 13 ошибок.
И произнес тестировщик — да не будет релиза без кода, статическим анализом благословленного, И станет каждый программист честен душой перед инквизицией и не загубит ни единого теста и починит сам тесты и напишет новые. И писали тесты программисты… а дальше даже аналитики кейсы писать начали, да не опосля, а заранее.
И нашли клиенты после релиза… ну скажем 10 ошибок.
И сказал тестировщик, грустно глядя на все это: Какого, б@#$%ь, хрена?
И снизошла на него благодать и подсказала ему мысль: Ты, клоун, хоть утестируйся, а программисты от этого лучше работать не станут. И семь этапов тестирования от работы по проектированию взаимодействия, продумыванию архитектуры и управлению программистами никогда и никого еще не спасали.
Я знавал одного кадра 9х12, который управлял вот такой вот компанией студентов-программистов, особо не врубаясь в то, что они делают.
Он руководствовался идеей о том, что «Мы не говорим нашим работникам, что и как делать, мы нанимаем лучших и делаем то, что они нам говорят делать» и видел свою миссию в том, чтобы «присматривать за порядком» перед лицом владельца бизнеса.
Это была вторая работа у этого чувака. А его первая работа была «менеджер на этаже в гостинице». Карьера его была построена в той гостинице с нулей. Программисты или портье с горничными — какая разница-то? Отличный незамутненный взгляд…
» Ты, клоун, хоть утестируйся, а программисты от этого лучше работать не станут.» — ППКС.
«А борьба за качество? Кому объяснишь, что нельзя сначала производить продукт, а потом начать бороться за его качество? Что такое сыр низкого качества? Может, это уже не сыр? Или еще не сыр? Это сыворотка. А сыра низкого качества не бывает. И велосипед низкого качества – не велосипед. Это все дерь… сырье! Которое должно стать велосипедом.»
Непереводимая игра. М. Жванецкий, 1986 г.
> Ты, клоун, хоть утестируйся, а программисты от этого лучше работать не станут.
Именно на этом этапе QC переходит в QA, если я не ошибаюсь. Но тут я вижу что QA уже наступил – есть и автоматические тесты, и статический верификатор, и ограничения по комитам. А это довольно неплохая предпосылка к тому, чтобы понизить количество багов. И если их число не понижается, то пора пойти не от того “как правильно и круто делают в мире”, а от конкретных проблем.
Т.е. взять тот же кайдзен с его любимым “задать 5 вопросов “почему возникла эта проблема”» и выявить ее корень.
Например у меня все знают про правила работы, которые красными буквами в вики прошиты. Но это совершенно не мешает их однажды бездумно нарушить и начинается непредсказуемое. Тут уже больше административные меры нужны. Повесили тихонько контроль отработки того же статического верификатора на посткомит и по рукам, если выявлены проблемы. А лучше сразу паяльником. А злостных нарушителей и вовсе с пляжа.
А еще вполне может оказаться что используемые методики не покрывают найденных клиентами ошибок. И тогда нужно думать не “чего бы еще такое внедрить”, а “чего внедрить такого, чтобы выловило конкретно эту ошибку”.
Ну и в завершение. Да, после внедрения десятка методик повышения качества процесса клиенты все еще находили баги, причем в том же количестве. Допустим. Но осмелюсь предположить что и проект тоже рос. А другое и не бывает 🙂 И давайте теперь подумаем сколько было бы ошибок, если бы не были внедрены вышеописанные методики качества? Может быть к этому времени их уже было бы не “допустим 10″ а “допустим 100″ ? или “допустим 1000″ ?
Господа, читая это я вспотел от страха.
В темной глубине гостинного зала были слышны бряцанье цепей и завывание душ невинно убиенных тестировщиков…
Я полагаю перед увольнением из компании у дверей сэра Тестировщика стояли колья, с насаженными головами особо отъявленных разработчиков