Ответ
Парадокс Монти Холла — это вероятностная задача, наглядно демонстрирующая, как интуитивные представления о вероятности могут быть ошибочными. В контексте QA она иллюстрирует важность понимания теории вероятностей для анализа рисков и результатов тестирования.
Суть парадокса:
- Есть 3 двери, за одной — приз (баг), за двумя — козы (рабочая функциональность).
- Тестировщик выбирает дверь (гипотезу о месте бага).
- Ведущий (система, логи), зная где приз, открывает одну из оставшихся дверей с козой (показывает, что в одном из модулей бага точно нет).
- У тестировщика есть выбор: стоять на своем (вероятность найти баг = 1/3) или сменить дверь (вероятность = 2/3).
Связь с тестированием:
- Анализ рисков: Приоритизация областей тестирования должна учитывать априорные вероятности наличия дефектов (например, в новом или сложном модуле "приз" может быть с большей вероятностью).
- Интерпретация результатов: Если один тест не нашел баг ("открыта дверь с козой"), это меняет вероятность его наличия в оставшихся непроверенных компонентах.
- Статистические методы: Понимание таких парадоксов важно для A/B-тестирования, анализа результатов автоматических проверок и оценки покрытия.
Простой код для симуляции (Python):
import random
def simulate_monty_hall(trials=10000, switch=True):
wins = 0
for _ in range(trials):
doors = ['goat', 'goat', 'car']
random.shuffle(doors)
initial_choice = random.randint(0, 2)
# Ведущий открывает дверь с козой
host_choice = random.choice([i for i in range(3) if i != initial_choice and doors[i] == 'goat'])
if switch:
# Игрок меняет выбор на оставшуюся закрытую дверь
final_choice = [i for i in range(3) if i not in (initial_choice, host_choice)][0]
else:
final_choice = initial_choice
if doors[final_choice] == 'car':
wins += 1
return wins / trials
print(f"Вероятность при смене выбора: {simulate_monty_hall(switch=True):.2%}")
print(f"Вероятность без смены: {simulate_monty_hall(switch=False):.2%}")