четверг, 1 сентября 2011 г.

И про "эффект пестицида".

Про "эффект пестицида" говорят любят спрашивать на собеседованиях. Такой термин приведен на сайте "Лаборатории качества" в расчете зарплаты (вот тут). Но при этом, интересно, что же это такое)

Термин привнесен из сельского хозяйства Борисом Бейзером в 1983. От пестицидов погибают большинство вредителей, но те, кто выживают приобретают иммунитет. В применении к тестированию - это эффект, при котором при регулярном прогоне тестовых сценариев ошибки перестают находиться.

В статье The Pesticide Paradox: how to keep your tests relevant. Joel Montvelisky приводятся причины возникновения эффекта пестицида и что с этим делать)

Это особенность человеческого мышления - невозможность продумать все возможные сценарии, функциональность может меняться и не всегда явно, привыкаешь к тому, что все это работает. А раз оно работает - то трудно проверять с той же степенью внимательностью.

И приводятся пути решения этого вопроса - держать руку на пульсе разработки, периодически менять и  модифицировать тестовые данные и тестовые сценарии. Ну и как вариант использовать не только скриптовые методы, но и исследование методом свободного поиска.

Пожалуй да, сложно с тем, что притупляется критичность, чувство опасности  и замыливается глаз.

4 комментария:

  1. Второй совет из упомянутой статьи (Discontinue tests that are not effective) кажется подозрительным :)
    Если есть несколько тестов, которые проверяют одно и то же, то непонятно, зачем они изначально были созданы.
    Если они проверяют все же разное - то непонятно, по какому критерию выбрасывать/оставлять тесты.
    И вообще - мерять эффективность тестов количеством багов, которые они находят несколько сомнительная идея. :)

    Тесты, конечно, устаревают с течением времени, а некоторые проверки становятся и вовсе ненужными. Но это вполне покрывается первым советом (Keep track of product changes and their indirect effects in your application).

    Отсутствие найденных багов можно в некоторой степени рассматривать как сигнал и повод посмотреть на тест с прищуром. Может он и правда уже не нужен, а то и никогда не был нужен, но раньше не хватало экспертизы, чтоб это понять - всякое бывает.
    Но выбрасывать тест только по этой причине, без дополнительного анализа - я бы не рискнул.

    P.S. Перечитал еще раз оригинал - на самом деле там так и написано, что "and I start verifying its importance and weighting whether I should keep it". Но при первом прочтении как-то в глаза не бросилось ). Так что, пожалуй, не совет подозрительный, а его краткая формулировка опасная :)

    ОтветитьУдалить
  2. На мой взгляд, тут пропущен самый важный и простой в использовании метод: периодически перетасовывать тестировщиков между проектами.
    Как верно упомянуто в статье, глаз замыливается, и как бы внимателен и ответственен не был тестировщик, через какое-то время он начинает пропускать баги. А новый человек со свежим взглядом легко находит затаившиеся баги, делая исследовательское тестирование для знакомства с проектом.

    ОтветитьУдалить
  3. А может здесь дело в другом? Может здесь имеется ввиду высокоуровневый тест-кейс? Если в шагах не указана конкретика, то каждый раз тест-кейс будет выполняться с разными данными, это должно минимизировать эффект пестицида.

    ОтветитьУдалить