О великом мифе автоматизированного тестирования

Почему автоматизированное тестирование не эффективно?

Часто от гуманитариев и людей максимально далеких от IT и программирования можно услышать популярную уже много лет страшилку, дескать «Скоро придет искусственный интеллект и оставит всех без работы».

Мол, программеры напишут такой чудо-софт, который всех заменит, даже их. Однако годы идут, а воз и ныне там. Оказалось, что при всём обилии инструментов для автоматизации и при всём неумолимом прогрессе IT, а также напрочь отсутствующей профессиональной этике компьютерщиков, разработка программного обеспечения остается слишком сложной. Каждый, даже самый шаблонный IT-продукт напоминает изготовление самолета, где многие детали нужно подгонять вручную.

Многим IT-романтикам и их прихлебателям трудно понять всю сложность разработки софта, поэтому им можно простить байки о том, что, дескать AI всё скоро заавтоматизирует. Однако когда об этом говорят сами программисты и автоматизаторы — остается лишь фейспалмить.

Одна из областей, подвергающаяся стремительной автоматизации — тестирование.

Если в Украине так называемых чистых «ручных тестировщиков» (aka Manual QA engineer) еще довольно много, то на Западе считается, что раз ты тестировщик, то и автоматизировать* умеешь. То бишь писать код, который бы автоматизировал твои действия. Возможно из-за такого западно-капиталистического взгляда на вещи многие украинские аутсорсеры пыжатся научить ручных тестировщиков автоматизации и раздувают штат автоматизаторов.

Куда бы вы ни пришли, в какой бы компании не оказались — везде вам скажут одно: «У нас в планах переход на автоматизацию». А вот зачем и почему — никто не говорит. Чем-то это напоминает типично западные «ценности», которые не принято подвергать сомнениям. Мол, у нас толерантность и мультикультурализм. И всё тут! То же самое творится в мире тестирования. Как будто ручное тестирование — по умолчанию атавизм, а вот автоматизированное — синоним прогресса и благодати. На вопрос «почему?» — не принято отвечать. Как же? Это же святой автомейшн! Как вы смеете сомневаться в его эффективности?»

Однако опытные тестировщики не то что бы сомневаются в его неэффективности, они видят насквозь всю его несостоятельность. Ведь как ни крути, но даже в самых сложных системах самые крутые баги всё равно находят люди. Искусственный интеллект не в состоянии достичь того уровня изобретательности и изворотливости, которым обладают миллиарды нейронных связей человека. Единственное, на что он способен — выполнять какие-нибудь простые, рутинные действия, которые скучно выполнять человеку. Например, сравнивать попиксельно картинки или сравнивать контрольную сумму MD5.

Почему же IT-компании делают упор на автоматизацию тестирования?
Во-первых, потому что этого требуют одураченные IT-евангелистами западные толстосумы. В их наивные головы вложили миф, будто «ручной труд в IT» неэффективен и дорог. И что если постараться, что можно накидать скриптики, которые всё протестируют, и тогда можно будет сэкономить на тестировщиках. Поэтому на западе тестировщик по-умолчанию умеет в автоматизацию. А раз на западе так, значит и нам придется подстроиться под эту модель. Иначе как объяснить заказчику, зачем мы тестируем продукт как «в позапрошлом веке»? Не поймет голубчик, денег не даст.

Во-вторых, автоматизации тестирования требуют и отечественные одураченные IT-пропагандой надзиратели. Они тоже особо не думают над тем, почему автоматический тест (написанный, кстати, на основе ручного) должен эффективнее человека выявлять проблемы в софте. Они романтики-мечтатели, им хочется нажимать на кнопку «Run» и видеть красивые разноцветные диаграммы-отчеты с количеством пройденных/проваленных тестов, которые они покажут начальникам.

Пять мифов о программировании

Очковтирательская суть некоторых надзирателей такова, что ради этой видимости качества продукта, ради этих графиков и диаграмм, они готовы обманывать себя и вышестоящее руководство. Мол, «У нас 90% покрытие тестами, 80% из которых проходят!». Если для этого пылепускания найти исполнителей среди автоматизаторов, то получится вообще идеальная система: с одной стороны тестировщик-автоматизатор подпиливает тесты таким образом, чтоб они были правдоподобно «зелёненькими» и генерит отчеты, изображая бурную результативность. С другой стороны его надзиратель, который берёт те самые отчеты и показывает владыкам проекта — вот, мол, полюбуйтесь как у нас всё лепо и как мы стараемся. Заодно и метрики удобно считать! Написано столько-то тесткейсов, которые запустили N раз с таким вот результатом. Прям иллюзия контроля качества!

Кукумбер - пример графика результатов автомейшн прогонки тестов.

А то, что на перенос тестовых сценариев на код уходит огромное количество временных/мозговых ресурсов — молчок. А то, что на поддержание этих самых тест-кейсов в работоспособном состоянии нужно регулярно выделять человекочасы — этого мы не замечаем. Ну и то, что самые важные и значимые баги таки находятся во время ручных проверок — на это мы тоже смотрим сквозь пальцы.

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

