Таблица принятия решений – Таблица принятия решений — Википедия

Таблица принятия решений — Википедия

Материал из Википедии — свободной энциклопедии

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

Таблицы принятия решений, как правило, разделяются на четыре квадранта, как показано ниже.

Условия Варианты выполнения условий
Действия Необходимость действий

В простейшем случае здесь Условия — список возможных условий, Варианты выполнения условий — комбинация из выполнения и/или невыполнения условий из этого списка. Действия — список возможных действий, Необходимость действий — указание надо или не надо выполнять соответствующее действие для каждой из комбинаций условий. Например, для ситуации «неожиданно погас свет» таблица принятия решений может быть такой:

Свет в соседней комнате горит Да Нет Нет
Свет у соседей горит Да Нет
Поменять лампочку Х
Проверить пробки Х
Позвонить электрику Х Х
Позвонить диспетчеру Х

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

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

  • Rufus-decision — реализация таблиц принятия решений на языке Ruby

ru.wikipedia.org

Как использовать таблицы принятия решений в тестировании

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

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

Давайте представим обычную ситуацию возвращения домой с работы или учебы. У нас есть ключ от домофона. Мы можем либо взять его с собой, либо забыть (дома \ на работе \ где-то еще). В момент возвращения домой нас могут ждать родственники \ друзья \ собака, которая умеет открывать дверь, либо дома никого нет — все ушли гулять.

Итак, какие входные параметры мы имеем?

  • Наличие с собой ключа. Варианты: Да или Нет
  • Есть ли кто-то дома. Варианты: Да или Нет
  • На месте ли консьерж, который может открыть дверь. Варианты: Да или Нет

Какие наши возможные действия?

  • Мы открываем дверь ключом
  • Мы звоним в домофон
  • Мы звоним консьержу
  • Мы звоним соседям
  • Мы ждем (пока кто-нибудь из соседей выйдет и откроет дверь, либо наши родственники вернутся домой)

Есть еще варианты?

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

Все необходимые данные у нас есть, теперь нужно собрать все в красивую табличку. Слева в столбец перечисляем входные параметры или “условия”.

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

“Да” означает, что условие выполняется, “Нет” — не выполняется. Прочерк — неважно выполняется ли это условие (например, если у нас есть ключ, нам все равно на месте ли консьерж, мы открываем дверь сами).

Для каждого варианта выполнения нужно определить ожидаемое действие. Смотрим на вариант 1: если ключ с собой, мы открываем дверь ключом. Напротив соответствующего действия ставим символ “Х”, который показывает, что должно выполняться именно это действие.


Основой метода построения таблицы решения является таблица из четырех блоков:Если внимательно посмотреть на таблицу, можно заметить, что каждый столбец представляет собой отдельный тест-кейс! Вуаля


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

Мы знаем, что форма содержит поля логина, пароля и кнопки “Войти” и “Отмена”. 

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

Выберем “Условия”

для данных сущностей, т.е. возможные входные значения.

  • Логин: пустое значение / верное значение / неверное значение
  • Пароль: пустое значение / верное значение / неверное значение
  • Кнопки: Войти / Отмена

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

Выделим возможные действия:

  • Успешная авторизация
  • Ошибка “Неверно введены логин или пароль”
  • Ошибка “Заполните поля логин или пароль”
  • Авторизация отменена

После того, как выбрали условия и варианты действия начинается самое интересное — составить таблицу решений!

Выписываем в столбец все условия и варианты:

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

Теперь для всех 18 вариантов определим необходимость действий.

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

Вы можете детальнее расписать ввод неверного значения, например, отдельно ввод цифр, символов, непечатных символов, копипаст в поле, максимальное и минимальное значение, ограничение по длине, формат поля email и т.д.

Здесь мы рассмотрели только функцию авторизации — либо она происходит, либо нет. Отдельную таблицу можно составить для всех возможных ошибок, связанных с данными, которые вводим в поля формы авторизации.

Для удобства выполнения таких тест-кейсов рекомендую добавить еще одну строку к таблице “Статус прохождения теста” и в ходе тестирования отмечать тесты как Passes / Failed / Blocked / Not Run.

