Да кто такой SDET, черт возьми? |
26.04.2023 00:00 |
Автор: Гаурав Синх (Gaurav Singh) Сейчас очень распространено такое название должности автоматизатора, как SDET (расшифровывается, как инженер по разработке ПО в тестировании). Уф! У меня ушло почти семь секунд на то, чтобы полностью это произнести. Шутки в сторону – эта роль была впервые популяризирована крупными техническими компаниями вроде Microsoft и Amazon, и сейчас ее часто можно встретить в описаниях вакансий по всему миру. Некоторые компании вроде Google отбросили D в пользу более четкого наименования SET (инженер ПО в тестировании), и, конечно же, многие компании последовали за ним. Но кто же такой SDET?
Иногда я слышу утверждения вроде «Я инженер-автоматизатор, но хотел бы перейти в роль SDET». Это зачастую означает, что люди нечетко понимают, что на самом деле означает работа в качестве SDET. Инженеры-джуниоры, новички в отрасли, могут сразу же унаследовать этот титул, присоединяясь к компании – или же инженеры миддл-уровня могут получить его, меняя работу. Это, безусловно, один из способов стать SDET, но что же включает в себя эта роль? Навыки, необходимые SDETЦель этой статьи – осветить деятельность SDET и навыки, об улучшении или развитии которых стоит подумать, если вы уже инженер в этой роли, или планируете таким стать. Одно из лучших описаний роли я прочитал в книге «Как тестируют в Google» Джеймса Уиттакера, Джейсона Арбора и Джеффа Каролло. Инженер ПО в тестировании (SET) – это также роль разработчика, только он концентрируется на тестируемости и общей инфраструктуре тестирования. SET проводит ревью дизайна и пристально оценивает качество кода и риски. Он занимается рефакторингом кода, чтобы тот стал более тестируемым, и пишет фрейморки юнит-тестов и автоматизации. Он полноценно участвует в создании кода проекта, но больше обеспокоен повышением качества и тестового покрытия, а не добавлением функциональности или улучшением производительности. STE также практически стопроцентно занят написанием кода, но делает это во имя качества, а не ради функций, которыми будет пользоваться заказчик. Близость к роли разработчикаРазберем это утверждение, чтобы самостоятельно сделать более конкретные выводы. SDET – это в первую очередь гибридная роль. Если посмотреть на широкий спектр ролей между чистой разработкой и чистым тестированием, то SDET находится куда ближе к разработке, но думает, как настоящий профессиональный тестировщик. Также довольно очевидно, что SDET – это человек, который будет писать множество тестового кода, и должен быть способен легко создавать чистый, хорошо организованный код. Он должен уметь проводить ревью кода, неважно, создан ли этот код коллегой-SDET или SWE (разработчиком). SDET должен отлично понимать систему, за которую он отвечает, в целом, а также стек ее приложений в контексте своей работы (веб-приложение, мобильное приложение, десктопное приложение или распределенный бэкэнд). Итак, это означает понимание не только того, как работают различные инструменты тест-автоматизации, библиотеки и фреймворки, но и того, как разработчики пишут функциональный код, а также способность добавлять покрытие юнит, интеграционным, E2E-тестам согласно функциональным и нефункциональным требованиям к системе. SDET можно представить, как Т-инженера или как универсала команды, озабоченного качеством. Итак, теперь мы понимаем широкий спектр ожиданий от SDET, и вы, возможно, думаете о том, существуют ли конкретные дела, которыми, как правило, занят человек в этой роли, работающий в Agile-команде по разработке ПО. Ниже перечислены некоторые из них. Навыки разработки ПО
CI/CD, отчетность
Тест-компетентность
В чем разница между тест-инженером и SDET?Вы спросите, чем же SDET отличается от тест-инженера? Книга вновь дает хороший краткий ответ на этот вопрос. Тест-инженер (TE) связан с ролью SET, но концентрируется на другом. Эта роль ставит тестирование ради пользователя во главу угла, а разработчиков – на второе место. Некоторые тест-инженеры Google тратят значительное время на создание кода в форме скриптов автоматизации, которые управляют сценариями использования и даже имитируют пользователя. Они также организуют тест-работу SWE и SET, интерпретируют результаты тестирования и руководят выполнением тестов, особенно на поздних стадиях проекта, когда движение к релизу становится более интенсивным. ТЕ – продуктовые эксперты, советники по качеству и риск-аналитики. Многие из них пишут много кода; многие из них пишут лишь чуть-чуть. Ключевая разница тут в фокусе на пользователя: несмотря на то, что тест-инженер пересекается со SDET по задачам автоматизации, он концентрируется на функциях, обращенных на пользователя, проводит исследовательское тестирование и пишет автоматизированные сценарии. Ряд общих вопросов и фактовЯ занимаюсь этим не первый день, и мой опыт гласит, что эта роль – занятость на полный рабочий день, и для овладения ей нужно время, терпение и множество экспериментов. Ниже перечислю другие базовые данности этой работы: Как насчет инструментов?Если вы заметили, я пока не упоминал какие-либо специализированные инструменты или фреймворки, и намеренно не заострялся на этом вопросе. На это у меня есть причины J Это связано с тем, что каждая проблема в разработке ПО уникальна. У нас существуют проблемы различных габаритов, и, как правило, решение сильно зависит от контекста – множества факторов вроде компании, команды, культуры, требований и т. Д. Решение, работающее в небольшом стартапе, может не сработать для компании, в которой двести инженеров трудятся над одним и тем же кодом. Подходы могут меняться при любом изменении масштаба. Однако вы должны овладеть множеством инструментов и фреймворков тестирования – или в ходе работы, или вечерами и на выходных. Это позволит взрастить вашу интуицию и получить достаточно широкий опыт, чтобы смочь смешивать и сравнивать инструментарий, создавая решения для проблем тестирования. Возможно, вы сталкивались с цитатой "Если у вас есть только молоток, все вокруг выглядит как гвоздь". Поэтому оттачивайте свое мастерство и, как профессионалы, пополняйте свой монтажный пояс множеством инструментов и решений для применения в подходящей ситуации. Со временем вы наберетесь опыта, который вместе с интуицией поможет вам определить, что тут может сработать, а что вряд ли пригодится. Как насчет языков программирования?Как SDET, вы должны сначала глубоко изучить один язык программирования – неважно, какой вы выберете, но сделайте выбор и придерживайтесь его какое-то время. Если вам нужны варианты, выбирайте Java, Python или JavaScript – они наиболее популярны, и на них пишется множество продуктов и автотестов. Как только вы овладели одним языком, начинайте изучать некоторые другие в более общем смысле – как вы уже могли заметить, вам придется читать множество проектного кода и писать тесты или инструменты на этих языках. В микросервисной архитектуре ваши разработчики, возможно, выбрали 2-3 разных языка, поэтому способность читать и понимать, что делает код, критически важна. Что, если в компании нет роли SDET?У многих компаний отсутствует такая позиция, как SDET. Возможно, у них есть должности вроде инженера по качеству, QA-инженера, QA-инженера-автоматизатора, тест-инженера, инженера-автоматизатора, и т. д., и т. п. Открою вам секрет. Названия должностей не важны. Важно то, что всем этим нужно заниматься, так как это приносит много пользы команде по разработке ПО и продукту, и вы, как SDET, должны взять на себя роль евангелиста в команде и компании вне зависимости от названия вашей должности. Не дожидайтесь специального разрешения, сделайте шаг вперед и улучшайте статус кво. Ранее я писал ряд статей на тему названий должностей и той путаницы, которую они привносят, если неправильно определены в компании, можно с ними ознакомиться:4 Одинокий SDET в команде?Еще один распространенный вопрос – что, если я единственный SDET в команде? Ну, для начала пристегните ремни, это будет непростое путешествие. А во-вторых, выше нос – теперь у вас есть ряд ограничений, и вы можете проработать подход, который заставит их работать. Довольно-таки очевидно, что на автоматизацию не будет времени, если вы будете вести себя, как исследовательский тестировщик, забрасывая в топку Jira задачи на каждое сделанное разработчиком изменение. Поэтому вам нужно честно и открыто поговорить о приоритезации вашего времени с разработчиками и руководством, и убедиться, что все в команде тестируют, чтобы у вас оставалось время на автоматизацию. Вам уместнее тратить время на создание инструментов, фреймворков и автотестов – они масштабируются далеко за пределы ваших усилий сделать все вручную. Я думаю, что тут есть свои нюансы – возможно, поговорю о них в следующей статье. ЗаключениеНадеюсь, эта статья дала вам представление о роли SDET. Это мой взгляд на эту роль, и я убежден, что в статью не вошло множество высокоуровневых деталей. Будем продолжать разговор – дайте знать, если я что-то упустил. |