База знань

White/black/grey box-тестування

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

Найвищим рівнем в ієрархії підходів до тестування буде поняття типу, яке може охоплювати відразу кілька суміжних технік тестування. Тобто, одному типу тестування може відповідати кілька його видів. Розглянемо, для початку кілька типів тестування, які відрізняються знанням внутрішнього устрою об’єкта тестування.

blackgreywhitebox

 

Black Box

Summary: Ми не знаємо, як влаштована система, що тестується.

Тестування методом «чорного ящика», також відоме як тестування, засноване на специфікації або тестування поведінки – техніка тестування, заснована на роботі виключно з зовнішніми інтерфейсами тестованої системи.

Згідно ISTQB:

тестування чорного ящика – це:

  • Тестування, як функціональне, так і нефункціональне, що не припускає знання внутрішнього устрою компонента або системи;
  • Тест-дизайн, заснований на техніці чорного ящика – процедура написання або вибору тест-кейсів на основі аналізу функціональної або нефункціональної специфікації компонента або системи без знання її внутрішнього устрою.

Чому саме «чорний ящик»? Програма, що тестується, для тестувальника – як чорний непрозорий ящик, змісту якого він не бачить. Метою цієї техніки є пошук помилок в таких категоріях:

  • – Неправильно реалізовані або відсутні функції;
  • – Помилки інтерфейсу;
  • – Помилки в структурах даних або організації доступу до зовнішніх баз даних;
  • – Помилки поведінки або недостатня продуктивності системи.

Таким чином, ми не маємо уявлення про структуру та внутрішній пристрій системи. Потрібно концентруватися на тому, що програма робить, а не на те, як вона це робить.

Приклад:

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

Оскільки це тип тестування, за визначенням він може включати інші його види. Тестування чорного ящика може бути як функціональним, так і нефункціональним. Функціональне тестування передбачає перевірку роботи функцій системи, а нефункціональне – відповідно, загальні характеристики нашої програми.

Техніка чорного ящика застосовна на всіх рівнях тестування (від модульного до прийомочного), для яких існує специфікація. Наприклад, при здійсненні системного або інтеграційного тестування, вимоги або функціональна специфікація будуть основою для написання тест-кейсів.

Техніки тест-дизайну, засновані на використання чорного ящика, включають:

  • Класи еквівалентності;
  • Аналіз граничних значень;
  • Таблиці рішень;
  • Діаграми зміни стану;
  • Тестування всіх пар.

Переваги:

  • Тестування проводиться з позиції кінцевого користувача і може допомогти виявити неточності і протиріччя в специфікації;
  • Тестувальнику немає необхідності знати мови програмування і заглиблюватися в особливості реалізації програми;
  • Тестування може проводитися фахівцями, незалежними від відділу розробки, що допомагає уникнути упередженого ставлення;
  • Можна починати писати тест-кейси, як тільки готова специфікація.

Недоліки:

  • Тестується тільки дуже обмежена кількість шляхів виконання програми;
  • Без чіткої специфікації (а це швидше реальність на багатьох проектах) досить важко скласти ефективні тест-кейси;
  • Деякі тести можуть виявитися надмірними, якщо вони вже були проведені розробником на рівні модульного тестування;

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

 

White Box

Summary: Нам відомі всі деталі реалізації програми, що тестується.

Тестування методом білого ящика (також: прозорого, відкритого, скляного ящика; засноване на коді або структурне тестування) – метод тестування програмного забезпечення, який передбачає, що внутрішня структура/пристрій/реалізація системи відомі тестувальнику. Ми вибираємо вхідні значення, грунтуючись на знанні коду, який буде їх обробляти. Точно так само ми знаємо, яким повинен бути результат цієї обробки. Знання всіх особливостей тестованої програми та її реалізації – обов’язкові для цієї техніки. Тестування білого ящика – поглиблення у код системи, за межі її зовнішніх інтерфейсів.

Згідно ISTQB:

тестування білого ящика – це:

  • Тестування, засноване на аналізі внутрішньої структури компонента або системи;
  • Тест-дизайн, заснований на техніці чорного ящика – процедура написання або вибору тест-кейсів на основі аналізу внутрішнього устрою системи або компонента.

Чому «білий ящик»? Програма, що тестується, для тестувальника – прозорий ящик, вміст якого він чудово бачить.

Приклад:

Тестувальник, який, як правило, є програмістом, вивчає реалізацію коду поля введення на веб-сторінці, визначає всі передбачені (як правильні, так і неправильні) і не передбачені користувальницькі вводи, і порівнює фактичний результат виконання програми з очікуваним. При цьому очікуваний результат визначається саме тим, як повинен працювати код програми.

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

Техніка білого ящика застосовна на різних рівнях тестування – від модульного до системного, але головним чином застосовується саме для реалізації модульного тестування компонента його автором.

Переваги:

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

Недоліки:

– Для виконання тестування білого ящика необхідно велика кількість спеціальних знань;

– При використанні автоматизації тестування на цьому рівні, підтримка тестових скриптів може виявитися достатньо накладною, якщо програма часто змінюється.

Порівняння Black Box та White Box

blackvswhitebox

 

Grey Box

Summary: Нам відомі тільки деякі особливості реалізації тестованої системи.

Тестування методом сірого ящика – метод тестування програмного забезпечення, який передбачає, комбінацію White Box і Black Box підходів. Тобто, внутрішній устрій програми нам відомо лише частково. Передбачається, наприклад, доступ до внутрішньої структури та алгоритмів роботи ПЗ для написання максимально ефективних тест-кейсів, але саме тестування проводиться за допомогою техніки чорного ящика, тобто, з позиції користувача.

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

Приклад:

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

Техніка сірого ящика може застосовуватися на різних рівнях тестування – від модульного до системного, але головним чином застосовується на інтеграційному рівні для перевірки взаємодії різних модулів програми.