Должны ли тестировщики уметь программировать?

Сколько людей, столько и мнений. А как вы считаете?

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

Если же ты не обладаешь техническими навыками, то рискуешь быть названным «мануальщиком», «обезьянкой» или «ручным тестером». Это обидно и оскорбительно, ведь при наличии технических навыков тебя называли бы гордо – «автоматизатор». Мой взгляд на проблему кардинально противоположен ситуации на рынке. Для меня тестировщик – это, прежде всего, человек, обладающий критическим складом ума, аналитическими способностями, умеющий общаться с другими людьми и четко формулировать свои мысли. Тестировщик также должен разбираться в видах тестирования, целях и задачах каждого из них, методиках тестирования и прочих премудростях. Из технических навыков от тестировщика, на мой взгляд, стоит требовать умения работать с операционной системой на уровне продвинутого пользователя, представления о различных архитектурах приложения, наличия опыта работы с одним из инструментов для баз данных, знания принципов работы с системами контроля версий и управления задачами. Этого вполне хватит для успешной работы. В веб-разработке дополнительно необходимо детальное понимание работы веб-приложений, а также опыт работы с современными браузерами и инструментами для них.

А как же инструменты для автоматизации тестирования? На мой взгляд, это требование не является столь критичным и далеко не всегда требует навыков программирования. У большинства подобных инструментов есть часть для работы непосредственно с тестовыми сценариями (запись, запуск, отладка и прочие функции), часть для интеграции сценариев с приложением (некий исполнитель команд, контроллер приложения и т.д.) и часть для «программирования» (среда для написания сценариев вручную, отладки сценариев, IDE). Так вот, мне видится основная работа тестировщика с первой частью. Конечно, было бы очень здорово, если бы тестировщик также неплохо разбирался в оставшихся частях, но это совершенно не критично. Ведь в команде есть технические специалисты, которые могут помочь с выполнением такого рода задач. Я бы выделил отдельную роль «технический инженер по вопросам тестирования» (software technical engineer). Эту роль может выполнять любой член команды, который обладает достаточными навыками и знаниями. Это может быть выделенный человек в команде на помощь тестировщикам (часто в компаниях такая роль называется «эксперт по автоматизации тестирования»). Важно помнить, что разделение ролей накладывает разделение требований к кандидату на каждую роль.

Я встречал подобные ответы на вопрос об умении программировать у тестировщика: «Я считаю, что да, каждый в нашем деле должен уметь программировать. Надо уметь автоматизировать свои рутинные задачи.». Мне кажется, что гораздо важнее уметь анализировать собственную работу и находить места, требующие автоматизации, и поднимать вопрос об автоматизации этих мест в команде. Многие просто повторяют одни и те же десятки шагов каждый день и даже не задумываются, что все могло бы быть проще, быстрее и надежнее. А кто будет автоматизировать – это очень сильно зависит от вашей команды. На написание shell-скрипта или скрипта на Python у сисадмина или разработчика может уйти на порядок меньше времени, чем у тестировщика. При этом вероятность ошибки в нем будет на порядок ниже. Зачем это разработчикам или сисадминам? Да потому что помощь одному звену (часто самому слабому звену) помогает оптимизировать весь процесс целиком и сделать его гораздо более эффективным. А это нужно всей команде, вне зависимости от ролей и обязанностей.

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


Залишити коментар
Будь ласка, введіть ваше ім’я
Будь ласка, введіть коментар.
1000 символів

Будь ласка, введіть email
або Відмінити

Інші статті в категорії IT, програмування, розробка