Привет, Хабр! Меня зовут Ольга Кузнецова, я QA Lead, более 7-ми лет работаю в ИТ-сфере в различных должностях и сегодня хочу поговорить о минимальных необходимых hard skills для тестирования бэкенда. 

Эта статья будет полезна как начинающим тестировщикам, которые входят в  сферу, так и опытным коллегам, которые только сталкиваются с областью бэк-энд тестирования либо хотят структурировать свои знания. А так же эта информация пригодится для тех, кто готовится к собеседованиям или уже их проводит. Здесь представлен и структурирован мой взгляд на данную тему. Если у вас появятся какие-то замечания, и/или дополнения — буду  рада их обсудить в комментариях. 

Информация изложена “от общего к частному”, и в каждом разделе рассказано про минимально-достаточные знания. В самом начале речь пойдёт про навыки, которые необходимы любому тестировщику, в том числе, и бэкэндеру, так как я считаю это неотъемлемой частью. После перейдём к более узко-направленным вещам.

0.0 Базовая база

 Совершенно ни для кого не секрет тот факт, что надежный фундамент в любой области — это важно. Именно по этой причине так много внимания уделяется, на первый взгляд, простым вещам и важность этих знаний я вынесла отдельно. Корректное изучение более сложных вещей невозможно без глубокого понимания азов. Игнорирование этого момента негативно сказывается на всём процессе тестирования и приводит к его замедлению, усложнению и увеличению количества ошибок в продакшене. Более того, это первый этап большинства собеседований независимо от специализации в QA.

0.1 Терминология

   Общая терминология тестирования, номенклатура, англицизмы — это вещи, незнание которых замедляет процесс изучения предметной области и работы. Если вы видите в каких-то статьях/рабочем чате слова, которые не понимаете, их лучше загуглить, уточнить у коллег или ментора и таким образом наработать активный словарь, необходимый для повседневных задач. Однако стоит избегать чрезмерного использования англицизмов, злоупотребление терминологией может привести к формированию “языкового барьера” в команде.

Обязательный минимум, с которым будет проще жить — это базовый технический английский + внутренние командные термины.

0.2 Артефакты тестирования

Сложно переоценить значимость умения работать с артефактами — это прямая обязанность любого QA-инженера независимо от направления и обязательный минимум. Обратите внимание на коммуникацию от коллег по команде и если в обратной связи вы слышите, что формулировки, например, в дефектах не достаточны и/или описания не полны — обратитесь к уже созданным шаблонам. Они упростят вашу жизнь. Если у вас еще нет практики сбора обратной связи, рекомендую сделать простенькую гугл-форму и собрать ее. 

0.3 Техники тест-дизайна

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

0.4 Паттерны

Достаточно спорным моментом являются паттерны, поскольку не каждый ручной тестировщик будет писать автотесты. Один мой коллега когда-то сказал: “Всё давно изобретено до нас и для нас”. Паттерны — это просто опыт других людей, сформулированный в набор правил, который поможет упростить вашу жизнь. Учиться лучше на чужих ошибках и обязательным минимумом в данном случае будут page object и page factory.

На этом заканчивается блок обязательных базовых вещей в моём списке. Переходим непосредственно к знаниям и навыкам для работы с бэкэндом.

1. Операционная система

Одна из самых популярных серверных операционных систем — это Linux, а работа с командной строкой — это отдельный вид удовольствия. Со стороны это может выглядеть как заставка из матрицы или картинки из множества других фильмов: непонятные буквы, призывающие дьявола и двоичный код. Независимо от операционной системы для автоматизации рутинных действий могут быть использованы скрипты и самые часто используемые инструменты — Bash и PowerShell.

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

Любимый вопрос на собеседовании: “Что делает команда chmod 666”?

2. Клиент-серверная архитектура

