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

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

.
Распространенные поисковые запросы, часть 5: "Можно ли автоматизировать тестирование?"
20.09.2021 00:00

Автор: Ли Хокинс (Lee Hawkins)
Оригинал статьи
Перевод: Ольга Алифанова

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

Добравшись до середины серии, я столкнулся с вопросом "Можно ли автоматизировать тестирование?" (и связанным с ним вопросом, "Как автоматизировать тестирование?").

Если вы следите за тредами о тестировании в Twitter и LinkedIn, то знаете, что этот вопрос поднимается с монотонной регулярностью, и часто выливается в очень жаркую дискуссию с категоричными мнениями с обеих сторон баррикад.

Напомню, что мое любимое определение тестирование исходит от Джеймса Баха и Майкла Болтона:

"Тестирование – это процесс оценки продукта путем его изучения через опыт, изучение и экспериментирование, что включает до определенной степени следующее: вопросы, обучение, моделирование, наблюдения, умозаключения, и т. д."

Если взглянуть на это определение, то тестирование – в крайней степени человеческая деятельность, потому что такие навыки, как изучение, исследование, вопросы, умозаключения – это не то, на что хорошо способны машины (даже с AI/ML). Люди могут, а могут и не пользоваться инструментами и автоматизацией, применяя эти навыки, но это не значит, что само тестирование "автоматизируется".

Разница между "тестированием" и "проверками", описанная Джеймсом Бахом и Майклом Болтоном, крайне мне пригождается, когда я говорю об автоматизации и выступаю против идеи, что тестирование можно автоматизировать (по моему опыту, это гораздо лучше разницы между "валидацией" и "верификацией"). Напомню определение проверки:

"Проверка – это процесс оценки путем применения алгоритмических правил принятия решений к конкретным наблюдениям за продуктом".

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

Размышляя о проверках, можно понять, что с ними связана деятельность и за пределами их выполнения (машиной или иным путем): кто-то решил, что эта проверка нам нужна (анализ рисков), кто-то спроектировал проверку, кто-то ее внедрил (закодировал), кто-то решил, за чем надо наблюдать и как это сделать, и кто-то оценил результаты прогона проверки. Эти аспекты проверки – деятельность, относящаяся к тестированию, и, что важно, их нельзя передать машине – то есть автоматизировать. Для дизайна, внедрения и анализа проверки и ее результатов нужны солидные навыки; сам по себе прогон проверки – это самая легкая задача.

Снова процитирую Майкла:

"Машина, дающая результат, не тестирует; машина, выполняя проверки, ускоряет и расширяет нашу способность выполнять определенные действия в ходе тестирования, которым занимаемся мы, люди. Машина вносит бесценный вклад, но важно не замирать перед ней в восхищении. Вместо этого держите в уме цель, к которой она помогает двигаться, и развивайте навыки, позволяющие с умом и эффективностью применять инструменты".

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

Если мы ошибочно поверим, что "автоматизированное тестирование" существует, то можем легко попасть в ловушку и свести тестирование к всего лишь автоматизированным проверкам. В результате мы сконцентрируемся на разработке и запуске все большего и большего количества автоматизированных проверок. Я сталкивался с этой проблемой многократно в разных командах и странах – особенно при регрессионном тестировании.

Я думаю, нам лучше бы убрать "автоматизированное тестирование" из нашего словаря и вместо этого говорить об "автоматизации в тестировании" и важной роли, которую играет автоматизация – как в тестировании, так и в проверках. Постоянная пропаганда "автоматизированного тестирования" делает эту задачу сложнее, чем она кажется. Не надо далеко ходить, чтобы найти продавцов тест-инструментов, использующих этот термин и делающих смелые заявления о своих "решениях по автоматизации тестирования". Неудивительно, что многие тестировщики не знают, как отвечать на вопрос, можно ли автоматизировать тестирование – быстрый поиск в Google привел меня к вот таким искрометным результатам в топе: "Что такое автоматизированное тестирование" (SmartBear), "Автоматизированное тестирование" (Atlassian), "Тест-автоматизация и автоматизированное тестирование: важная разница" (Tricentis).

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

Список рекомендованной литературы:

  • Testing and Checking Refined – статья Джеймса Баха и Майкла Болтона, в которой подробно обсуждается разница между тестированием и проверками, а также разница между проверками, которые выполняют люди, и проверками, которые выполняются машинами.
  • Automation in Testing (AiT) – сайт Ричарда Брэдшоу и Марка Уинтерингэма – их шесть принципов AiT звучат для меня очень весомо.
  • Блог База Дейкстры.