Основные этапы тестирования руководство пользователя

Фундаментальная теория тестирования

Время на прочтение
15 мин

Количество просмотров 722K

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

Перейдем к основным понятиям

Тестирование программного обеспечения (Software Testing) — проверка соответствия реальных и ожидаемых результатов поведения программы, проводимая на конечном наборе тестов, выбранном определённым образом.

Цель тестирования — проверка соответствия ПО предъявляемым требованиям, обеспечение уверенности в качестве ПО, поиск очевидных ошибок в программном обеспечении, которые должны быть выявлены до того, как их обнаружат пользователи программы.

Для чего проводится тестирование ПО?

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

Принципы тестирования

  • Принцип 1 — Тестирование демонстрирует наличие дефектов (Testing shows presence of defects).
    Тестирование только снижает вероятность наличия дефектов, которые находятся в программном обеспечении, но не гарантирует их отсутствия.
  • Принцип 2 — Исчерпывающее тестирование невозможно (Exhaustive testing is impossible).
    Полное тестирование с использованием всех входных комбинаций данных, результатов и предусловий физически невыполнимо (исключение — тривиальные случаи).
  • Принцип 3 — Раннее тестирование (Early testing).
    Следует начинать тестирование на ранних стадиях жизненного цикла разработки ПО, чтобы найти дефекты как можно раньше.
  • Принцип 4 — Скопление дефектов (Defects clustering).
    Большая часть дефектов находится в ограниченном количестве модулей.
  • Принцип 5 — Парадокс пестицида (Pesticide paradox).
    Если повторять те же тестовые сценарии снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты.
  • Принцип 6 — Тестирование зависит от контекста (Testing is context depending). Тестирование проводится по-разному в зависимости от контекста. Например, программное обеспечение, в котором критически важна безопасность, тестируется иначе, чем новостной портал.
  • Принцип 7 — Заблуждение об отсутствии ошибок (Absence-of-errors fallacy). Отсутствие найденных дефектов при тестировании не всегда означает готовность продукта к релизу. Система должна быть удобна пользователю в использовании и удовлетворять его ожиданиям и потребностям.

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

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

К задачам контроля качества относятся:

  • проверка готовности ПО к релизу;
  • проверка соответствия требований и качества данного проекта.

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

К задачам обеспечения качества относятся:

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

Скриншот

Верификация и валидация — два понятия тесно связаны с процессами тестирования и обеспечения качества. К сожалению, их часто путают, хотя отличия между ними достаточно существенны.

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

Валидация (validation) — это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, его требованиям к системе.

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

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

  1. Проектная документация — включает в себя всё, что относится к проекту в целом.
  2. Продуктовая документация — часть проектной документации, выделяемая отдельно, которая относится непосредственно к разрабатываемому приложению или системе.

Этапы тестирования:

  1. Анализ продукта
  2. Работа с требованиями
  3. Разработка стратегии тестирования и планирование процедур контроля качества
  4. Создание тестовой документации
  5. Тестирование прототипа
  6. Основное тестирование
  7. Стабилизация
  8. Эксплуатация

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

Программный продукт проходит следующие стадии:

  1. анализ требований к проекту;
  2. проектирование;
  3. реализация;
  4. тестирование продукта;
  5. внедрение и поддержка.

Требования

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

Атрибуты требований:

  1. Корректность — точное описание разрабатываемого функционала.
  2. Проверяемость — формулировка требований таким образом, чтобы можно было выставить однозначный вердикт, выполнено все в соответствии с требованиями или нет.
  3. Полнота — в требовании должна содержаться вся необходимая для реализации функциональности информация.
  4. Недвусмысленность — требование должно содержать однозначные формулировки.
  5. Непротиворечивость — требование не должно содержать внутренних противоречий и противоречий другим требованиям и документам.
  6. Приоритетность — у каждого требования должен быть приоритет(количественная оценка степени значимости требования). Этот атрибут позволит грамотно управлять ресурсами на проекте.
  7. Атомарность — требование нельзя разбить на отдельные части без потери деталей.
  8. Модифицируемость — в каждое требование можно внести изменение.
  9. Прослеживаемость — каждое требование должно иметь уникальный идентификатор, по которому на него можно сослаться.

Дефект (bug) — отклонение фактического результата от ожидаемого.

Отчёт о дефекте (bug report) — документ, который содержит отчет о любом недостатке в компоненте или системе, который потенциально может привести компонент или систему к невозможности выполнить требуемую функцию.

Атрибуты отчета о дефекте:

  1. Уникальный идентификатор (ID) — присваивается автоматически системой при создании баг-репорта.
  2. Тема (краткое описание, Summary) — кратко сформулированный смысл дефекта, отвечающий на вопросы: Что? Где? Когда(при каких условиях)?
  3. Подробное описание (Description) — более широкое описание дефекта (указывается опционально).
  4. Шаги для воспроизведения (Steps To Reproduce) — описание четкой последовательности действий, которая привела к выявлению дефекта. В шагах воспроизведения должен быть описан каждый шаг, вплоть до конкретных вводимых значений, если они играют роль в воспроизведении дефекта.
  5. Фактический результат (Actual result) — описывается поведение системы на момент обнаружения дефекта в ней. чаще всего, содержит краткое описание некорректного поведения(может совпадать с темой отчета о дефекте).
  6. Ожидаемый результат (Expected result) — описание того, как именно должна работать система в соответствии с документацией.
  7. Вложения (Attachments) — скриншоты, видео или лог-файлы.
  8. Серьёзность дефекта (важность, Severity) — характеризует влияние дефекта на работоспособность приложения.
  9. Приоритет дефекта (срочность, Priority) — указывает на очерёдность выполнения задачи или устранения дефекта.
  10. Статус (Status) — определяет текущее состояние дефекта. Статусы дефектов могут быть разными в разных баг-трекинговых системах.
  11. Окружение (Environment) – окружение, на котором воспроизвелся баг.

