9 сентября 1947 года сотрудник ночной смены лаборатории в Гарварде обнаружил в реле №70 панели F электромеханической машины Mark II мертвого мотылька — крылья зажало между контактами, и машина перестала считать. Насекомое вытащили пинцетом, приклеили скотчем на страницу рабочего журнала рядом с записью о сбое и подписали: «Первый настоящий случай обнаружения бага» (First actual case of bug being found). Так родилась одна из самых растиражированных историй в истории вычислительной техники, а вместе с ней — сегодняшний профессиональный праздник, День тестировщика. Сейчас легендарная страница находится в коллекции Национального музея американской истории Смитсоновского института.
Праздник неофициальный. Отмечает его IT-сообщество, прежде всего в России, Беларуси, Украине и Казахстане, а в международном обиходе день известен как Tester's Day. Компании поздравляют QA-отделы во внутренних чатах, устраивают шуточные охоты на баги и лекции, а сами тестировщики в этот день охотнее обычного травят байки о самых нелепых дефектах, которые успели найти за карьеру.
Сама профессия куда моложе легенды о мотыльке. До конца 1970-х проверку программ обычно поручали тем же людям, которые их писали, а тестирование считали второстепенной задачей без внятной методологии. Перелом случился в 1979 году, когда сотрудник исследовательского подразделения IBM Гленфорд Майерс выпустил книгу «Искусство тестирования программ» (The Art of Software Testing). Майерс сформулировал мысль, которая изменила индустрию: удачный тест — не тот, что подтверждает работоспособность программы, а тот, что находит в ней ошибку. С этого момента поиск дефектов начал превращаться в отдельную инженерную дисциплину со своими методиками и карьерными траекториями — от ручного тестировщика до инженера по нагрузочному и автоматизированному тестированию.
Формально тестировщик — это QA-инженер (quality assurance, «обеспечение качества»), который проверяет продукт до и после релиза: воспроизводит сбои, придумывает сценарии, которые разработчик не предусмотрел, оценивает нагрузку и удобство. Среди тех, кто начинал именно с этой роли, — заметные фигуры индустрии. Алан Пейдж прошел путь от техподдержки до software tester, а затем 22 года проработал в Microsoft, включая должность директора по совершенству тестирования. Сем Кейнер, тоже начинавший тестировщиком, позже основал исследовательский центр программного тестирования при университете штата Флорида. Прадип Сундарараджан пришел в профессию QA-инженером в McAfee, а сегодня руководит собственной консалтинговой компанией Moolya. Но если расширить рамку с «профессии» до образа мышления, окажется, что тестировщик прячется в каждом из нас. Человек, который трижды перечитывает сообщение перед отправкой начальнику, проверяет обновление телефона на баги перед тем, как советовать его друзьям, или пробует новый рецепт на семье прежде чем нести его на праздничный стол, занимается ровно тем же — ищет слабое место, пока оно не подвело в реальных условиях.
Иногда недосмотр на тестировании оборачивается не катастрофой, а подарком индустрии. В 1996 году в физике движка культовой игры Quake обнаружился баг: если прыгать по диагонали и одновременно двигать мышью, персонаж разгонялся куда быстрее, чем задумывали разработчики. Ошибку не поймали ни на тестировании, ни на раннем этапе релиза, а когда игроки распробовали трюк, то компания-разработчик решила его не чинить. Прием получил название strafe-jumping и перекочевал в Half-Life, а через него — в Counter-Strike, где стал частью соревновательного геймплея. Похожая история случилась с классом «Шпион» в моде Team Fortress: разработчики заметили баг, из-за которого имя противника на прицеле подсвечивалось цветом чужой команды, и вместо того чтобы просто исправить его, превратили путаницу в игровой класс с маскировкой под врага.
Профессию сегодня поджимают со всех сторон: код все чаще пишет и проверяет Искусственный интеллект, а нейросети умеют находить дефекты быстрее любого QA-отдела. Но редакция ITNEWS.pro в этот день говорит тестировщикам простое человеческое спасибо — за въедливость, за священную привычку кликать именно туда, куда просили не кликать, и за редкий дар находить критичный баг ровно за десять минут до релиза. Мы верим: сколько бы Искусственный интеллект ни учился ловить чужие ошибки, ни одна модель не научится тому самому сочетанию внимательности и рассеянности, благодаря которому человек однажды заметил мотылька там, где искал всего лишь короткое замыкание. С праздником, дорогие охотники за багами — пусть красивых настоящих мотыльков в вашей практике будет много, а критичных багов на проде — ни одного.