Хорошего дня читающему этот пост

blog.rocketbrain.ru

Таблица принятия решений — QA evolution

Таблица принятия решений

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

В таблицах решений представлен набор условий, одновременное выполнение которых должно привести к определённому действию.

Таблица принятия решений

Таблица принятия решений, как правило, разделяется на 4 квадранта:

Условия Варианты выполнения действий
Действия Необходимость действий

 

Условия — список возможных условий.

Варианты выполнения действий — комбинация из выполнения и/или невыполнения условий этого списка.

Действия — список возможных действий.

Необходимость действий — указание надо или не надо выполнять соответствующее действие для каждой из комбинаций условий.

 

Рассмотрим таблицу принятия решений на примере страницы регистрации нового пользователя сервиса KUKU.io

Используем понятия “корректные” и “некорректные” данные.

Чтобы регистрация прошла успешно, необходимо заполнить корректными оба поля. Если поля заполняются некорректными данными, то система должна выдать ошибку: “Введены невалидные данные”.

 

Условие Значения 1 Значения 2 Значения 3 Значения 4
Ввод корректных данных в поле E-mail + +
Ввод корректных данных в поле Password + +
Ввод некорректных данных в поле E-mail + +
Ввод некорректных данных в поле Password + +
Действия
Регистрация прошла успешно +
Выдается ошибка: “Введены невалидные данные” + + +

Значения 2, 3, 4 приводят к одному и тому же результату с разными входными значениями.

О других техниках читайте здесь:

1) Техника анализа граничных значений

2) Техника анализа классов эквивалентности

qaevolution.ru

Таблица принятия решений — Википедия

Материал из Википедии — свободной энциклопедии

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

Таблицы принятия решений, как правило, разделяются на четыре квадранта, как показано ниже.

Условия Варианты выполнения условий
Действия Необходимость действий

В простейшем случае здесь Условия — список возможных условий, Варианты выполнения условий — комбинация из выполнения и/или невыполнения условий из этого списка. Действия — список возможных действий, Необходимость действий — указание надо или не надо выполнять соответствующее действие для каждой из комбинаций условий. Например, для ситуации «неожиданно погас свет» таблица принятия решений может быть такой:

Свет в соседней комнате горит Да Нет Нет
Свет у соседей горит Да Нет
Поменять лампочку Х
Проверить пробки Х
Позвонить электрику Х Х
Позвонить диспетчеру Х

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

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

Ссылки

  • Rufus-decision — реализация таблиц принятия решений на языке Ruby

wikipedia.green

Таблица принятия решений — Карта знаний

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

    Таблицы принятия решений, как правило, разделяются на четыре квадранта, как показано ниже.

    В простейшем случае здесь Условия — список возможных условий, Варианты выполнения условий — комбинация из выполнения и/или невыполнения условий из этого списка. Действия — список возможных действий, Необходимость действий — указание надо или не надо выполнять соответствующее действие для каждой из комбинаций условий. Например, для ситуации «неожиданно погас свет» таблица принятия решений может быть такой:

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

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

Источник: Википедия

Связанные понятия