Жизненный цикл бага

Скриншот

Severity vs Priority

Серьёзность (severity) показывает степень ущерба, который наносится проекту существованием дефекта. Severity выставляется тестировщиком.

Градация Серьезности дефекта (Severity):

  • Блокирующий (S1 – Blocker)
    тестирование значительной части функциональности вообще недоступно. Блокирующая ошибка, приводящая приложение в нерабочее состояние, в результате которого дальнейшая работа с тестируемой системой или ее ключевыми функциями становится невозможна.
  • Критический (S2 – Critical)
    критическая ошибка, неправильно работающая ключевая бизнес-логика, дыра в системе безопасности, проблема, приведшая к временному падению сервера или приводящая в нерабочее состояние некоторую часть системы, то есть не работает важная часть одной какой-либо функции либо не работает значительная часть, но имеется workaround (обходной путь/другие входные точки), позволяющий продолжить тестирование.
  • Значительный (S3 – Major)
    не работает важная часть одной какой-либо функции/бизнес-логики, но при выполнении специфических условий, либо есть workaround, позволяющий продолжить ее тестирование либо не работает не очень значительная часть какой-либо функции. Также относится к дефектам с высокими visibility – обычно не сильно влияющие на функциональность дефекты дизайна, которые, однако, сразу бросаются в глаза.
  • Незначительный (S4 – Minor)
    часто ошибки GUI, которые не влияют на функциональность, но портят юзабилити или внешний вид. Также незначительные функциональные дефекты, либо которые воспроизводятся на определенном устройстве.
  • Тривиальный (S5 – Trivial)
    почти всегда дефекты на GUI — опечатки в тексте, несоответствие шрифта и оттенка и т.п., либо плохо воспроизводимая ошибка, не касающаяся бизнес-логики, проблема сторонних библиотек или сервисов, проблема, не оказывающая никакого влияния на общее качество продукта.

Срочность (priority) показывает, как быстро дефект должен быть устранён. Priority выставляется менеджером, тимлидом или заказчиком

Градация Приоритета дефекта (Priority):

  • P1 Высокий (High)
    Критическая для проекта ошибка. Должна быть исправлена как можно быстрее.
  • P2 Средний (Medium)
    Не критичная для проекта ошибка, однако требует обязательного решения.
  • P3 Низкий (Low)
    Наличие данной ошибки не является критичным и не требует срочного решения. Может быть исправлена, когда у команды появится время на ее устранение.

Существует шесть базовых типов задач:

  • Эпик (epic) — большая задача, на решение которой команде нужно несколько спринтов.
  • Требование (requirement ) — задача, содержащая в себе описание реализации той или иной фичи.
  • История (story) — часть большой задачи (эпика), которую команда может решить за 1 спринт.
  • Задача (task) — техническая задача, которую делает один из членов команды.
  • Под-задача (sub-task) — часть истории / задачи, которая описывает минимальный объем работы члена команды.
  • Баг (bug) — задача, которая описывает ошибку в системе.

