Що ж таке «Ad-hoc testing», тобто «Вільне або Інтуїтивне тестування». Часто його плутають з іншим видом тестування «Exploratory testing» – «Дослідницьке тестування».
Різниця між дослідницьким і Ad-hoc тестуванням
Вільне тестування (ad-hoc testing) – це вид тестування, який виконується без підготовки до тестування продукту, без визначення очікуваних результатів, проєктування тестових сценаріїв. Це неформальне, імпровізаційне тестування. Воно не вимагає ніякої документації, планування, процесів, яких слід дотримуватися при тестуванні. Такий спосіб тестування в більшості випадків дає більшу кількість заведених звітів про помилку. Це обумовлено тим, що тестувальник на перших кроках приступає до тестування основної функціональної частини продукту і виконує як позитивні, так і негативні варіанти можливих сценаріїв.
Найчастіше таке тестування виконується, коли власник товару не володіє конкретними цілями, проєктною документацією та раніше поставленими завданнями. При цьому тестувальник покладається на своє загальне уявлення про продукт, порівняння зі схожими продуктами, власний досвід. Однак при тестуванні ad-hoc, важливо володіти загальною інформацією про продукт, особливо якщо проєкт дуже складний і великий. Тому потрібно гарне уявлення про цілі проєкту, його призначення та основні функції і можливості. А далі вже можна починати ad-hoc тестування.
Види вільного тестування (ad-hoc testing):
- Buddy testing – процес, коли 2 людини, як правило розробник і тестувальник, працюють паралельно і знаходять дефекти в одному і тому ж модулі продукту, що тестується. Такий вид тестування допомагає тестувальнику виконувати необхідні перевірки, а розробнику виправляти безліч дефектів на ранніх етапах.
- Pair testing – процес, коли 2 тестувальника перевіряють один модуль і допомагають один одному. Наприклад, один може шукати дефекти, а другий їх документувати. Таким чином, у одного тестера буде функція, скажімо так, дослідника, в іншого – дописувача.
- Monkey testing – довільне тестування продукту з метою якомога швидше, використовуючи різні варіації вхідних даних, порушити роботу програми або викликати її зупинку (простими словами – зламати).
Відмінності між Buddy testing і Pair testing:
- Buddy testing (Спільне тестування) – це поєднання модульного тестування і системного тестування між розробником і тестувальником.
- Pair testing (Парне тестування) – виконується тільки тестувальниками з різним рівнем знань і досвіду (таке поєднання допоможе поділитися поглядами та ідеями).
Основні переваги ad-hoc testing:
- немає необхідності витрачати час на підготовку документації;
- найважливіші дефекти найчастіше виявляються на ранніх етапах;
- часто застосовується, коли беруть нового співробітника. За допомогою цього методу, людина засвоює за 3 дні те, що, розбираючись з тестовими випадками, розбирав би тиждень – це називається форсоване навчання нових співробітників;
- можливість знайти складно відтворювані та важковловимі дефекти, які неможливо було б знайти, використовуючи стандартні сценарії перевірок.
Приклад вільного тестування (Ad-hoc testing):
Ми часто використовуємо Ad-hoc тестування в нашому житті, візьмемо, наприклад, звичайний похід до супермаркету.
Після входу в супермаркет відразу на вході ви можете знайти кошик/візок для продуктів, але якщо його не опиниться в звичному для нас місці – це можна буде вважати багом. Вибираючи молоко зверніть увагу на термін придатності і, якщо молоко виявиться простроченим, знову ж таки це буде баг. Так само і з іншими продуктами. І, якщо в кінцевому підсумку, при оплаті покупок на касі, пляшка вина, на якій був цінник 100, виявиться ціною в 200, це також буде багом.
Якщо нам потрібно провести ad-hoc тестування інтернет-магазину, то цей короткий список може допомогти з тим, що потрібно перевірити:
- всі можливості сайту доступні без реєстрації;
- коректність відображення анімацій і картинок;
- всі можливості сайту доступні після реєстрації;
- процес реєстрації;
- процес додавання/видалення з кошика;
- процес оплати покупок;
- зручність в користуванні для новачків, простота, підказки, допомога.
Також варто відзначити, що ad-hoc тестування часто є улюбленим видом тестування для тестувальників, де можна проявити всі свої знання і виконати найважче передбачувані сценарії, тобто надається можливість чистої імпровізації.
Способи підвищення ефективності Ad-hoc тестування:
- Приготування. Проаналізувати дефекти в схожих додатках, відповідно посиливши ймовірність виявлення подібних дефектів в тестованому додатку.
- Формування чернетки. Це не повинен бути детальний план тестування, а начерки, з чого почати і які проблеми шукати.
- Тестування сесіями. Тестувати різний функціонал продукту по черзі, тобто не все відразу. Це допомагає краще сфокусуватися і зрозуміти проблеми.
- Приділяти увагу цільовим областям. В першу чергу перевірити ті області, які не покриті тест-дизайном і тестовою документацією.
- Використання різних допоміжних програм. Деякі дефекти можна виявити, використовуючи дебаггери, профайлери і моніторинги. Знання таких утиліт допомагає в тестуванні.
- Записувати результати тестування. Записи того, які баги були знайдені, в яких частинах додатка їх більше та ін. Це може допомогти як розробникам, так і тестувальникам наступних версій програми. Також можна записати те, що не працювало, тому що аналітикам може бути корисно побачити, що працювало добре.
Дослідницьке тестування (Exploratory testing)
Дослідницьке тестування (exploratory testing) – це одночасне вивчення програмного продукту, проєктування тестів і їх виконання. Це неформальний метод проєктування тестів, при якому тестувальник активно контролює проєктування тестів в той час, як ці тести виконуються, і використовує отриману під час тестування інформацію для проєктування нових тестів.
Якщо кожен наступний тест, який виконує тестувальник, вибирається за результатами попереднього тесту, це означає, що ми використовуємо дослідницьке тестування.
Головне, що потрібно пам'ятати про дослідницьке тестування, це те, що саме по собі воно не є методикою тестування. Це, скоріше, підхід, який можна застосувати до будь-якого виду тестування. Ще один важливий момент полягає в тому, що дослідницьке тестування – це не тільки виконання тестів. Тестувальники можуть застосовувати дослідницький підхід і при розробці нових тестів на початку ітерації, і при аналізі вже завершених тестів. Також, дослідницьке тестування не повинно виконуватися недбало, в поспіху і без підготовки. Дослідницький підхід може вимагати дуже ретельної і тривалої підготовки до певних тестів, а накопичені за багато років знання і вміння тестувальника, що застосовує даний підхід, – це часто невидима, але важлива форма підготовки. Дослідницьке тестування може проводитися вручну, а може здійснюватися з широким застосуванням засобів автоматизації, тобто будь-яких допоміжних інструментів тестування.
Плюси і мінуси дослідницького тестування
Переваги:
- найчастіше використовується, коли необхідна документація недоступна або доступна лише частково;
- передбачає процес дослідження, який допомагає знайти більше помилок, ніж звичайне тестування;
- часто знаходяться помилки, які зазвичай пропускаються, при використанні інших методів тестування;
- допомагає розширити уяву тестувальників, виконуючи все більше і більше тестів, що, зрештою підвищує продуктивність;
- детально охоплює найменшу частину програми й охоплює всі вимоги;
- охоплює всі типи тестування та охоплює різні сценарії та випадки;
- заохочує креативність та інтуїцію;
- генерація нових ідей під час виконання тесту.
Недоліки:
- повністю залежить від навичок тестувальника;
- обмежений предметними знаннями тестувальника;
- не підходить для тривалого виконання.
Коли слід застосовувати дослідницьке тестування?
Найпоширеніші випадки:
- коли потрібно забезпечити швидкий зворотний зв'язок для нового продукту або нової функціональності продукту;
- коли потрібно швидко ознайомитися з продуктом;
- коли вже були проведені основні види тестування і час дозволяє урізноманітнити методи тестування;
- коли потрібно знайти дефект, локалізований в певному модулі в найкоротші терміни;
- коли перевіряється робота іншого фахівця з тестування;
- коли потрібно вивчити стан конкретного ризику для прийняття рішення про необхідність покриття конкретної області тестами.
Висновок
Описані вище методи тестування мають ґрунтовні подібності та відмінності, тому варто розділяти ці дві популярні методики в рамках тестування. Різниця між ad-hoc і exploratory testing в тому, що теоретично, ad-hoc може провести будь-хто, а для проведення exploratory необхідно майстерність і володіння певними техніками. При цьому, певні техніки – це не тільки техніки тестування.
Обидва методи часто використовуються в проєктах, а також є невід'ємною частиною знань і досвіду сучасного тестувальника програмного забезпечення.