Зада́ча — проблемная ситуация с явно заданной целью, которую необходимо достичь; в более узком смысле задачей также называют саму эту цель, данную в рамках проблемной ситуации, то есть то, что требуется сделать. В первом значении задачей можно назвать, например, ситуацию, когда нужно достать предмет, находящийся очень высоко; второе значение слышно в указании: «Ваша задача — достать этот предмет». Несколько более жёсткое понимание «задачи» предполагает явными и определёнными не только цель, но и… Модель отказов (англ. fault model) представляет собой инженерную модель конструкции или оборудования, которое может работать неправильно. Исходя из модели, разработчик или пользователь могут предсказать последствия конкретных отказов. Модели отказов могут быть использованы практически во всех видах инженерной деятельности. Паксос (англ. Paxos) — семейство протоколов для решения задачи консенсуса в сети ненадёжных вычислителей. Консенсус — процесс получения согласованного результата группой участников, основная проблема — наличие помех в среде передачи данных. Данная задача используется, например, для утверждения транзакций в распределённых системах. Классификация документов — одна из задач информационного поиска, заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания документа. Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода). Очередь с приоритетом (англ. priority queue) — абстрактный тип данных в программировании, поддерживающий две обязательные операции — добавить элемент и извлечь максимум(минимум). Предполагается, что для каждого элемента можно вычислить его приоритет — действительное число или в общем случае элемент линейно упорядоченного множества. Перегрузка операторов в программировании — один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются. Алгоритм Деккера — первое известное корректное решение проблемы взаимного исключения в параллельном программировании. Эдсгер Дейкстра ссылается на голландского математика Т. Деккера как на автора данного алгоритма в своей работе о межпроцессном взаимодействии. Он позволяет двум потокам выполнения совместно использовать неразделяемый ресурс без возникновения конфликтов, используя только общую память для коммуникации. Операциональное преобразование (ОП) представляет собой технологию для поддержки целого ряда функциональных возможностей сотрудничества в передовых системах groupware. ОП было изначально придумано для поддержания согласованности и concurrency control при совместном редактировании простых текстовых документов. Два десятилетия исследований дополнили его возможности и расширили его приложения, включающие групповое undo, блокировку, разрешение конфликтов, уведомления и компрессию операций, выработку осознания… Опера́тор ветвле́ния (усло́вная инстру́кция, усло́вный опера́тор) — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

Подробнее: Ветвление (программирование)

Модель Харрисона-Руззо-Ульмана (HRU-модель) — одна из формальных моделей управления доступом субъектов (пользователей) к объектам, реализованная с помощью матрицы доступов. Названа в честь трёх его авторов: Майкла Харрисона, Уолтера Руззо и Джеффри Ульмана. Тео́рия приня́тия реше́ний — область исследования, вовлекающая понятия и методы математики, статистики, экономики, менеджмента и психологии с целью изучения закономерностей выбора людьми путей решения проблем и задач, а также способов достижения желаемого результата. В математике теория момента остановки или марковский момент времени связана с проблемой выбора времени, чтобы принять определённое действие, для того чтобы максимизировать ожидаемое вознаграждение или минимизировать ожидаемые затраты. Проблема момента остановки может быть найдена в области статистики, экономики и финансовой математики (связанные с ценообразованием на американские опционы). Самым ярким примером, относящимся к моменту остановки, является Задача о разборчивой невесте. Проблема момента…

Подробнее: Марковский момент