Тестовые среды

  • Среда разработки (Development Env) – за данную среду отвечают разработчики, в ней они пишут код, проводят отладку, исправляют ошибки
  • Среда тестирования (Test Env) – среда, в которой работают тестировщики (проверяют функционал, проводят smoke и регрессионные тесты, воспроизводят.
  • Интеграционная среда (Integration Env) – среда, в которой проводят тестирование взаимодействующих друг с другом модулей, систем, продуктов.
  • Предпрод (Preprod Env) – среда, которая максимально приближена к продакшену. Здесь проводится заключительное тестирование функционала.
  • Продакшн среда (Production Env) – среда, в которой работают пользователи.

Основные фазы тестирования

  • Pre-Alpha: прототип, в котором всё ещё присутствует много ошибок и наверняка неполный функционал. Необходим для ознакомления с будущими возможностями программ.
  • Alpha: является ранней версией программного продукта, тестирование которой проводится внутри фирмы-разработчика.
  • Beta: практически готовый продукт, который разработан в первую очередь для тестирования конечными пользователями.
  • Release Candidate (RC): возможные ошибки в каждой из фичей уже устранены и разработчики выпускают версию на которой проводится регрессионное тестирование.
  • Release: финальная версия программы, которая готова к использованию.

Основные виды тестирования ПО

Вид тестирования — это совокупность активностей, направленных на тестирование заданных характеристик системы или её части, основанная на конкретных целях.

Скриншот

  1. Классификация по запуску кода на исполнение:
    • Статическое тестирование — процесс тестирования, который проводится для верификации практически любого артефакта разработки: программного кода компонент, требований, системных спецификаций, функциональных спецификаций, документов проектирования и архитектуры программных систем и их компонентов.
    • Динамическое тестирование — тестирование проводится на работающей системе, не может быть осуществлено без запуска программного кода приложения.

  2. Классификация по доступу к коду и архитектуре:
    • Тестирование белого ящика — метод тестирования ПО, который предполагает полный доступ к коду проекта.
    • Тестирование серого ящика — метод тестирования ПО, который предполагает частичный доступ к коду проекта (комбинация White Box и Black Box методов).
    • Тестирование чёрного ящика — метод тестирования ПО, который не предполагает доступа (полного или частичного) к системе. Основывается на работе исключительно с внешним интерфейсом тестируемой системы.

  3. Классификация по уровню детализации приложения:
    • Модульное тестирование — проводится для тестирования какого-либо одного логически выделенного и изолированного элемента (модуля) системы в коде. Проводится самими разработчиками, так как предполагает полный доступ к коду.
    • Интеграционное тестирование — тестирование, направленное на проверку корректности взаимодействия нескольких модулей, объединенных в единое целое.
    • Системное тестирование — процесс тестирования системы, на котором проводится не только функциональное тестирование, но и оценка характеристик качества системы — ее устойчивости, надежности, безопасности и производительности.
    • Приёмочное тестирование — проверяет соответствие системы потребностям, требованиям и бизнес-процессам пользователя.

  4. Классификация по степени автоматизации:
    • Ручное тестирование.
    • Автоматизированное тестирование.

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

  6. Классификация по уровню функционального тестирования:
    • Дымовое тестирование (smoke test) — тестирование, выполняемое на новой сборке, с целью подтверждения того, что программное обеспечение стартует и выполняет основные для бизнеса функции.
    • Тестирование критического пути (critical path) — направлено для проверки функциональности, используемой обычными пользователями во время их повседневной деятельности.
    • Расширенное тестирование (extended) — направлено на исследование всей заявленной в требованиях функциональности.

  7. Классификация в зависимости от исполнителей:
    • Альфа-тестирование — является ранней версией программного продукта. Может выполняться внутри организации-разработчика с возможным частичным привлечением конечных пользователей.
    • Бета-тестирование — программное обеспечение, выпускаемое для ограниченного количества пользователей. Главная цель — получить отзывы клиентов о продукте и внести соответствующие изменения.

  8. Классификация в зависимости от целей тестирования:
    • Функциональное тестирование (functional testing) — направлено на проверку корректности работы функциональности приложения.
    • Нефункциональное тестирование (non-functional testing) — тестирование атрибутов компонента или системы, не относящихся к функциональности.
      1. Тестирование производительности (performance testing) — определение стабильности и потребления ресурсов в условиях различных сценариев использования и нагрузок.
      2. Нагрузочное тестирование (load testing) — определение или сбор показателей производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству).
      3. Тестирование масштабируемости (scalability testing) — тестирование, которое измеряет производительность сети или системы, когда количество пользовательских запросов увеличивается или уменьшается.
      4. Объёмное тестирование (volume testing) — это тип тестирования программного обеспечения, которое проводится для тестирования программного приложения с определенным объемом данных.
      5. Стрессовое тестирование (stress testing) — тип тестирования направленный для проверки, как система обращается с нарастающей нагрузкой (количеством одновременных пользователей).
      6. Инсталляционное тестирование (installation testing) — тестирование, направленное на проверку успешной установки и настройки, обновления или удаления приложения.
      7. Тестирование интерфейса (GUI/UI testing) — проверка требований к пользовательскому интерфейсу.
      8. Тестирование удобства использования (usability testing) — это метод тестирования, направленный на установление степени удобства использования, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий.
      9. Тестирование локализации (localization testing) — проверка адаптации программного обеспечения для определенной аудитории в соответствии с ее культурными особенностями.
      10. Тестирование безопасности (security testing) — это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
      11. Тестирование надёжности (reliability testing) — один из видов нефункционального тестирования ПО, целью которого является проверка работоспособности приложения при длительном тестировании с ожидаемым уровнем нагрузки.
      12. Регрессионное тестирование (regression testing) — тестирование уже проверенной ранее функциональности после внесения изменений в код приложения, для уверенности в том, что эти изменения не внесли ошибки в областях, которые не подверглись изменениям.
      13. Повторное/подтверждающее тестирование (re-testing/confirmation testing) — тестирование, во время которого исполняются тестовые сценарии, выявившие ошибки во время последнего запуска, для подтверждения успешности исправления этих ошибок.

Тест-дизайн — это этап тестирования ПО, на котором проектируются и создаются тестовые случаи (тест-кейсы).

Техники тест-дизайна

Автор книги «A Practitioner’s Guide to Software Test Design», Lee Copeland, выделяет следующие техники тест-дизайна:

  1. Тестирование на основе классов эквивалентности (equivalence partitioning) — это техника, основанная на методе чёрного ящика, при которой мы разделяем функционал (часто диапазон возможных вводимых значений) на группы эквивалентных по своему влиянию на систему значений.
  2. Техника анализа граничных значений (boundary value testing) — это техника проверки поведения продукта на крайних (граничных) значениях входных данных.
  3. Попарное тестирование (pairwise testing) — это техника формирования наборов тестовых данных из полного набора входных данных в системе, которая позволяет существенно сократить количество тест-кейсов.
  4. Тестирование на основе состояний и переходов (State-Transition Testing) — применяется для фиксирования требований и описания дизайна приложения.
  5. Таблицы принятия решений (Decision Table Testing) — техника тестирования, основанная на методе чёрного ящика, которая применяется для систем со сложной логикой.
  6. Доменный анализ (Domain Analysis Testing) — это техника основана на разбиении диапазона возможных значений переменной на поддиапазоны, с последующим выбором одного или нескольких значений из каждого домена для тестирования.
  7. Сценарий использования (Use Case Testing) — Use Case описывает сценарий взаимодействия двух и более участников (как правило — пользователя и системы).

