Понятия Quality Assurance, Quality Control, Testing

Что такое понятия quality assurance, quality control, testing: определение, основные принципы, примеры и практические советы. Изучайте основах тестирования ПО с подробными объяснениями для начинающих специалистов.

Понятия Quality Assurance, Quality Control, Testing.

QA — это процесс управления, направленный на предотвращение дефектов и улучшение процессов разработки продукта для обеспечения высокого уровня качества. Цель QA — не допустить появления дефектов на всех этапах разработки.

  • Задачи QA: Разработка стандартов, процедур, и методологий для того, чтобы продукт соответствовал требованиям. QA включает такие методы, как аудит процессов, создание документации, а также контроль за выполнением стандартов.

  • Пример: Внедрение agile-подходов или автоматизированного тестирования, чтобы снизить количество ошибок на стадии разработки.

QC — это процесс проверки, направленный на выявление дефектов в готовом продукте. QC занимается проверкой того, что продукт соответствует стандартам качества и требованиям.

  • Задачи QC: Обнаружение дефектов через тестирование и их исправление.

  • Пример: Проверка соответствия работы ПО его функциональным и нефункциональным требованиям, оценка производительности или безопасности приложения.

Тестирование — это часть QC, которая включает в себя практическую проверку программного обеспечения для выявления багов, дефектов или ошибок.

  • Задачи тестирования: Проверка всех функциональных и нефункциональных аспектов ПО.

  • Пример: Ручное тестирование интерфейса пользователя или автоматизированное тестирование API.

Отличия:

  • QA фокусируется на процессах создания продукта и предотвращении дефектов на ранних этапах.

  • QC концентрируется на проверке готового продукта и исправлении найденных проблем.

  • Тестирование — это инструмент QC для выявления дефектов в продукте.

Таким образом, QA работает с процессами, QC проверяет результаты, а тестирование — это один из методов контроля качества продукта.

Тестирование на основе моделей.

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

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

Что такое тестовые модели.

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

Аналогично другим моделям, они должны быть в меру точны, адекватны (соответствовать реальности), универсальны (могут быть использованы неоднократно и для разных задач) и целесообразно экономно. Последнее очень важно: не стоит применять MBT ради галочки: важно понимать цель и ожидаемый результат такого подхода. Если создание и поддержание модели занимает больше времени, чем нахождение и исправление проблем без нее, а сам продукт не планируется поддерживать в долгосрочной перспективе, лучше сконцентрироваться на более доступных методах обеспечения качества.

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

Плюсы и минусы тестовых моделей.

Как и любой подход, MBT (Model Based Testing) имеет преимущества и недостатки.

Плюсы MBT.

  • Использование тестовых моделей развивает аналитическое мышление за счет постоянного анализа тестируемой системы. Лучший способ развить этот тип мышления — применять его для решения задач, например, для создания абстрактной схемы продукта или его компонента.
  • Моделирование улучшает понимание системы как у того, кто модель создает, так и у команды, которая ревьюит и использует ее. Приятный бонус: спустя некоторое время благодаря модели можно научиться предугадывать поведение системы в тех или иных обстоятельствах.
  • Тестовую модель поддерживать легче, чем много тест-кейсов (за счет абстрактности и того, что кейсов много, а модель одна).
  • MBT позволяет взглянуть на систему (или ее часть) в целом и увидеть неочевидные зависимости.
  • Создание и поддержание тестовой модели способствует синхронизации понимания работы системы внутри команды. Это очень полезно для избегания неоднозначных ситуаций и решения спорных вопросов «на берегу» до начала разработки.
  • Благодаря математической подоплеке наличие модели позволяет автоматизировать нахождение оптимального пути, пути с задействованием всех состояний и т.д. Кроме того, тестовую модель можно использовать как основу для проектирования автотестов.
  • Несомненно, модель делает процесс адаптации новичка в проект более эффективным. «Лучше один раз увидеть, чем сто раз услышать» тут как раз работает. Кроме того, у нового члена команды могут возникнуть вопросы, которые не пришли в голову команде, или другие участники процесса разработки могут вспомнить что-то важное, презентуя модель новичку.
  • Тестирование на основе моделей прекрасно подходит для долгосрочных проектов, где большое число тест-кейсов затруднит понимание принципов работы системы, а простая и наглядная схема, наоборот, упростит его.

Минусы MBT.

  • Если в модели есть ошибка, это может привести к фундаментальному недопониманию внутри команды. Именно поэтому важен следующий пункт.
  • Желательно, чтобы в моделировании (или ревью модели) участвовала вся команда. Во-первых, это позволяет исключить недопонимания, во-вторых, активирует силу коллективного разума.
  • Как и в случае с тестовой документацией, надо не лениться, поддерживать и регулярно обновлять модель. Если на это нет времени и / или недостаточно знаний, стоит поставить под сомнение целесообразность использования тестовых моделей в проекте.
  • Иногда создание модели занимает больше времени, чем написание простого чек-листа. Особенно это актуально для больших и многокомпонентных систем: если модель начинают создавать после того, как внутри системы уже существует куча не до конца понятных зависимостей, это может стать довольно долгим процессом.
  • Использование тестовых моделей требует определенных навыков абстрактного мышления вкупе с внимательностью к мелочам. Не стоит отключать критическое мышление даже по отношению к собственным трудам.

