Decision Table Testing

Decision Table Testing (Тестування таблиць прийняття рішень) — це техніка тест-дизайну, яка допомагає моделювати складні логічні умови системи. Вона базується на таблиці рішень, яка показує:

  • Умови (Conditions) — вхідні дані або ситуації
  • Дії (Actions) — очікувана поведінка системи
  • Правила (Rules) — комбінації умов, при яких відбуваються дії

Це дозволяє створювати тест-кейси, які покривають усі (або найважливіші) комбінації вхідних умов.

Розглянемо простий приклад.

Приклад:

Умова: користувач може увійти в систему, якщо:

  1. Ввів правильний логін
  2. Ввів правильний пароль
УмовиТест 1Тест 2Тест 3Тест 4
Логін правильнийT (True)T (True)FF
Пароль правильнийT (True)F (False)TF
Дозволити вхідT (True)F (False)FF

Етапи побудови таблиці рішень:

1. Визначення умов

Це всі вхідні змінні або умови, що впливають на результат.

Наприклад: чи користувач увійшов у систему, чи ввів правильний пароль тощо.

2. Визначення можливих значень умов

Зазвичай це True/False чи 0/1, але можуть бути й інші варіанти.

3. Визначення дій

Що має зробити система залежно від комбінації умов? Це можуть бути:

  • Виконати якусь операцію
  • Показати повідомлення
  • Заборонити доступ і т.д.

4. Формування правил

Кожна комбінація умов — це окреме правило (Rule), що призводить до певної дії або дій.

5. Скорочення таблиці (оптимізація)

Іноді деякі комбінації дублюють результати або не мають сенсу — їх можна об’єднати або видалити.

Приклад: Надання знижки постійному клієнту

Умови:

Умова
C1Клієнт є постійним клієнтом
C2Сума замовлення перевищує 1000 грн

Дії:

Дія
A1Надати знижку 10%
A2Надати знижку 5%
A3Не надавати знижку

Логіка дій:

КомбінаціяУмови виконаніЗнижка
Тест 1Постійний клієнт + сума > 100010%
Тест 2Постійний клієнт + сума ≤ 10005%
Тест 3Непостійний клієнт + сума > 10005%
Тест 4Новий клієнт, невелике замовлення0%

Таблиця рішень

УмоваТест 1Тест 2Тест 3Тест 4
C1: Постійний клієнтTTFF
C2: Сума > 1000 грнTFTF
Очікувана діяA1 (10%)A2 (5%)A2 (5%)A3 (0%)

Переваги Decision Table Testing:

ПеревагаПояснення
ЧіткістьВсі логічні умови систематизовані
Повне покриттяКожна важлива комбінація умов врахована
АвтоматизаціяТаблицю легко перевести в автоматичні тести
Виявлення прогалинДопомагає побачити, які варіанти не опрацьовані

Коли використовувати?

СитуаціяDecision Table Testing — підходить?
Багато вхідних умовТак
Складні правила прийняття рішеньТак
Просте позитивне/негативне тестуванняКраще Boundary Value чи Equivalence Partitioning
Бізнес-логіка (знижки, ролі, правила доступу)Ідеально

Інструменти для створення таблиць:

  • Excel або Google Sheets
  • TestRail (та інші TMS)
  • Draw.io або інші діаграмні редактори
  • Mind maps (для візуалізації)

Boundary Value Analysis

Boundary Value Analysis (BVA – аналіз граничних значень) — це техніка тестування, яка орієнтується на перевірку граничних значень для вхідних даних системи. Багато помилок у програмному забезпеченні часто виникають саме при роботі з даними на межах, тому тестування саме цих значень допомагає виявити критичні баги.

Чому саме граничні значення?

У програмному забезпеченні та алгоритмах часто зустрічаються випадки, коли значення змінної перевіряються на відповідність певному діапазону. Наприклад, перевірка на те, чи належить число до певного діапазону від 1 до 100.

Програмі або системі особливо важливо коректно обробляти значення, які знаходяться саме на межі цього діапазону (наприклад, 1 або 100), а також значення, які знаходяться прямо поруч (наприклад, 0 чи 101). Іноді проблеми виникають через те, що система неправильно обробляє такі значення або через помилки в межах умовних операторів.

Тому принцип BVA ґрунтується на тестуванні саме граничних значень і значень, що знаходяться поруч з ними, а не на випадкових значеннях із середини діапазону. Багато помилок стаються саме через неправильне трактування цих граничних значень.

Як працює Boundary Value Analysis?

