Специалист по обеспечению качества (ПО)

Зачем нужна специальная единица для контроля качества, если вся команда разработчиков следит за качеством разрабатываемого продукта? 

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

The PMBOK® Guide определяет Quality Assurance как "…выполнение планируемой, систематической деятельности в области качества для того, чтобы обеспечить применение в проекте всех процессов, необходимых для соответствия требованиям."

QA является составляющей всеобщего управления качеством (Total Quality Management (TQM)) наравне с Quality Improvements (QI, повышение качества). Эти два механизма в рамках TQM позволяют достичь требуемого качества разрабатываемого продукта.

Исходя из определения качества, как степени соответствия характеристик продукта тем требованиям, которые к ним предъявляются, все активности по выполнению требований к ПО, можно отнести к работам по обеспечению качества (т.е. находятся в компетенции QA Engineer).

Задача QA Engineer — помочь менеджеру проекта построить такой процесс разработки в проекте, который сможет с допустимыми затратами ресурсов создать ПО с требуемым качеством.

Кто такой QA Engineer

QA Engineer — это специалист, который способен проанализировать текущее состояние процессов, происходящих в компании, провести оценку соответствия этих процессов требованиям международных стандартов, таких как ИСО 9001, CMMI, ИСО 12207, ИСО 27001 и других, разработать и добиться выполнения плана корректирующих действий, а также создать внутреннюю нормативную документацию, определяющую требования компании к выполнению процессов. Эта работа в чем-то схожа с работой бизнес-аналитика,  более того, результатом работы QA Engineer  могут быть формализованные требования к информационным системам, обеспечивающим эффективное функционирование процессов в компании. Часто проще  и эффективнее определить процесс выполнения работы созданием информационной системы, чем написанием многостраничных руководств по выполнению процессов.

Следующая стадия работы QA Engineer — добиться выполнения внутренних требований компании к процессам СМК. QA Engineer должен объяснить требования СМК, а потом проверить выполнение этих требований при проведении внутреннего аудита.

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

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

  • Сбор и анализ требований к ПО (как требований заказчика, так и нормативных и законодательных требований к ПО)
  • Прототипирование
  • Разработка дизайна
  • Кодирование
  • Различные виды анализа рабочих продуктов (peer review), включая анализ планов проекта.
  • Различные виды тестирования (функциональное, нагрузочное, юнит-тестирование)
  • Приемка готового ПО заказчиком и поставка ПО.

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

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

3. Кроме работы непосредственно в проекте QA Engineer может проводить так называемый внутренний аудит проекта, т.е. независимую проверку того, насколько точно в проекте выполняются те требования, которые предъявляются в компании к функционированию процессов.

4. Наиболее опытные QA Engineer могут принимать участие в проведении официальной оценки соответствия СМК компании требованиям CMMI или в проведении сертификации других компаний на соответствие требованиями ИСО 9001. Также возможно участие QA Engineer в проведении оценки способности субподрядчика выполнить те требования к качеству процессов разработки, которые предъявляет компания.

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

QA и тестировщик: найди 10 отличий

Некоторые тестировщики называют себя QA, хотя на самом деле это не совсем корректно. Задача тестировщика — проверить, насколько готовый продукт соответствует предъявляемым требованиям. Как правило, тестировщик проверяет соответствие продукта задокументированным требованиям. Задача QA Engineer — обеспечить, чтобы все стадии процесса разработки, которые влияют на качество, были сначала предусмотрены в плане проекта, а потом выполнены. То есть задача тестировщика — обнаружить как можно больше дефектов, которые уже есть в разработанном ПО. Задача QA Engineer — построить такой процесс разработки в проекте, который позволит выполнять работы в срок и  с надлежащим уровнем качества. Например, менеджер проекта забыл включить реализацию задокументированного требования в план проекта. И если этот дефект будет обнаружен при приемочном тестировании, то времени на его устранение может и не хватить. Включение в проект такой деятельности, как ревью(предварительный просмотр) плана проекта и поддержание матрицы прослеживаемости позволит минимизировать вероятность возникновения такого дефекта.  Существуют дефекты, которые в принципе не могут быть обнаружены при различных видах тестирования. Пример: пропущенное и не документированное требование заказчика. Такой вид QA деятельности, как ревью требований, во многих случаях позволяет предотвратить такой вид дефектов ПО.

