Да не нужны нам тестировщики — или все-таки нужны?

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

В каком направлении должна двигаться ваша команда? Чтобы ответить на этот вопрос, вам нужно понять, в чем разница между тестированием, проводимым тестировщиками и разработчиками, а также узнать сильные и слабые стороны каждого подхода. Только тогда вы сможете решить, в каком направлении дальше двигаться.


Аргумент в пользу тестирования разработчиками

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

Некоторые команды и вовсе не заморачиваются с тестированием продукта, бегло пройдясь по его коду. Знаю такие случаи, когда команда и вовсе была не уверена, что их код скомпилируется после внесения всех изменений. Если вы все-таки хотите подкинуть работы разработчикам, убедитесь в том, чтобы процесс будет подробно описан и регламентирован. Но бывают случаи, когда программисты не хотят заниматься тестированием. Какие для этого причины? Прежде всего, нежелание можно объяснить работой данного разработчика над определенным модулем продукта, так что он просто не может знать, как должно приложение работать. Другая причина – уверенность в безупречности кода.

„Приложение, тестированием которого занимался его разработчик, терпит неудачу, ведь программист довольно часто уверен в безупречности кода и просто пренебрегает тестированием продукта.”

—James Jeffery

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

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

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


Аргумент в пользу тестировщиков ПО

Тестирование ПО требует определенного набора умений, которые отличны от навыков успешного разработчика.

„Важность хорошего тестировщика в команде нельзя переоценить. Тестировщики хорошо дисциплинированы, им нравится однообразие, и они ни за что не признают, что не обнаружение ошибок является доказательством того, что дефектов нет. ”

—Nataliya Hordiy, quality assurance analyst at LYONSCG

Тестирование и написание отчетов об ошибках разработчикам требует от их уверенности и способности постоянно мыслить творчески.

«Хорошие тестировщики знакомы со всеми нюансами всего приложения и эффективны при тестировании, знают намного больше об истории приложения, чем разработчики», – писал Хорди.

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

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

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

Наличие тестировщика ПО в команде необходимо.


Сбалансированный подход лучше всего

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

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