Как начать использовать тестовые модели.

  • Определить наиболее удобный для восприятия (собой, командой или бизнес-оунерами) вид схемы (таблица, диаграмма, граф и тд.). Важно, чтобы те, для кого делается модель, легко «читали» ее — это основная задача.
  • Декомпозировать систему, которую собираемся описать, на модули (руководствуясь приоритетами, функциональностью, логикой или другими критериями). Скорее всего, система многокомпонентная. Не стоит пытаться описать все и сразу.
  • Определить для отдельно взятого модуля возможные состояния системы, действия пользователя, переходы между состояниями, а также начальные и конечные точки взаимодействия (т.н. точку входа и точку выхода).
  • Схематично нарисовать «золотой путь», то есть идеальный вариант взаимодействия пользователя и системы.
  • Расширить этот путь для модуля так, чтобы помимо идеальных случаев модель включала и иные варианты: что может пойти не так на каждом шаге.
  • Не забыть о влиянии каждого состояния и перехода на другие части системы. Это особенно актуально, если создается не первая модель для тестируемого продукта.
  • Решить, будут ли объединяться модули в одну схему или хранить их по отдельности.
  • Поделиться полученной моделью с командой. Можно презентовать, отдать на ревью или пригласить коллег на ограниченную по времени сессию мозгового штурма, чтобы дополнить то, что можно забыть или упустить.
  • Поддерживать! Не забывать актуализировать и обновлять модель, — особенно когда добавляются новые компоненты, связи или даже новые модели.

Метрики тестирования.

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

Предназначение.

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

Для чего нужны метрики?

  • Оценка прогресса. Если стоит какая-то задача, которую невозможно выполнить «здесь и сейчас», нам нужен инструмент оценки, чтобы понять, ведут ли наши действия к ожидаемому результату?
  • Промежуточные замеры. Есть метрики, показывающие финальный результат, а есть процессные, благодаря которым еще до релиза продукта и до выдачи отчета руководству можно определить, идет процесс в нужном направлении и что еще нужно улучшать.
  • Поиск проблем. Третий случай, когда мы используем метрики, — это проведение аудита и поиск слабых мест. Тут бывают два стандартных сценария: либо мы ищем проблему, которую пока не можем осознать, либо ищем корни и первопричины у известных проблем.
  • Числовые обоснования. Ну, и последняя цель, которую можно преследовать при внедрении метрик, — это презентация и иллюстрация руководству. Через метрики можно конструктивно и наглядно обосновать то, что почти невозможно донести на уровне простого общения: потребность в ресурсах, проблемы в разработке, влияние недостающих требований на общий процесс разработки и т.д.

Метрики: как выбрать и внедрить.

Если по написанному выше ещё не стало понятно, что цифры ради цифров не нужны, придётся повториться: не следует пытаться внедрить какую-то метрику просто потому, что кажется логичной или полезной. Всегда стоит идти от задачи, например:

  1. Согласовать ожидания руководства, зафиксировать, а потом уже думать: какими показателями можно оценить именно эту цель?
  2. Когда хочется что-то улучшить в своей работе. Что именно? Определить, какого результата нужно достигнуть, подумать о его измерении:
  • Как оценивать прогресс в достижении этого показателя?
  • Как измерить достижения на уровне процесса, пока ключевой показатель, возможно, не меняется?
  1. Если нужно решить какую-то проблему, непосредственно в команде тестирования или на проекте в целом:
  • Как оценивать эту проблему, в чём её можно измерить?
  • Какие могут быть предпосылки для этой проблемы, очевидные или кажущиеся совсем нелогичными?
  • Как можно обнаружить корень этой проблемы, или «узкое горлышко»?
  1. Если нужно обосновать что-то своему руководству, и уже исчерпаны все аргументы:
  • Как проиллюстрировать наличие проблемы?

  • Как показать пользу от предлагаемого решения? Максимально осознанно пройтись по этому списку вопросов. Подключить коллег через совместный брейншторм или опросы. Определить, что нужно измерять, не доходя до уровня конкретных чисел и метрик. Сначала нужны обобщённые названия метрик, например:

  • Срывы сроков (для обработки жалобы от РМа).

  • Причины срыва сроков (чтобы найти решения проблеме).

  • Низкое качество тестирования (для решения жалоб от техподдержки).

  • Низкое качество кода (чтобы конструктивно пожаловаться руководителю разработки).

  • Отчетность для РМа по качеству продукта (по которой он сможет принимать взвешенные решения).

Только когда появится список неуточненных метрик, можно задуматься, как их измерять. Сначала — цели, потом — инструменты!