Методы тестирования

Скриншот

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

Согласно ISTQB, тестирование белого ящика — это:

  • тестирование, основанное на анализе внутренней структуры компонента или системы;
  • тест-дизайн, основанный на технике белого ящика — процедура написания или выбора тест-кейсов на основе анализа внутреннего устройства системы или компонента.
  • Почему «белый ящик»? Тестируемая программа для тестировщика — прозрачный ящик, содержимое которого он прекрасно видит.

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

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

Согласно ISTQB, тестирование черного ящика — это:

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

Тестовая документация

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

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

  • Что необходимо протестировать?
  • Как будет проводиться тестирование?
  • Когда будет проводиться тестирование?
  • Критерии начала тестирования.
  • Критерии окончания тестирования.

Основные пункты тест плана:

  1. Идентификатор тест плана (Test plan identifier);
  2. Введение (Introduction);
  3. Объект тестирования (Test items);
  4. Функции, которые будут протестированы (Features to be tested;)
  5. Функции, которые не будут протестированы (Features not to be tested);
  6. Тестовые подходы (Approach);
  7. Критерии прохождения тестирования (Item pass/fail criteria);
  8. Критерии приостановления и возобновления тестирования (Suspension criteria and resumption requirements);
  9. Результаты тестирования (Test deliverables);
  10. Задачи тестирования (Testing tasks);
  11. Ресурсы системы (Environmental needs);
  12. Обязанности (Responsibilities);
  13. Роли и ответственность (Staffing and training needs);
  14. Расписание (Schedule);
  15. Оценка рисков (Risks and contingencies);
  16. Согласования (Approvals).

Чек-лист (check list) — это документ, который описывает что должно быть протестировано. Чек-лист может быть абсолютно разного уровня детализации.

Чаще всего чек-лист содержит только действия, без ожидаемого результата. Чек-лист менее формализован.

Тестовый сценарий (test case) — это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.

Атрибуты тест кейса:

  • Предусловия (PreConditions) — список действий, которые приводят систему к состоянию пригодному для проведения основной проверки. Либо список условий, выполнение которых говорит о том, что система находится в пригодном для проведения основного теста состояния.
  • Шаги (Steps) — список действий, переводящих систему из одного состояния в другое, для получения результата, на основании которого можно сделать вывод о удовлетворении реализации, поставленным требованиям.
  • Ожидаемый результат (Expected result) — что по факту должны получить.

Резюме

Старайтесь понять определения, а не зазубривать. Если хотите узнать больше про тестирование, то можете почитать Библию QA. А если возникнет вопрос, всегда можете задать его нам в телеграм-канале @qa_chillout.

Стандартные этапы тестирования ПО

  • 1. Оценка проекта
  • 2. Создание плана
  • 3. Сбор требований
  • 4. Тест-дизайн
  • 5. Тестирование билда
  • 6. Выполнение тестов
  • 7. Приемочное тестирование
  • 8. Репорты и результаты
  • 9. Установка приложения
  • 10. Корректировка
  • 11. Оценка эффективности

Этап 1: Оценка плана разработки и состояния проекта 

Предварительный этап, в котором задействуются верификация, валидация (здесь подробнее) и план тестирования (здесь подробнее). На этом этапе тестировщики, со своей точки зрения, оценивают полноту и корректность плана разработки, включая тестирование. Основываясь на расширяемости и полноте плана проекта, тестировщики оценивают количество ресурсов, которые будут выделять на тестирование в этом проекте.

Этап 2: Разработка плана тестирования

Создание плана тестирования вполне стандартный процесс, не выходящий за рамки общего паттерна планирования программных продуктов. Структура плана тестирования описывается стандартом IEEE, контекст зависит от проекта, и от скиллов команды.

Этап 3: Сбор требований

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

Этап 4: Тест-дизайн

Этап оценки как «внешнего», так и «внутреннего» дизайна, главным образом это техники верификации. QA-команда позаботится, чтобы планирование было эффективным, особенно что касается окружения и аппаратной части.

Этап 5: Тестирование билда

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

Этап 6: Выполнение тестов и фиксация результатов

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

Этап 7: Приемочное тестирование

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

Этап 8: Репорты и результаты тестов

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

Этап 9: Установка продукта

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

Этап 10: Корректировки

Этап обслуживания/поддержки готового продукта, в том числе maintenance-тестированием. Требования к продукту могут изменяться/совершенствоваться и на этом позднем этапе, поэтому в тест-план могут вноситься изменения; корректировки/совершенствования продукта должны быть протестированы и оценены QA-командой.

Этап 11: Оценка эффективности тестирования

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

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

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

Определение

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

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

Цели

Тестирование преследует определенные цели. К ним относят:

  1. Повышение вероятности того, что программный продукт будет при любых обстоятельствах функционировать «как надо».
  2. Проверка на факт соответствия итогового контента изначально выдвинутому набору требований.
  3. Предоставление актуальной информации о том, в каком состоянии программа находится на текущий момент.

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

Для чего необходим

Тест – процесс проверки чего-либо. В разработке систем он очень важен. Помогает:

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

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

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

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

