Для початку, давайте розберемо поняття тест-дизайну. Якщо коротко – це один з етапів процесу розробки програмного продукту. Тобто стадія проєктування, створення і впорядкування тестів у набори на основі аналізу вимог і функціональності продукту. Тест-дизайн можна порівняти з аналізом вимог, але він вже є результатом цього аналізу. Складнощі виникають у випадку незнання і нерозуміння функціоналу, для якого необхідно створити тестову документацію. Під час аналізу вимог і тест-дизайну дуже важливо розуміти, як влаштована навіть найпростіша функціональність, оскільки в подальшому саме вона може викликати проблеми. Поверхневий підхід на етапі аналізу і тест-дизайну недопустимий, потрібно розібратися в системі досконально, щоб розуміти, що як працює і що з чим пов’язане у програмі. Саме одна з технік тест-дизайну, яка буде розглянута у цій статті, дозволяє не просто написати тести, а спробувати знайти помилки як наслідок роботи чи взаємодії тієї чи іншої функціональності.
Аналіз причинно-наслідкових зв’язків як техніка тест-дизайну
- 16.09.2021
- Опубліковано: Admin
Причина/Наслідок – математичний взаємозв’язок, який на практиці у тестуванні можна відобразити введенням комбінацій умов (причин) для того, щоб отримати відповідь від системи (наслідок).
Тестування причинно-наслідкового ефекту – це техніка тест-дизайну, в якій для проєктування використовується графічне відображення вхідних даних (причин) і вихідних даних (наслідків). Різні комбінації причин можуть призвести до різних результатів. Для використання метода потрібне розуміння булівської логіки (логічних операторів - і, або, не). Аналіз побудованих зв’язків дає можливість комплексно обирати високорезультативні тести. Завдяки цьому методу з’являється можливість на ранньому етапі виявляти недоліки вимог чи специфікацій.
Тести будуються в декілька етапів:
- специфікація розбивається на робочі ділянки;
- у специфікації визначаються безліч причин і наслідків. Під причиною розуміється окрема вхідна умова або клас еквівалентності. Наслідок являє собою вихідну умову або перетворення системи. Тут кожній причині і наслідку присвоюється номер;
- на основі аналізу семантичного змісту специфікації будується таблиця істинності, в якій послідовно перебираються всілякі комбінації причин і визначаються результати (наслідки) для кожної комбінації причин.
Таблиця забезпечується примітками, які задають обмеження і описують комбінації, які неможливі. Недоліком цього підходу є погане дослідження граничних умов.
Використання методу причинно-наслідкових зв’язків
Шаблони тестів з використанням даної техніки потрібно писати за специфікаціями або сценаріями користувача (Use case). В цьому документі описуються кроки і очікувані результати тесту, але без конкретних даних. Вони вже будуть представлені на наступному етапі розробки тест-кейсів.
Приклад:
Summary: | Причина |
Steps to reproduce:
|
|
Expected result: | Наслідок |
Це та техніка, яка допомагає скласти кейси для функціональності, враховуючи усі елементи, що взаємодіють і впливають один на інший.
Щоб застосовувати дану техніку, необхідно знати:
- які саме параметри на вході (з чим оперує дана функціональність);
- які дані на виході (для чого взагалі ця функціональність, що вона робить);
- як вхідні параметри впливають на результат.
Кожна попередня комбінація може бути пронумерована і записана в окремі таблиці істинності, в яких істина позначена як «1», неправда - як «0». Для невизначених станів використовують позначку «Х», що може бути як «1», так і «0».
Усі рядки таблиці істинності перетворюються в тести. При цьому:
- за можливості потрібно поєднувати тести із незалежних таблиць, використовуючи попарне тестування;
- для класів еквівалентності потрібно додатково прописувати вхідні умови.
Цей метод дозволяє відштовхуватися від причин того, що потрібно зробити в рамках тестового сценарію і плавно переходити до наслідків. Як і всі техніки тест-дизайну, вона допомагає визначити найменшу кількість тестів для того, щоб знайти більше дефектів. З’ясовуючи усі підстави і результати можна переконатися, що під час будь-яких маніпуляцій у системи буде відповідь. Також ця техніка дозволяє знайти недоліки в логіці опису додатка, що в подальшому допоможе покращити документацію.
Приклад із сайту інтернет-магазина:
Функціональність: реєстрація.
Параметри на вході:
- поля вводу на формі реєстрації;
Параметри на виході:
- користувач зареєстрований, є запис в базі даних.
На основі цієї причини і наслідка, можна робити різні варіації. Спробувати зробити так, щоб в базу нічого не потрапило і не записалось або зробити повторний запис. Різні сценарії можна спроєктувати на початковому етапі.
Другий приклад із соціальної мережі:
Функціональність: стрічка новин користувача.
Параметри на вході:
- поточний користувач;
- друзі користувача;
- групи користувача, на які він підписаний;
- чорний список.
Параметри на виході:
- стрічка новин користувача.
Якщо наш друг або спільнота щось запостили – ми це бачимо в стрічці, але ми не побачимо нічого, що додане до чорного списку.
Підсумуємо: аналіз причинно-наслідкових зв’язків – техніка тестування, яка відображає вхідні дані і відповідь системи в комбінації. Завдяки використанню цієї техніки можна суттєво зменшити кількість тестів, а також приділити більше уваги більш важливим і вразливим ділянкам функціонала.