Декомпозиция онлайн — бесплатный сервис по расчету воронки бизнеса онлайн
Количество показов ваших объявлений (в Я.Директ или G.Adwords, к примеру)
Сколько процентов из всех, кто увидит объявление, кликнет на него. (для рекламы в Я.Директ и G.Adwords в среднем- от 1 до 10%, для таргетинга в соц.сетях в среднем от 0,1 до 1,5%
Кол-во кликов (переходов) из вашей рекламной кампании за период. Если вы выбрали период показов — месяц, то и число кликов соответственно за месяц будет отображаться.
Сколько процентов из всех зашедших на сайт оставит заявку или позвонит или купит (сделает полезное действие для вас)
Кол-во заявок которые вы получите за период
Сколько процентов из всех заявок за период станут в итоге вашими клиентами
Клиенты
Как посчитать средний чек, если у вас несколько товаров по разным ценам? Возьмите всю выручку за день/неделю/месяц и поделите на количество продаж за этот же период.
Рентабельность продаж — отношение операционной прибыли к выручке. Считается по формуле R = (операц. прибыль / выручку)*100%. Как посчитать здесь операционную прибыль? Вычтите из выручки все расходы, кроме расходов на рекламу (они учитываются позже в формуле)
Ожидаемая чистая прибыль за период. Здесь уже учтены все расходы, включая расходы на рекламу
Показы объявлений
Конверсия1 (сайта)
(в продажу)
Рентабельность
(без рекламы)
Чистая
прибыль
Сколько вам стоит получить одну заявку с сайта, учитывая цену за клик и конверсию сайта.
Сколько вам стоит 1 клиент, учитывая цену за клик, конверсию 1 и 2
ROI — коэффициент, показывающий окупаемость инвестиций. Здесь считается так: ROI = ((Средний чек*Кол-во клиентов*Рентабельность(без рекламы)- Расходы на рекламу)/ Расходы на рекламу) * 100%
Делайте прогнозы, смотрите как различные показатели
влияют на результат ваших проектов
Нажми на лайк, если считаешь
что сервис полезен
Добавить еще 4 строчки
-
1
Узнать, сколько нужно сделать кликов (получить лидов), если известна чистая прибыль, которую хотим получить.
-
Введите значение CTR, цену за клик, % конверсии первой и второй, средний чек, рентабельность и в конце чистую прибыль которую нужно получить.
-
2
Узнать, какую прибыль получим, если известно число показов объявлений.
-
Введите число показов, CTR компании, цену за клик, показатели конверсий, а также средний чек и рентабельность.
-
3
Посчитать ROI (окупаемость вложений в рекламу), среднюю цену 1 лида и 1 клиента при заданных значениях всех конверсий.
-
Эти метрики рассчитываются автоматически при решении первой или второй задачи. Главное, не забудьте ввести цену за клик.
Декомпозиция онлайн — бесплатный сервис по расчету воронки бизнеса онлайн
Количество E-mail адресов в базе по которым будете делать рассылку
Сколько процентов из всех получивших рассылку откроет и прочтет письмо.
Кол-во прочитанных писем
Сколько процентов из всех прочитавших письмо ответит или позвонит или купит (сделает полезное действие для вас)
Кол-во заявок которые вы получите из рассылки
Сколько процентов из всех заявок за период станут в итоге вашими клиентами
Клиенты
Как посчитать средний чек, если у вас несколько товаров по разным ценам? Возьмите всю выручку за день/неделю/месяц и поделите на количество продаж за этот же период.
Рентабельность продаж — отношение операционной прибыли к выручке. Считается по формуле R = (операц. прибыль/ выручку)*100%. Как посчитать здесь операционную прибыль? Вычтите из выручки все расходы, кроме расходов на рекламу (они учитываются позже в формуле)
Ожидаемая чистая прибыль за период. Здесь уже учтены все расходы, включая расходы на рекламу
База (кол-во Email)
Процент прочтения
Писем прочитано
Конверсия1 (письма)
Конверсия2
(в продажу)
Рентабельность
(без рекламы)
Чистая
прибыль
Сколько вам стоит получить одну заявку с рассылки, учитывая цену за отправку одного письмо и конверсию письма.
ROI — коэффициент, показывающий окупаемость инвестиций. Здесь считается так: ROI = (Средний чек*Кол-во клиентов*Рентабельность(без рекламы)/ Расходы на рекламу) * 100%
Делайте прогнозы, смотрите как различные показатели
влияют на результат ваших проектов
Нажми на лайк, если считаешь
что сервис полезен
Добавить еще 4 строчки
-
1
Узнать, сколько нужно иметь E-mail адресов в базе, если известна чистая прибыль, которую хотим получить.
-
Введите значение процента прочтения писем, конверсии первой и второй, средний чек, рентабельность и в конце чистую прибыль которую нужно получить.
-
2
Узнать, какую прибыль получим, если известно число показов объявлений.
-
Введите число показов, CTR компании, показатели конверсий, а также средний чек и рентабельность.
-
3
Посчитать ROI (окупаемость вложений в рекламу), среднюю цену 1 лида и 1 клиента при заданных значениях всех конверсий.
-
Введите свою цену за клик, после решения первой или второй задачи.
xn--5-gtbdifalqrbk1gxf.xn--p1ai
Декомпозиция онлайн — бесплатный сервис по расчету воронки бизнеса онлайн
Количество всех звонков, которые вы делаете за период
В скольки процентах случаев дозваниваетесь и говорите с ЛПР (лицо принимающее решение)
Кол-во разговоров с ЛПР (лицо принимающее решение)
Сколько процентов из всех разговоров с ЛПР (лицо принимающее решение) заканчиваются следующим шагом (назначенной встречей, например)
Кол-во лидов (потенциальных клиентов) или назначенных встреч, которые вы получите за период
Сколько процентов из всех заявок за период станут в итоге вашими клиентами
Клиенты
Как посчитать средний чек, если у вас несколько товаров по разным ценам? Возьмите всю выручку за день/неделю/месяц и поделите на количество продаж за этот же период.
Рентабельность продаж — отношение операционной прибыли к выручке. Считается по формуле R = (операц. прибыль/ выручку)*100%. Как посчитать здесь операционную прибыль? Вычтите из выручки все расходы, кроме расходов на рекламу (они учитываются позже в формуле)
Ожидаемая чистая прибыль за период. Здесь уже учтены все расходы, включая расходы на рекламу
% дозвонов до ЛПР
Разговоры с ЛПР
Конверсия1 (скрипта)
Лиды
(встречи)
Конверсия2
(в продажу)
Рентабельность
(без рекламы)
Чистая
прибыль
Сколько вам стоит 1 клиент, учитывая расходы на звонки, конверсию 1 и 2
ROI — коэффициент, показывающий окупаемость инвестиций. Здесь считается так: ROI = (Средний чек*Кол-во клиентов*Рентабельность(без рекламы)/ Расходы на рекламу) * 100%
Делайте прогнозы, смотрите как различные показатели
влияют на результат ваших проектов
Нажми на лайк, если считаешь
что сервис полезен
Добавить еще 4 строчки
-
1
Узнать, сколько нужно сделать звонков (назначить встреч), если известна чистая прибыль, которую хотим получить.
-
Введите значение процента дозвонов до ЛПР, конверсии первой и второй, средний чек, рентабельность и в конце чистую прибыль которую нужно получить.
-
2
Узнать, какую прибыль получим, если известно число звонков, которые можем делать.
-
Введите число звонков, процент дозвонов до ЛПР, показатели конверсий 1-й и 2-й, а также средний чек и рентабельность.
-
3
Посчитать ROI (окупаемость вложений в рекламу), среднюю цену 1 лида (назначенной встречи) и 1 клиента при заданных значениях всех конверсий.
-
Введите свою цену за звонок, после решения первой или второй задачи.
xn--5-gtbdifalqrbk1gxf.xn--p1ai
Декомпозиция онлайн — ADCONSULT Online
Декомпозиция онлайн
Делайте прогнозы, смотрите как различные показатели влияют на результат ваших проектов
Количество показов ваших объявлений (в Я.Директ или G.Adwords, к примеру)
CTRСколько процентов из всех, кто увидит объявление, кликнет на него. (для рекламы в Я.Директ и G.Adwords в среднем- от 1 до 10%, для таргетинга в соц.сетях в среднем от 0,1 до 1,5%
КликиКол-во кликов (переходов) из вашей рекламной кампании за период. Если вы выбрали период показов — месяц, то и число кликов соответственно за месяц будет отображаться.
Конверсия1 (сайта)Сколько процентов из всех зашедших на сайт оставит заявку или позвонит или купит (сделает полезное действие для вас)
Лиды (заявки)Кол-во заявок которые вы получите за период
Конверсия2 (в продажу)Сколько процентов из всех заявок за период станут в итоге вашими клиентами
КлиентыКлиенты
Средний чекКак посчитать средний чек, если у вас несколько товаров по разным ценам? Возьмите всю выручку за день/неделю/месяц и поделите на количество продаж за этот же период.
Рентабельность (без рекламы)Рентабельность продаж — отношение операционной прибыли к выручке. Считается по формуле R = (операц. прибыль/ выручку)*100%. Как посчитать здесь операционную прибыль? Вычтите из выручки все расходы, кроме расходов на рекламу (они учитываются позже в формуле)
Чистая прибыльОжидаемая чистая прибыль за период. Здесь уже учтены все расходы, включая расходы на рекламу
Цена за звонок Расходы на звонкиadconsult.online
Настройки декомпозиции — Справка K☆50
Декомпозиция параметров из меток нужна для сопоставления данных из рекламных и аналитических систем, если метки в рекламных кампаниях отличаются от стандартных в переметчике К50. Она позволяет определить, в каком именно месте ссылки содержится обязательный динамический параметр.
Например, параметр {phrase_id} содержится в метке utm_content, как и при стандартной переметке через переметчик К50. Однако, у клиента данный параметр прописан как pid:{phrase_id}, а не по стандарту К50. С помощью регулярных выражений можно настроить сопоставление данных таким образом, чтобы К50 «искал» id фразы в контейнере utm_content после букв pid:
Для Яндекс.Директ обязательные динамические параметры:
{phrase_id}, {retargeting_id}, {campaign_id}, {ad_id} или {banner_id}, для сопоставления вкладки площадки также нужны {source_type} и {source}
Если в кампании не произведена разметка динамических параметров {phrase_id}, {retargeting_id} данные за прошлые периоды сопоставить не получится.
В случае, если в кампаниях нет динамических параметров, рекомендуем воспользоваться переметчиком К50.
Для Google Adwords обязательные динамические параметры:
{targetid} {campaignid} {adgroupid}. Если в AdWords используется автопометка, декомпозицию заполнять не нужно.
Для Facebook обязательные параметры:
ID кампании, ID группы, ID объявления. Т.к. динамических параметров в Facebook не предусмотрено, то данные utm параметры нужно заполнять вручную.
Исторические данные
Обратите внимание
Настроить декомпозицию необходимо до подключения аналитических систем, чтобы данные сразу склеивались правильно из систем аналитики и из рекламных систем.
Настройки декомпозиции по разному работают с новыми данными (скачанными после настройки) и старыми данными (скачанными до настройки):
- Новые данные. К ним настройки декомпозиция применяются.
- Старые данные. К ним настройки декомпозиции не применяются. Данные в таблице Статистики останутся в соответствии со старыми настройками декомпозиции (или в соответствии с их отсутствием).
Если настройки были заданы неправильно и их необходимо поменять или применить к ранее скачанным данным, обратитесь в службу поддержки.
Обратите внимание
При копировании клиента, настройки декомпозиции не копируются, а создаются по умолчанию, как и при создании нового клиента.
Настройка декомпозиции
Настройки декомпозиции находятся в разделе Настройки (главное горизонтальное меню) —> Настройки декомпозиции
Добавление декомпозиции
По умолчанию у каждого клиента уже заведены настройки для декомпозиции систем Яндекс.Директ, Google AdWords и Facebook. Вы можете отредактировать настройку по умолчанию или создать новую настройку декомпозиции нажав Добавить.
Можно добавлять несколько вариантов настроек для одного типа подключения (одной рекламной системы). Применяться они будут последовательно, в соответствии с номером Порядка проверки.
1
Укажите название настройки декомпозиции для ее дальнейшей идентификации.
2
Определяют, к url с какими значениями параметров следует применить данную настройку декомпозиции.
Декомпозиция может:
- содержать один фильтр
- содержать несколько фильтров (несколько фильтров могут быть соединены операторами «И» или «ИЛИ»). Фильтры могут быть объединены в групппы. Для добавления нового фильтра или группы фильтров нужно нажать на одноименные кнопки: И ИЛИ
Возможные параметры для проверки:
— utm_source
— utm_medium
— utm_campaign
— utm_content
— utm_term
— landing
3
Выберите тип системы, для которой будет действовать данная настройка декомпозиции.
В зависимости от выбранной системы будет меняться список доступных параметров.
4
В данном окне задаются правила, по которым система в дальнейшем будет работать для сопоставления данных.
В поле Шаблон поиска параметра задается регулярное выражение для поиска параметра в метке. Подробнее про работу с регулярными выражениями читайте в статье
В полях есть валидация, если сохранить выражение с ошибкой, система выдаст предупреждение «Недопустимое регулярное выражение». Если сохранить настройку с такой ошибкой, поле будет заполнено последними корректными настройками.
Обратите внимание
При написании регулярного выражения, обязательно использование / в начале и конце выражения.
Сохраните настройки.
Список настроек декомпозиции
На странице представленны все настройки декомпозиции для данного клиента.
1
Вы можете перемещать конкретную настройку в общем списке настроек. Это будет влиять на порядок проверки.
2
Для одного типа подключения может быть задано несколько вариантов настроек. Применяться они будут последовательно, в соответствии с порядковым номером в данном разделе.
3
Если настройка неактивна, декомпозиция не будет применена.
4
Значение из поля Название настройки, заполняемое на этапе создания.
5
Рекламная система, к которой будет применена настройка декомпозиции.
6
Список фильтров в рамках настройки.
7
— редактирование настройки
— копирование настройки
— удаление настройки
Регулярные выражения
При декомпозиции параметров используются регулярные выражения.
Регулярные выражения представляют собой инструмент для поиска строк, проверки их на соответствие какому-либо шаблону и другой подобной работы. Строго говоря, регулярные выражения — это специальный язык для описания шаблонов строк.
С помощью регулярных выражений мы сопоставляем динамические значения, указанные в метке, с параметрами: Id Группы объявлений, Id Кампании и т.д. Это необходимо для сопоставления данных, которые мы получаем из рекламных систем, с данными из систем аналитики (Метрики, Analytics и т.д).
Частоиспользуемые выражения и их обозначения
Частоиспользуемые выражения | Обозначения |
---|---|
[abc] | Один из символов a, b, c |
[^abc] | Любой символ кроме a, b, c |
[a-z] | Любой символ из диапазона |
[a-zА-Я] | Любой символ из диапазонов |
^ | Начало строки |
$ | Конец строки |
\A | Начало текста |
\z | Конец текста |
. | Любой символ |
\d | Любая цифра |
\D | Не цифра |
\w | Буква (буквы, цифры, подчеркивание) |
\W | Не буква (специальные символы) |
\b | Граница слова (начало или конец) |
(aIb) | a или b (в скобках через вертикальную черту) |
a? | Одна a или пусто |
a* | Ноль и более раз a |
a+ | Один и более раз a |
a{3} | 3 раза подряд a |
a{3,} | 3 и более раз a |
a{3,5} | От 3 до 5 раз a |
Круглые скобки ( ) используются для выделения значения, которое ищется в метке.
Большинство символов в регулярном выражении представляют сами себя, за исключением специальных символов [ ] \ / ^ $ . | ? * + ( ) { }, которые могут быть экранированы символом \ (обратная косая черта) для представления самих себя в качестве символов текста.
Наиболее часто для поиска значений в {phrase_id}, {retargeting_id}, {campaign_id}, {ad_id} и {banner_id} используется выражение \d+.
Пример настройки декомпозиции
Предположим, utm метка для Яндекс.Директ выглядит следующим образом:
?utm_source=yandex&utm_medium=cpc&utm_campaign=search|{campaign_id}&utm_content=phrase_id|{phrase_id}|r_id|{retargeting_id}|b_id|{banner_id}|gid|{gbid}|aid|{ad_id}&utm_term={keyword}
Далее нам нужно заполнить все обязательные поля, о которых говорилось выше:
— Id Группы объявлений
— Id Объявлений
— Id Кампаний
— Id Ключевого слова
— Id Списка ремаркетинга
Сперва мы выбираем контейнер, в котором находится необходимое значение. В примере {campaign_id} находится в контейнере utm_campaign, а остальные параметры в utm_content. Мы выбираем соответствующие значения в Расположение параметра
Далее необходимо задать формулу, с помощью которой система будет сопоставлять нужные значения. Формулы можно проверять при помощи сайта
Разберем как задаются формулы на примере {campaign_id} и {ad_id}.
Вводим метку в поле Тестовые строки
{campaign_id}
Необходимо из контейнера utm_campaign выделить значение id кампании (123456). Нам известно, что это единственное числовое значение в этом контейнере. Для поиска значения состоящего из нескольких цифр, используйте выражение \d+. Так как нам необходимо выделить именно это значение, возьмите его в круглые скобки ( ).
Регулярное выражение будет выглядеть следующем образом: (\d+)
Это регулярное выражение мы вносим в соответствующее поле Шаблон поиска параметра:
{ad_id}
Необходимо из контейнера utm_content=phrase_id|2345623|r_id|768594|b_id|234567|g_id|1334455|a_id|66778899 выделить значение 66778899. Мы знаем, что необходимое значение состоит из нескольких цифр, поэтому указывается \d+, а так как нам необходимо выделить именно это значение, его нужно взять в ( ). Значение стоит после a_id|, символ | нужно экранировать символом \
Соответственно, выражение будет выглядеть так /a_id|(\d+)/.
Данное выражение можно проверить в правом поле Результат, оно сработало успешно.
Это регулярное выражение внесите в соответствующее поле Шаблон поиска параметров:
Несколько стандартов меток в аккаунте
В рекламном аккаунте может присутствовать несколько стандартов метки. Так может случиться, если на поиск и РСЯ используются разные метки или кампании были перемечены в разные периоды разными метками.
Чтобы получить статистику по всем меткам можно задать несколько правил для декомпозиции. Важно, чтобы в правилах были условия которые не пересекаются. Для этого в метках нужно найти какие-то особенности, например, в одной метки используется yandex в другой direct.
Тогда для одного правила задается условие:
А для второго условие:
Также можно использовать другие контейнеры.
Например, в одном случае в метке есть phrase_id|, а во втором нет.
Для одного правила декомпозиции добавьте условие в правило, что utm_content содержит это условие, а для второго что не содержит.
Кроме этого, в условиях можно использовать регулярные выражение.
В примере ниже, правило декомпозиции будет использоваться только для меток, где utm_content начинается с phrase_id|.
help.k50.ru
Достижение цели: декомпозиция по принципам SMART
Доброго времени суток, читатели блога Твое Решение!
Поздравляю вас с новым 2017 годом!
Январь — лучшее время подвести итоги прошедшего года и определиться с целями на новый год. А вы уже начали работать над своими целями? Очень часто первую половину года мы думаем что еще успеем определиться с целями и их реализовать, а вторую половину года — понимаем, что опоздали.
А можно прожить год совсем иначе. Для этого важно разобраться как правильно поставить цели и создать условия для их достижения.
Сегодня статья про то, с чего необходимо начинать свой путь к достижению любой жизненной цели, т.е про декомпозицию цели.
Декомпозиция цели — это разбивка большой цели на решение серии маленьких, выполнимых и взаимосвязанных задач.
В тайм-менеджменте большие задачи и цели часто называют «слонами», а процесс ее декомпозиции — «съесть слона по кусочкам» или «нарезка слона».
Наиболее удобным инструментом для проведения декомпозиции цели являются интеллект-карты. Еще их называют ментальные карты или mind-maps. Я пользуюсь бесплатной программой XMind. Хотя в принципе для проведения декомпозиции достаточно простого листа бумаги и ручки.
Итак, записываем нашу цель на листе бумаги или в программе и задаем себе два простых вопроса:
- Что для этого необходимо сделать?
- Могу ли я это сделать прямо сейчас?
Например, ваша цель на год — написать дипломную работу. Задаем вопрос: что мне необходимо для этого сделать?
Например, выбрать тему диплома, написать план и найти источники информации для работы.
Задаем себе второй вопрос: могу я выполнить это сейчас? Если да, то разбивка данной ветки окончена, если -нет, то снова задаем себе первый вопрос.
Дробим наши цели до тех пор, пока не получим конкретные выполнимые задачи — разовые или регулярные, выполнение которых займет от 15 минут до 1,5-2 часов.
В итоге может получиться следующий вариант декомпозиции цели
Главная задача декомпозиции — получить информацию о необходимом объеме действий и рассчитать ресурсы.
Качественная декомпозиция цели возможна только в случае ее конкретности и измеримости, другими словами, если цель соответствует принципам SMART, т.е
SMART:
S — конкретная, т.е постановка цели должна быть конкретна и ясна,
M — измеримая, т.е результат выполнения цели должен быть измеримым,
A — ориентированная на конкретные действия,
R — реалистичная, уместная, полезная и ориентированная на конкретные результаты,
T — на определенный период, своевременная, отслеживаемая. Срок выполнения цели должен быть определен конкретной датой или периодом.
На практике часто бывает сложно оформить нашу мечту, желание или намерение в лаконичную, конкретную и измеримую форму, т.е соответствующую SMART. В таком случае для работы с личными целями можно совместить принципы SMART и декомпозицию, раскладывая свое первоначальное желание или мечту по алгоритму:
- формулируем намерение (S)
- определяем критерии или показатели, по которым в будущем можно будет оценить достижение цели (M)
- формулируем достижения, т.е конкретные параметры критериев или показателей (A)
- определяем перечень задач (дело, разовое или регулярное, выполнение которого займет от 15 минут до 1,5-2 ч) для достижения конкретных параметров (R)
- определяем временной ресурс (T)
- запускаем цикл контроля, выстраивая систему измерения ключевых показателей.
Наглядно это выглядит следующим образом:
Например, у вас появилось намерение улучшить свое здоровье. Оформить сразу свое желание в SMART цель достаточно затруднительно. Воспользуемся предложенным алгоритмом и проведем декомпозицию нашей цели по принципам SMART. Представим полученный результат в виде ментальной карты:
Увеличенный вариант изображения можно скачать здесь.
Предложенная декомпозиция цели — улучшить свое здоровье- легла в основу моего личного проекта «Затачиваем пилу», который я реализую уже не первый год.
Аналогичным образом можно работать с любой целью, получая следующие преимущества:
Четкий пошаговый план реализации цели от квартального плана до чек-листа на день
Теперь у вас не просто цель, а конкретный маршрут движения с перечнем всех задач, которые необходимо выполнить. Теперь вы четко понимаете, что необходимо сделать сегодня, на этой неделе, месяце или квартале.
Организация эффективного контроля достижения цели
Декомпозиция с использованием принципов SMART выстраивает взаимосвязь показателей целей и выполнения задач, задает критерии или показатели достижения цели
Расчет времени и прочих ресурсов, необходимых для достижения цели
Четко определяет какой объем выполненных задач и какие конкретные показатели должны быть достигнуты к конкретному времени
Оценка реалистичности цели и ее корректировка
Предложенный метод заставляет нас на этапе планирования трезво оценить объем задач и время, необходимое для его выполнения или показатели цели и срок их достижения. Абсурдно планировать выучить язык за день, но за год — вполне выполнимая задача. Невозможно похудеть на 10 кг за день, но вполне достижимо за квартал или год.
Часто мы переоцениваем то, что можем сделать за день и недооцениваем то, что можем сделать за год
Надеюсь, предложенный метод декомпозиции цели по принципам SMART поможет вам в достижении своих целей. Рекомендую также для постановки и достижения своих целей воспользоваться сервисом Smart Progress.
Вспомните, какие обещания вы дали себе в Новый Год под бой курантов?
Самое время начать активные действия по их реализации. Превратите достижение цели в увлекательный процесс!
Начни прямо сейчас! И это будет ТВОЕ РЕШЕНИЕ!
Понравилась статья? Буду признательна, если поделитесь этой статьей в социальных сетях!
Подпишитесь на обновления блога, чтобы не упускать полезные знания!
Читайте еще:
tvoe-reshenie.com
Декомпозиция в тестировании и при анализе приложения
Декомпозиция — научный метод, использующий структуру задачи и позволяющий заменить решение одной большой задачи решением серии меньших задач, пусть и взаимосвязанных, но более простых. (wikipedia)
Декомпозиция, как процесс расчленения, позволяет рассматривать любую исследуемую систему как сложную, состоящую из отдельных взаимосвязанных подсистем, которые, в свою очередь, также могут быть расчленены на части.
Например, стандартный персональный компьютер начала 21в. состоит из системного блока, монитора, клавиатуры, мышки и проводов, которые соединяют эту систему. Системный блок – это материнская плата, процессор, кулер, винчестер и т.д. Мышка – это датчик перемещения, управляющие элементы, интерфейс подключения к компьютеру. Управляющие элементы мышки – это правая и левая кнопки, колёсико, дополнительные кнопки.
Декомпозиция системы чаще всего представляется в виде иерархического дерева, вершина которого – сама система, а уровни – выделенные подсистемы.
Подобные иерархические деревья для приложений можно строить с целью:
- сбора и сохранения информации о структуре приложения. Глубина расчленения (количество уровней) будет варьироваться в зависимости от того, кто будет пользоваться этой структурой и как.
- создания чеклиста, который можно будет использовать в процессе тестирования. Для этого необходимо достичь очень глубокого расчленения.
Однако, даже если декомпозиция приложения не представляется в виде иерархического дерева, для тестировщика принцип декомпозиции обозначает то, что тестируемое приложение (отдельный его модуль или функционал) можно рассматривать как состоящий из относительно независимых друг от друга подсистем, каждую из которых тестировать гораздо проще и понятнее, чем всю систему сразу. Принцип декомпозиции необходимо и полезно использовать повсюду:
· при создании чеклистов или тест-кейсов
· при выполнении тестирования исследовательским способом
· при проведении тестирования требований
· при планировании и оценке задач по тестированию
Осмысленное применение декомпозиции в процессе тестирования помогает достигнуть как лучшего качества, так и большей уверенности в этом качестве.
Признаки декомпозиции
Для разделения одного и того же приложения на подсистемы могут использоваться разные признаки декомпозиции. В качестве задачи на декомпозицию мы будем рассматривать приложение “Браузер” (см. рис. 1). Следует учесть, что во всех примерах, которые будут приведены ниже, декомпозиция не полная. Показаны лишь некоторые из подсистем первого и второго уровней.
Рис. 1. Скриншот приложения “Браузер”
В качестве признака разделения приложения могут использоваться:
- внешний интерфейс (экран, окно, закладка и т.п. со всеми элементами интерфейса). На рис. 2 показан пример декомпозиции по этому признаку.
- компонентная структура (функциональные модули приложения и их интеграция в более сложные модули). См. пример на рис. 3.
- функции приложения и их варианты использования (см. пример на рис. 4),
- обрабатываемые приложением объекты и данные (и часто нужно анализировать не то, что видно, а то что скрыто внутри – что передается на вход, что на выходе, что храниться внутри системы),
- характеристики (параметры) объектов и данных или в целом всей системы (например, если объект – это файл, то параметры это – формат, размер, создатель, дата создания и т.д.),
- действия над объектами (если объект “файл”, то действия – удалить, переименовать, переместить, а если объект “список файлов”, то действия – сортировать, фильтровать, выделить несколько файлов)
- состояния, в которые переходит приложение или его модули,
- этапы взаимодействия пользователя с приложением (см. пример на рис. 5),
- виды пользователей,
- характеристики качества (функциональность, удобство использования, производительность и т.д.),
- и другие.
Рис. 2. Пример декомпозиции по элементам интерфейса приложения “Браузер”
Рис. 3. Пример компонентной декомпозиции приложения “Браузер”
Рис. 4. Пример функциональной декомпозиции приложения “Браузер”
Рис. 5. Пример декомпозиции по этапам взаимодействия пользователя с приложением “Браузер”
Часто декомпозиция одной и той же системы может осуществляться по нескольким признакам, порядок их выбора зависит от квалификации и предпочтений тестировщика. Декомпозиция – задача очень субъективная. И самое главное, чтобы тестировщик осознавал свой выбор принципа декомпозиции в каждый момент времени.
Принципы декомпозиции
1. Каждое разделение образует свой уровень.
Исходная система располагается на нулевом уровне. После её разделения получаются подсистемы первого уровня. Разделение этих подсистем или некоторых из них приводит к появлению подсистем второго уровня и т.д.
Тестирование системы или подсистемы обозначает тестирование всех уровней всех подсистем, на которые она разбивается.
2. Все подсистемы одного уровня, являющиеся подсистемами одной и той же системы, должны разделяться по одному признаку.[1] Другими словами, должны отвечать на один и тот же вопрос относительно своего родителя.
3. Вычленяемые подсистемы в сумме должны составлять всю систему (как пазл соединяться в одну картинку). При этом они должны взаимно исключать друг друга.
Если сложить все выделенные подсистемы вместе, то мы должны получить всю систему. Однако целостность и качество этой системы можно гарантировать только с учётом взаимодействия подсистем. Например, нет гарантии, что системный блок компьютера будет работать, если работают по отдельности материнская плата, процессор, компьютер и др. компоненты. Их нужно собрать вместе и проверить взаимодействие.
В процессе декомпозиции допускается выделять группу (подсистему) “Другие”, в которую включаются те подсистемы, для которых невозможно выделить один общий признак или подсистем получается слишком много, чтобы выделять их на верхний уровень. Но в «Других», должен всё равно применяться некий свой внутренний признак расчленения.
К неоднозначности может привести использование на одном уровне взаимно пересекающихся подсистем. Например, в сводке расходов за месяц, в большинстве случаев немного странно будут выглядеть пункты: еда, аренда помещения, канцелярия, коммунальные услуги, подогрев воды. Обычно подогрев воды относится к коммунальным услугам.Соответственно, при выделении этих пунктов на один уровень могут возникнуть вопросы формата: расходы на подогрев воды – это дополнительные расходы сверх нормы? Или это постоянные ежемесячные расходы? А не платим ли мы дважды за подогрев воды?
4. Выбирайте глубину декомпозиции в зависимости от задач, которые решаете с помощью неё и в зависимости от уровня знаний специалистов, которые будут ей пользоваться. Ищите компромисс между полнотой и простотой.
Глубина декомпозиции (количество уровней) и степень подробности описания определяются требованиями обозримости и удобства восприятия получаемой иерархической структуры, её соответствия уровням знания работающему с ней специалисту.
Для специалиста, знающего систему хорошо, декомпозиция может быть неглубокой, менее детализированной. Если же предполагается, что результат декомпозиции будет использоваться не работавшим ранее с системой специалистом, то декомпозировать следует более детально и глубоко.
Раньше рекомендовалось выделять 3-6 уровней. В настоящее время существует специальное ПО для создания интеллектуальных карт и управлять декомпозицией стало проще. Однако всё равно следует искать золотую середину, подходящую под ваши условия работы, и учитывать, что когда в структуре получается много уровней, то система становится труднообозримой, в ней сложно ориентироваться. Если же глубину делать небольшую, то вероятнее всего возрастет число находящихся на одном уровне подсистем и становится сложно связать их в единую полную систему, сложно искать взаимосвязи.
Системы нижнего уровня называются элементарными.
Если иерархическая схема используется как чеклист, то элементарные системы – это и есть идеи тестов.
Если же схема используется как структура приложения, то элементарные системы – это системы с такой степенью детализации, которую будет очевидно, как тестировать человеку, использующему эту схему в процессе тестирования.
5. Проводите критическую оценку декомпозиции каждого из построенных уровней и системы в целом.
Всё ли охвачено? Не пропущено ли? Может быть есть избыточные ветви или пересекающиеся?
Понятно ли как тестировать системы нижнего уровня? Можно ли расчленить эти системы еще больше? Если ваших знаний недостаточно для дальнейшей декомпозиции, то привлекайте других участников проекта (проектных менеджеров, программистов и т.д.)
[1] По правилам декомпозиции все подсистемы одного уровня должны обладать одним признаком и разделяться по нему но часто при тестировании ПО подобного разделения достичь очень тяжело либо требует слишком много времени, поэтому я руководствуюсь упомянутым упрощенным правилом – в рамках одного узла деление должно быть выполнено по одному признаку.
Текст статьи и иллюстрации готовила я сама, подготавливала статью с помощью анализа материалов и книг, найденных на просторах интернета и основываясь на своем личном опыте и взгляде.
www.software-testing.by