Знания, которые требуются на подкорке, и их невозможно переоценить. Выстраивание процесса тестирования, написания стратегии, создания тест-кейсов, локализации появляющихся проблем — всё это при отсутствии знаний архитектуры будет сопровождаться проблемами различной сложности. Более того, они всегда будут стрелять в самых неожиданных и непредсказуемых местах и спрогнозировать их невозможно! 

Обязательный минимум: три уровня. Уровень сервера в некоторых источниках называют мидлом, что никак не сказывается на общей архитектурной схеме и роли её частей. 

Шаблонная задача для отработки навыков клиент-серверной архитектуры: утро, вы не спеша просыпаетесь, открываете любимый Хабр чтобы полистать его за чашечкой кофе и понимаете, что проспали и вы не успеваете приготовить завтрак. Есть хочется и что же делать? Наверное, можно его заказать! Вот вы открываете приложение, выбираете необходимые позиции, указываете адрес, оплачиваете заказ и через полчаса получаете отбивку о том, что заказ доставлен, но при этом вам ничего не принесли. На каком из уровней программы могла произойти ошибка?

3. Протоколы передачи данных

Помимо самого простого и известного протокола IP, существует ещё ряд других, работающих на различных уровнях. Они отличаются по функционалу, у каждого из них есть свои плюсы и минусы при использовании для решения определенных прикладных задач. Фактически, в большинстве своём на различных проектах требуется глубокое знание только одного из упомянутых протоколов, а про остальные достаточно знать на уровне “об их существовании”. Так какой же из них нам нужен более подробно?

Обязательный минимум: конечно HTTP! Здесь прежде всего стоит обратить внимание на основные методы: GET, POST, PUT, PATCH, DELETE. Это самые часто используемые из большого количества существующих. И второй важный пункт — нужно разобраться с категориями кодов ответов и запомнить основные из них. В идеале, почитать отличие http от https.

4. REST-архитектурный стиль

В большинстве случаев именно REST API архитектурный стиль используется для создания различных серверных приложений. У него есть огромное количество плюсов и один из них — универсальность, а как следствие — масштабируемость, что позволяет ускорить процесс разработки. 

Обязательный минимум: понимание REST-архитектуры и, в большинстве своём, знание JSON как самого распространенного на данный момент формата по обмену данными. Здорово, если для общего развития вы будете знать о том, что такое GraphQL.

4. Инструменты

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

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

Примеры открытых API: api.nasa.gov и favqs.com/api/

6. Базы данных

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

Обязательный минимум: умение делать выборки из используемой базы данных для проверки имеющихся записей и работать с этими данными, сортируя их, группируя и другими различными образами создавая необходимую проверку. Здорово, если вы будете знать JOIN синтаксис и уметь применять (это, наверняка, вам понадобится во время собеседования!!). Однако, чаще всего обычного SELECT для работы будет достаточно.

7. Очереди

При тестировании бэк-энда у нас может скапливаться очередь из ещё не отправленных сообщений. Очередь может быть организована двумя разными способами: FIFO и LIFO. Выбор способа зависит от необходимости, архитектуры, проекта, аналитики и запросов бизнеса, что для нас, как для инженеров, не несет особых сложностей. В любом случае процесс работы с очередями достаточно общий, и тестирование сводится к проверке наличия в очереди сообщения и соответствия его контракта аналитике, а содержимого — к сценарию тестирования. Инструментов для работы существует множество, но в большинстве случаев используется Kafka. 

Обязательный минимум: знание способов организации очередей, обзорное представление об инструменте и способах фильтрации информации для вашего удобства.

8. Логирование

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

Обязательный минимум: ориентироваться в уровнях логирования для корректной оценки различных состояний системы. В каждом из используемых инструментов есть способ фильтрации. Необходимо уметь работать как минимум с одним из них: от grep в командной строке до KQL в кибане.

9. Автоматизация

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

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

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

Если у вас есть какие-то замечания или предложения - буду рада их обсудить.

Комментарии (9)