Немного терминологии

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

  1. Качество ПО – совокупность характеристик системы, которые относятся к ее способности удовлетворять установленные и предполагаемые потребности. То, насколько контент соответствует изначальным критериям.
  2. Верификация – процесс оценки системы или ее компонентов. Делается это для того, чтобы проверить, насколько результаты разработки на заданном этапе удовлетворяют начальным требованиям. Показывает, выполняются ли цели и задачи организации на том или ином шаге программирования.
  3. Валидация – соответствие программного продукта или системы ожиданиям, желаниям, потребностям пользователя. То, насколько ПО соответствует явным требованиям (спецификациям).

Также стоит разобраться с фазами жизненного цикла. ЖЦ – это процедуры и процессы, с которыми сталкивается приложение/система на каждой стадии разработки от зарождения первоначальной идеи до релиза и поддержки. Жизненный цикл есть у любого программного обеспечения.

О качестве

Что собой представляет качество ПО, понятно. Данный процесс имеет несколько «видов» контроля (проверок). Каждый предусматривает свои ключевые особенности:

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

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

Принципы организации

Рассматривая основы тестирования ПО и систем, нужно разобраться в принципах изучаемых комплексов мероприятий:

  1. Тестирование указывает на наличие дефектов. Оно может указать на то, что в процессе разработки присутствует тот или иной дефект. А вот доказать отсутствие таких неполадок – нет. Проверка ПО снижает вероятность наличия дефектов, но вот то, что их нет, гарантировать никак не может.
  2. Исчерпывающие проверки системе недостижимы. Полное тестирование с использованием всех комбинаций вводов и предусловий выполнить физически не получится. Исключение – нетривиальные задачи. Вместо исчерпывающего «анализа» нужно использовать оценивание рисков и расстановку приоритетов. Такой подход позволяет сконцентрироваться на более точном получении итогового результата.
  3. Раннее тестирование. Проверки должны начинаться как можно раньше в жизненном цикле программного обеспечения. Это помогает быстрее обнаружить неполадки. Фокусироваться такие тесты должны на конкретных целях.
  4. Скопление дефектов. Разные системные модули содержат различные дефекты – не только по типу, но и по количеству. Плотность скопления неполадок и сбоев в разных частых кода может варьироваться. Условия по тестированию систем должны распределяться пропорционально плотности обнаруженных дефектов. Основная часть критических ошибок приходится на ограниченное число модулей системы.
  5. «Пестицидный» парадокс. При прогоне одних и тех же тестов несколько раз, в конечном итоге набор тестовых сценарием перестанет находить новые дефекты. Чтобы избавиться от этого парадокса, сценарии должны регулярно рецензироваться и изменяться. Новые тесты, формируемые специалистами, обязательно становятся разносторонними. Это помогает охватить все компоненты системы с целью обнаружения большего количества дефектов.
  6. Зависимость от контекста. Тесты выполняются по-разному. Все зависит от того, какой контекст изначально заложен. Пример – программный продукт, для которого на передовой находится безопасность, будет проверяться на работоспособность иначе, чем обычный информационно-новостной портал.
  7. Заблуждение об отсутствии неполадок. При тестировании не всегда обнаруживаются неполадки и ошибки. Это не значит, что система подготовлена на все 100% к релизу. Может получиться так, что дефекты будут критическими и скрытыми. Проект должен не только не иметь неполадок (особенно если речь идет о масштабной разработке), но и быть удобным для использования потребителями.

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

Этапы

Для выполнения тестов и отладки системы, нужно организовывать процессы правильно. Существует некий алгоритм, отражающий этапы тестирования:

  1. Анализ имеющегося продукта. Это – первоначальная идея (задумка) проекта.
  2. Работа с требованиями. На предыдущем этапе происходит формирование технического задания. Теперь предстоит изучить его и доработать, если это необходимо.
  3. Разработка стратегий тестирования и планирование процедур по контролю качества.
  4. Создание тестовой документации. Это – этап, на котором формируется «отчетность» для тестировщиков. Вспомогательные документы, опираясь на которые, специалисты будут грамотно выстраивать процессы.
  5. Тестирование прототипов.
  6. Основной этап проверок. Здесь выявляется полноценная работоспособность приложения, а также соответствие первоначальным требованиям заказчика.
  7. Стабилизация и отладка.
  8. Релиз и эксплуатация.

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

Жизненный цикл

Стадии разработки программного обеспечения – это этапы (шаги), которые проходят команды разработчиков перед тем, как проект станет доступным для широкого круга пользователей. Разработка начинается с первоначального этапа процесса (пре-альфа), продолжается поэтапно. На каждом очередном «шаге» контент будет дорабатываться, модернизироваться. Финальная стадия – выпуск окончательной версии системы или ПО.

Жизненный цикл можно представить похожим на этапы тестирования. Он обычно включает в себя:

  • непосредственный анализ требований к приложению или системе;
  • проектирование;
  • реализацию;
  • тестирование;
  • внедрение и поддержку.

Каждая стадия получает свое «имя» или порядковый номер: пре-альфа, альфа, бета, релиз-кандидат, релиз, а также пост-релиз.

Основные требования

Когда с общим представлением тестирования программ удалось ознакомиться, можно приступать к более сложным задачам. Рассматриваемые операции имеют требова ния. Это – спецификации (описания) того, что должно быть реализовано в ходе разработки системы/продукта. Описывают моменты, которые нужно воплотить в жизнь, не отражая техническую детализацию.

