Терминология: что такое обеспечение качества и чем оно отличается от тестирования. Чем опросник отличается от теста? Автоматизированное или ручное тестирование

Небольшое вступление о том, что побудило написать эту статью.

  • Так сложилось, что за несколько лет довелось и собеседовать и общаться с довольно многими коллегами по цеху разработки ПО. На собеседованиях – чаще, в общении – меньше, но упоминался вопрос «В чем разница между QA и тестированием?», или его вариант «В чем разница между Quality Assurance и Quality Control?». Интересно, но очень немногие смогли объяснить разницу. Вы не подумайте, что я умничаю, несколько лет назад я и сам не смог бы внятно ответить:).
  • Еще один побуждающий фактор в том, что в большинстве случаев объявление вакансий на тестировщика звучит: «Требуется QA» или «QA Tester». Может показаться как придирка, но «QA Tester» это как? Тот, который тестирует того, кто делает QA?
  • Но главное, в большинстве случаев мы перекладываем ответственность за качество продукта на плечи тестировщиков (зачастую это хрупкие плечи девушек ИТ-шниц). Т.е. надеемся что (внимание, ключевые слова большими буквами) ОНИ, ПОТОМ, ЭТО протестируют и будет нам КАЧЕСТВО.
    • ОНИ – не мы все вместе, а кто-то другой.
    • ПОТОМ – реактивно, поздно. Аспекты качества не планируется изначально.
    • ЭТО – какие именно результаты поставки и критерии приемки?
    • КАЧЕСТВО – понятие растяжимое, может определяться по-разному к разным результатам поставки, к взаимодействию между участниками проекта, и у тех же участников ожидания по качеству разные.

Захотелось внести ясность. Скромно полагаю, что могу быть достаточно авторитетен, все-таки, ИТ-шного опыта 15 лет, серьезно участвовал во внедрении CMMI, интересуюсь разнообразными стандартами в области управления качеством различных объектов и систем, и т.п. В общем, некоторый опыт и знания имеются.

Для начала давайте посмотрим, что такое тестирование, или Quality Control (в дальнейшем QC). QC это применение техник контроля качества определенных артефактов. Это проверки соответствия того, что мы УЖЕ СДЕЛАЛИ некоторым ожиданиям. Например:

  • Проверка соответствия функционала спецификации.
  • Инспекция (review) документов относительно требований к их написанию, содержанию и формату. Документом может быть спецификация, календарный план проекта, тестовая документация и т.п.
  • Инспекция (review) кода относительно стандарта кодирования, архитектурной документации, требованиям безопасности и т.п.
  • Верификация проверяет артефакт на соответствие требованиям, описанным-оговоренным РАНЕЕ, т.е. смотрит в прошлое. Например, заказчик, читающий и утверждающий спецификацию, по которой уже были обсуждения делает верификацию.
  • Валидация же проверяет артефакт на возможность его ДАЛЬНЕЙШЕГО использования, т.е. смотрит в будущее. Например, тестировщик, «идущий» по тестовым сценариям, которые составлены на базе спецификации, делает верификацию. Но если ту же спецификацию инспектирует тестировщик на предмет тестируемости, а разработчик на предмет реализуемости, то это уже валидация.

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

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

Теперь давайте посмотрим на Quality Assurance (QA), оригинальные определения.

  • CMMI. Quality Assurance – planned and systematic means for assuring management that the defined standards, practices, procedures, and methods of the process are applied.
  • PMBOK. Perform Quality Assurance – The process of auditing the quality requirements and the results from quality control measurements to ensure appropriate quality standards and operational definitions are used.
  • Wikipedia. Software quality assurance (SQA) consists of a means of monitoring the software engineering processes and methods used to ensure quality. The methods by which this is accomplished are many and varied, and may include ensuring conformance to one or more standards, such as ISO 9000 or a model such as CMMI.

