Декомпозируй это!

Привет, народ, сегодня поговорим про декомпозицию. 
Что такое декомпозиция? 

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

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

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

Применительно к тестированию продуктов декомпозицию можно рассматривать по нескольким принципам.

Функциональная декомпозиция — разбиение продукта на выполняемые им функции.

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

Обратите внимание на рисунок: там показано, как для функции “Навигация” проведена более глубокая декомпозиция.

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

Декомпозиция графического пользовательского интерфейса (GUI)  – опираясь на данный принцип, декомпозиция проводится по тем элементам, что визуально доступны для пользователя программы.


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

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

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

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

Принцип SMART в декомпозиции

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

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

Measurable – измеримый. Нам нужны задачи, которые могут быть измерены. Количественно и / или качественно.

Attainable – достижимый. В данном случае определение «достижимый» мы бы переименовали в «доступный» (доступный для выполнения сотрудником с определенным уровнем подготовки и квалификации). Грамотный руководитель никогда не даст новичку сверхсложную задачу, так как понимает, что новичок с ней просто не справится, а время, затраченное на попытки решения, уже не вернуть. Учет личностных особенностей и качеств сотрудников команды тестирования на проекте позволит очень четко (а главное – равномерно и посильно) распределить нагрузку, дать новичкам несложные задачи, а «звездочкам» и профи – задачи со сложной логикой в соответствии с их силами и навыками.

Relevant – актуальный, значимый. Действительно ли выполнение задачи так важно для нас? Является ли данная задача необходимой именно сейчас? Что мы получим, если решим эту задачу? А что будет, если не решим?

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

Кроме того, оценить прогресс и понять, “что уже протестировано, а что еще — нет” также помогает декомпозиция, обратите внимание на приведенную таблицу.

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

А теперь хотим задать вопрос в студию: как вы считаете, техника “эквивалентное разделение” в тест-дизайне — это декомпозиция?

P.S.: Примеры по декомпозиции продукта «Браузер» уважительно подсмотрены у Натальи Савастюк и размещены в статье за их наглядность и простоту.
Ссылка: Декомпозиция в тестировании и при анализе приложения

Метки
#Тестирование ПО (2)Android (1)Cache (1)Cookie (1)courses (1)HR (1)iOS (2)java (1)Jedi Point (5)kaizen (2)pairwise (1)QA (14)QualityLab (1)REST API (1)selenium (1)SOAP UI (1)softskills (1)softwaretesting (1)SQA Days-25 (1)sql (5)TestSuites (1)usability (2)web (1)БАГИ (1)Исследовательское тестирование (2)Истории поинт (8)Команда разработки (1)Курс тестирования для начинающих (1)Кэш (1)Мнемоники (1)Мнемоники в тестировании (1)Нина Агеева (4)ПОИНТ (36)ПРомо-вебинар (1)Роман Буданов (3)Скриншот (3)Таблица решений (1)Тестирование (13)Тестирование ПО (2)Тест менеджмент (1)Тренер (11)Туры (1)автоматизация (2)алгоритмы (1)баг (1)безопасность (1)введение в тестирование (1)декомпозиция (1)домашки (1)займемсяпоинтом (1)игры (1)идеальный мир (1)интернет (1)истории выпускников (8)как надо тестировать (2)комбинаторика (1)конференция (1)котик (1)курс для начинающих тестировщиков онлайн (1)лайфхак (1)мобилки (3)мобильное тестирование (4)настройка мозгов (1)начинающий тестировщик (6)негативное тестирование (2)обучение (1)обучение тестированию (3)организация тестирования (1)персонажи (1)планирование (1)постановка мозгов (2)работа над ошибками (1)рабочий процесс (1)радиоСаня (1)режим разработчика (3)резюме (1)скринкаст (1)сопроводительное письмо (1)с чего начать (1)тайм-менеджмент (1)тестировани (1)тестирование usability (2)тестирование безопасности (1)тестирование веб (2)тестирование игр (1)тестирование мобильных приложений (1)тестировщик (5)улучшайзинг (1)ученик (2)фреймворки (1)чит лист (1)что должен делать тестировщик (1)ятренерпоинт (1)
С 23.09 по 21.11, ОНЛАЙН Зарегистрироваться