Apeiron
RU UA EN

IT карьера: QA Automation engineer

19 мар. 2021 г., 13:16:22
Содержание статьи:

Автоматизация процессов

Automation tester карьера


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

Что, в свою очередь, способствует:

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

Принципы

Хотя автоматизация процессов и имеет возможность реализовываться на разных уровнях, ее принципы для каждого из них, равно как и для любого из процессов, являются едиными. Данное обстоятельство задает условия максимально эффективной реализации процессов, осуществляемых в автоматическом режиме и определяет принципы управления ими со стороны автоматики.
К таковым принципам относятся:
1.Согласованность. В процессе, который контролируется автоматикой, все операции должны быть согласованы как взаимно, так и с его входами и выходами. Невыполнение данного условия нередко приводит к сбоям в выполнении поставленной задачи.
2.Интеграция. Находящийся под управлением автоматики процесс должен иметь возможность встраиваться в общую систему организации. В соответствии с уровнем автоматизации подобная интеграция может быть реализована по-разному. Что, впрочем, не меняет сути самого принципа, которая остается без изменений. Цель автоматизации любого процесса – это обеспечение его взаимодействия со средой, которая является по отношению к нему внешней.
3.Независимость исполнения.

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

Так, автоматизация производственных процессов предусматривает такие принципы, как:

- непрерывность;
- специализация;
- пропорциональность и т.п.

Уровни


Автоматизация процессов является необходимым условием поддержки управления компанией, затрагивающим все ступени ее иерархии, а уровень автоматизации определяется в соответствии с уровнем управления. Основных уровней управления три:
- оперативный;
- тактический;
- стратегический.
На основании описанной выше классификации выделяют следующие уровни автоматизации:
1. Уровень исполнителей. Характерными процессами для него являются те, которые выполняются регулярно. Их автоматизация работает на достижение оперативных целей (пример – реализация одного из процессов производства), поддержание заданных параметров (пример – автопилот авиалайнера) и сохранение нужного режима функционирования (пример – температурные показатели котла).
2. Уровень управления производством. В данном случае целью автоматизации является корректное распределение задач между процессами, находящимися ниже по иерархической лестнице. В качестве примера можно привести осуществление планирования производства и обслуживания, а также процессы управления ресурсами, документацией и пр.
3. Уровень управления предприятием. Автоматизация, осуществляемая на данном уровне, решает задачи, связанные с анализом и прогнозированием. Способствование эффективной работе высшей ступени иерархии предприятия в финансово-хозяйственной области – вот главное ее предназначение.
Что касается осуществления автоматизации процессов на каждом из вышеперечисленных уровней, то оно возможно благодаря использованию таких систем, как:

Автоматизация процессов тестирования



- CRM – система управления взаимоотношениями с клиентами;
- OLAP – аналитическая обработка в реальном времени;
- ERP – управление ресурсами предприятия.

Каждую из систем автоматизации можно отнести к одному из трех основных их типов:

1. Неизменяемый. В ходе процесса заданная последовательность действий не подлежит никаким корректировкам.
2. Программируемый. В зависимости от используемой программы и особенностей процесса, последовательность действий может меняться. Выбор нужной последовательности зависит от набора инструкций, на который и ориентируется система.
3. Самонастраиваемый. Нужные варианты решения задачи могут выбираться на усмотрение системы во время работы. Изменение их последовательности и условий выполнения производится посредством мониторинга хода процесса.
Данные виды автоматизации процессов могут использоваться обособленно либо как часть комбинированной системы: здесь все зависит от ситуации.

Автоматизация тестирования

Что такое автоматизация тестирования?

АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ означает использование инструмента автоматизации для выполнения набора тестов. Напротив, ручное тестирование выполняется человеком, сидящим перед компьютером, тщательно выполняющим этапы тестирования.

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

Последовательные циклы разработки потребуют многократного выполнения одного и того же набора тестов. Используя инструмент автоматизации тестирования, можно записать этот набор тестов и повторно воспроизвести его при необходимости. Как только набор тестов автоматизирован, вмешательство человека не требуется. Это улучшило ROI автоматизации тестирования. Целью автоматизации является сокращение количества тестов, которые нужно запускать вручную, а не устранение ручного тестирования в целом.

Основные этапы автоматизации тестирования

Подготовка — Выбор бизнес-операций, подлежащих автоматизации тестирования, определение требований к Системе Автоматизированного Функционального Тестирования (САФТ), согласование проектных сроков, выбор инструмента автоматизации, оценка возможных рисков.
Проведение — Производится запуск автоматизированных тестов и проведение регрессионного автоматизированного тестирования, если необходимо.
Отчет — Составляется итоговый документ с результатами тестирования, который содержит обнаруженные дефекты, отклонения от нормативов и предложения по улучшению системы. Создаются руководство пользователя и инструкции по настройке и сопровождению системы автоматизированного функционального тестирования.