Как стать QA Engineer

К сожалению, специалистов по обеспечению качества ПО не готовит ни один ВУЗ у нас в стране.  А для QA Engineer важно иметь как  навыки как в разработке ПО (а для этого нужно самому проработать в проекте), так и знания  стандартов и методологий разработки

Поэтому существует два пути к этой работе.

  1. Какое-то время поработать в проектах разработки ПО, желательно на различных ролях, а потом после дополнительного обучения в области обеспечения качества перейти на работу в качестве QA Engineer. Может, здесь расписать, с какой именно позиции желательно начать работу? Например, тестировщиком быть изначально предпочтительней? Этот путь предпочтительней, так как QA Engineer  уже понимает, как работает проект и ему остается изучить требования стандартов и методологий обеспечения качества. Знания, полученные в университете, будут нелишними, конечно, но они дают лишь формальное представление о том, как должно быть. А проработав в реальном проекте, например, специалистом по тестированию, можно получить реальное представление о том, как  идет ход разработки ПО. И этот опыт работы помогает в дальнейшем адаптировать знания стандартов и методологий под задачи конкретных проектов
  2. Получить образование в области стандартизации и сертификации (таких специалистов готовят БНТУ, кафедра «Стандартизация, метрология и информационные системы», специальность «Метрология, стандартизация и управление качеством», специализация «Сертификация и управление качеством» и БГУИР, на кафедре «Программное обеспечение информационных технологий») и уже в ходе работы QA Engineer изучать, как работает проект, как создается ПО и т.д. Этот путь более сложный, особенно для менеджеров, которые занимаются подготовкой таких специалистов. И подход к работе проектов у таких специалистов более формальный .

QA Engineer в EPAM Systems должен знать (или хотя бы иметь представление):

  • Менеджмент проекта
  • Процессы жизненного цикла разработки
  • Модели жизненного цикла разработки
  • Методологии разработки ПО (RUP, MSF, Agile)
  • Требования стандартов к системам менеджмента (такие как ИСО 9001 и ИСО 27001)
  • Требования модели CMMI
  • знание порядка построения и внедрения QMS

Помимо этих специальных навыков, QA должен без проблем изъяснять свои мысли на иностранном (английском) языке, как устно, так и письменно.

Я QA Engineer, что дальше?

На позиции QA можно оставаться хоть всю жизнь, меняя области, в которых проводишь обеспечение качеством. Разные проекты, разные заказчики не дают тебе «консервироваться», ты постоянно развиваешься, только не по вертикали, а по горизонтали. Если расширение кругозора не устраивает и есть желание вырасти по карьерной лестнице, то здесь возможны два варианта:

— стать старшим или ведущим специалистом по обеспечению качества (Senior or Lead QA Engineer). Специалисты такого класса проводят ту же работу, что и QA Engineer, но в более сложных проектах или руководят группой QA Engineer в проекте. Также можно участвовать в проведении официальных сертификаций на соответствие ИСО 9001 и CMMI.

— стать проект-менеджером (Project Manager).

В любом случае, стоит только захотеть — и можно стать кем хочешь.

Глоссарий:

Quality Assurance (обеспечение качества) — выполнение планируемой, систематической деятельности в области качества для того, чтобы обеспечить применение в проекте всех процессов, необходимых для соответствия требованиям

Качество — степень соответствия характеристик продукта тем требованиям, которые к ним предъявляются

Приемочное тестирование — тестирование, по результатам которого принимается решение о приемке продукта заказчиком

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

Прототипирование — это быстрая «черновая» реализация базовой функциональности для анализа работы системы в целом.

СМК — система менеджмента качества.

 

Полезные ресурсы в сети:

http://www.softwareqatest.com/

http://www.sqa.net/

http://www.sei.cmu.edu/cmmi/

 

Что почитать:

Project Quality Management: Why, What and How  by Kenneth H. Rose

Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement  by Jeff Tian

Interpreting the CMMI: A Process Improvement Approach by Margaret Kulpa and Kent A. Johnson

 

10.10.07, "Мой Компьютер", (c) EPAM Systems

http://www.epam.by/pdf/mk39_epam.pdf