В каких проектах или ситуациях исследовательское тестирование неприменимо?

Ответ

Исследовательское тестирование (Exploratory Testing, ET) не следует применять, когда критически важны следующие аспекты:

  1. Строгая регламентация и аудируемость: В domains с жестким регулированием (медицина, финансы, авиация). Требуется четкая документация, traceability требований и предсказуемый план.
  2. Исходное тестирование по формальным требованиям: Когда необходимо строго проверить соответствие системы спецификациям, без отклонений.
  3. Нестабильная или плохо документированная legacy-система: Риск непредсказуемого поведения или поломки системы при импровизированных проверках слишком высок.
  4. Оценка покрытия по формальным метрикам: Когда ключевой 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 предопределённых сценариев прошли. Твоя импровизация тут — просто хуйня на постном масле, которая не вписывается в их красивые графики и отчёты.

Так что да, эта штука — мощный инструмент, но не универсальный. Как молоток. Им гвоздь забить — охуенно. Им по яйцам себе стукнуть — больно и глупо. Включай мозг, блядь, и выбирай инструмент по ситуации, а не потому что все в блогах пишут, что это круто.