Что пишут в блогах

Подписаться

Онлайн-тренинги

Конференции

Что пишут в блогах (EN)

Разделы портала

Про инструменты

.
Ретроспективные уроки исследовательского тестирования: что такое тестирование?
05.06.2019 00:00

Автор: Виктор Славчев (Viktor Slavchev)
Оригинал статьи: https://mrslavchev.com/2018/09/25/hindsight-lessons-about-exploration-what-is-testing/
Перевод: Ольга Алифанова.

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

Зачем это нужно? Мне кажется, что я посылаю некоторым людям смешанные сигналы – мне пришлось отклонить ряд запросов на консультации по автоматизации, потому что люди решили, что я эксперт в этой сфере. Мне очень льстит быть так высоко оцененным, но положа руку на сердце, я не могу претендовать на эту честь. Я любитель-самоучка, у которого достаточно смелости на то, чтобы иметь мнение, и есть блог, где этим мнением можно поделиться. Что касается уровня моих навыков, я считаю, что они находятся на необходимом минимуме. В любом случае, я не разделяю взгляд на автоматизацию, сконцентрированный на инструментарии, и полагаю, что большая часть проблем, связанных с автотестами, в том, что люди недостаточно хорошо понимают тестирование. Ретроспективные уроки автоматизации отклонились от моей первоначальной цели – создания отсутствующего звена между тестированием и автоматизацией, слишком отойдя к технической стороне автотестов. Если основной задачей цикла была демонстрация, что имеет смысл автоматизировать для помощи тестированию, необходим еще один цикл, показывающий, что наиболее важно с точки зрения тестировщика, и что автоматизаторы должны знать о целях и сути экспертного тестирования.

Я решил, что этот цикл будет называться "Ретроспективные уроки исследовательского тестирования". Он также будет полезен тем, кого интересует исследовательская часть тестирования, и кто устал от просьб строго следовать сценариям, хотя толка от этого немного.

Почему исследование, а не исследовательское тестирование?

Я преподаю исследовательское тестирование почти два года, и вижу, как люди рассматривают его как нечто иное, хипстерское, как какой-то модный способ проводить "ручное тестирование". Это проблема. Я не могу с этим работать. Любое добавление прилагательного к слову "тестирование" заставляет его звучать как нечто совершенно иное, новое, особенное, отличающееся от "обычного" тестирования. Это неверно – тестирование есть тестирование. К нему есть смысл добавлять прилагательные, когда мы описываем различные типы парафункционального тестирования – к примеру, тестирование производительности, безопасности, удобства использования. Все это тест-деятельность со специфическим фокусом. Когда мы говорим об исследовании, то мы ведем речь о ключевом аспекте тестирования, о том, без чего оно не может обойтись. Иными словами, без исследования нет тестирования, и использование термина "исследовательское тестирование" похоже на "мясной стейк".

Исследование – неотъемлемая часть тестирования, которая зачастую опускается – или же люди делают вид, что его можно заменить или обойти его, следуя строго определенным сценариям или формализованной документации. Цель этого цикла статей – доказать, что это не так.

Избавляемся от словесного мусора

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

В норме на этом этапе люди начинают спорить, что

  1. Неважно, какими определениями мы пользуемся, это "ловля блох".
  2. Вы неправы – вы пытаетесь переосмыслить термины и изобрести новый словарь.
  3. Мне наплевать, что вы там себе думаете, это не соответствует моим убеждениям, поэтому я просто повторю, что вы неправы.

Проблема плохой терминологии в том, что она не описывает суть мастерства тестирования, а обращается только к одному из его аспектов – как правило, к выполнению тестов. Я сконцентрируюсь на двух определениях, которые полностью разрушают понимание тестирования.

  • Нет такого понятия, как "ручное" тестирование – памятуя, что человеческий интеллект лежит в основе тестирования, употреблять термины вроде "ручного тестирования" – это как минимум смешно.

Это не означает, что в тестировании нет ничего "ручного" – мы проделываем массу ручных задач, но это не значит, что тестирование "ручное" – это ужасное, опасное упрощение. Некоторые любят использовать термин "ручное", чтобы отличить задачи, выполненные человеком, от автоматизированных, но если вы так поступаете – пожалуйста, перестаньте.

Общее определение термина "ручное тестирование" для новичков и людей, далеких от тестироавния, звучит как дешевая некомпетентная человеческая деятельность по следованию сценариям – наследство древних времен. Если вы мне не верите, то вокруг нас, в сообществе тестировщиков миллионы примеров тому – просто послушайте, как люди говорят о том, ручные они тестировщики или автоматизаторы, или как перейти из одной категории в другую, чтобы стать эффективнее. Если вас интересует моя позиция по этому вопросу – с ней можно ознакомиться здесь.

  • Аналогично, нет автоматизированного тестирования – если точнее, мы не автоматизируем тестирование. Мы автоматизируем задачи, которые являются частью тестирования, все так – есть также термины "автоматизированные проверки" или "автоматизация в тестировании", и они имеют смысл, но мы не автоматизируем процесс тестирования и его производительность от и до.

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