Існує підхід із застосуванням для тестування 2 граничних значень. Також є підхід із застосуванням 3 граничних значень. Потрібно зрозуміти, які значення входять у допустимий діапазон для тестування.

Застосування 2 граничних значень:

Якщо є система, яка приймає вхідне число в діапазоні від 1 до 100, то тестувати слід:

  • 1 (мінімальне значення)
  • 0 (менше мінімуму — вихід за межі)
  • 100 (максимальне значення)
  • 101 (більше максимуму — вихід за межі)

Застосування 3 граничних значень:

  1. Тестування на граничних значеннях: Тестуються не тільки самі межі (наприклад, 1 і 100), а й значення, що знаходяться безпосередньо біля меж:
    • 1 (мінімальна межа)
    • 100 (максимальна межа)
    • 0 (одне значення нижче мінімуму)
    • 101 (одне значення вище максимуму)
    • 2 (мінімальна межа + 1)
    • 99 (максимальна межа – 1)
  2. Порівняння результатів: Різні варіанти тестів дозволяють виявити, чи система правильно працює в межах допустимого діапазону, а також чи правильно реагує на значення, що виходять за межі цього діапазону.

Тестування для діапазону дійсних чисел:

  • Діапазон: від 0.0 до 10.0 (включно)
    • Тестові значення:
      • 0.0 (мінімум)
      • 10.0 (максимум)
      • -0.1 (менше мінімуму)
      • 10.1 (більше максимуму)
      • 0.1 (мінімум + 0.1)
      • 9.9 (максимум – 0.1)

Типи помилок, які можуть бути виявлені

  1. Неправильна обробка граничних значень: Наприклад, програма може неправильно працювати, якщо мінімальне або максимальне значення не обробляється належним чином (наприклад, програма приймає 0, хоча повинна відкидати ці значення).
  2. Помилки округлення: У випадках з дійсними числами можуть бути проблеми з точністю значень на межах, що також виявляється під час тестування крайніх значень.
  3. Пропущена перевірка значень за межами діапазону: Іноді система не має механізму для обробки значень, що виходять за межі допустимого діапазону (наприклад, якщо програма не перевіряє, чи число не більше за 100 або не менше за 1).

Переваги BVA:

  • Зниження ймовірності помилок: Тестування на граничних значеннях допомагає виявити баги, які часто залишаються непоміченими при тестуванні випадкових значень.
  • Ефективність: Це досить ефективний спосіб тестування, оскільки він охоплює основні потенційно проблемні моменти без необхідності перевіряти всі можливі значення в межах діапазону.
  • Простота застосування: Метод є простим у реалізації, оскільки не потребує складних тестових випадків.

Недоліки:

  • Обмеженість: Не завжди можна повністю охопити всі проблеми лише тестуванням граничних значень. Наприклад, BVA не допоможе виявити логічні помилки, які можуть виникати на середніх значеннях або при складних умовах.
  • Не замінює інші методи тестування: Для комплексних програм або складних бізнес-логік, BVA слід комбінувати з іншими методами тестування.

Підсумки

Boundary Value Analysis — це важливий метод тестування, який дозволяє виявляти проблеми на граничних значеннях, де часто виникають помилки. Використання цього методу дає змогу перевірити важливі ситуації, які можуть залишитися непоміченими при тестуванні випадкових значень.

Equivalence Class Partitioning (ECP) (розбиття на еквівалентні класи)

Equivalence Class Partitioning (ECP) (розбиття на еквівалентні класи) — це метод тест-дизайну в тестуванні програмного забезпечення, який дозволяє зменшити кількість тестів, зберігаючи при цьому хороше покриття.

Суть методу:

Ідея полягає в тому, що всі можливі вхідні значення або вхідні умови розбиваються на класи еквівалентності. Для кожного такого класу вважається, що одне значення репрезентує весь клас, тобто дає такий же результат, як і будь-яке інше значення з того ж класу.

Приклад:

Уявімо, що ми тестуємо форму, яка приймає вік користувача (від 18 до 60 років).

Можливі класи еквівалентності:

Тип класуДіапазонОпис
Допустимий18–60Валідні значення віку
Недопустимий< 18Занадто малий вік
Недопустимий> 60Занадто великий вік

Замість того, щоб тестувати кожне значення, ми можемо вибрати по одному значенню з кожного класу, наприклад:

  • 25 (допустимий клас)
  • 17 (менше мінімуму)
  • 61 (більше максимуму)