Направления автоматизации тестирования

GUI-тестирование — Оценка функционирования графического интерфейса приложения

Тестирование веб-сервисов — Тестирование функционала web-сервисов, реализованное автоматизированными средствами

Автоматизация тестирования мобильных приложений — Проверка работоспособности функционала мобильного приложения на различных мобильных устройствах и операционных системах

Тестирование баз данных — Оценка соответствия БД функциональным и нефункциональным требованиям

Тестирование веб-приложений — Проверка работоспособности модулей веб-приложений

GUI тестирование

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

Ключевые преимущества

Повышение качества тестирования, поскольку при использовании средств автоматизации «человеческий фактор» не оказывает влияния на качество тестирования.
Ускорение процесса тестирования без потери качества. Проведение того же объема работ ручным методом занимает больше времени. Использование средств автоматизации для тестирования позволяет запускать уже написанные скрипты без дальнейших доработок.
Возможность выполнения таких видов тестирования, которые либо не могут быть выполнены вручную, либо требуют значительных затрат (дополнительное оборудование, персонал).
В ходе тестирования отчеты о результатах работы программных приложений рассылаются и сохраняются автоматически.

Какие тестовые случаи для автоматизации?

Тестовые случаи для автоматизации могут быть выбраны с использованием следующего критерия для увеличения ROI автоматизации

  • Высокий риск — бизнес-критические тесты
  • Тестовые случаи, которые многократно выполняются
  • Тестовые случаи, которые очень утомительны или трудны для выполнения вручную
  • Тестовые случаи, которые отнимают много времени

Следующая категория тестов не подходит для автоматизации:

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

Автоматизированный процесс тестирования:

Следующие шаги выполняются в процессе автоматизации

процесс автоматизации тестирования

Выбор тестового инструмента

На текущий момент есть огромное количество софта, который позволяет автоматизировать процесс тестирования. Для начинающего тестировщика-автоматизатора рекомендуем познакомиться с Silk Test или Rational Robot. Выбор средства тестирования во многом зависит от технологии, на которой построено тестируемое приложение. Например, QTP не поддерживает Informatica. Поэтому QTP нельзя использовать для тестирования приложений Informatica. Если вы уже освоили один из подходящих ПО для автоматизации тестирования и готовы в нем развиваться, то вам проще сделать поиск по вакансиям в которых требуется знание и опыт работы именно с этим софтом. Осуществите поиск подходящей вакансии на сайте Apeirondb.com или просто перейдите по ссылке: Технология QA. Также вы можете воспользоваться телеграм ботом HIRE:bot(t.me/hireIT_bot) @hireIT_bot, который при правильной настройке, будет отправлять вам только те вакансии в которых есть нужные теги с софтом, которые интересуют вас.

Определите сферу автоматизации

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

  • Особенности, которые важны для бизнеса
  • Сценарии с большим объемом данных
  • Общие функции в приложениях
  • Техническая осуществимость
  • Степень повторного использования бизнес-компонентов
  • Сложность тестовых случаев
  • Возможность использовать одни и те же тесты для кросс-браузерного тестирования

Автоматическое тестирование. Основные нюансы проверки качества программного обеспечения (ПО)

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

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

Запись в базу данных, логирование файлов, backend процессы, то есть места в системе, представляющие наибольшую труднодоступность.
Достаточно часто используется функциональность, которая обладает высоким уровнем рисков на ошибки. При автоматизации критической функциональности посредством тестирования гарантированно обеспечивается быстрое нахождение ошибок.
Автоматизированное тестирование эффективно для рутинных операций. Например, формы, в которых имеется большое количество полей для набора данных (перебор данных). Тестовый процесс позволяет автоматически выполнять заполнение полей, а также после сохранения осуществлять их проверку.
Данный вид тестирования позволяет автоматизировать процесс заполнения полей некорректными данными, проводить проверку различной валидации.
Длинные сценарии (end-to-end).
Тестирование данных, для которых необходимы точные математические расчеты.
Для автоматизации правильности поиска данных.

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

Работаем не так как всегда

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

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

QA-отдел уже создан и активно участвует в процессе разработки, занимаясь действительно обеспечением качества выпускаемого продукта. При разговоре об обеспечении качества, как мне кажется, удобно руководствоваться Testing Quadrants:

Testing Quadrant

Используя Testing Quadrants, тестирование можно разбить на 4 категории.