Сюда можно отнести следующие критерии:

  1. Корректность. Каждое требование обязательно точно описывает желаемые инструменты и функции.
  2. Проверяемость. Требование формулируется так, чтобы существовали способы однозадачной проверки на факт выполнения.
  3. Полнота. Каждое описание содержит информацию, которой достаточно разработчику для грамотной реализации того или иного функционала.
  4. Недвусмысленность. Сформулированные описания являются понятными. Они трактуются только одним способом. Неоднозначные аббревиатуры и выражения в них отсутствуют.
  5. Непротиворечивость. Описание не должно содержать внутренних противоречий. То же самое касается «несоответствий» техническому заданию и иным документам.
  6. Приоритетность. Приоритет требования представлен количественной оценкой степени важности.
  7. Атомарность. Описание нельзя разделить на более мелкие без потери завершенности. Каждое требование описывает всего одну ситуацию.
  8. Модифицируемость. Указывает на простоту внесения изменений в отдельные описания или их наборы.
  9. Возможность отслеживания. Каждое описание имеет уникальный идентификатор. Он помогает обнаружить требование при необходимости.

Описание не может быть необязательным. Это – явное противоречие самому замыслу требований к тестированию.

Виды

  1. Тестирование программ может быть разным. Классифицировать этот процесс можно по различным признакам. Ниже – основные варианты.
  2. Функциональные типы: функциональное тестирование, проверка пользовательского интерфейса, анализ систем безопасности, тестирование взаимодействия.
  3. Нефункциональное тестирование: все виды проверки производительности (нагрузочное, стрессовое, стабильности или надежности, объемное), проверка установок и удобства пользования, тестирование на отказ и восстановление. Сюда также относят конфигурационные проверки.
  4. Связанные с изменениями: дымовое, регрессионное, повторное тестирование. К данной категории относят проверку сборки и согласованности (исправности) системы.

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

Функциональное тестирование

Рассматривает заранее указанное поведение. Базируется на анализе спецификаций функциональности компонентом или систем. Позволяет проверить ключевые задачи проекта.

Проверка пользовательского интерфейса

Называется GUI Testing. Позволяет провести функциональную проверку интерфейса. Это – то, что позволяет понять, насколько получившийся контент соответствует изначальной задаче. Сюда относят анализ размера интерфейса, шрифтов, меню и других особенностей.

Тестирование безопасности

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

Проверка работоспособности

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

Нагрузочные проверки

Нагрузочное тестирование. Базируется на автоматизации. Позволяет проверить автоматически, как бизнес-пользователи будут работать на том или ином ресурсе. Это – имитация поведения потенциальной целевой аудитории.

Стрессовые тесты

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

Объемное тестирование

Это – получение оценки производительности. В основе заложено увеличение объемов обрабатываемой в БД информации программы.

Тест надежности

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

Проверка установок

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

Удобство пользования

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

Отказ и восстановление

Проверяет:

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

Данный тест позволяет продумать концепции, реализация которых сохранит при сбоях в системе ее работоспособность.

Конфигурационные проверки

Специальный вид «анализа». Он направлен на проверку работы системы при применении разного рода настроек системы. Пример – разнообразные ОС или драйверах.

Дымовые тесты

Это с точки зрения «анализа процессов» — короткие циклы тестов. Они помогают удостовериться в том, что после сборки код будет работать и выполнять заданные функции. В основном используется при обновлениях и доработках.

Регрессионные тесты

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

Повторные тесты

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

Тесты сборок

Направлены на соответствие выпущенной версии критериям качества в начале тестирования. Это – аналог «дымового» подхода.

Санитарное тестирование

Узконаправленный «анализ». Его хватает для того, чтобы показать, что конкретная функция работает согласно задумке. Это – подмножество регрессионного тестирования. Позволяет понять, насколько определенная часть системы остается работоспособной после внедрения обновлений в коде или окружающей среде.

Иные виды

Каждый тестировщик говорит о том, что тестирование систем и ПО бывает разным. Способов классификации очень много. Кроме перечисленных вариантов можно выделить:

  1. Статическое тестирование. Код не будет выполняться. Все проверки осуществляются вручную. Направлено на повышение качества итогового продукта.
  2. Динамическое. Это – выполнение кода. Нацелено на функциональное поведение системы, использование памяти, общую производительность. Позволяет подтвердить то, что проект работает согласно задумке.
  3. Ручное тестирование систем. Начинать и организовывать анализ проекта придется вручную. Долгий и затратный процесс.
  4. Автоматизированный вариант. Хотя ручное тестирование до сих пор есть, на передовую выходить автоматизация. Это – проверка работоспособности ПО при помощи специальных приложений и функций.
  5. Позитивные тесты. Здесь применяются только корректные электронные материалы.
  6. Негативные тесты. Проверка системы, при которой используются некорректные данные. Выполнять будут «неправильные» операции.
  7. Модульный подход. Проверка логически выделенного и изолированного компонента системы.
  8. Интеграционный вариант. Проверяет, насколько несколько модулей системы хорошо взаимодействуют друг с другом и иными частями ПО.

Основы тестов изучены. Перед тем, как начать проверку работоспособности, нужно обратить внимание на типы «анализа». Без них специалисту не обойтись.

О типах

Существует тестирование белого ящика. Это – метод, который предполагает, что внутренняя структура, устройство и реализация известны специалисту. Сюда можно отнести проверки, базирующиеся на анализе внутренней структуры элемента/системы, а также тест-дизайн.

