🥊Чому автотести не замінять тестування (та при чому тут морський бій) ⛵️
#testing #automation
Давайте на хвилину перенесемось у дитинство та згадаємо гру "морський бій" (чи battleships). Малюємо своє поле й поле суперника, розташовуємо на полі кораблі й ведемо вогонь по кораблям вашого супротивника. Не знаю як ви, а я памʼятаю таку гру (в часи коли ще не було багато компʼютерів та консолей).
👨🔬Про експеримент
В книзі "Software Testing Strategies", автори розповідають про свій експеримент. Під час майстер класів з тестування, вони ділили учасників на дві групи та пропонували їм грати в морський бій. Умови були прості. Один з учасників гри повинен грати як завжди. Іншому є учаснику треба зазделегідь продумати план гри - стратегію розміщення та ураження кораблів (наприклад хрестом, зіркою, чи ще якось). До того ж - йому треба дотримуватись обраного плану протягом усієї гри.
Автори експерименту провели декілька сотень таких ігор. Вгадайте, скільки разів виграли люди, які чітко дотримувались плану гри? (декілька разів із сотень)
🤔 Але нащо тим нам про це розповідаєш? Де тут тестування?
Кораблі на листочку паперу - то баги у софті. Як кораблі можуть мати декілька палуб - так і баги зазвичай групуються та туляться один до одного. (ефект кластеризації).
Команда, яка механічно дотримувалась плану гри - то і є автоматизовані тести. Такий стиль гри можливо й призведе до ураження корабля (знаходження багу), але не зможе перевірити наявність помилок поруч.
Команда, що грала як завжди - то і є тестування. Ця команда аналізувала нові дані після кожного пострілу - та переглядала свою стратегію гри відповідно.
До того ж - люди, які ніколи грали в морський бій, так чи інакше вчаться застосовувати "дослідницький" підхід до гри (навіть неусвідомлено!)
💡 Висновки
- Автотести виконують тільки те, що ви запрограмували їх робити. Не більше, не менше.
- Тестування все-таки "... процес оцінки продукту шляхом його вивчення через досвід, експерименти та наявні знання" (М. Болтон).
- Тестування, окрім перевірки очікуваних результатів, завжди містить прихований очікуваний результат: "і нічого іншого дивного не сталося".
Post #659
1.83K
- 👍 29
- 🔥 16
- ❤ 3
- 🥱 2