Разделы портала

Онлайн-тренинги

.
Устаревшие концепции тестирования: культ автоматизации
12.02.2016 10:44

Автор: Виктор Славчев

Оригинал статьи: http://mrslavchev.com/2016/01/28/outdated-testing-concepts-3/

Перевод: Ольга Алифанова

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

Прежде чем начать разговор

Под автоматизацией я – лично я – понимаю автоматизированное выполнение какого-либо действия. Соответственно, автоматизированное тестирование для меня – это автоматизация действий, помогающая процессу. Подчеркиваю: под автоматизацией я понимаю только это, а не автоматизацию процесса тестирования как такового. Я сознательно не прибегаю к термину "проверка", чтобы не удариться в долгую дискуссию про "тестирование" и "проверки" - я просто не готов поддержать этот спор в данный момент. Если вам интересна эта тема, прочитайте статью Испытания и проверки: уточнения" Майкла Болтона и Джеймса Баха - это потрясающая работа, я согласен с многими идеями в статье и рекомендую ее всем заинтересованным.

 Культ автоматизации.

Наверное, каждый тестировщик на каком-то этапе своей карьеры был адептом культа автоматизации - как я уже говорил, она способна вызывать и бешеный восторг, и смятение в умах. Причина такого отношения к ней кроется в том, что она была и остается "серебряной пулей" тестирования - универсальным решением всех проблем. Когда я только начинал карьеру (в общем-то, я до сих пор начинающий, просто умею прикидываться супер-крутым), мне много рассказывали про замечательные возможности автоматизации, про то, как это здорово, и я был очень впечатлен. "Конечно, я хочу этим заниматься, кто бы не захотел!" - думал я. Естественно, кто угодно бы впечатлился – какой тупица откажется от способа выполнять свою работу быстрее и эффективнее, и делать меньше ошибок. Все эти золотые горы автоматизация как раз и обещала. Но наша неистовая вера в нее была основана на ложных посылках, которые мы сейчас и рассмотрим:

"Автоматизация - это круто, она бережет время!"

Безусловно, если рассматривать ее как выбор "или я заполняю эту форму данными вручную, или скрипт делает все за меня", она экономит ваше время. Но тут упущены побочные издержки - создание хорошей инфраструктуры для запуска скриптов требует больших временных затрат. К тому же ее подготовка – это полноценный процесс разработки ПО, со всеми вытекающими отсюда последствиями (включая баги!). Мы можем потратить кучу времени на отлов багов в скриптах вместо того, чтобы просто прогнать свои тесты вручную.

Поддержка автотестов - тоже весьма небыстрое дело. ПО может измениться - к примеру, исчезновение одного-единственного поля формы уронит ваши тесты, и вы засядете за их отладку.

Тестирование бывает очень разным, и каждый его подвид требует собственной инфраструктуры. К тому же мы не всегда можем использовать все наши тесты повторно. Снова и снова автоматизация требует времени, времени, времени!

"Автоматизация - это круто, мы можем автоматизировать взаимодействие пользователя с системой!"

Не-а. Мы можем создать скрипт, имитирующий поведение, но мы не можем заставить его взаимодействовать с системой. Само слово "взаимодействие" подразумевает коммуникацию между двумя участниками. Человек это может - он общается с системой, обрабатывает и оценивает полученную от нее информацию. Программа не умеет этого. Она просто отрабатывает свое.

"Автоматизация - это круто, мы можем автоматизировать абсолютно все!"

...а также другие зажигательные истории из мира розовых пони, которые гадят леденцами. Слона-то мы и не приметили. Хотя, конечно, каждый из нас хоть раз задумывался над этим "слоном". Все представляют себе идеальный мир - все наши тесты автоматизированы, и все, что остается сделать - это запустить их. Теперь они самостоятельно проверят ПО, сделают скриншоты в нужных местах, оформят баг, если скрипт упадет, прикрепят к багу логи... а также помоют посуду, приготовят завтрак, и я, конечно же, шучу. Это просто невозможно. Объяснять, почему, можно бесконечно. Как минимум, нет такого понятия, как "все наши тесты" (невозможно протестировать все, это аксиома, поэтому "все тесты" - крайне расплывчатое определение). Плюс к тому, не все разновидности тестирования можно автоматизировать (юзабилити, доступность, тестирование установки, поддержка не годятся для автоматизации), и так далее, и тому подобное.

"Автоматизация - это круто, ведь тестирование-то, по сути, всего лишь выполнение последовательностей действий!"

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

Список ложных посылок можно продолжать бесконечно - попробуйте на досуге. Автоматизация сейчас воспринимается, как некий полубог, "автомагически" решающий любые проблемы. Майк Токс (TestSheepNZ) написал потрясающую статью "Эффект МакГаффин в тестировании". Вдохновившись ей, приведу-ка я вторую аналогию.

В древнегреческих трагедиях было такое понятие, как "бог из машины" (deux ex machina). Он вылетал на сцену при помощи специального крана (отсюда название "из машины") и мановением руки разрешал, казалось бы, неразрешимые загадки или трудности других героев. Пожалуй, хватит с нас истории - если я слишком туманен, то сейчас объясню поконкретнее. Все понимают автоматизацию как нечто, что решит все проблемы, найдет любые баги, и обеспечит всем легкую жизнь. Этого не может быть, потому что этого не может быть никогда, и тут-то и начинается путаница. Как и в античных трагедиях, человек сначала должен запустить этот специальный кран (или специальный скрипт), чтобы "божество" заработало как надо. И только от людей зависит, верить ли во всякие глупости, или начать применять автоматизацию эффективно.

Так что, автоматизация - это плохо? Это наш главный враг?

Нет, конечно. Я совсем не хочу сказать, что автоматизация бесполезна. Моя идея в том, что нужно воспринимать ее как полезный инструмент, а не ожидать невероятных чудес зря.

И вот еще что. Я видел и другую крайность - настоящее восстание ручных тестировщиков формата "Автоматизация бессмысленна, ее вообще нельзя использовать", и - самое абсурдное - "Нас заменят машинами, и мы станем бесполезны". Вот этот последний лозунг четко демонстрирует уверенность говорящего, что ручное тестирование можно полностью заменить автоматизированным. Как я уже говорил, это ложь. Вообще-то это давно уже и без меня доказали такие заслуженные гуру тестирования, как Кем Кейнер и Джерри Вайнберг, так что мне оставалось только перефразировать их идеи.

Итак, какую пользу приносит автоматизация?

Для начала давайте перестанем сталкивать лбом ручное и автоматизированное тестирование. Их бессмысленно сравнивать и противопоставлять. Нет такого понятия, как "чисто ручное" или "чисто автоматизированное" тестирование, если под "ручным" подразумевать "выполненное исключительно человеком".

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

В целом, у меня все. Я знаю, что это спорная тема, и мнения по ней сильно расходятся, но я верю, что ее обсуждение поможет нам многое прояснить. Конечно, тут нужно отметить авторов трудов, которыми я пользовался, когда писал эту статью - множество из моих умозаключений на самом деле не мои собственные, они принадлежат Джеймсу Баху, Майклу Болтону, Кему Кейнеру, Джеральду Вайнбергу, и многим другим авторам блогов и комментариев.

Обсудить в форуме