Есть тестирование серого ящика. Метод, предполагающий сочетание «черного» и «белого» ящиков. Внутреннее устройство программы будет известно лишь частично.

Тестирование черного ящика – тест, базирующийся на спецификации. Является тестированием поведения.

Как стать тестировщиком

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

Это важный специалист в любой команде. Чтобы стать тестировщиком, можно изучить специализированную литературу и попрактиковаться на различных мелких проектах. Но лучше всего завершить компьютерные онлайн курсы. Там в сжатые сроки дадут «базу» для погружения в IT-профессию, а также предоставят богатый практический опыт. В конце обучения выдается электронный сертификат, способный подтвердить документально приобретенный спектр знаний, навыков и умений.

P. S. Большой выбор курсов по тестированию есть и в Otus. Есть варианты как для продвинутых, так и для начинающих пользователей.

44

Методология Kanban впервые появилась в Японии. Эту методику изобрела в 1959 г. компания Toyota. В 1962 г. она начала использоваться для производства автомобилей. В Kanban всего три простых базовых принципа, на которых строится все остальное:

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

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

Измерение и оптимизация жизненного цикла разработки. Возможность

вносить изменения в процесс разработки является одним из важных компонентов Agile-методологии.

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

Вболее широком смысле тестирование – это один из этапов разработки ПО, включающий в себя активности (рис. 3.5):

планирование работ (Test Planning);

анализ и проектирование тестов (Test Analysis & Test Design);

выполнение тестирования (Test Execution);

анализ полученных результатов (Test results evaluation).

Тестовый

Тестовые

Результаты

Тестовый

случай

данные

теста

отчет

Планирование

Подготовка

Запуск

Сравнение

программы с

результатов с

тестового

тестовых

тестовыми

тестовым

случая

данных

данными

случаем

Рис. 3.5 – Этапы тестирования ПО

45

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Планирование тестирования – это действия, направленные

на определение целей и описание задач тестирования.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Планирование учитывает данные, полученные при проверке и управлении. 1. Планирование тестирования:

планирование момента начала тестирования;

планирование критерия завершения тестирования;

планирование объема тестирования;

планирование стратегии тестирования: определяются виды тестирования и их применение по отношению к объекту тестирования;

планирование тестовой среды.

К артефактам, создаваемым на стадии планирования, можно отнести:

тестовый план;

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

запрос на выделение тестового оборудования.

2. Анализ и разработка тестовых сценариев.

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Тест-анализ – это деятельность, во время которой осу-

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

Тест дизайн – это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест-кейсы), в соответствии с определенными ранее критериями качества и целями тестировани (IEEE 829).

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Для анализа и проектирования тестов поставлены следующие основные задачи:

оценка тестируемости базиса тестирования и объектов тестирования;

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

46

разработка и расстановка приоритетов тестовых сценариев высокого уровня;

выявление необходимых данных для поддержки тестовых условий и тестовых сценариев;

проектирование и установка тестового окружения и выявление необходимой инфраструктуры и инструментов;

создание двунаправленной трассируемости между тестовым базисом и тестовым сценарием.

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

Тест-дизайн (разработка тестовых сценариев) включает в себя:

составление пошаговой инструкции по выполнению тестовых сценариев;

составление критериев успешности прохождения теста.

Тест-анализ отвечает на вопрос «Что тестировать?», а тест-дизайн отвечает на вопрос «Как тестировать?».

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

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

·· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

3.Подготовка тестовой среды:

составление набора входных данных;

развертывание тестовой среды и т. д. 4. Выполнение тестов:

ввод входных значений тестирования;

анализ выходных значений;

выполнение тестовых сценариев и т. д. 5. Создание отчетов:

анализ успешности прохождения тестирования;

описание найденных дефектов и т. д.

Поиск

Новые материалы

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

1. Анализ документации: бизнес требований и функциональных спецификаций

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

2. Оценка и планирование тестирования

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

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

3. Разработка сценариев тестирования

На данном этапе мы описываем сценарии, по которым будем тестировать продукт. Здесь важны две темы: как определить необходимые сценарии и как их описать.

  • Для того, чтобы определить какие проверки необходимо выполнить существуют множество техник и способов. В этой статье я не буду их описывать (можно по названию найти подробное описание на WiKi), только перечислю некоторые из них:
    • Traceability matrix
    • Decision Table
    • Boundary value analysis and Equivalence partitioning
    • Pairwise Technique
    • Use-Case

Для прохождения интервью самое главное ответить на вопросы:

  1. Как планируете формировать список проверок?
  2. Как поймете насколько полно этот список проверок охватывает функционал, который необходимо проверить?