Первая категория — это тестирование реализации продукта, создающее страховочную сеть для команды разработки. Эта категория отвечает за низкоуровневое тестирование с помощью модульных и интеграционных тестов и позволяет понять разработчикам, что с технической точки зрения они делают вещи правильно (Do Things Right). Очевидно, что низкоуровневые тесты являются полностью автоматизированными и пишутся командой разработки, так как лежат в ее сфере интересов.

Вторая категория — это тестирование бизнес-функций продукта, создающее страховочную сеть для команды разработки. Здесь речь идет о таких видах тестирования как Examples, Story Tests и прочих, направленных в первую очередь на создание правильной коммуникации между бизнесом и командой разработки, и позволяющих команде понять, что она делает правильные вещи (Do Right Things), которые действительно нужны бизнесу.

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

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

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

I always argue that high-level tests are there as a second line of test defense. If you get a failure in a high level test, not just do you have a bug in your functional code, you also have a missing or incorrect unit test. Thus I advise that before fixing a bug exposed by a high level test, you should replicate the bug with a unit test. Then the unit test ensures the bug stays dead.
Я утверждаю, что высокоуровневые тесты — всего лишь вторая линия обороны. Упавший высокоуровневый тест означает не только баг в коде продукта, но и отсутствие соответствующего модульного теста или ошибку в уже имеющемся. Мой вам совет: прежде чем фиксить баг, найденный высокоуровневым тестом, воспроизведите его с помощью модульного теста, и вы попрощаетесь с багом навсегда.

Четвертая категория — это тестирование реализации продукта, которая критична для восприятия качества продукта конечным пользователем. Обычно в эту категорию попадают нагрузочное тестирование, тестирование производительности, тестирование безопасности и надежности системы. Такое тестирование проводится с использованием специальных инструментов, зачастую написанных под нужды конкретного проекта. По-хорошему, инфраструктурой для проведения подобных тестов занимается DevOps-отдел, а разработкой соответствующих инструментов — отдельная команда. Причем инструменты должны позволять проводить тесты по-требованию (Testing as a Service).

Так как созданный QA-отдел теперь отвечает не только за контроль качества продукта, но и за обеспечение качества, то в его обязанности входит:

  1. Помощь разработчикам при написании тестов из первой категории
  2. Участие в формировании Examples и Story Tests во время общении команды разработки с представителями бизнеса
  3. Проведение исследовательского тестирования и тестирования сложных сценариев
  4. Проведение тестирования юзабилити и работа с фидбеком от пользователей

Бесконечного роста регрессионных ручных black-box тест-кейсов не происходит, потому что большая их часть покрыта в первой и второй категориях командой разработки. В таком случае у нас формируется правильное отношение тестов или, как это принято называть, “пирамида тестирования”:

пирамида тестирования

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

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

Кто такой QA-инженер?

QA – это расшифровывается, как “обеспечение качества” (от англ. Quality Assurance).

QA-инженер (QA-engineer) это специалист по обеспечению качества разработки ПО (программного обеспечения) и его функционального тестирования.

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

QA – легкий старт для IT карьеры

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

Обязанности QA инженера

  • изучение и уточнение требований к программе у заказчика (в больших проектах этим могут занимаются бизнес аналитики);
  • написание и последующая доработка сценариев тестирования;
  • проведение тестирования функционала ПО;
  • составление отчетов по обнаруженным недочетам в трекинговую систему (программа, в которую разработчики, программисты, тестировщики могут вносить все найденные ошибки, недочеты, и отслеживать их выполнение или невыполнение);
  • анализ результатов и показателей проведенных тестов;
  • составление ТЗ на устранение найденных после тестирование недочетов;
  • мониторинг и отслеживание правок;
  • проведение повторных тестов на отсутствие найденных ошибок;
  • анализ и оптимизация этапов разработки для устранения причин ошибок и избежания повторного их появления;
  • работа с тестовой документацией.

Если углубиться в профессию, то у QA-инженеров существует несколько ответвлений.

  • QA-автоматизатор (Automation QA Engineer) – это специалист, который пишет тесты на основе скриптов для автоматизации тестирования.
  • QA-мануальщик (Manual QA Engineer) – специалист, который занимается анализом и улучшением процесса тестирования.
  • QC-специалисты (Quality Control specialist) – отвечают за контроль качества продукта. Их задача проводить анализ результатов тестирования и следить за выявлением и устранением дефектов в продукте.