Навіщо використовувати ECP?

  • Зменшує кількість тестів без втрати ефективності
  • Дозволяє сфокусуватися на представницьких прикладах
  • Полегшує автоматизацію і документування тест-кейсів

Застосування:

ECP часто використовується разом з іншими техніками, наприклад:

  • Boundary Value Analysis (BVA) — аналіз граничних значень
  • Decision Table Testing — тестування за таблицею рішень

Практика з модальними дієсловами: частина 2

Відмінювання дієслова sollen

НімецькаТранслітерація Переклад українською
ich sollіх золья повинен, мені слід
du sollstду зольстти повинен, тобі слід
er/sie/es sollер/зі/ес зольвін/вона/воно повинен/має слід
wir sollenвір золлєнми повинні, нам слід
ihr solltір золльтви повинні, вам слід
sie/Sie sollenзі/зі золлєнвони/Ви повинні, вам слід

Приклади речень з дієсловом sollen

НімецькаТранслітерація Переклад українською
Ich soll mehr Sport treiben.іх золь мер шпорт трайбенМені слід більше займатися спортом.
Sollst du heute arbeiten?зольст ду хойте арбайтен?Тобі слід сьогодні працювати?
Er soll zum Arzt gehen.ер золь цум арцт ґеенЙому слід піти до лікаря.
Wir sollen pünktlich sein.вір золлєн пюнктліх зайнНам слід бути пунктуальними.
Sollt ihr eure Hausaufgaben machen?зольт ір ойре хаузауфґабен махен?Вам слід зробити домашнє завдання?
Sie sollen das Problem lösen.зі золлєн дас проблем льозенВони повинні розв’язати проблему.

Відмінювання дієслова wollen

НімецькаТранслітерація Переклад українською
ich willіх вілья хочу
du willstду вілльстти хочеш
er/sie/es willер/зі/ес вільвін/вона/воно хоче
wir wollenвіа воллєнми хочемо
ihr wolltір волльтви хочете
sie/Sie wollenзі/зі воллєнвони хочуть/Ви хочете хочуть

Приклади речень з дієсловом wollen

НімецькаТранслітерація Переклад українською
Ich will heute ins Kino gehen.іх віль хойте інс кіно ґеенЯ хочу сьогодні піти в кіно.
Willst du mitkommen?вілльст ду міткоммен?Ти хочеш піти зі мною?
Er will ein neues Auto kaufen.ер вілл айн нойєс ауто кауфенВін хоче купити нову машину.
Wir wollen zusammen arbeiten.вір воллєн цузаммен арбайтенМи хочемо працювати разом.
Wollt ihr heute länger bleiben?волльт ір хойте лене бляйбен?Ви хочете сьогодні залишатися довше?
Sie wollen das Projekt beenden.зі воллєн дас проєкт беендненВони хочуть завершити проєкт.

Відмінювання дієслова mögen

НімецькаТранслітерація Переклад українською
ich magіх маґя люблю, мені подобається
du magstду маґстти любиш, тобі подобається
er/sie/es magер/зі/ес маґвін/вона/воно любить, йому подобається
wir mögenвір мьоґенми любимо, нам подобається
ihr mögtір мьоґтви любите, вам подобається
sie/Sie mögenзі/зі мьоґенвони люблять/Ви любите, Вам подобається

Приклади речень з дієсловом mögen

НімецькаТранслітерація Переклад українською
Ich mag Schokolade essen.іх маґ шоколаде есенЯ люблю їсти шоколад.
Magst du Kaffee trinken?маґст ду каффе трінкен?Тобі подобається пити каву?
Er mag keine laute Musik hören.ер маґ кайне лауте музік хьоренВін не любить слухати гучну музику.
Wir mögen Spaziergänge im Park.вір мьоґен шпацірґене ім паркМи любимо прогулянки в парку.
Mögt ihr Eis essen?мьоґт ір айс?Вам подобається їсти морозиво?
Sie mögen den neuen Film.зі мьоґен ден нойен фільмЇм подобається новий фільм.

Відмінювання дієслова möchten

НімецькаТранслітерація (кирилицею)Переклад українською
ich möchteіх мьохтея хотів би, я хотіла б
du möchtestду мьохтестти хотів би, ти хотіла б
er/sie/es möchteер/зі/ес мьохтевін/вона/воно хотів би
wir möchtenвір мьохтенми хотіли б
ihr möchtetір мьохтетви хотіли б
sie/Sie möchtenзі/зі мьохтенвони/Ви хотіли б

Приклади речень з дієсловом möchten