Если какими-то техниками раньше не пользовались, интервьюеру сразу будет ясно, что знания только теоретические, а вы можете легко запутаться. В этом случае обязательно разберитесь с методом тестирования граничных значений и классами эквивалентности (Boundary value analysis and Equivalence partitioning) и отталкивайтесь от функций ПО. Следите, чтобы на каждую функцию и состояние продукта был как минимум один тест. Если у функциональности сложная логика работы, то делайте проверку на каждое условие алгоритма. Также обязательно ориентируйтесь на бизнес смысл функционала, на то как ПО в реальности будет использоваться (Use-Case), создавая тест на каждый сценарий.

  • Описание сценариев тестирования или тест дизайн, также имеет множество реализаций: от использования специальных программных средств типа HP ALM до описания сценариев в Excel или Word. Здесь важно четко понимать основные параметры теста, которые должны быть всегда, вне зависимости от инструмента. Скорее всего вам зададут примерно следующий вопрос: «Как выглядит идеальный тест кейс? Из чего он состоит?». Собственно основные составляющие теста следующие:
    • Версия тестируемого ПО, ссылка на требования, автор тест кейса
    • Начальные условия, шаги для подготовке к тестированию: состояние системы, настройки среды, данные
    • Заголовок тест кейса с его основной идеей
    • Шаги тестирования, включающие: действие, ожидаемый результат, фактический результат
    • Статус тест (тут также необходимы дата выставления статуса и кто его поменял)
    • Ссылки на обнаруженные ошибки
    • Действия по возвращению системы в исходное состояние

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

4. Выполнение тестирования ПО

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

  • Smoke testing и Sanity testing – предварительная проверка системы и поставки ПО. На этом этапе наша задача убедиться, что тестовая среда настроена и работает, а полученный билд содержит необходимый функционал или изменения и с ним можно продолжать работать. Т.о. мы делаем самые основные, базовые проверки.
  • Functional & non-functional testing – основной этап тестирования, который включает в себя все многообразие проверок разных типов разобранных в разделе «3 — Базовые знания по тестированию», направленных на изменения, добавленные в рамках поставки. На этом этапе мы проводим несколько циклов тестирования, как правило более 2.
  • Regression testing – проводим цикл регрессионного тестирования и проверяем, что новые фичи и изменения не сломали текущий функционал. Тут также несколько циклов. В принципе этот этап можно считать второй фазой предыдущего блока — Functional & non-functional testing.
  • Integration & end-to-end testing – на этом этапе мы проверяем как наш модуль, система или продукт будет взаимодействовать с другими модулями, системами и продуктами. Здесь мы проверяем всю цепочку действий пользователя при работе с системой. Например, пользователь делает заявку через сайт интернет магазина, далее заявка записывается в базу, далее обрабатывается и передается в систему для закупок и т.д. В этом случае мы должны настроить необходимое окружение и проверить весь жизненный цикл заявки, даже если мы доработали только одну систему в цепи.
  • Demo testing & User Acceptance Testing – этап демонстрации ПО заказчику пользователям, которые в свою очередь также могут (и в идеале должны) проводить свое тестирование продукта – UAT

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

5. Подведение итогов и подготовка результатов тестирования

На этом этапе мы делаем следующее:

  • Проводим качественный и количественный анализ обнаруженных во время тестирования ошибок и проблем
  • Формализуем эти результаты в виде метрик тестирования
  • Готовим отчет о результатах тестирования с заключением рекомендуется ли данный билд к поставке в продуктив, какие есть риски, какие меры необходимо предпринять для того, чтобы предотвратить или минимизировать сбои

В качестве результатов и метрик тестирования мы можем использовать такие показатели как (подробнее про метрики тестирования в отдельной статье):

  • Количество открытых дефектов по уровню их критичности

Например, у нас могут быть четкие критерии, что с открытыми дефектами уровня Critical мы не выходим в продуктив, а открытый дефект уровня High может быть только один и при этом должна быть дополнительная инструкция как бороться с его последствиями и план по устранению

  • Количество открытых дефектов к общему числу дефектов

Так мы показываем какая часть ошибок не исправлена и какое количество таких ошибок, чтобы принять решение о продолжении тестирования или релизе ПО

  • Количество дефектов к общему числу тестов

Эта метрика показывает среднюю эффективность одного теста

  • Число раз, которое в среднем переоткрывался дефект

Эта метрика показывает сложность иили качество кода. Если показатель высокий, значит также высоки потенциальные риски, особенно если впоследствии в продукт будут вноситься изменения

6. Поддержка во время установки в продуктив

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

7. Поддержка во время сопровождения продукта

  • Анализ и воспроизведение ошибок, найденных на продуктивной среде
  • Выполнения регрeсcионных проверок после исправления ошибок

Список требований к тестировщику ПО

  • Требования к тестировщику ч.1: ожидания и вопросы на собеседовании

  • Требования к тестировщику ч.2: процессы и этапы разработки ПО

  • Требования к тестировщику ч.3: термины и определения

  • Требования к тестировщику ч.4: этапы тестирования ПО

  • Требования к тестировщику ч.5: среды тестирования

  • Требования к тестировщику ч.6: инструменты тестирования ПО

  • Требования к тестировщику ч.7: разработка тестов

  • Требования к тестировщику ч.8: дефекты и ошибки ПО

  • Требования к тестировщику ч.9: оценка времени на тестирование

  • Требования к тестировщику ч.10: мотивация кандидата


Подготовка и прохождение собеседования

Требования к тестировщику ПО

29 января 2017

О проекте

  • Проведение тренингов и вебинаров: QA, Time management, People management, Agile
  • Консалтинг в области организации рабочих процессов в ИТ
  • Проведение и подготовка к собеседованиям

Информация об авторе проекта

Последние новости

Контакты

Группа вконтакте

Понравилась статья? Поделить с друзьями:
  • Нитрокор спрей инструкция по применению цена
  • Синекод сироп для взрослых инструкция по применению
  • Как сделать компенсацию за детский сад через госуслуги пошаговая инструкция
  • Лимонтар от похмелья инструкция по применению цена
  • Вкм 1000 руководство по эксплуатации