Дизайн тестов

5 участников

О чём курс

О чём курс

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

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

Что внутри

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

  • Анализ границ и разбиение данных на подобласти: развитие профессионального чутья, выявление скрытых границ и аналитический поиск дефектов;
  • Комбинаторные методы: особенности комбинирования данных, математические основы (комбинаторика и матстатистика) и использование инструментов автоматизации рутинных вычислений;
  • Тестирование последовательностей операций: подходы к моделированию на базе вариантов использования, диаграмм взаимодействия, автоматных моделей и генерации случайных последовательностей;
  • Оценка полноты проверок: определение критериев завершения тестирования и расчет такого показателя, как тестовое покрытие (требований, кода, моделей поведения и данных);
  • Модель Heuristic Test Strategy Model Джеймса Баха: изучение структуры продукта по мнемонике SFDPOT (структура, функции, данные, платформа, операции, время);
  • Обобщенные техники тест-дизайна (FDFS CURS): классификация из восьми направлений и способы их комбинирования для синтеза новых проверок.

Чему учит курс

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

Программа обучения

Часть 1: практика применения техник тест-дизайна

  1. Анализ границ и разбиение данных на подобласти. Это -- основа основ, те самые 20% усилий, которые обеспечивают 80% результата. И вместе с тем, эта по сути самая простая из техник является наиболее сложной с точки зрения практики её применения. Потому что, во-первых, эта техника невероятно многослойная -- если вы нашли какие-то границы, это не значит, что других нет, и дополнительный анализ иногда оказывается очень плодотворным. А во-вторых потому, что эта техника требует больше всего творчества, интуиции, иногда даже везения. То есть -- больше всего практики, потому что только таким путём можно выработать в себе чутьё границ.
  2. Комбинаторные методы. В отличие от анализа границ, техники комбинирования данных не требуют особого творчества, здесь нужна кропотливая работа и полезно обладать некоторыми познаниями в области математики -- комбинаторики и математической статистики. Но, разумеется, если у вас нет высшего математического образования, или вы просто забыли то, что когда-то изучали -- это не повод бросать тестирование. Всё необходимое я расскажу, а большую часть чёрной работы будут выполнять за вас инструменты.
  3. Тестирование последовательностей операций. Эта область тестирования в настоящее время исследована гораздо меньше, чем две вышеупомянутые, а применяемые техники сложны в использовании и слабо поддержаны инструментами. Тем не менее, на тренинге мы рассмотрим несколько подходов различной степени сложности к построению последовательностей -- на основе вариантов использования, на основе диаграмм взаимодействия, но основе автоматных моделей, и конечно же генерацию случайных последовательностей.
  4. Тестовое покрытие: как понять, что тестов достаточно. Тестировщику важно не только уметь придумывать много тестов, но и вовремя остановиться. Это очень непростое решение, учитывая уже упомянутый факт, что сколько ни тестируй, это не гарантирует обнаружения всех дефектов. Тем не менее, в какой-то момент мы должны сказать, в первую очередь себе, что тестирование выполнено "полностью". Для этого требуется некоторый критерий "полноты". И в качестве такого критерия обычно используется покрытие чего-нибудь -- требований, программного кода, модели поведения, модели данных и т.д. Мы рассмотрим различные покрытия и проследим их связь с техниками проектирования тестов.

Часть 2: понимание принципов тест-дизайна

Вторая часть основана на внимательном изучении двух наборов эвристик, описанных в документе "Heuristic Test Strategy Model", созданном Джеймсом Бахом.

  1. Product Elements: SFDPOT. При рассмотрении программного продукта можно выделить различные аспекты:
  • Structure: физическое устройство продукта, из чего он состоит;
  • Functions: логическое устройство продукта, что он может делать;
  • Data: какими данными может оперировать продукт;
  • Platform: как продукт взаимодействует с окружением;
  • Operations: как продукт используется;
  • Time: всё, связанное со временем. Если тестировщик концентрирует внимание только на некоторых аспектах, упуская из внимания остальные, он рискует пропустить серьёзные дефекты. И наоборот, ориентируясь на различные аспекты, тестировщик может создать более разнообразные тесты, что позволит выявить больше разных дефектов. Мы увидим, как применение одних и тех же техник даёт новые результаты, если применять их к различным аспектам.
  1. General Test Techniques: FDFS CURS. Последнее занятие будет посвящено обзору различных приёмов проектирования тестов, в том числе тех, которые ранее в явном виде не встречались в ходе тренинга. Мы рассмотрим классификацию техник тест-дизайна, выделив восемь "обобщенных техник":
  • Functions testing
  • Domain testing
  • Flow testing
  • Scenario testing
  • Claims testing
  • User testing
  • Risk testing
  • Stress testing Для каждой из обобщенных техник будут приведены примеры, а также показано, как можно конструировать новые тесты путём комбинирования обобщенных техник друг с другом.
Складчина создана 27 августа 2016 г.

Теги курса

Профессии
1 628 ₽ 6 500 ₽