Знаю, что вы, скорее всего, скажете "Но Виктор, это же очевидно, твою мать!" Уверены? Сходите к руководству – мне все равно, что это за человек – и спросите его, почему автоматизация – это важно. Ставлю на то, что в 99,9% случаев вы получите ответ "потому что так мы сэкономим время и деньги, и не будем прогонять одни и те же тесты вновь и вновь вручную". Бинго! Думаете, у вас есть проблема с автоматизацией? Вот же она – на самом деле это проблема с ожиданиями определенных лиц от автоматизации и ее связи с тестированием. И это наша проблема, и наша вина в том, что кто-то так думает.

Избавляемся от мусорных концепций

Избавившись от терминологии, которая не описывает тестирование, а ограничивает его, неплохо бы определить, что же такое тестирование на самом деле.

Начиная преподавать новой группе студентов, я обычно начинаю с такого вопроса:

Вы уже имеете представление о тестировании – так что же это такое, почему мы тестируем? В чем цель тестирования?

Это также неплохой вопрос для собеседования – он хорошо выявляет, знает ли тестировщик, чем он занимается, или же просто слепо повторяет заученные определения.

Как я уже упоминал, мои студенты – новички, и они не могут вывести определение, основываясь на знаниях – они говорят о том, чему их учили, или о том, что они читали или слышали. Поэтому ответы, как правило, звучат так:

  • "Мы тестируем, чтобы найти баги"
  • "Мы тестируем для улучшения качества"
  • "Мы тестируем, чтобы найти отклонения от спецификации"
  • "Мы тестируем, чтобы убедиться, что продукт работает / Мы тестируем, чтобы убедиться, что ничего не сломано".

А также многое, многое другое. Как можно видеть, знания у начинающих тестировщиков частично основаны на плохо понятом глоссарии ISTQB, частично – на городских легендах, частично – на полном отсутствии понимания взаимоотношений тестирования и качества.

Задавая этот вопрос, я четко вижу определенный шаблон:

  • Начинающие тестировщики не в курсе, что тестирование не улучшает качество – после того, как мы нашли проблему, нужно предпринять некие действия, чтобы качество в конце концов улучшилось. Нам это очевидно, но у новичков такое понимание требует времени и ряда примеров.
  • Новички, а иногда и опытные тестировщики, не в состоянии думать о тестировании без спецификации. Каждый раз, когда я слышу "Мы тестируем, чтобы найти отклонения от спецификации", я задаю контр-вопрос – что, если спецификации нет? Молчание – их ответ. Это реальный сценарий – в реальном мире с реальными проектами, а не в глоссарии ISTQB, у людей нет спецификаций, или же она устарела, противоречит сама себе, и всем на нее давно наплевать. Что нам делать, чтобы адаптироваться к этому факту – плодить тестировщиков, паникующих, когда у них нет документации?
  • Новички думают, что тестирование – это деятельность по подвтерждению: мы тестируем, чтобы доказать, что все работает, ничего не сломано, все тесты проходят, и так далее. Другими словами, мы учим их тестировать так, как будто на дворе восьмидесятые или девяностые. Не то чтобы я тестировал в те годы, но я об этом читал – если я неправ, то готов выслушать возражения.

Проблема тут в том, что это базовые вещи для понимания искусства тестирования. Если мы изначально преподносим их неверно, или не обращаем внимания на то, что это не усвоено – мы строим дом на шатком фундаменте. Для того, чтобы это "раззнать", нужно потом затратить много сил.

Так что же такое тестирование?

Вот мое определение, на которое повлияли определения Кема Кейнера, Джеймса Баха, Майкла Болтона, Джерри Вайнберга и других экспертов, которым есть что сказать о тестировании.

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

Чтобы сделать это, мы собираем информацию из разных источников:

  • Артефакты: документация, спецификация, дизайн, коммерческие материалы.
  • Исследование: обращение к самому продукту, "допрашивание" его, сравнение ответов с нашими предположениями о нем.
  • Люди: значимые лица, которые владеют важной информацией о продукте, критериях качества или ожиданиях клиента.
  • Другие продукты: общие стандарты, продукты-конкуренты.
  • Доменный опыт и знания.
  • Индустриальный опыт и знания.
  • Здравый смысл – знаю, что это звучит смешно, но мы используем здравый смысл, чтобы принимать решения о ПО, куда чаще, чем подозреваем.
  • И многое, многое другое.

Если вы хотите взглянуть на полную картину того, что же такое тестирование – рекомендую обратиться к отличному списку источников и определений, созданному Майклом Болтоном.

Как это связано с исследованием?

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

Несколько раз мне доводилось говорить, что тестировщики – это разработчики. Каждый раз я получаю гневные комментарии и аллергические реакции, но это так! Мы не разрабатываем код, но мы разрабатываем знания, понимание, навыки и опыт в осуществлении тестирования на экспертном уровне с целью выявить новые аспекты информации о продукте. Это не прямолинейный процесс – в нем много специфичного, и для достижения мастерства требуется время и практика. Хитрость в том, что оно будет совершенно различным для различных проектов.

Иными словами, хорошее исследовательское тестирование, или просто тестирование (потому что любое тестирование исследовательское) – это очень, очень трудно. Оно требует времени, терпения, знаний, и прежде всего практики. Это то,о чем вам не расскажут сертификации, академии и продавцы инструментов – потому что трудно продать сертификат, говоря "ну вы знаете, тестировать трудно, это требует времени, знаний и практики, чтобы делать это хорошо". Куда легче сказать "пройдите наш трехдневный курс и станьте гуру тестирования!"

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

Обсудить в форуме