Ответ
Исследовательское тестирование (Exploratory Testing, ET) не следует применять, когда критически важны следующие аспекты:
- Строгая регламентация и аудируемость: В domains с жестким регулированием (медицина, финансы, авиация). Требуется четкая документация, traceability требований и предсказуемый план.
- Исходное тестирование по формальным требованиям: Когда необходимо строго проверить соответствие системы спецификациям, без отклонений.
- Нестабильная или плохо документированная legacy-система: Риск непредсказуемого поведения или поломки системы при импровизированных проверках слишком высок.
- Оценка покрытия по формальным метрикам: Когда ключевой KPI — это процент выполненных предопределенных тест-кейсов.
Пример регламентированного модуля (банковские расчеты):
# Требуется точное соответствие бизнес-логике и нормам.
def calculate_tax(income, year):
# Жестко заданные налоговые ставки и правила
brackets = {2023: [(10000, 0.1), (40000, 0.2), (None, 0.4)]}
tax = 0
remaining_income = income
for limit, rate in brackets[year]:
if limit is None or remaining_income <= limit:
tax += remaining_income * rate
break
else:
tax += limit * rate
remaining_income -= limit
return tax
# Здесь нужны детальные, заранее рассчитанные тест-кейсы, а не импровизация.
В таких случаях ET может использоваться лишь как дополнение к формальным методам.
Ответ 18+ 🔞
А, слушай, вот эта ваша модная хуйня — исследовательское тестирование, когда ты как обезьяна с гранатой носишься по системе и думаешь, что вот сейчас найду баг, потому что я такой креативный, блядь.
Так вот, запомни раз и навсегда: есть ситуации, где эта твоя креативность накроется медным тазом, и хорошо, если не потянет за собой тебя, проект и начальника, которому ты потом будешь объяснять, почему система для расчёта пенсий гоняет нахуй все данные.
Первое — там, где всё зарегламентировано до нельзя. Финансы, медицина, авиация. Тут, блядь, не до твоих художественных экспериментов. Тут нужен каждый шаг, каждый чих на бумаге, чтобы потом какой-нибудь аудитор не пришёл и не спросил: «А это вы, сука, как проверяли? По наитию, как Муму на дно?». Traceability, блядь, называется. След должен быть от требования до теста, а не «ой, я тут кнопочку потыкал и вроде норм».
Второе — когда тебе чётко сказали: «Вот спецификация, вот как должно работать». И твоя задача — не придумывать, как ещё может сломаться эта штука, а проверить, что она РОВНО ТАК и работает. Это как с тем самым налоговым калькулятором:
def calculate_tax(income, year):
brackets = {2023: [(10000, 0.1), (40000, 0.2), (None, 0.4)]}
tax = 0
remaining_income = income
for limit, rate in brackets[year]:
if limit is None or remaining_income <= limit:
tax += remaining_income * rate
break
else:
tax += limit * rate
remaining_income -= limit
return tax
Тут, ёпта, не место для импровизации. Тут нужно взять цифры из приказа Минфина, посчитать на калькуляторе и убедиться, что софтина плюёт ровно ту же сумму. А не начинать: «А что если ввести отрицательный доход? А что если год — 3000 до н.э.?». Это не исследование, это — долбоёбство.
Третье — легаси-система, которая держится на скотче, молитвах и одном знающем дедушке, который уже на пенсии. Ты в неё ткнёшь пальцем в неправильном месте, и она, сука, сложится как карточный домик. А потом все будут бегать и орать: «Кто, блядь, трогал продакшн?». Исследовательское тестирование в такой системе — это как играть в сапёра на минном поле, будучи слепым и пьяным. Результат предсказуем, и он пиздецовый.
Ну и четвёртое — когда главный KPI начальства — это «100% выполненных тест-кейсов». Им похуй, что ты нашёл десять багов своим «исследованием». Им нужна галочка, что все 250 предопределённых сценариев прошли. Твоя импровизация тут — просто хуйня на постном масле, которая не вписывается в их красивые графики и отчёты.
Так что да, эта штука — мощный инструмент, но не универсальный. Как молоток. Им гвоздь забить — охуенно. Им по яйцам себе стукнуть — больно и глупо. Включай мозг, блядь, и выбирай инструмент по ситуации, а не потому что все в блогах пишут, что это круто.