Что такое QA, QC, тестирование и кто такой тестировщик
Большинство не различает между собой термины Quality Assurance (QA), Quality Control (QC) и просто Тестирование, считая их синонимами, по этому определимся с терминами.
Quality Assurance (QA) Обеспечение качества — самое широкое из всех понятий и представляет собой совокупность мероприятий, превентивный процесс, охватывающих абсолютно все этапы разработки, выпуска и эксплуатации программного обеспечения(от описания проекта до тестирования, релиза и даже пост-релизного обслуживания.). Это активности на всех этапах жизненного цикла ПО, которые предпринимаются для обеспечения требуемого уровня качества выпускаемого продукта.
Quality Assurance engineer — это специалист по обеспечению качества, деятельность которого направлена на улучшение процесса разработки ПО, предотвращение дефектов и выявление ошибок в работе продукта.
Quality Assurance включает в себя Quality Control наряду с другими процессами по улучшению качества работы компании.
Quality Control (QC) Контроль качества — это часть комплекса QA в процессе разработки ПО, которая отвечает за анализ результатов тестирования, поиск ошибок и их устранение. Действия, проводимые над продуктом в процессе разработки, для получения информации о его актуальном состоянии: насколько продукт готов и соответствует ли он требованиям качества в каждый конкретный промежуток времени. QC ориентирован на проверку конкретного продукта, в него входят различные процессы, такие как анализ кода, технические обзоры, анализ дизайна, тестирование(Test Management, Test Analysis, Test Design) и прочее.
Говоря другими словами, Quality Assurance гарантирует, что процесс поставлен правильно и дает предсказуемый результат, в то время как Quality Control гарантирует, что продукт удовлетворяет указанному набору требований. Насколько эффективно работает отдел продаж предприятия, тоже входит в компетенцию QA.
Специалисты QA создают и реализуют различные тактики для повышения качества на всех стадиях производства: подготовка и установка стандартов, анализ качества, выбор инструментов, предотвращение ошибок и постоянное усовершенствование процесса.
Обеспечение качества — это процесс обучения, изучение того, что работает не так и как это исправить; изучение того, что работает правильно и при каких обстоятельствах, а также того, как делать свою работу лучше с каждым новым проектом.
Еще более узкая специальность в рамках QA/QC — тестировщик ПО, который проверяет готовый продукт на наличие ошибок (багов) и несоответствие требованиям, и затем документирует найденные дефекты и пути их воспроизведения.
Тестирование программного обеспечения (Software Testing) — одна из техник контроля качества, включающая в себя активности по планированию тестовых действий, дизайну тестов, выполнению этих тестов и анализу полученных данных. Тестирование — это уже непосредственно процесс проверки результатов работы на соответствие установленным требованиям. А тестировщик — это специалист, который занимается такой проверкой. Он тестирует компоненты продукта или весь продукт целиком на предмет ошибок или неточностей разработки.
Для чего необходимо обеспечение качества:
Конечный продукт выпускается на рынок с высокой конкуренцией — будь-то мобильные приложения, операционные системы или игры. После официального релиза программа обязательно должна работать безупречно, чётко и быстро. Если до выпуска максимально не выявить все ошибки, можно поплатиться репутацией. Даже при условии быстрой отладки, пользователи не дадут второй шанс разработчикам и будут использовать более качественные сервисы. Идеальных приложений не существует, но можно сделать их максимально совершенными с помощью QA-тестирования.
Специализацию тестировщиков можно разделить по направлениям: тестирование безопасности, производительности, юзабилити, а также по методам написания тестов: ручное и автоматизированное тестирование.
Сейчас большинство компаний устроено таким образом, что тестировщиками в них работают в основном сотрудники на начальном этапе карьеры — то есть это junior-специалисты по тестированию. Они выполняют проверку софтов по готовым тест-кейсам. Специалисты более высокого уровня (тест-аналитики, автотестеры, менеджеры по тестированию) помогают им на других этапах разработки.
QA-тестирование различается по степени доступа программиста к исходному коду проверяемого сервиса:
- Стратегия «белого ящика» (модульное) — тестирование с доступом к коду – данные о внутреннем устройстве продукта известны. Программу можно разбить на части (модули) и исследовать на ошибки каждую из частей системы. Таким образом, осуществляется модульное тестирование.
- Стратегия «чёрного ящика» — тестирование без доступа к коду. Программа исследуется только с внешней стороны, знания о внутренней системе продукта отсутствуют. Проверка проводится только со входами и выходами. Такой способ тестирует выполнение ПО своего функционала, производительность системы и работоспособность нового кода.
- Стратегия «серого ящика» — тестирование с частичным доступом к коду. Программист знаком со структурными данными исследуемого продукта, но выполняет проверку на основе пользовательского уровня. Кодировка тестирования прописывается согласно знаниям алгоритма программы.
Тестировщику следует быть внимательным в работе с большими объёмами данных, а также уметь подстраиваться под различные задачи и быстро переключаться между ними.
4 основные роли:
Test Analyst — занимается статическим тестированием требований: проверяет, насколько они полны, однозначны, непротиворечивы etc;
Test Designer — создает набор тестов на базе требований, планирует конфигурации, необходимые для тестирования;
Test Executor — выполняет заранее подготовленные тесты, документирует найденные ошибки и шаги их воспроизведения;
Test Manager — скорее управленец, чем инженер. Планирует и контролирует работы, связанные с тестированием: оценки сроков, работу над планом-графиком, контроль покрытия требований тестами, постановку задач членам команды, коммуникацию со стейкхолдерами).
Для каждой исследуемой системы подходит определённый вид тестирования:
- Функциональное тестирование — изучение реестра опций отдельных компонентов, системы. Проверка основана на функционале, выполняющемуся системой. Этот вид тестирования отвечает на вопрос — что делает программа и для чего она нужна?
- Нагрузочное тестирование — оценка устойчивости кода системы на нагрузку большого количества данных. Учитываются такие показатели, как скорость выполнения операций, количество пользователей на платформе, приемлемая работоспособность приложения при больших нагрузках.
- Автоматизированное тестирование —проверка в автоматическом режиме. Разработчик создаёт и оптимизирует проверочный код для такого режима. Используется для ускорения процессов тестирования.
- Юзабилити тестирование — проверка комфортности использования интерфейса для пользователя. Разработчик выясняет, насколько система удобна в работе и соответствует ли всем ожиданиям. Тестируются сайты, приложения для смартфонов, компьютеров и планшетов, бизнес-процессы.
- Конфигурационное тестирование — исследование работоспособности программы на платформе, ПК, драйверах. Проверяется взаимодействие продукта с конфигурациями среды. Также исследуется функциональность системы для пользователя этой среды.
- Тестирование безопасности — проверка продукта на анализ угроз, связанных с вирусами и хакерскими атаками. Основная задача тестировщика — максимально обезопасить проверяемый продукт.
- Игровое тестирование — исследование игры на всевозможные ошибки. Игру и ее части нужно проходить большое количество раз. Чаще всего, исправления одной ошибки ведёт к другой. Если игра имеет версии не только на компьютере, но и на смартфоне, планшете — проверку необходимо осуществлять и для этих устройств.
Что нужно знать тестировщику:
- что такое обеспечение качества;
- что такое тестирование;
- какие виды тестирования бывают;
- какие уровни тестирования бывают;
- какие тестовые артефакты есть и зачем их используют;
- что такое тест-дизайн;
- как должен выглядеть процесс тестирования;
- что такое автоматизация тестирования и её основные виды;
- какие метрики тестирования бывают и для чего они используются.
Проверка программ включает в себя следующие этапы тестирования:
- Уточнение частей тестирования: какие части программы будут проверяться, прогноз ожидания пользователей и определение желаемого качества.
- Разработка тестов для проверки подсистем, подготовка графика тестовых циклов.
- Написание тестовой кодировки для проверяемого продукта.
- Проведение тестирования, поиск багов (ошибок) у пользователей.
- Тестирование безопасности.
- Оценка результатов, при необходимости — повторное тестирование.
- Утверждение критериев качества.
- Разработка плана мероприятий по соблюдению критериев на каждом этапе разработки.
- Устранение причин появления ошибок и предотвращение образования новых.
- Документальное оформление обнаруженных багов.
Карьерный рост:
- Trainee QA Engineer (стажёр) — начинающий специалист, имеющий только теоретическую базу без опыта работы.
- Junior QA Engineer (новичок) — сотрудник с опытом работы в должности QA-тестировщика до 6 месяцев. Такому инженеру нужно иметь представление о процессе разработки, написании тестов, что такое дефект и как с ним работать.
- QA Engineer (QA-тестировщик) — специалист, с опытом работы более 6 месяцев. Владеет навыками написания сценариев тестирования, проведения тестирования продукта, составления отчетов по обнаруженным ошибкам, анализа результатов и улучшения показателей, отслеживания правок и оптимизация этапов разработки. Может обучать сотрудников из предыдущих пунктов.
- Senior QA Engineer (старший QA-тестировщик) — опытный программист с высоким уровнем квалификации. Помимо самостоятельного выполнения задач, обучает сотрудников и берёт на себя ответственность за выполнение более сложной работы. Знает и умеет использовать разные виды тестирования.
- Lead Software Testing Specialist (ведущий инженер) —более 5 лет профессионального опыта, может руководить группой инженеров, оценивает риски, составляет сроки и уровни бюджетирования, определяет варианты тестирования и координирует его процесс.
- Разработчик — поработав тестировщиком некоторое время и получив необходимый опыт, некоторые специалисты уходят в разработку программного обеспечения.
В России, к сожалению, нет ВУЗов, которые обучают данным профессиям, поэтому все эти функции с успехом могут выполнять люди с аналитическим складом ума и высшим техническим или средним специальным образованием , а также существует огромное количество онлайн-платформ, где Вы можете приобрести необходимые знания и навыки.
