План уроку:
Black box
- Класи еквівалентності (Equivalence Class)
- Граничні значення (Boundary Value)
- Таблиці Рішень (Decision Tables)
White box
- Тестування операторів (Statement testing)
- Тестування умов (Condition testing)
- Тестування рішень / гілок (Decision/branch testing)
Як писати гарні тест-кейси
Практика написання простих документів
Test Design
Тест-дизайн – це один з етапів процесу розробки програмного забезпечення, етап вигадування, розробки та впорядкування тестів у набори, на основі аналізу вимог та функціональності продукту.
Техніка тест-дизайну – це метод проєктування тестів.
Test Design. Цілі
1. Забезпечити глибоке покриття
Вигадати тести, які виявлять найбільш серйозні помилки продукту. Так, ми можемо вигадувати тести, які знаходять несерйозні помилки, але тоді тестування буде неефективним.
2. Мінімізувати кількість тестів
Що необхідні для знаходження більшості серйозних помилок. Ми можемо вигадати стільки тестів, скільки не в змозі будемо виконати. Тому перед розробниками тестів завжди стоїть завдання зберегти ефективність тестів (тобто, їх здатність виявляти серйозні помилки) без збільшення їх числа.
Test Design. Статичні техніки
Статичні методи розробки тестів – це методи тестування, які включають тестування без виконання коду.
В основному статичне тестування пов'язане з різного роду переглядами та аналізом коду, тестів та іншої проєктної документації.
Ручні методи статичного дизайну (Manual Static Design Techniques)
перегляд (Walkthrough)
неформальна рецензія (Informal reviews)
технічна рецензія (Technical reviews)
аудит (Audit)
інспекція (Inspection)
менеджмент-рецензія (Management reviews)
Інструментальні методи статичного дизайну (Static Design Techniques)
статичний аналіз коду (Static analysis of code)
відповідність коду стандартам (Complіance with coding standards)
аналіз метрик коду (Analysis of code metrics)
Test Design. Динамічні техніки
Документи проведення тестування
Різні тест-формати
•Чек-ліст (Check List) — список запланованих тестів, без подробиць, кроків, очікуваних результатів. Може існувати також у більш деталізованій версії – з пріоритетами, тестовими даними і т.д.
•Тестовий випадок (Test Case) — докладні інструкції щодо виконання перевірки, з перед- та пост-умовами,
кроками та очікуваними результатами.
•Тестовий набір (Test Suite) – набір тест-кейсів за певною ознакою, найчастіше функціоналом.
•Тестовий сценарій (Test Scenario) — тести, орієнтовані на відтворення поведінки користувача, взаємодії між
компонентами.
•Матриця тестування (Test Matrix) – тести, які необхідно областей/компонентів/конфігурацій, але з однаковими кроками тестування.
Test Design. На основі специфікації
Класи еквівалентності (Equivalence partitioning)
Граничні значення (Boundary value analysis)
Таблиця прийняття рішень (Decision tables)
Попарне тестування (Pairwise Testing)
Діаграма переходів станів (State transition testing)
Користувацькі сценарії (Use case testing)
Класи еквівалентності (Equivalence partitioning)
Це розділення тестових даних на групи (класи), які застосунок обробляє однаково.
Класи еквівалентності. Приклад
Визначити класи еквівалентності для зняття готівки в банкоматі:
Зняття до 50 грн. йде з комісією в 2%, а більше 8000 з комісією в 5% .
Важливо протестувати хоча б одне значення кожного класу.
Важливо перевіряти як «прийнятні», так і «неприйнятні» класи еквівалентності.
Граничні значення (Boundary value analysis)
Як бути із значеннями на межах класів?
Тестування Граничними значеннями. Приклад
Це перевірка значеннями, що знаходяться на границях класів еквівалентності.
Як ви думаєте які вони? Та до яких класів належать?
Значення границь завжди включені в один із класів еквівалентності.
Граничні значення (Boundary value analysis)
•Граничні значення – це мінімальне та максимальне значення класу еквівалентності.
•Вони мають велику ймовірність помилки.
•Перевірка граничних умов вважається методами розширених класів еквівалентності.
Аналіз граничних значеннь. Приклад
Завдання:
Визначити граничні значення класів еквівалентності для зняття готівки в банкоматі:
Зняття до 50 грн йде з комісією в 2%, а більше 8000 з комісією в 5%.
Важливо протестувати хоч б одне значення кожного класу.
Важливо перевіряти як «прийнятні», так і «неприйнятні» класи еквівалентності.
Таблиця прийняття рішень (Decision tables)
Таблиця прийняття рішень за стандартом ISTQB – метод проєктування тестів шляхом «чорної скриньки», в якому тестові приклади призначені для виконання комбінацій вхідних даних та причин, показаних у таблиці рішень.
Простими словами, така таблиця наочно показує взаємозалежності умов та операцій у вимогах і при спільному виконанні, що призводять до конкретного результату.
Таблиця прийняття рішення для аналізу проблеми з прінтером
Таблиця прийняття рішень (Decision tables). Практика
Завдання: скласти таблицю прийняття рішень для самокерованого автомобіля для проходження світлофору.
Приклад таблиці для розв'язання задачі зі світлофором:
Test Design. На основі структури
• Тестування операторів (Statement testing)
• Тестування умов (Condition testing)
• Тестування рішень/гілок (Decision/branch testing)
Тестування операторів (Statement testing)
Statement Testing (Тестування операторів) – це коли тестові скрипти розробляються для виконання виразів коду, а покриття – це міра підрахунку рядків коду, пройдених тестовим скриптом.
Condition Testing (Тестування умов) – включає перевірку окремих умов для обох результатів – TRUE та FALSE. Таким чином, для отримання 100-відсоткового охоплення умов необхідно виконати кожну умову як для ІСТИНИХ, так і для ХИБНИХ результатів.
Decision testing/branch testing (Тестування рішень/гілок) – це вже більш високий рівень, який охоплює всі типи ієрархій (if-else, switch операторів, виклики методів). Вимірює відсоток точок рішень, виконуються в розрахунку від загальної кількості умов у програмі.
Властивості якісних тестів
Рекомендації написання тестів
Описуйте складні кроки або області фокусу тестового прикладу:
якщо ви тестуєте пошук – будьте детальні;
якщо ви використовуєте пошук, щоб отримати продукт, який ви збираєтеся тестувати, напишіть 1-м рядком;
пропускайте деталі простих або часто використовуваних кроків;
вкажіть приклади/умови/готові запити тестових даних, якщо для їх пошуку потрібні додаткові знання/дії;
пам'ятайте про всіх, хто користуватиметься вашими тестами – користувачі/команда автоматизації/нові члени команди - для них може мати сенс додати додаткові деталі.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Техніки тест-дизайну. Частина 1
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
1. Напишіть чек-лист тестування короткострокової події.
Інтернет-магазин робить промоакцію – протягом одного робочого дня з 8 ранку і до 22 вечора на
сайті мають бути знижки на різні категорії товарів у різний час:
•До 12:00 на взуття, з 12:00 і до 18:00 на курточки, а з 18:00 до 22:00 – на штани.
•Знижка на взуття 15%, на штани - 10%, а на куртки - 30%.
1. Створіть таблицю рішень для тестування системи продажів у кінотеатрі, згідно з нею на фільми діє знижка у таких випадках:
•Ранкова сесія в будь-який день – 15%
•Усі сеанси у глядацький день – 30%
•Пільгові категорії відвідувачів (студенти, пенсіонери, інваліди) за умови надання довідок – 30%
•Знижки підсумовуються, за виключенням знижки у глядацький день