Содержание:

  1. Что такое программно-аппаратный комплекс
  2. Чем занимается инженер по тестированию программного обеспечения
  3. Насколько эта профессия востребована?
  4. Какими навыками должен обладать специалист?
  5. Какие есть возможности для роста?
  6. Где обучают профессии инженера по тестированию программного обеспечения?

Что такое программно-аппаратный комплекс

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

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

Чем занимается инженер по тестированию программного обеспечения

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

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

Инженеры по тестированию программного обеспечения используют разные методы автоматизированного тестирования — пишут сценарии для тестов, имитируют запросы одних сервисов к другим, а также нештатные ситуации на реальном «железе» и виртуальных стендах с использованием open source-решений. К примеру, чтобы проверить устойчивость комплекса к отказам, проводят более тысячи тестов в разных комбинациях. Как поведет себя система, если у нее откажет один жесткий диск, а второй будет работать? А если действующих жестких дисков будет два, а один сломается? Специалисту необходимо просчитать все эти и другие комбинации и построить на их основе тестовые сценарии, которые можно переиспользовать. Таким образом можно автоматизировать проверку работы программного кода у разных частей комплекса: конкретных модулей (unit-тестирование), функций отдельных сервисов (компонентное тестирование) и системы в целом (end-to-end тестирование).

Фото: ITMO.NEWS

Фото: ITMO.NEWS

Насколько профессия инженера по тестированию ПО востребована?

По данным hh.ru, сейчас на российском рынке требуется более шести тысяч инженеров по тестированию программного обеспечения. Специалистов ожидают в «Сбере», «Ситимобил», Альфа-Банке, Wildberries и крупных IT-компаниях. Только в YADRO открыто несколько десятков вакансий для QA-инженеров, есть junior-позиции

Какими навыками должен обладать специалист?

  1. Знать и уметь работать с операционными системами семейства Linux, а также знать и понимать принципы UNIX. Благодаря открытому исходному коду любой пользователь может сам разработать программу или внести изменения в уже существующие.
  2. Знать несколько языков программирования и разбираться в особенностях их синтаксиса, чтобы быстро переключаться между ними. Для тестирования прошивок под определенные устройства, карт расширения и драйверов пригодится базовый язык C, а Assembler пригодится при отладке скомпилированного кода и чтении получившегося кода. А чтобы написать end-to-end тесты и автоматизировать тестирование, понадобятся высокоуровневые языки программирования — например, Python, Bash и Go, а еще фреймворки PyTest и Allure Report для формирования и отображения отчета о тестировании.
  3. Знать, как устроены сетевые протоколы, какие у них преимущества и недостатки, как они передают между собой данные. Это поможет создавать более точные тесты и находить ошибки, связанные с сетевым взаимодействием.
  4. Еще один полезный навык — системное мышление. Специалисту важно уметь видеть картину целиком — не только погружаться в суть задачи и исправлять все ошибки, но и искать, на какие смежные области может повлиять обнаруженная проблема.
  5. Наконец, инженеру по тестированию пригодится знание тест-менеджмент систем, которые помогают управлять процессом тестирования — планировать и организовывать его, а также формировать отчетность и контролировать задачи в команде. Компания YADRO разработала собственную систему тест-менеджмента TestY и выложила ее в open source. В ней могут одновременно работать несколько сотен тестировщиков, а функционал системы легко расширяется за счет дополнительных плагинов.

Максим Теричев. Фото: Дмитрий Григорьев / ITMO.NEWS

Максим Теричев. Фото: Дмитрий Григорьев / ITMO.NEWS

Какие есть возможности для роста?

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

Где обучают профессии инженера по тестированию программного обеспечения?

В 2023 году ИТМО и группа IT-компаний YADRO открыли корпоративную магистратуру «Инструменты разработки и анализа программ». На ней специалистов с профильным бакалаврским образованием в IT научат проектировать многофункциональные инструменты для разработчиков — новые языки программирования и компиляторы для них, анализаторы кода, фаззеры, интегрированные среды разработки, а также дебаггеры и профайлеры. Выпускник программы, среди прочего, может реализоваться в области тестирования ПО и смежных с ней: стать разработчиком и архитектором интегрированных сред разработки и компиляторов для нее, руководителем исследований в области качества программного обеспечения, инженером по качеству, фаззинг-инженером или специалистом по автоматизации QA.