Subject:

Гибкое vs Формальное тестирование: успех не определяется инструментом!

Issue ID #042 

Reported at 19.09.2011

Reported byNatalya Rukol

Сегодня я была свидетелем дискуссии, которую почти можно назвать спором. Дискуссия была приблизительно следующего содержания:

Сторона А: тестирование должно быть измеримым, прогнозируемым, планируемым, оцениваемым. Для этого нужны тест-кейсы, метрики, формализация процесса. Без этого тестирование — мартышкин труд.
Сторона Б: тестирование должно быть гибким. Тест-кейсы и метрики приводят лишь к бюрократизации, тестировщики по кейсам как раз занимаются мартышечьим трудом, а в свободном плавании мы занимаемся творчеством!

Сразу оговорюсь, что я сохраняла нейтралитет несмотря на все попытки меня втянуть. При этом участники спора были достаточно опытными тест-лидами, и у каждого в работе всё действительно хорошо. Почему так?

Да потому что оба подхода имеют полное право на существование! Потому что нет «хорошего» или «правильного» тестирования. Ну как вы сделаете формальный процесс тестирования в стартапе или крохотной компании, работающей вообще без требований? Или как вы будете тестировать гибкими подходами ядерные боеголовки или софт по госзаказу?

1. Выбранный подход должен соответствовать вашим условиям.
Забудьте это слово «правильно», оно почти всегда ведёт к неподходящим решениям. Слово «правильно» создаётся на основании единичного опыта. Один раз сработало — значит, так и правильно! Многие сотрудники очень сильно грешат этим на втором месте работы: «У нас было по-другому, значит у вас неправильно». Нет-нет, всё, выбрасываем эти слова из своего лексикона! Вместо них должно быть: «соответствует условиям», «подходит в нашем случае» и т.д. Учимся анализировать условия и выбирать то, что будет наиболее подходящим именно у вас!

2. Выбранный подход должен приводить к вашим целям.
Какие они у вас? Какова Ваша Цель? Знаете её? Думайте над инструментами. Не знаете, но хотите что-то сделать правильно? Ну как??? Как вы можете приготовить вкусный ужин на заказ, если не знаете, что готовить? К примеру, ваша цель — порадовать кого-то вкусняшкой. Вы гуглите «самый классный рецепт», находите пирог с брокколи и делаете его. Он вроде бы как «правильный» — но человек, которого вы хотели порадовать этим пирогом, больше всего на свете ненавидит брокколи. Увы! Сначала узнайте: кому, для чего, что нужно, а уже потом продумывайте рецепты.

3. Измеримость, планируемость, прогнозируемость != тесты, метрики, формальности, бумажки, бюрократия.
Тест-анализ, тест-планы, отчётность в майнд-мепах? Метрики автоматизированы? Циферки ни на что не влияют, только являются информацией для рассмотрения? Это правильный подход! Иногда нужно комбинировать некомбинируемое.

  • Гибкий формальный подход с детальной отчётностью? Без проблем, адаптивные тестовые наборы.
  • Измеримость и планируемость в гибком подходе без тестов? Без проблем, сессионное тестирование.
  • Отбой рутине и часто изменяемый продукт? Без проблем, автоматизация исследовательского тестирования.