Если сказать в двух словах, то QA отвечает за качество процессов , которые в свою очередь применяются для создания артефактов (продуктов). Инструментарий оценки качества процессов – аудит (см.

Но и это еще не все, на самом деле QA в свою очередь является элементом Управления Качеством (Quality Management — QM). Существуют немного отличающиеся определения о составе QM, приведу важнейшие из них:

  • Планирования качества – о качестве продукта, услуг начинают думать с самого начала. Определяются процессы, методологии, стандарты, критерии приемки, контрактные обязательства, целевая среда функционирования продукта и т.д.
  • Обеспечения качества – собственно отвечает за качество процессов и их применение
  • Контроль качества – техники контроля качества артефактов (продуктов)
  • Улучшения качества – постоянные, измеримые улучшения процессов с целью сокращения расходов (деньги, время, материалы), оптимизации работы, улучшения качества продукта и т.п.
  • Ответственность руководства (Management Commitment/Responsibility) по отношению к QM – причем это означает вполне конкретные действия, т.е. заинтересованность (лидирование, инициирование) элементов QM, выделение ресурсов (люди, время, деньги), обучение, внутреннее и внешнее «продвижение» отношения к качеству, контроль элементов QM.

Подробно все базовые определения и понятия тестирования, а также разновидности и классы тестирования будут разобраны на примерах в отдельном разделе. В этой же статье будут рассмотрены только основные моменты, на которые стоит обратить особое внимание и сфокусироваться при подготовке к собеседованию: "Что такое тестирование ПО?" "Чем тестированеие отличается от QA?" "Что такое валидация и верификация и какая между ними разница?" "Какие бывают виды и типы тестирования?"

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

Или таким:

  • Тестирование ПО – проверка реального поведения программного продукта на соответствие заявленным требованиям

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

2. Многие интервьюеры интересуются, в чем отличие тестирования от QA. При ответе на этот вопрос лучше всего вспомнить и описать общую картину процесса обеспечения качества продукта. Есть 3 основных уровня:


Здесь также важно показать свой взгляд на этот вопрос и сформулировать различия своими словами

3. Часто на интервью встречаются вопросы про различие верификации и валидации продукта:

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

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

4. Также важно представлять какие бывают классы, виды и типы тестов, зачем они необходимы. Это нужно знать, чтобы общаться с будущими коллегами по команде на одном языке и понимать какие проверки нужны в том или ином случае. Далее приведу некоторые основные виды тестирования, которые необходимо знать и различать:

  • По объекту тестирования: функциональное и нефункциональное:
    • Функциональное тестирование – проверка того, что продукт выполняет свое прямое назначение, предоставляет функции, требуемые заказчиком\пользователями.
    • Нефункциональное тестирование – это проверка качественных характеристик продукта: скорости работы, надежности, безопасности и т.п. Нефункциональное тестирование делиться на (приведу основные виды):
      • Тестирование производительности
      • Конфигурационное тестирование
      • Юзабилити-тестирование
      • Тестирование пользовательского интерфейса
      • Тестирование безопасности
      • Тестирование совместимости
  • По изолированности компонент: системное, интеграционное, модульное. Можно сказать, что это классификация по уровню, по масштабности тестирования:
    • Мы можем проверять работоспособность ПО на уровне одного отдельного программного модуля\блока – это модульное тестирование.
    • Можно проверять взаимодействие нескольких модулей друг с другом через какой-либо интерфейс – это интеграционное тестирование.
    • Самый большой масштаб, это системное тестирование – проверка работоспособности смей системы \ всего продукта в целом.
  • По версии функционала: тестирование новой функциональности и регрессионное тестирование:
    • С одной стороны мы можем проверять новые функции, которые включены в последнюю сборку продукта
    • С другой – проводить регрессионное тестирование, т.е. проверять что функционал из предыдущих версий не пострадал после внедрения нового. Понятие и цели регрессионного тестирования – являются важным и частым вопросом на интервью
  • По ожидаемому результату: позитивное и негативное тестирование:
    • Позитивное тестирование – проверки, цель которых получить положительный результат, правильную отработку системы
    • Негативное тестирование – проверка сценариев, когда действие не может быть выполнено системой, анализ того, как система реагирует на ошибки и некорректные запросы
  • По уровню знаний системы: тестирование методом черного, белого или серого ящика:
    • Метод тестирования черного ящика – это проверка ПО с точки зрения внешнего мира, когда внутреннее устройство продукта неизвестно. В данном случае мы сосредоточены на проверке функционалиности продукта
    • Метод тестирования белого ящика – проверка реализации ПО, когда мы представляем его внутреннюю структуру, имеем доступ к коду
    • Метод тестирования серого ящика – комбинация первых двух видов. При данном подходе мы концентрируемся на конечной функциональности ПО, но знаем его внутреннюю реализацию, что дает больше идей о том, как этот продукт тестировать
  • По степени автоматизации: ручное и автоматизированное тестирование:
    • Во первых, здесь нужно объяснить разницу между этими видами тестирования, что просто: ручное – выполняется вручную, автоматизированное – с использованием средств автоматизации, программных средств (т.е. одна программа тестирует другую)
    • Во вторых, часто требуется объяснить, когда выгодна, не выгодна автоматизация или невозможна автоматизация
  • По уровню планирования: тестирование по тестовым кейсам и исследовательское тестирование
    • В первом случае мы заранее планируем какие проверки будем выполнять и готовим их в виде тестовых кейсов\тестовых сценариев.
    • Во втором – мы исследуем продукт в «свободном плавании», выполняем те проверки и в той последовательности, которые кажутся необходимыми в данный момент времени.

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

Психология - тонкая наука. Даже на казалось бы элементарные вопросы она не даёт однозначного ответа. При изучении отличий опросника от теста сразу сталкиваешься с разными трактовками термина опросник . И так хочется, чтобы эти понятия заполучили в итоге одно значение и не путали бы простого человека, изучающего с помощью тестов самого себя.

Но попробуем разобраться, чем же опросник отличается от теста?

Опросник - разновидность психологических тестов?

В "Энциклопедическом словаре: Психология труда, управления, инженерная психология и эргономика" , изданном в 2005 году, читаем:

Опросник одна из разновидностей психологических тестов .

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

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

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

Каждая такая группа вопросов называется шкала . Результаты опросников переводят чаще всего в стандартизированные баллы, поэтому опрашиваемых можно сравнивать либо с заранее установленной нормой, либо друг с другом.

Чтобы повысить правдоподобность ответов, некоторые опросники предлагают ответить на такие вопросы, смысл и цель которых завуалирована.

Какая разница?

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

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

Опросник изучает черты характера.

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

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

И последнее очень важное отличие опросника от теста:

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

Результатом проведения теста является сравнение полученного результата с некоторой установленной нормой, которая присуща конкретному типу людей. То есть у каждого теста есть так называемая шкала значений, позволяющая сразу же получить вполне определённый результат, который расскажет о человеке достаточно.

В качестве примеров опросников можно назвать следующие:

  • опросник потребности в достижении Ю.М. Орлова;
  • опросник Шмишека, позволяющий определить тип акцентуаций личности;
  • опросник Е.А. Климова, определяющий направленность личности, чтобы помочь определиться с предпочтительным типом профессии, и многие другие.

Чтобы ещё лучше понять, чем же опросник отличается от теста, нужно просто изучить себя с помощью одного из них. Тогда вы сможете полностью прочувствовать все отличия!

В терминах бывает сложно разобраться, особенно когда значения схожи или пересекаются. Сегодня речь пойдет об обеспечении качества (QA – от англ. Quality Assurance). Это неотъемлемая часть разработки мобильных приложений, роль которой часто недооценивают. А зря.

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

Что есть что?

Существует 3 термина, которые легко перепутать: тестирование (Testing), контроль качества (QC – Quality Control) и обеспечение качества (QA — Quality Assurance). Все они связаны друг c другом: QA – самое широкое понятие, оно включает в себя QC, в которое входит тестирование.

  1. Обеспечение качества (QA) отвечает за весь процесс разработки, поэтому должно быть интегрировано во все этапы разработки: от описания проекта до тестирования, релиза и даже пост-релизного обслуживания. Специалисты QA создают и реализуют различные тактики для повышения качества на всех стадиях производства: подготовка и установление стандартов, анализ качества, выбор инструментов, предотвращение появления ошибок и постоянное усовершенствование процесса.
  2. Задача Контроля качества (QC) — гарантировать соответствие требованиям (поиск ошибок и их устранение). QC ориентирован на проверку продукта, включает в себя многие процессы, такие как анализ кода, технические обзоры, анализ дизайна, тестирование и пр.
  3. Тестирование — это проверка результатов работы на соответствие требованиям.

Почему необходимо обеспечение качества?

Не экономьте на QA! Закладывайте эти расходы в бюджет разработки вашего приложения. Да, ценник от этого значительно вырастет — обеспечение качества может составить 25-50% от стоимости разработки приложения.

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

Критичных проблем вы сможете избежать, но небольшие ошибки возможны. Даже в продуктах, выпускаемых Microsoft, Google и Facebook, которыми каждый день пользуются миллионы, находятся проблемы и недоработки. Способа создать идеальное приложение с первой попытки пока не изобрели, но есть методы, позволяющие свести вероятность ошибок к минимуму и предотвратить их появление.

Что вы получаете в результате?

  • Тест-план (Test plan) . Документ, описывающий полный объем работ, служит основой для тестирования. Тест-план включает описание объекта тестирования, задачи тестирования и объемы работ, тестовые сценарии, распределение обязанностей членов команды, ожидаемые результаты тестирования, указание тестовой среды и инструментов.
  • Тестовые сценарии (Test cases) . Тестовый сценарий — перечень действий, которые необходимо выполнить, чтобы проверить определенную функцию или функции приложения.
  • Доступ к аналитике . Получив доступ к системе отслеживания ошибок, вы сможете увидеть все обнаруженные баги и убедиться, что они были устранены.

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