Если еще глубже разбить функции QA и QC специалистов, то можно выделить еще 4 направления специалистов, которые играют важную роль в QA (обеспечении качества).

    • Test Analyst — проверяет, насколько требования полны и не противоречат друг другу;
    • Test Designer — занимается созданием тестов и их конфигурацией для тестирования;
    • Test Executor — проводит тестирования по написанным сценариям и фиксирует найденные ошибки;
    • Test Manager — занимается планированием работ, связанных с тестированием. В его задачи входит: оценка сроков, контроль выполнения плана и графика работ, контроль полноты выполнения тестов по списку требований, постановка задач членам команды).

Как это может выглядеть на практике?

Во время процесса разработки, QA-инженер контактирует со множеством людей, которые работают над проектом и над разрабатываемом ПО.

Сначала, QA -инженер узнает все необходимые требования к программному продукту или приложению у заказчика. Под них, QA-инженер пишет тесты для проверки удовлетворенности всех требований к продукту. Затем, при разработке, по результатом тестирования, в случае, если были найдены ошибки и баги – QA-инженер пишет задачи для программиста/ов на доработку кода. Таким образом, происходит улучшение качества процесса разработки и соответственно, самого программного продукта.

Поэтому, чтобы стать хорошим QA-инженером – специалист, дополнительно, должен разбираться и ориентироваться во многих областях и иметь навыки от разных профессий. Так, QA-инженер должен иметь базовые знания принципов разработки и тестирования ПО (от тестировщика и девелопера), заканчивая пониманием, как разрабатываемое ПО или приложение должно работать и чтобы это было удобно для обычных пользователей.

Этапы профессионального роста QA Engineer

  1. Trainee QA Engineer — уровень начинающего QA-инженера с минимальным опытом работы.
  2. Junior QA Engineer — специалист, имеющий опыт работы до 6 месяцев и уже имеющий определенные навыки.
  3. Middle QA Engineer — инженер с опытом работы 1-3 года (средняя степень квалификации). Знает, как выполнять поставленные задачи (составления сценариев тестирования, ведение технической документации) и способен консультировать начинающих сотрудников.
  4. Senior QA Engineer — инженер высшей степени квалификации, умеющий выполнять сложные технические задачи.

Как стать QA?

Фактически для того чтоб ступить на стезю QA не нужно знание языков программирования или строения баз данных. Главное иметь представление о структуре процесса разработки ПО и разбираться в процессе тестирования. Нужно почитать литературу (в основном зарубежную), потренироваться на “кошках” (потренироваться использовать ПК стараясь замечать все недочеты и баги в приложениях/сайтах). Для большей уверенности можно пройти пару обучающих курсов в интернете и/или стажировку в обучающих центрах (в институтах эту специальность, к сожалению, не преподают). Подтянуть английский (при отборе кадров IT компании предпочитают кандидатов со знанием английского). В любом случае начинающего QA в первую очередь проверяют на знание процесса тестирования ПО: для чего оно вообще нужно, какие есть виды тестирования, что такое баг, как его задокументировать и какие шаги нужно пройти для его закрытия. Поначалу вашим уделом будут именно тесты. А после того как освоитесь с этой работой и немного поближе узнаете как построена разработка ПО в вашей компании - перейдете на более высокий уровень и получите свою долю ответственности за разрабатываемый продукт. Уровень вхождения на специальность QA существенно ниже, чем на программиста из-за чего конкурс на данную вакансию может быть очень, ооочень, ОЧЕНЬ большим. Потому для успешного собеседования помимо знаний нужно обладать и определенным набором личных качеств. Так, для QA важно умение наладить общение — ему нужно взаимодействовать практически со всеми участниками разработки от заказчика и до тестировщика. При этом он должен уметь донести до исполнителей все нюансы, которым должно соответствовать приложение. Не менее важны внимание, терпение и усидчивость - они требуются в процессе тестирования программ. Конечно же, для успешного тестинга нужен азарт грибника и пытливость ребенка разбирающего часы или любимую игрушку, чтобы поиск ошибок не превратился для вас в гнетущую рутину (если у вас будет пара историй о успешно поиске багов — для рекрутера это может стать большим плюсом). Также нужны и аналитические навыки - для определения путей улучшения процесса разработки и самого приложения.

Оценить востребованность профессии можно по количеству вакансий. Так, Если вы укажите технологию QA и в ключевых словах укажете QA Engineer вы сможете посмотреть все актуальные вакансии для тестировщиков на сайте Apeirondb.com или просто перейдите по ссылке: Технология QA. Также сотрудников ищут в Telegram-каналах и группах в Facebook, в соцсети LinkedIn. Один из примеров такого телеграм канала является телеграм бот HIRE:bot(t.me/hireIT_bot) @hireIT_bot, который при правильной настройке, будет отправлять вам только те вакансии, которые интересуют вас.