Nedcentr.ru

НЕД Центр
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Профессия тестировщик разбираемся в QA QC и testing

Тестирование слово, которое уже давно у большинства людей ассоциируется с ИТ и ПО. Но, на самом деле, это понятие намного шире 🙂

Тестирование активность, направленная на проверку соответствия чего-либо каким-то конкретным требованиям.

Например, школьное тестирование по математике. Может быть направлено на проверку усвоенных учеником знаний (что-либо) по делению чисел в столбик (конкретное требование).

Или, тестирование веса мороженого в стаканчике на соответствие требованию к весу для этого мороженного.

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

QA, QC и тестировщики: три большие разницы?

Начнём наши поиски и копания с обращения к Международному стандарту системы менеджмента качества ISO 9000:2015. В каждой статье, в каждом видео на тему отличия этих понятий есть ссылка на этот документ, моя статья не исключение.

В пункте 3.2 стандарта раскрываются два определения:

    Обеспечение качества (3.2.10) — часть управления качеством, направленная на обеспечение уверенности в том, что требования к качеству будут выполнены.

Отмечу, что в стандарте ISO 9000:2015 вообще нет понятия tester как такового. Я искал.

Так каким же образом взаимосвязаны понятия Quality assurance, Quality control и Тестирование между собой?

Часто можно встретить такого рода иллюстрации со слоёной структурой качества, где тестирование — часть контроля качества, контроль качества — часть обеспечения качества.

Но лично мне кажется, что раз в стандарте нет понятия tester или testing, а QC — это и есть разного рода тестирование, то и иллюстрации должны быть такими:

Однако стандарт есть стандарт, а у нас тут реальная жизнь. И в реальной жизни IT-индустрии встречаются только два названия нашей профессии:

  1. QA-инженер.
  2. Тестировщик Программного обеспечения (ПО).

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

Зачем столько тестировщиков

Когда продукт маленький, функция тестировщика может лежать на самом разработчике: сам написал код, сам проверил работу. Никакие QA и QC в маленьком продукте не нужны — там всё решается быстро и компактно.

Но продукты имеют свойство расти: сначала там один разработчик, потом трое. Каждый протестировал свою часть продукта, а кто протестирует продукт в целом и проверит «стыки»? Нужен тестировщик. Продукт продолжает расти, и вот уже у нас не один тестировщик, а пятеро: как сделать так, чтобы они не тестировали одно и то же? Или тестировали, но по правильной методике? Значит, им нужен бригадир — QC.

Не успели оглянуться — и вы уже делаете массовый веб-сервис, у вас несколько сотен тысяч клиентов, а сам сервис состоит из десятков модулей. И часть модулей делают в Москве, другую часть — в Санкт-Петербурге, третью — в Екатеринбурге. У каждого офиса своя атмосфера, куча собственных нюансов и проблем. И вот это всё нужно «причесать», чтобы внутри и на стыках этих модулей не было багов. Над этим работают десятки тестировщиков, несколько QC и один большой важный QA, который управляет тестированием.

Может ли новичок-нетехнарь стать хорошим QA-специалистом

Порог входа в тестирование довольно низкий. Чтобы стать тестировщиком, не требуется техническое образование. Главное, чтобы человеку была интересна сфера IT и он хотел развиваться в этом направлении. Об этом говорит в своём интервью на hh.ru руководитель департамента обеспечения качества ПО Veeam Software Игорь Кацев.

На сайте Software-Testing.ru опрашивали тестировщиков из России и СНГ по поводу их образования. Оказалось, что в профессию приходят и достигают в ней карьерных высот разные люди: технари, гуманитарии, экономисты, юристы, люди с двумя высшими и люди без диплома вообще.

Что такое QA, QC, тестирование и кто такой тестировщик

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

Читать еще:  Описание профессии авиадиспетчер — где учиться обязанности и зарплата

Схематически отношения между QA, QC и тестированием можно представить так:

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

FBS , Санкт-Петербург , По итогам собеседования

Специалисты QA создают и реализуют различные тактики для повышения качества на всех стадиях производства: подготовка и установка стандартов, анализ качества, выбор инструментов, предотвращение ошибок и постоянное усовершенствование процесса.

QC (англ. Quality Control) — контроль качества продукта — это часть комплекса QA, которая отвечает за анализ результатов тестирования, поиск ошибок и их устранение. QC ориентирован на проверку конкретного продукта, в него входят различные процессы, такие как анализ кода, технические обзоры, анализ дизайна, тестирование и прочее.

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