Операционная система реального времени (ОСРВ, англ. real-time operating system, RTOS) — тип операционной системы, основное назначение которой — предоставление необходимого и достаточного набора функций для работы систем реального времени на конкретном аппаратном оборудовании. Ошибка на единицу или ошибка неучтённой единицы (англ. off-by-one error) — логическая ошибка в алгоритме, включающая в частности дискретный вариант нарушения граничных условий. Диаграмма Варнье — Орра — особый вид блок-схемы, предназначенной для описания организации данных и процедур, разработаны Жаном-Домиником Варнье (Франция) и Кеннетом Орром (англ. Kenneth Orr). Этот метод помогает разрабатывать структуру программ путём идентификации выходных и обрабатываемых результатов с целью выявления шагов и входных комбинаций, необходимых для получения этих результатов. Простой графический метод, используемый в диаграммах Варнье — Орра, позволяет сделать очевидными как уровни… Логика Хоара (англ. Hoare logic, также Floyd—Hoare logic, или Hoare rules) — формальная система с набором логических правил, предназначенных для доказательства корректности компьютерных программ. Была предложена в 1969 году английским учёным в области информатики и математической логики Хоаром, позже развита самим Хоаром и другими исследователями. Первоначальная идея была предложена в работе Флойда, который опубликовал похожую систему в применении к блок-схемам (англ. flowchart). Обучение ассоциативным правилам или поиск ассоциативных правил — это метод обучения машин на базе правил обнаружения интересующих нас связей между переменными в большой базе данных. Метод предлагается для установления сильных правил, обнаруженных в базе данных с помощью некоторых мер интересности. Этот основанный на правилах подход генерирует также новые правила по мере анализа дополнительных данных. Конечной целью, исходя из достаточно большого набора данных, помочь машине имитировать выделение… Принцип единственной ответственности (англ. The Single Responsibility Principle, SRP) — принцип ООП, обозначающий, что каждый объект должен иметь одну ответственность и эта ответственность должна быть полностью инкапсулирована в класс. Все его поведения должны быть направлены исключительно на обеспечение этой ответственности. Целочисленное программирование является NP-трудной задачей. Специальный случай, 0-1 целочисленное линейное программирование, в которой переменные принимают значения 0 или 1, является одной из 21 NP-полных задач Карпа. Ссы́лочная це́лостность (англ. referential integrity) — необходимое качество реляционной базы данных, заключающееся в отсутствии в любом её отношении внешних ключей, ссылающихся на несуществующие кортежи. Байесовское программирование — это формальная система и методология определения вероятностных моделей и решения задач, когда не вся необходимая информация является доступной. Метод Куайна—Мак-Класки (англ. Quine–McCluskey method) — табличный метод минимизации булевых функций, предложенный Уиллардом Куайном и усовершенствованный Эдвардом Мак-Класки. Представляет собой попытку избавиться от недостатков метода Куайна. В компьютерных технологиях, программная транзакционная память (англ. software transactional memory, SТМ) представляет собой механизм управления параллелизмом, аналогичный механизму транзакций баз данных для управления доступом к совместно используемой памяти в параллельных вычислениях. Это альтернатива для синхронизации на основе блокировки. Транзакция в этом контексте является частью кода, который выполняет считывание и запись в разделяемую (совместно используемую) память. Считывание и запись логически… Продолжение (англ. continuation) представляет состояние программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки. Состояние глобальных переменных обычно не сохраняется, однако для функциональных языков это несущественно (выборочное сохранение/восстановление значений глобальных объектов в Scheme достигается отдельным механизмом dynamic-wind). Продолжения… Компромисс времени и памяти (англ. Space-time trade-off, «выбор оптимального соотношения „место-время“» (англ. space-time trade-off), или, иначе, «выбор оптимального соотношения „время-память“» (англ. time-memory trade-off)) — компромиссный подход к решению ряда задач в информатике, при котором используется обратное соотношение требуемого объёма памяти и скорости выполнения программы: время вычислений может быть увеличено за счёт уменьшения используемой памяти или, наоборот, снижено за счёт увеличения… Обучение с ошибками (англ. Learning with errors) — это концепция машинного обучения, суть которой заключается в том, что в простые вычислительные задачи (например, системы линейных уравнений) намеренно вносится ошибка, делая их решение известными методами неосуществимым за приемлемое время. Сопрограммы (англ. coroutines) — методика связи программных модулей друг с другом по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому. Тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик.

Подробнее: Сопрограмма

Цикломати́ческая сло́жность програ́ммы (англ. cyclomatic complexity of a program) — структурная (или топологическая) мера сложности компьютерной программы. Мера была разработана Томасом Дж. Маккейбом в 1976 году. Полностью гомоморфное шифрование — шифрование, позволяющее для данного шифротекста π1,…,πt любому (не только держателю ключа) получить шифротекст любой желаемой функции f(π1,…,πt), до тех пор, пока данная функция может быть эффективно вычислена. Схе́ма — графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения данных, потока, оборудования и т. д.Блок-схема — распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности. Правила выполнения регламентируются ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем…

Подробнее: Блок-схема