НімецькаТранслітерація (кирилицею)Переклад українською
Ich möchte einen Kaffee, bitte.іх мьохте айнен каффе, бітеЯ хотів би каву, будь ласка.
Möchtest du mitkommen?мьохтест ду міткомен?Ти хотів би піти зі мною?
Er möchte heute früher gehen.ер мьохте хойте фрюе ґеенВін хотів би піти раніше сьогодні.
Wir möchten ein neues Auto kaufen.вір мьохтен айн нойес ауто кауфенМи хотіли б купити нову машину.
Möchtet ihr morgen kommen?мьохтет ір морґен коммен?Ви хотіли б прийти завтра?
Sie möchten mehr Zeit haben.зі мьохтен мер цайт хабенВони хотіли б мати більше часу.

Для додаткової візуалізації є відео.

Практика з модальними дієсловами: частина 1

Відмінювання дієслова können

НімецькаТранслітерація Переклад українською
ich kannіх кання можу
du kannstду канстти можеш
er/sie/es kannер/зі/ес каннвін/вона/воно може
wir könnenвіа кьонненми можемо
ihr könntір кьоннтви можете (мн.ч.)
sie/Sie könnenзі/зі кьонненВони можуть /Ви можете

Приклади речень з дієсловом können

НімецькаТранслітерація Переклад українською
Ich kann Deutsch sprechen.іх канн дойч шпрехенЯ можу говорити німецькою.
Kannst du mir helfen?канст ду мір хельфен?Ти можеш мені допомогти?
Er kann sehr gut schwimmen.ер канн зер ґут швімменВін дуже добре вміє плавати.
Wir können heute nicht kommen.вір кьоннен хойте ніхт комменМи сьогодні не можемо прийти.
Könnt ihr das Problem lösen?кьоннт ір дас проблем льозен?Ви можете розв’язати цю проблему?
Sie können morgen anrufen.зі кьоннен морген анруфенВони можуть завтра подзвонити.

Відмінювання дієслова müssen

НімецькаТранслітерація Переклад українською
ich mussіх мусся мушу
du musstду мустти мусиш
er/sie/es mussер/зі/ес муссвін/вона/воно мусить
wir müssenвір мюссенми мусимо
ihr müsstір мюстви мусите (мн.ч.)
sie/Sie müssenзі/зі мюссенвони мусять/Ви мусите

Приклади речень з дієсловом müssen

НімецькаТранслітерація Переклад українською
Ich muss heute arbeiten.іх мусс хойте арбайтенЯ мушу сьогодні працювати.
Musst du morgen früh aufstehen?мусст ду морґен фрю ауфштеен?Ти мусиш завтра рано вставати?
Er muss zum Arzt gehen.ер мусс цум арцт ґеенВін мусить піти до лікаря.
Wir müssen pünktlich sein.віа мюссен пюнктліх зайнМи мусимо бути пунктуальними.
Müsst ihr die Hausaufgaben machen?мюст ір ді хаузауфґабен махен?Ви мусите зробити домашнє завдання?
Sie müssen heute länger bleiben.зі мюссен хойте ленер бляйбенВони мусять залишатися довше сьогодні.

Відмінювання дієслова dürfen

НімецькаТранслітерація Переклад українською
ich darfіх дарфя можу (маю дозвіл)
du darfstду дарфстти можеш (маєш дозвіл)
er/sie/es darfер/зі/ес дарфвін/вона/воно може (має дозвіл)
wir dürfenвіа дюрфенми можемо (маємо дозвіл)
ihr dürftір дюрфтви можете (маєте дозвіл)
sie/Sie dürfenзі/зі дюрфенвони можуть /Ви можете (мають/маєте дозвіл)

Приклади речень з дієсловом dürfen

НімецькаТранслітерація Переклад українською
Ich darf heute spät nach Hause kommen.іх дарф хойте шпет нах хаузе комменЯ можу сьогодні пізно прийти додому.
Darfst du hier rauchen?дарфст ду хір раухен?Ти можеш тут курити?
Er darf das Auto benutzen.ер дарф дас ауто бенутценВін може користуватися автомобілем.
Wir dürfen im Park nicht spielen.вір дюрфен ім парк ніхт шпіленНам не можна гратися в парку.
Dürft ihr heute länger bleiben?дюрфт ір хойте лене бляйбен?Ви можете сьогодні залишатися довше?
Sie dürfen die Dokumente nicht kopieren.зі дюрфен ді документе ніхт копієренВони не можуть копіювати документи.

Для додаткової візуалізації є відео.