Автоматизированное тестирование стало настолько неотъемлемой частью обеспечения качества, что некоторые тестировщики задаются вопросом, не заменит ли оно полностью ручное.
В ближайшее время — нет.
Когда Илон Маск разрабатывал Tesla Model 3, для увеличения скорости производства полностью автоматизировали сборочную линию. Предполагалось, что искусственный интеллект собирал бы автомобиль практически без участия человека.
План провалился.
Автомобили врезались друг в друга, двери перемешивались с окнами, а шины не вставали на ободы колес.
Что же произошло? Оказалось, что роботы плохо видят. ИИ, отвечающий за сборку Model 3, не смог приспособиться к неожиданным сложностям или небольшим расхождениям. Если бы все было настроено не так, как надо, он бы совершил катастрофические ошибки.
То же самое справедливо и для автоматизации тестирования. Некоторые виды тестирования предполагают слишком много переменных и требуют от ручного тестировщика умения корректировать курс и устранять неполадки на лету.
Что такое автоматическое тестирование?
Автоматическое тестирование означает, что для выполнения тест-кейса тестировщик использует определенный инструмент. В цикле разработки один и тот же тест-кейс будет прогоняться несколько раз.
Некоторые из тест-кейсов, на ручную обработку которых у группы тестеров уходят часы, при помощи инструмента автоматизации можно выполнить всего за несколько минут. Некоторые такие инструменты стали уже отраслевым стандартом.
Темная сторона автоматизированного тестирования
Другим отраслям, ремеслам и профессиям приходилось сталкиваться с внедрением автоматизации в свою область. Когда бы это ни происходило, будь то авиация с автопилотом, ковроткачество или тестирование, работники этой сферы начинают терять понимание того, что стоит за их работой.
Как заметил специалист по QA Ян Яап Каннегитер (Jan Jaap Cannegieter), это стало происходить и с тестировщиками. Его главный страх заключается в том, что простота автоматизации тестирования и растущее стремление автоматизировать большую часть процесса приведут к появлению поколения тестировщиков, которые знают, какие действия нужно выполнять, но не понимают, зачем это нужно.
Многие тестировщики знают все об определенных инструментах или языках программирования, но не могут сказать, что и зачем они тестируют. И это плохо.
Неудачные примеры автоматизации тестирования
Многие тестировщики видят в автоматизации тестирования потенциал. Как правило, это также означает, что существуют некоторые тенденции, а также типичные ошибки, которые может совершить тестировщик. Вот несколько распространенных примеров плохого автоматизированного тестирования.
Вложенные автотесты
Вложенные автотесты — это когда несколько тестов автоматизации зависят друг от друга. В этом случае при возникновении ошибки становится трудно понять, что именно пошло не так.
В краткосрочной перспективе большинство случаев автоматизации тестирования является положительным — если тестировщик использует правильный инструмент должным образом.
Многие примеры автоматизации тестирования оказываются неудачными лишь спустя полгода, когда вырастает целая гора тестов, громоздящихся друг на друге.
Бесконтрольное автоматическое тестирование UI
UI-тестирование позволяет убедиться в том, что пользователь не сможет сделать в пользовательском интерфейсе ничего такого, что нарушит работу программы или вызовет сбои. Для проведения ручного тестирования может потребоваться много рабочей силы — что неэффективно, особенно по мере роста программы и увеличения количества функций, требующих проверки.
При автоматизации процесс тестирования становится более быстрым, но он все равно может потребовать полной мощности компьютера тестера в течение целого дня. Для этого тестировщики запускают тест в конце дня и оставляют его на ночь, а на следующее утро их ждут результаты. Вполне разумный подход, правда?
На первый взгляд, это действительно разумно. Тестировщик использует свой компьютер для тестирования других программ в течение дня, а ночью запускает UI автотесты.
Однако именно потому, что это интуитивно понятно, это и является распространенной ошибкой. Многое может пойти не так, когда автоматизированное тестирование выполняется бесконтрольно.
Если что-то пойдет не так на ранней стадии, то и остальные результаты будут неверными. Выходит, что целый день тестирования не дал никакой полезной информации из-за ошибки, которую можно было легко обнаружить и исправить, если бы кто-то присутствовал при выполнении теста и следил за его правильностью.
Автоматизация неправильных действий
Автоматизация тестирования требует времени на настройку. Тестировщики должны выбрать подходящие для проекта инструменты и убедиться, что они знают, как правильно их использовать.
Все это требует много времени и организации, и если в итоге автоматизируется тест, который обычно выполняется раз в месяц, то это не будет стоить затраченных усилий. Прежде чем приступать к автоматизации, убедитесь, что она позволит тестерам сэкономить ощутимое количество времени.
Кроме того, некоторые задачи просто невозможно автоматизировать.
Перспективы замены ручного тестирования
Автоматизированные тесты могут найти только то, что им сказано искать. Если шрифты на веб-странице выглядят странно, а тест проверял только работоспособность ссылок, он решит одну проблему (ссылки), но не поймет, что дело в другой (шрифтах).
Ручное тестирование может выявить проблемы, выходящие за рамки первоначального объема тестирования. Метод исследовательского тестирования дает тестировщику возможность находить неожиданные баги по мере их появления, даже если это не то, что он изначально искал. Автоматизированное тестирование, нацеленное на выполнение отдельной задачи, может быть тщательным. А вот всеобъемлющим оно быть не может.
Примеры хорошего автоматизированного тестирования
Автоматизация тестирования проводится с целью снизить риски. Если тестировщик может минимизировать риск и повысить эффективность, автоматизация тестирования абсолютно необходима. Нет смысла тестировщику тратить часы на ручную проверку ссылок на сайте, если веб-краулер может выполнить ту же работу за меньшее время и при этом вряд ли допустит ошибку.
Хорошим эмпирическим правилом для принятия решения о том, когда следует применить автоматизацию вместо ручного тестирования, является вопрос о том, будет ли тестирование быстрым или непрерывным. Если тесты будут проводиться непрерывно, то лучше всего их автоматизировать.
Люди хуже машин справляются с постоянным и безошибочным выполнением повторяющихся задач. Мы жаждем новизны и склонны терять фокус внимания, когда долго выполняем одно и то же действие. Из-за этого возникают ошибки.
В результате тестировщик поймет, что: а) потратил больше времени, чем потратил бы при автоматизации; б) выполнил работу хуже и создал больше головной боли в дальнейшем.
Джейсон Хаггинс создал популярный инструмент автоматизации Selenium, поскольку обнаружил, что многие дни его работы в качестве тестировщика проходят в выполнении одних и тех же задач — задач, которые, по его мнению, были настолько просты и понятны, что с ними справился бы даже робот. Поэтому он разработал скрипт, который автоматически тестировал функциональность браузера за него. Инструмент мгновенно завоевал успех и быстро стал отраслевым стандартом.
Даже те QA-специалисты, которые скептически относятся к автоматизации, понимают, что во многих случаях она приносит пользу.
Почему ручное тестирование никогда не умрет
Мы рассмотрели хорошие, плохие и очень плохие аспекты автоматизации тестирования. Мы знаем, в каких ситуациях она работает хорошо, а в каких заставляет «сборочные линии разбрасывать автомобильные шины по заводу». Давайте немного поговорим о ручном тестировании и о том, почему оно по-прежнему важно.
Автоматизированное тестирование нуждается в контроле
Как я уже говорил, в связи с проблемой Model 3 и рисками, связанными с запуском автоматизированного тестирования в ночное время, все может пойти совсем не так, как хотелось бы, если оставить средства автоматизации без контроля.
Основные преимущества автоматизированного тестирования проявляются в том случае, если оно проводится вместе с ручным или под присмотром тестера. Уже по одной этой причине тестировщики должны быть спокойны, зная, что в обозримом будущем автоматизация не сможет их заменить.
Когда тестировщик выполняет исследовательское тестирование, он изучает программное обеспечение без заранее разработанного плана. Это одна из самых популярных форм тестирования в QA.
Исследовательское тестирование можно выполнить только вручную.
Преимущество этого вида тестирования заключается в том, что оно позволяет тестировщику адаптироваться к полученным результатам немедленно, без необходимости написания нового тест-кейса.
Исследовательское тестирование также позволяет сотрудничать, разрабатывать теории и взаимодействовать «на лету».
С развитием теории гибкой разработки исследовательское тестирование становится все популярнее.
Автоматизированному тестированию не хватает гибкости и креативности, поэтому оно не подходит для исследовательского тестирования. Автотесты лучше всего работают в определенной среде, где точно знают, что искать. Исследовательское тестирование является полной противоположностью — оно позволяет тестировщику идти туда, куда ему захочется.
А что думаете вы?
Некоторые выступают за автоматизацию тестирования, а другие по-прежнему считают, что ручное тестирование работает лучше. Как QA-команды могут получить максимальную отдачу от автоматизации тестирования? Готовы ли мы к использованию искусственного интеллекта в тестировании?
Поделитесь своим мнением в комментариях.
Нашла и перевела: Ксения Мосеенкова
Перевод подготовлен в преддверии старта онлайн-курса для начинающих тестировщиков. В рамках курса скоро пройдут открытые уроки, на которых разберем основы ручного тестирования и инструменты, облегчающие работу тестировщика. Присоединяйтесь, если интересно узнать больше о работе QA-специалиста.