Однако ничего не попишешь — мир IT стал заложником этой «моды», этого слепого карго-культа «а что там у программистов?». Поэтому нам остается лишь откинуться на спинки кресел, затариться поп-корном, и наблюдать за тем, как с одной стороны выделяются огромные бюджеты на автоматизацию тестирования, а с другой — толпы тестировщиков сушат мозги кодом, который ничего не решает в самом качестве тестируемого продукта. Процессы ради процессов, автоматизация ради автоматизации — таков мир блаженного IT, которое несёт нас в светлое будущее.

*В автоматизацию тестирования мы не включаем написание Unit-тестов, так как обычно этим занимаются программисты.

  • lasers from eyes

    лучше дочь проститутка, чем сын qa

    • Alex

      лучше куа, который находит баги в моем коде, а каким образом он это будет делать — лапками или автотестами — мне глубоко пофигу 🙂

  • Dictator47

    Данная статья полный бред. Для средних и больших проектов без автоматизированного тестирования никак — правки в одном месте могут поломать работу других модулей и компонентов — тестировщик руками просто не может тестировать всю систему каждый раз.
    Всегда нужны и автотесты и ручное тестирование.

    • ITPravda

      Для этого есть юнит и интегрейшн тесты, написанные разработчиками.

      • мамка твоя

        интегрейшн тесты — тоже пишутся автоматизаторами
        Для этого есть юнит — их иногда тоже пишут те же автоматизаторы, чаще sdet так называемый, но это редкость

      • юнит и интегрейшн тесты — часть автоматизированного тестирования — сюрприз :). Где-то применимы одни виды тестов, где-то другие, но суть одна — уменьшение регрессии. Вопрос покрытия — тут нужно понимать балланс и не впадать в упомянутый культ карго и применять по надобности.

      • Вот сейчас напишу то что кому-то точно не понравится, но оно реально работает, есть опыт.

        UI тесты также могут писаться разработчиками, но разработчики обычно не так хорошо знакомы с QA процессами чтобы составлять сценарии для таких тестов, то есть тест-кейсы. Автомейшен инженер создает фреймворк и процесс написания этих тестов, а разработчики могут править и даже писать сами тесты.

        Так же как и по DevOps части. Девелопер может оперировать, но не так хорошо как Опс, поэтому есть девопс инженер, который настраивает процесс, а контрибутить в него может каждый, добавляя новые контейнеры, пайплайны, скрипты и прочее.

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

    • Yaroslav Kravets

      и никогда это не даст 100% гарантию рабочей системы

      • Dictator47

        Так никто и не говорит что это даст 100% гарантию) Но шансы что система работает так, как задумано в разы выше по сравнению с системой без тестов.

    • Грустный

      Автоматизировать нужно только тупую рутину на UI и API все точка. Все остальное то очковтирательство от которого толку 0. 4 года видел как приходят чуваки и начинают переписывать то что, писали до них 4 года и так по кругу. Постоянно что то пишут, а оно нихера толком не тестирует + еще падает из за постоянного рефакторинга кода

  • Александр Илюшкин

    Сразу видно, что писал человек, совершенно не обладающий опытом в тестировании и тем более в автоматизации. Да что уж там говорить, вы не работали в проектах, о которых говорите. Просто удалите статью и не позорьтесь.

  • Риторика совдеповского агитпропа о загнивающем западном капитализме это сарказм или реальная стилистика данного сайта и засилье политруков в редакции? Сначала было забавно, но уже начинает подташнивать.

    • ITPravda

      Про «загнивающий западный капитализм» мы не говорили, это вы сказали.
      От капитализма никуда не уйдешь, но при этом никто не обязан его любить, хотя нас и пытаются с пелёнок убедить, что капитализм — де-факто добро.

      • Ну разве что «загнивающий» я от себя добавил оценивая общую риторику. Большой акцент делается именно на этом. Слово «запад», было упомянуто 7 раз в статье. Такой стиль переводит частные проблемы узкой отрасли и конкретной методологии, в общественно-политическое поле, что странно. Но так как Ленин и завещал — делай из любой проблемы политическую.

        • ITPravda

          Agile пришел с Запада, как более эффективный способ выжимать соки из программистов. Кто ж им доктор 🙂

          • Начнем с того, что все ИТ пришло с «запада», да как и вообще вся современная цивилизация в том виде как мы ее знаем, так уж исторически сложилось. Но сейчас это гео-клише ни кого не волнует, кроме как в постсоветские головы.

            Канбан пришел из восточной Японии, например. Недостаточно идеологически-верный восток? Какие не-западные альтернативы существуют? Давайте поищем альтернативно-прогрессивные методы разработки в Северной Корее, например.

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

          • Yaroslav Kravets

            а в Японии/Корее там коммунизм?

          • Япония/Корея — не запад, а коммунизм официально еще нигде не существовал. Это утопический миф

  • Vladimir

    Полная автоматизация возможна лиш при условии написания шаблонного кода, а следовать шаблонам далеко не всегда удаётся.
    Насчёт искусственного интеллекта, это всё бабушкины сказки.
    Как можно создать то о чём ты не имеешь малейшего представления?
    Мне очень смешно читать всяких фантастов в области ИТ которые пишут, что скоро компы буду творить в области искусства, переживать чувства. Короче полностью заменят человека. Не бывать этому никогда, хотя-бы потом что все эти мечтатели не понимают разницы между разумом и интеллектом, интеллект есть инструмент разума этим инструментом обладают даже животние. Но разум это привилегия человека.