Задача о соседях по комнате — математическая задача кооперативных игр (теории игр и комбинаторики) нахождения устойчивого (стабильного) соответствия, при котором никакая другая пара не предпочитала бы друг друга более чем в текущем распределении. Задача отличается от задачи о супружеских парах тем, что здесь нет разбиения на два пола: любой человек может проживать с любым другим (предполагается, что в общежитии студенты живут по два человека в комнате). Поиск с возвратом, бэктрекинг (англ. backtracking) — общий метод нахождения решений задачи, в которой требуется полный перебор всех возможных вариантов в некотором множестве М. Как правило позволяет решать задачи, в которых ставятся вопросы типа: «Перечислите все возможные варианты …», «Сколько существует способов …», «Есть ли способ …», «Существует ли объект…» и т. п. Реентерабельность тесно связана с безопасностью функции в многопоточной среде (thread-safety), тем не менее, это разные понятия. Обеспечение реентерабельности является ключевым моментом при программировании многозадачных систем, в частности, операционных систем. Закон Парето (принцип Парето, принцип 80/20) — эмпирическое правило, названное в честь экономиста и социолога Вильфредо Парето, в наиболее общем виде формулируется как «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата». Может использоваться как базовая установка в анализе факторов эффективности какой-либо деятельности и оптимизации её результатов: правильно выбрав минимум самых важных действий, можно быстро получить значительную часть от планируемого полного результата… Стратегия вычисления (англ. evaluation strategy) — правила семантики языка программирования, определяющие, когда следует вычислять аргументы функции (метода, операции, отношения), и какие значения следует передавать. Например, стратегия «вызов-при-упоминании/передача-по-ссылке» (call-by-worth/pass-by-reference) диктует, что аргументы должны быть вычислены перед выполнением тела вызываемой функции, и что ей должны быть предоставлены две возможности в отношении каждого аргумента: чтение текущего значения… Выбор модели — это задача выбора статистической модели из набора моделей-кандидатов по имеющимся данным. В простейшем случае рассматривается существующий набор данных. Однако задача может вовлекать планирование экспериментов, так что сбор данных связан с задачей выбора модели. Если заданы кандидаты в модели с одинаковой силой предсказания или объяснения, наиболее простая модель скорее всего будет лучшим выбором (бритва Оккама). Сравнение с обменом (англ. compare and set, compare and swap, CAS) — атомарная инструкция, сравнивающая значение в памяти с одним из аргументов, и в случае успеха записывающая второй аргумент в память. Поддерживается в семействах процессоров x86, Itanium, Sparc и других. Четыре четверки — математическая головоломка по поиску простейшего математического выражения для каждого целого числа от 0 до некоторого максимума, используя лишь общие математические символы и четвёрки (никакие другие цифры не допускаются). Большинство версий «четырёх четверок» требует, чтобы каждое выражение содержало ровно четыре четверки, но некоторые вариации требуют, чтобы каждое выражение имело минимальное количество четверок. ДСМ-метод — метод автоматического порождения гипотез. Формализует схему правдоподобного и достоверного вывода, называемую ДСМ-рассуждением. Автома́тное программи́рование — это парадигма программирования, при использовании которой программа или её фрагмент осмысливается как модель какого-либо формального автомата. Известна также и другая «парадигма автоматного программирования, состоящая в представлении сущностей со сложным поведением в виде автоматизированных объектов управления, каждый из которых представляет собой объект управления и автомат». При этом о программе, как в автоматическом управлении, предлагается думать как о системе… Когнити́вные измере́ния — это принципы разработки синтаксиса, пользовательских интерфейсов и других особенностей языков программирования, описанные исследователями Томасом Грином и Марианом Петре. Измерения могут использоваться для оценки юзабилити существующих языков или для рекомендаций по дизайну новых. Метод Куайна — способ представления функции в ДНФ или КНФ с минимальным количеством членов и минимальным набором переменных. О́чередь — абстрактный тип данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, англ. first in, first out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется. Таблица виртуальных методов (англ. virtual method table, VMT) — координирующая таблица или vtable — механизм, используемый в языках программирования для поддержки динамического соответствия (или метода позднего связывания). Обрабо́тка исключи́тельных ситуа́ций (англ. exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма. В русском языке также применяется более короткая форма термина: «обработка исключений». Полный перебор (или метод «грубой силы», англ. brute force) — метод решения математических задач. Относится к классу методов поиска решения исчерпыванием всевозможных вариантов. Сложность полного перебора зависит от количества всех возможных решений задачи. Если пространство решений очень велико, то полный перебор может не дать результатов в течение нескольких лет или даже столетий.

kartaslov.ru

Таблица принятия решений

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

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

В этой статье я расскажу о своем опыте применения методологии «Таблицы принятия решений» (Decision Table, далее я буду использовать сокращение DT). Вся необходимая теория изложена в замечательной книге «A Practitioner’s Guide to Software Test Design» by Lee Copeland.

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

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

Conditions (условия) — четко сформулированное описание входных условий (данных) для функционала. Формулировка условия должна быть выполнена в виде вопроса, на который можно дать однозначный ответ «да» или «нет» (или указать «не важно», но об этом чуть позже). Например, обязательное поле заполнено?
Rules (правила) — различные комбинации входных данных.
Actions (действия) — четко сформулированное описание ожидаемого результата, действия системы. Формулировка действия должна быть выполнена в форме утвердительного предложения. Обязательным является условие — одно предложение описывает только одно действие. Например, отображается сообщение об ошибке.
Area (область) — используется при составлении тестов для множества однотипных и имеющих небольшие различия модулей.

Разберем составление таблицы на примере тестирования формы авторизации.

  Сценарий использования стандартный: пользователь указывает атрибуты учетной записи и щелкает по кнопке Login. 

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

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

В общем виде таблица принятия решений имеет следующий вид (я использую в работе MS Excel, но подойдет и любой другой редактор электронных таблиц):

Во всех проектах, в которых мне довелось работать действует единое соглашение относительно нумерации наборов данных — используются числа от 001 до 999. Поэтому, в дальнейшем я буду использовать данный формат, вместо Rule 1…N.

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

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

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

Рассмотрим на примере набора 001. Проверяем случай, когда пользователь не указал username и указал password. При этом третье условие становится заблокированным — значение не указано, соответственно о регистре символов речь идти не может. Так же заблокированы пятое и шестое условия. А вот регистр пароля в данном случае может как соответствовать, так и не соответствовать указанному в базе данных значению. В разрезе данного теста это неважно, т.к. по ожидаемому алгоритму исполнение не должно дойти до проверки пароля. Если вследствие какого-либо дефекта исполнение продолжится, то это будет обнаружено независимо от того какой регистр пароля будет использован. Исходя из вышесказанного тестовое покрытие не пострадает, можно оставлять выбор значения данного условия тестировщику, тем самым сокращая количество комбинаций с двух до одной.

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

 

И «на десерт» — повторное применение DT. Предположим, тестируемая система состоит из нескольких модулей. Проверки формы авторизации для внешних потребителей мы описали, теперь нужно описать проверки той же формы для внутренних потребителей. Формы идентичны и имеют различие только в поведении кнопки Login (для внутренних потребителей она становится доступна только тогда, когда указаны username и password). Таким образом случаи 001 и 002 недоступны для второй формы.

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

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

 

Текста теории получилось несколько больше, чем я ожидала. Поэтому реальные примеры использования в проектах (удачные и не очень) приведу в следующий раз. To be continued…

casetesting.blogspot.com

Таблица принятия решений — это… Что такое Таблица принятия решений?

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

Таблицы принятия решений, как правило, разделяются на четыре квадранта, как показано ниже.

Условия Варианты выполнения условий
Действия Необходимость действий

В простейшем случае здесь Условия — список возможных условий, Варианты выполнения условий — комбинация из выполнения и/или невыполнения условий из этого списка. Действия — список возможных действий, Необходимость действий — указание надо или не надо выполнять соответствующее действие для каждой из комбинаций условий. Например для ситуации «свет погас»

Свет в соседней комнате горит Да Нет Нет
Свет у соседей горит Да Нет
Поменять лампочку Х
Проверить пробки Х
Позвонить электрику Х Х
Позвонить диспетчеру Х

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

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

Cсылки

dic.academic.ru

Отправить ответ

avatar
  Подписаться  
Уведомление о