Решения находятся легче и проще, когда мы исходим из целей, а не из инструментов. Сами по себе инструменты и решения не могут быть ни правильными, ни хорошими. Зато они могут привести вас к отличным результатам — а могут навредить.

  • Lexx

    Наташа, здравствуйте!

    Спасибо за заметку, со всем согласна, но как это сделать? Как понять, что подходит? И как выбрать подходящий инструмент и подход, если не работал с ними до этого?

    • Аноним

      Здравствуйте!

      1) Как понять, что подходит: думать :) Отталкиваться от целей. С ними не просто, но в итоге всё получится. Выясняйте, !НЕ ДОДУМЫВАЙТЕ!, а уже под цели ищите инструменты.
      2) Откуда взять инструменты: читать книги, статьи, ходить на тренинги, конференции. Как говорил Маслоу «Если у вас есть только один молоток, то любая проблема покажется вам гвоздём». Так и здесь: чем больше инструментов на выбор, тем выше вариативность, тем более подходящее решение можно выбрать. Как выбирать подход, мы очень активно на вот этом тренинге обсуждаем: http://natalyarukol.ru/planirovanie-i-proektirovanie-testov/ Надеюсь, помогает :)

  • Сирожа

    Я думаю для начала надо поганой метлой погонять тех, кто заявляет что гибкие методологии это когда нет никакой документации. Тот же exploratory testing отсутствия тестовой документации по классикам совсем не подразумевает.

  • Сирожа

    Я думаю для начала надо поганой метлой погонять тех, кто заявляет что гибкие методологии это когда нет никакой документации. Тот же exploratory testing отсутствия тестовой документации по классикам совсем не подразумевает.

  • Elena Pervaya

    Читала заметку и споткнулась о фразу: «Без проблем, автоматизация исследовательского тестирования» — это как? :) Искусственный интеллект быстренько изобретаем? О-)

    • http://natalyarukol.ru Natalya Rukol

      Ну почти :) Искусственный интеллект может освоить любое новое ПО, а нам достаточно тестирования в рамках одного продукта, то есть в рамках его модели.

      Можно подробнее погуглить по model-based testing :)

      • Elena Pervaya

        Кхм… Может я непонятно выразилась, поэтому сформулирую ещё раз: как исследовательское тестирование может быть автоматизированным?

        Исследовательское тестирование по определению — процесс, предполагающий мышление, обучение и свободную волю. Разве автоматические скрипты на это способны? По-моему, нет. И говорить про автоматизацию исследовательского тестирования как-то странно…

        Если, конечно, не имеется в виду использование каких-то автоматических средств только как вспомогательных инструментов при человеческом (в любом случае!) исследовательском тестировании… Но, полагаю, называться это будет как-то по-другому.

        • http://natalyarukol.ru Natalya Rukol

          В чём суть исследовательского тестирования? В том, что мы заранее не знаем точно, что именно будем проверять. Каждая последующая проверка зависит от результатов предыдущей. При этом, мы никогда не работаем с софтом, не имея в голове какого-либо представления о том, как он должен работать, то есть модели. А уже определив модель, мы отправляемся в свободное плавание.

          В этом плане, модел-бейсд тестинг — автоматизированная альтернатива исследовательскому тестированию.

          Так что, может, это я не понятно выразилась :)

          • Elena Pervaya

            Ну значит я чего-то не понимаю %)
            В чём же альтернативность? разве model based — это не просто техника дизайна тест кейсов? Ну будут они генериться автоматически на основании какой угодно модели — и что? Что тут исследовательского? О-)

          • http://natalyarukol.ru Natalya Rukol

            Ну… Вы точно погуглили про Model-based? :)

            Чтобы говорить на одном языке: что Вы называете исследовательским тестированием?

          • Elena Pervaya

            ну… я точно погуглила по model based :) Может конечно что-то не так поняла, но в общих чертах: описываем модель и на её основании генерим (можно автоматически при наличии соответствующих инструментов) функциональные тесты. В чём ошибаюсь? О-)

            Насчёт того, что я понимаю под исследовательским тестированием, то вряд ли у меня какое-то очень специфическое понимание. Ведь нет смысла приводить определения Канера или Баха? Но если что — мне нравятся их определения :) Но, наверное, основное, что касается моего понимания исследовательского тестирования, это то — что это подход. Не техника, не вид тестирования или что-то подобное, а подход. При этом, занимаясь исследовательским тестированием, можно применять какие угодно техники для того, чтобы генерить тесты. Как генерить тесты — это вопрос техник; когда, зачем и почему — это вопрос подхода.

            Поэтому я и не понимаю: в model-based тестировании мы описываем модель, на её основании могут генериться функциональные, высокоуровневые тесты, они хорошо покроют требуемую функциональность, описанную моделью. Я бы сказала, что это техника.

            Ну, её можно применять при исследовательском подходе. Хорошо, сгенерили тесты. Выполнили их. Посмотрели на результаты, что-то поняли. Решили, что нам нужно, исходя из полученных знаний, определили, куда двигаться дальше… Это я в общих чертах описываю исследовательский подход :) А model-based тестирование при этом для меня заключено в словах «сгенерили тесты». И под этими словами может скрываться любая техника.

            Так в чём же альтернативность? :)

          • http://natalyarukol.ru Natalya Rukol

            Вот я и потестила вложенность комментариев в блоге :) получается ужасно :(

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

            Про описание исследовательского я не просто так спросила, в ответ буковок много, но я всё равно не поняла ничего. Вы что исследовательским называете? Конкретно, с точки зрения действий, процесса?

          • Elena Pervaya

            Я, право же, немного в замешательстве… Вроде ж, описала. Ну ещё раз меньшим количеством буковок: выполнили тест, посмотрели на результаты его выполнения, получили какую-то информацию, на основании этого (!) придумали следующий тест, выполнили его… ну и т.д.

            Если опять не так, то давайе пойдём другим путём — опишите ваше понимание, а я уж от этого оттолкнусь и опишу, что в моём понимании такне так.

          • http://natalyarukol.ru Natalya Rukol

            Нет-нет, теперь меня вполне устраивает ответ!

            В общем, model-based позволяет именно это: тесты на основе предыдущих проверок. Просто мы это делаем на основе мыслительных моделей «если здесь что-то не работает — значит, нужно пойти вот сюда», а для модел-бейсд фреймворка нам надо это описать в модели. Потому что он всё-таки не ИИ :)

          • Elena Pervaya

            Проблема в том, что мы не можем заранее знать всех «если-то». И их все просто нельзя заранее описать в модели. В модель можно заложить требования. В модели можно предусмотреть какие-то правила, на основании которых для сгенерённого скрипта будет приниматься решение о его прохождении или непрохождении. Но сколь бы ни была детально выписана модель, она всё равно не сможет самообучаться и самоизменяться на основании того, как именно какие тесты будут выполняться. А разве сможет модель сама определить, что в ней самой закрались ошибки?..

            Я тут продолжаю гуглить про model-based и продолжаю видеть всё то же — это возможность генерить тесты, пусть много и всеохватывающе — но в рамках описанной модели. В модель не вкладывается искусственный интеллект, чтобы решать, как на основании результатов выполнения одного теста сгенерить другой тест.

            И, кстати, везде пишут про пересмотр модели и при необходимости её изменение. Она не делает это сама, это делает человек разумный, который на основании результата прогона скриптов принимает те или иные решения, что с этой моделью делать дальше.

            Model-based тестирование — это не исследование и не альтернатива его, это просто генерирование/выполнение скриптов по заранее предопределённым правилам, пусть эти правила и шибко умные.

          • Сирожа

            Мы просто доопределяем/переопределяем модель и не паримся. Все еще автоматизированное исследовательское тестирование.

            А миф о том что автоматизированное тестирование это когда мы заменили роботами человеков это вредный миф. В силу ряда причин это невозможно.

            Параграф 1 + параграф 2 = Наталья немного лукавит, когда говорит что model-based тестирование это автоматизация исследовательского тестирования. Просто потому что практически любая автоматизация не привязанная к жесткому описанию действий может таковой являться.

  • Elena Pervaya

    Сирожа (простите, отвечаю новым комментом, т.к. тянуть исходную цепочку неразумно из-за нечитабельности),

    взгляните выше, я писала: «Если, конечно, не имеется в виду использование каких-то автоматических средств только как вспомогательных инструментов при человеческом (в любом случае!) исследовательском тестировании». Если вы скажете «автоматизированное исследовательское тестирование», имея в виду, что в качестве вспомогательных средств используются какие-то средства автоматизации — да пожалуйста. Но если говорится (как у Натальи в исходной заметке) про «автоматизацию исследовательского тестирования», подразумевая, что можно автоматизировать само изучение, изменение, адаптацию и подобный разумный процесс — то с этим я не согласна.

    Суть исследовательского тестирования не в том, что мы не знаем заранее, какие тесты будем выполнять — при такой трактовке любой хаос можно назвать исследовательским тестированием. Суть исследовательского тестирования в том, что выполняя какие-то тесты, мы получаем информацию, чему-то учимся, что-то анализируем, и на основании уже всего этого строим новые тесты, исходя из полученных знаний и обновлённого представления о текущих потребностях. Это — разумный процесс, который автоматизации не подлежит (я так поняла, вы сами с этим согласны). Часть его — «строим новые тесты» — автоматизируйте на здоровье. Но не называйте это автоматизацией исследовательского тестирования. Это просто инструмент, используемый в процессе.

  • Pingback: FF14 RMT

  • Pingback: "webbsida"

  • Pingback: boom beach diamond cheat

Social Widgets powered by AB-WebLog.com.