Специализацию тестировщиков можно разделить по направлениям: тестирование безопасности, производительности, юзабилити; а также по методам написания тестов: ручное и автоматизированное тестирование.

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

Зачем нужно тестирование?

Мы не любим когда что-то:

  1. Ломается
    • например, кондиционер в машине, когда на улице +35, а вам еще ехать 5 часов
  2. Не работает как ожидалось
    • например, телефон, который супер-крутой и навороченный, но разряжается за 3 часа
  3. Не работает вообще
    • например, не включается новый телевизор

Наоборот, мы хотим получать качественные продукты / услуги / сервисы и быть счастливыми

Для избежания описанных выше ситуаций и нужно тестирование!)

Большинство не различает между собой термины 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 — скорее управленец, чем инженер. Планирует и контролирует работы, связанные с тестированием: оценки сроков, работу над планом-графиком, контроль покрытия требований тестами, постановку задач членам команды, коммуникацию со стейкхолдерами).

Для каждой исследуемой системы подходит определённый вид тестирования:

  1. Функциональное тестирование — изучение реестра опций отдельных компонентов, системы. Проверка основана на функционале, выполняющемуся системой. Этот вид тестирования отвечает на вопрос — что делает программа и для чего она нужна?
  2. Нагрузочное тестирование — оценка устойчивости кода системы на нагрузку большого количества данных. Учитываются такие показатели, как скорость выполнения операций, количество пользователей на платформе, приемлемая работоспособность приложения при больших нагрузках.
  3. Автоматизированное тестирование —проверка в автоматическом режиме. Разработчик создаёт и оптимизирует проверочный код для такого режима. Используется для ускорения процессов тестирования.
  4. Юзабилити тестирование — проверка комфортности использования интерфейса для пользователя. Разработчик выясняет, насколько система удобна в работе и соответствует ли всем ожиданиям. Тестируются сайты, приложения для смартфонов, компьютеров и планшетов, бизнес-процессы.
  5. Конфигурационное тестирование — исследование работоспособности программы на платформе, ПК, драйверах. Проверяется взаимодействие продукта с конфигурациями среды. Также исследуется функциональность системы для пользователя этой среды.
  6. Тестирование безопасности — проверка продукта на анализ угроз, связанных с вирусами и хакерскими атаками. Основная задача тестировщика — максимально обезопасить проверяемый продукт.
  7. Игровое тестирование — исследование игры на всевозможные ошибки. Игру и ее части нужно проходить большое количество раз. Чаще всего, исправления одной ошибки ведёт к другой. Если игра имеет версии не только на компьютере, но и на смартфоне, планшете — проверку необходимо осуществлять и для этих устройств.
Читать еще:  Удовлетворенность трудом 2021 и 2021 — анкета оценка опрос

Что нужно знать тестировщику:

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

Проверка программ включает в себя следующие этапы тестирования:

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

Карьерный рост:

  • Trainee QA Engineer (стажёр) — начинающий специалист, имеющий только теоретическую базу без опыта работы.
  • Junior QA Engineer (новичок) — сотрудник с опытом работы в должности QA-тестировщика до 6 месяцев. Такому инженеру нужно иметь представление о процессе разработки, написании тестов, что такое дефект и как с ним работать.
  • QA Engineer (QA-тестировщик) — специалист, с опытом работы более 6 месяцев. Владеет навыками написания сценариев тестирования, проведения тестирования продукта, составления отчетов по обнаруженным ошибкам, анализа результатов и улучшения показателей, отслеживания правок и оптимизация этапов разработки. Может обучать сотрудников из предыдущих пунктов.
  • Senior QA Engineer (старший QA-тестировщик) — опытный программист с высоким уровнем квалификации. Помимо самостоятельного выполнения задач, обучает сотрудников и берёт на себя ответственность за выполнение более сложной работы. Знает и умеет использовать разные виды тестирования.
  • Lead Software Testing Specialist (ведущий инженер) —более 5 лет профессионального опыта, может руководить группой инженеров, оценивает риски, составляет сроки и уровни бюджетирования, определяет варианты тестирования и координирует его процесс.
  • Разработчик — поработав тестировщиком некоторое время и получив необходимый опыт, некоторые специалисты уходят в разработку программного обеспечения.

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector