- Какими способами можно оптимизировать количество проверок при работе с таблицами принятия решений
- Техники тест-дизайна и их предназначение
- Типы тестирования
- Этапы тестирования
- Техники тест-дизайна на примерах
- Эквивалентное разбиение
- Граничные значения
- Таблица принятия решений
- Попарное тестирование
- Причина и следствие
- Предугадывание ошибок
- Итоги
- Таблиці рішень та їх застосування в тестуванні
- Тестирование таблицы решений
- Почему таблицы решений так важны?
- Как создать таблицу решений для тестирования?
Какими способами можно оптимизировать количество проверок при работе с таблицами принятия решений
Техники тест-дизайна и их предназначение
При создании IT-продукта большую роль играет обеспечение качества – Quality Assurance (QA). Для того, чтобы устранить ошибки и «баги», QA-инженеры в числе прочих инструментов применяют техники тест-дизайна.
Тест-дизайн – это разработка, создание тестов. Каждый тест направлен на проверку конкретного предположения. Например: «Что будет, если пользователь по ошибке кликнет здесь не левой, а правой кнопкой мыши».
QA моделирует набор тестовых случаев (тест-кейсов), чтобы проверить, как приложение ведет себя в разных условиях. Задача специалиста – найти баланс и выявить максимальное количество ошибок при необходимом минимуме тестовых сценариев. При этом нужно проверить все наиболее важные кейсы, поскольку время тестирования ограничено.
Типы тестирования
Статическое тестирование, как следует из названия, не требует запускать программу или приложение и позволяет находить самые очевидные ошибки еще на ранних этапах создания продукта. Например, частью статического тестирования является проверка параметров ПО на соответствие требованиям технического задания, вычитка кода.
Динамическое тестирование требует проверять ПО в действии. Этот вид, в свою очередь, также делится на две обширные группы:
Техники белого ящика (они же структурное тестирование) применяют в том случае, если специалист хорошо знает архитектуру продукта, его код, «начинку» – то есть может ориентироваться в самой программе.
Техники черного ящика позволяют проверять работу продукта, не зная внутреннего устройства системы. При этом тестирование проводится на основе требований, указанных в спецификации проекта или в ТЗ.
Техники серого ящика позволяют тестировать продукт, когда специалист частично знает его внутреннее устройство. Для выполнения тестирования «серого ящика» не нужен доступ к исходному коду.
Этапы тестирования
1. Подготовка. На этом этапе QA-инженер читает проектную документацию, выясняет требования к продукту, прорабатывает план, продумывает стратегию, расставляет задачи по приоритетности и анализирует возможные риски.
2. Непосредственно тестирование. Предварительно специалисты анализируют собранную ранее информацию, составляют список тестируемых функций, знакомятся с уже известными багами, если они есть, пишут тест-кейсы.
Еще раз подчеркнем: принципиально важно стремиться к минимально возможному числу тестов, при этом необходимо, чтобы сценарии находили наибольшее число высокоприоритетных дефектов.
3. Анализ результатов и составление отчетов.
При работе над созданием тестов QA-специалист ориентируется не только на документацию, но и на устные сведения от других QA, аналитиков, разработчиков, менеджеров проекта.
Техники тест-дизайна на примерах
Рассмотрим несколько основных методик, однако, будем помнить, что зачастую их используют в комплексе. Одной техники может быть недостаточно, поскольку она не обеспечит максимальный охват тестовых сценариев.
Эквивалентное разбиение
Метод эквивалентного разбиения позволяет минимизировать число тестов, не создавая сценарий для каждого возможного значения, а выбрав только одно значение из целого класса и приняв за аксиому, что для всех значений в данной группе результат будет аналогичным.
Например, мы тестируем функциональность приложения, позволяющего покупать авиа- и железнодорожные билеты онлайн. Стоимость билета будет зависеть от возраста пассажира, так как дети, студенты и пенсионеры относятся ко льготным категориям.
У нас есть четыре возрастных группы: младше 15 лет, от 15 до 25 лет, старше 25 и младше 60 лет и люди старше 60. При этом, в поле для ввода возраста помещается всего два символа, поэтому указать возраст более 99 лет технически невозможно.
QA-специалисту не нужно писать 99 тестов для каждого возраста, хватит пяти: по одному для каждой возрастной группы (скажем, 10, 18, 35 и 75 лет) и один для случая, если возраст человека превышает 99 лет. Да, последний тест на практике невыполним (поскольку в поле возраста невозможно ввести более двух знаков), и все же не следует забывать об этой проверке.
Граничные значения
Техника граничных значений основана на предположении, что большинство ошибок может возникнуть на границах эквивалентных классов. Она тесно связана с вышеописанной техникой эквивалентного разбиения, из-за чего часто используется с ней в паре. Тогда для примера из предыдущего пункта границами будут являться значения 0, 15, 25, 60 и 99. Граничными значениями будут 0, 1, 14, 15, 16, 24, 25, 26, 59, 60, 61, 98, 99, 100.
Часто сложности возникают, если возрастные категории указаны «внахлест», например, 0-12, 12-25 лет и т.д.
Таблица принятия решений
Другое название метода – матрица принятия решений. Эта техника подходит для более сложных систем, например – двухфакторной аутентификации. Предположим, чтобы войти в систему, пользователю нужно ввести сначала логин и пароль, а затем еще подтвердить свою личность присланным в смс кодом.
Какие возможны сценарии:
1. Правильный логин и правильный пароль.
2. Правильный логин, неправильный пароль.
3. Неправильный логин, правильный пароль.
4. Неправильный логин, неправильный пароль.
Первый из этих сценариев сопровождается либо правильным, либо неправильным вводом смс-кода, итого у нас получается 5 тестов. При этом только один из сценариев приведет к положительному результату (пользователь успешно авторизуется), а остальные закончатся неудачей.
Этот метод хорош тем, что он показывает сразу все возможные сценарии в форме, понятной даже неспециалисту.
Пример таблицы принятия решений
Попарное тестирование
Суть этого метода, также известного как pairwise testing, в том, что каждое значение каждого проверяемого параметра должно быть протестировано на взаимодействие с каждым значением всех остальных параметров. После составления такой матрицы мы убираем тесты, которые дублируют друг друга, оставляя максимальное покрытие при минимальном необходимом наборе сценариев.
Попарное тестирование позволяет обнаружить максимум ошибок без избыточных проверок.
Pairwise testing: пример
Для Parwise достаточно, чтобы каждое значение всех параметров хотя бы единожды сочеталось с другими значениями остальных параметров. Таким образом, матрицу можно значительно сократить. Например:
№ | Браузер | Операционная система | Язык |
1 | Opera | Windows | RU |
2 | Google Chrome | Linux | RU |
3 | Opera | Linux | EN |
4 | Google Chrome | Windows | EN |
При составлении матрицы принятия решений для двух браузеров, двух ОС и двух языков было бы нужно 8 сценариев. При попарном тестировании достаточно четырех.
Все это можно просчитать и вручную, но не обязательно – гораздо удобнее автоматизировать процесс. Для этого существует программа попарного независимого комбинированного тестирования – Pairwise Independent Combinatorial Testing (PICT). Для проведения тестирования специалист создает текстовый файл с перечислением и их возможных значений, а затем запускает PICT через cmd – командную строку. Скомбинированные тесты отображаются в виде таблицы в самой консоли. Так же результаты по желанию можно выгрузить в файл Excel.
Пример содержимого файла для программы PICT:
Браузер: Chrome, Opera
ОС: Windows, Linux
Язык: RU, ENG
Пример попарного тестирования
Причина и следствие
Простая проверка базовых действий и их результата. Например, если нажать крестик в правом верхнем углу окна (причина), оно закроется (следствие), и т.д. Этот метод позволяет проверить все возможности системы, а также обнаружить баги и улучшить техническую документацию продукта.
Примерный алгоритм использования техники:
1. Выделяем причины и следствия в спецификациях.
2. Связываем причины и следствия.
3. Учитываем «невозможные» сочетания причин и следствий.
4. Составляем «таблицу решений», где в каждом столбце указана комбинация входов и выходов, т.е. каждый столбец – это готовый тестовый сценарий.
5. Расставляем приоритеты.
Эта техника помогает:
Определить минимальное количество тестов для нахождения максимума ошибок.
Выяснить все причины и следствия – таким образом, мы убедимся, что на любые манипуляции с системой у системы будет ответ.
Найти возможные недочеты в логике описания приложения (что, в свою очередь, поможет улучшить документацию).
Например, QA-специалист тестирует приложение типа “записная книжка”. После ввода всех данных нового контакта и нажатия кнопки Создать (причина) приложение должно автоматически создать карточку с номером телефона, фотографией и ФИО человека (следствие). Тесты покажут, можно ли оставлять одно или несколько полей пустыми, распознает ли система кириллицу, латиницу или оба алфавита, а также другие параметры.
Предугадывание ошибок
Используя свои знания о системе, QA-специалист может «предугадать», при каких входных условиях есть риск ошибок. Для этого важно иметь опыт, хорошо знать продукт и уметь выстроить коммуникации с коллегами.
Например, в спецификации указано, что поле должно принимать код из четырех цифр. В числе возможных тестов:
- Что произойдет, если не ввести код?
- Что произойдет, если не ввести спецсимволы?
- Что произойдет, если ввести не цифры, а другие символы?
- Что произойдет, если ввести не четыре цифры, а другое количество?
1. Эта проверка эффективна в качестве дополнения к другим техникам.
2. Выявляет тестовые случаи, которые “никогда не должны случиться”.
Недостатки:
1. Техника в значительной степени основана на интуиции.
2. Необходим опыт в тестировании подобных систем.
3. Малое покрытие тестами.
Итоги
Разумеется, этот список далеко не полон и дает только самое общее представление о принципах тестирования и техниках тест-дизайна. Например, исчерпывающее тестирование, покрывающее все возможные сценарии и обнаруживающее все ошибки, существует только в теории. Это связано с тем, что проверка всех параметров и состояний займет слишком много времени. Однако, чем опытнее QA-специалист, тем лучших результатов он может добиться, и для этого важно уметь правильно подбирать и комбинировать техники.
Таблиці рішень та їх застосування в тестуванні
Таблиці рішень використовуються для дослідження взаємодії між комбінаціями умов. Вони надають чіткий метод перевірки всіх відповідних комбінацій, щоб гарантувати, що продукт обробляє всі можливі умови, взаємозв’язки і обмеження. Таблиці рішень є ефективним методом тестування програмного забезпечення, що використовується для аналізу реакції системи на різні вхідні дані.
Тестування за допомогою таблиць прийняття рішень – це одна з технік тест-дизайну методом чорного ящика, яка відноситься до динамічного аналізу. Вона також відома як таблиця причинно-наслідкових зв’язків. А схематична демонстрація логіки відома як причинно-наслідковий графік. Це візуальне уявлення використовується для отримання таблиці рішень.
Інші методи досліджень, наприклад, перевірка на еквівалентність або аналіз граничних значень, часто застосовуються тільки для конкретних вхідних даних. Техніка таблиці рішень використовується у тому випадку, коли для різних вихідних використовується комбінація вхідних даних. Основною метою є перевірка бізнес-логіки і тестового покриття.
Таблиця рішень, як правило, має 4 складові:
- Умови – список можливих умов.
- Варіанти виконання дій – це комбінація зі списку виконаних або невиконаних умов.
- Дії – це список всіляких дій.
- Необхідність дій – вказівка потрібно чи не потрібно виконувати відповідну дію для кожної з комбінацій умов.
Приклад застосування таблиць рішень.
Умова дуже проста: якщо користувач вводить правильне ім’я користувача і пароль, він буде авторизований і перенаправлений на домашню сторінку. Якщо будь-які з даних, що вводяться є неправильними, то з’явиться повідомлення про помилку.
Умова | 1 | 2 | 3 | 4 |
Ім’я користувача ( T/F) | F | T | F | T |
Пароль (T/F) | F | F | T | T |
Результат ( E/H) | E | E | E | H |
T – Правильне ім’я користувача/пароль.
F – Неправильне ім’я користувача/пароль
E – Відображається повідомлення про помилку.
H – Користувач авторизований/Відображається домашня сторінка.
Розглянемо окремо кожен із стовпчиків:
Стовпчик 1. Ім’я користувача і пароль були неправильні. Відображається повідомлення про помилку.
Стовпчик 2. Ім’я користувача було правильним, але пароль був неправильним. Відображається повідомлення про помилку.
Стовпчик 3. Неправильне ім’я користувача, але правильний пароль. Відображається повідомлення про помилку.
Стовпчик 4. Ім’я користувача і пароль були правильними, авторизація пройшла успішно, відображається домашня сторінка.
Для того щоб конвертувати це у тестовий приклад, можна створити декілька тест-кейсів.
Тест-кейс 1. Ввести валідні ім’я користувача та пароль, натиснути кнопку «Увійти».
Очікуваний результат : користувач авторизований і перенаправлений на домашню сторінку.
Тест-кейс 2. Ввести валідне ім’я користувача та невалідний пароль, натиснути на кнопку входу.
Очікуваний результат : відображається повідомлення про помилку.
Тест-кейс 3. Ввести невалідне ім’я та валідний пароль, натиснути кнопку «Увійти».
Очікуваний результат : відображається повідомлення про помилку.
Тест-кейс 4. Ввести невалідне ім’я користувача та пароль, натиснути на кнопку входу.
Очікуваний результат : відображається повідомлення про помилку.
Необхідно звернути увагу на той факт, що всі кейси, крім першого, перевіряють одне і те ж правило. Таким чином, була створена найпростіша таблиця рішень. За необхідності її можна розширити.
Ще один приклад застосування рішень на прикладі працездатності принтера
Умови | Принтер не друкує | Y | Y | Y | Y | N | N | N | N |
Мерехтить червоний індикатор | Y | Y | N | N | Y | Y | N | N | |
Принтер не розпізнається | Y | N | Y | N | Y | N | Y | N | |
Дії | Перевірте дріт живлення | X | |||||||
Перевірте дріт принтера | X | X | |||||||
Переконайтесь що ПЗ принтера встановлено | X | X | X | X | |||||
Перевірити/замінити чорнила | X | X | X | X | |||||
Перевірте, чи не застряг папір в лотку | X | X |
Умовні позначення: Y – так; N – ні.
Цей приклад показує простоту, з якою таблиця рішень демонструє можливі комбінації умов і дій. До того ж її легко модифікувати в разі зміни вихідних даних (наприклад, при включенні індикатора іншого кольору в принтері).
Переваги використання таблиці рішень під час тестування програмного забезпечення:
- Навіть найскладніша бізнес-логіка, використовуючи цей метод, може бути легко перетворена в тестові сценарії і випадки.
- Ітеративність роботи. Таблиця, створена на першому етапі, використовується в якості вхідної таблиці для всіх наступних. Ітерація виконується тільки в тому випадку, якщо вихідні дані не є задовільними.
- Проста і зрозуміла техніка. Кожен може використовувати цей метод для розробки тестових сценаріїв і випадків.
- Забезпечення повного охоплення тестових випадків, що істотно допомагає скоротити обсяг роботи.
- Гарантія розгляду всіх можливих комбінацій умов і значень.
- Надання більш компактної документації.
- Легка зміна даних.
Недоліки таблиць рішень під час тестування програмного забезпечення.
- Труднощі в масштабуванні. Потрібно «розділяти» великі таблиці на більш дрібні, щоб запобігти надмірності.
- Збільшення кількості вхідних даних робить таблицю складнішою.
Таблиці рішень є хорошим способом опису вимог, коли існує кілька бізнес-правил, що взаємодіють один з одним. Використовуючи цей метод, фахівцю стає простіше написати вимоги, які включають в себе всі доступні умови. Застосування цієї техніки допомагає краще проаналізувати тестований продукт, систематизувати всі знання по ньому. В результаті стає легше писати повні тестові приклади, охопити всі можливі комбінації.
Тестирование таблицы решений
Таблица принятия решений используется для тестирования с различными комбинациями входных данных, которые приводят к различным выходным данным в программе. Тестирование таблицы решений также называется тестированием причинно-следственных связей. Это очень систематический подход к тестированию, где мы фиксируем входные комбинации и их результаты в табличном формате. Эти таблицы достаточно точны и компактны для моделирования сложной логики.
В двух словах, Decision Table Testing — это метод проверки черного ящика, в котором мы создаем таблицу решений для сложной бизнес-логики.
Почему таблицы решений так важны?
Возможно, вы знакомы с методами тестирования граничных значений и эквивалентных методов тестирования разделов, хотя оба они хороши для обеспечения охвата, но ни один из них не будет полезен, если поведение системы отличается для каждого набора входных данных.
Создание таблицы решений помогает команде тестирования в разработке тестов. Не только таблицы решений полезны при формулировании сложных бизнес-правил, но и эти таблицы также полезны для тестировщиков, которые хотят понять, как различные комбинации входов влияют на результат.
Во многих приложениях количество комбинаций входных данных может быть большим, если это имеет место с проектом, тестирование этих комбинаций окажется проблемой. В таких случаях создание таблицы решений является одним из лучших способов проведения теста с хорошим охватом.
Как вы увидите ниже, число возможных комбинаций задается как 2 x, где X — количество входов, в случаях, когда X — большое число (скажем, 10 для примера), число комбинаций будет слишком большим, чтобы принять все это во внимание. Однако мы все еще можем взять подмножество этих возможных комбинаций для создания дерева решений.
Как создать таблицу решений для тестирования?
Теперь, когда вы знакомы с тем, что такое тестирование решений, давайте создадим таблицу решений.
Шаг 1: Создание первого столбца таблицы с учетом требований.
Мы создадим первый столбец таблицы, взглянув на то, что нам нужно проверить. Для этого примера рассмотрим пример транзакции ATM. Ниже будут его условия и действия:
Условие |
Сумма вывода меньше или равна балансу банка |
Кредит предоставлен |
действие |
Запрос на снятие принят |
Шаг 2: Добавление дополнительных столбцов.
Теперь, когда первый столбец готов, мы рассчитаем оставшееся количество необходимых столбцов. Это будет зависеть от количества условий на руке, а также от того, сколько альтернатив доступно для этих условий.
Математически число столбцов равно 2 x, где X — количество условий.
Для простоты тестирования мы должны создать меньшие таблицы решений, а затем создать огромные. Закончив с количеством столбцов, мы можем заполнить True или False. Вы можете заполнить ячейки следующим образом:
После этого наша таблица выглядит следующим образом:
Условие | ||||
Сумма вывода меньше или равна балансу банка | T | F | T | F |
Кредит предоставлен | T | T | F | F |
действие | ||||
Запрос на снятие принят |
Шаг 3: сделать стол меньше.
Мы можем уменьшить таблицу, удалив дубликаты столбцов в таблице. Другие способы уменьшения таблицы — проверка на наличие недопустимых комбинаций в таблице, например, нет способа, чтобы кто-то мог быть и мужчиной, и женщиной в таблице решений.
Мы также должны пометить ячейки с незначительными значениями как «-». Например, не имеет значения, предоставляется ли кредит, если сумма
Источник