Что, если я скажу, что, несмотря на все ваши усилия, ваш мозг может саботировать ваш подход к тестированию? Верите или нет, но когнитивные искажения влияют на процесс тестирования с самого начала.
Большинство тестировщиков, которых я знаю, стараются быть объективными. Мы расставляем приоритеты в тестировании по степени бизнес-риска и частоте выполнения, создаём автоматизированные тесты, основываясь на обоснованных критериях, пишем баг-репорты по мере обнаружения ошибок и уделяем одинаковое внимание каждому тест-кейсу, который выполняем. По крайней мере, нам так кажется — но наше восприятие может нас обманывать.
Наш разум устроен непросто: он подвержен множеству когнитивных ловушек, о которых мы даже не догадываемся.
Когнитивные искажения влияют в том числе на то, как вы проводите тестирование, формируя ваш подход к работе и, возможно, сказываясь на качестве конечного продукта. Понимание этих искажений играет ключевую роль в совершенствовании методик тестирования и повышении надёжности программного обеспечения.
Личный опыт
На написание этой статьи меня натолкнула встреча с другом и бывшим коллегой на одной конференции. Мы вспоминали старые добрые времена и рассказывали друг другу истории из начала нашей карьеры, давно стёртые из памяти.
Одна из таких историй касалась одного нашего коллеги, который умудрился отправить не одну, не две, а двенадцать реальных кредитных карт реальному человеку по реальному адресу — из тестовой среды финансовой организации, в которой мы тогда работали.
За это его, конечно, сильно отчитали, и мы до сих пор обсуждаем этот случай. Но что по-настоящему засело у меня в памяти, так это то, что ему удалось отправить их так много! Где-то на этом пути кто-то должен был заметить, что что-то идёт не так.
Карты нужно было напечатать, положить в конверты и отправить… но даже до этого момента тестовая и продуктивная системы не выглядели одинаково. Он был настолько сосредоточен на ошибке в отображении данных заявителя, что не замечал других нюансов.
Тест продолжал фейлить, разработчик — настаивать, что у него всё работает (и действительно, в тестовой системе всё было нормально), а коллега продолжал упорно тестировать.
Вернувшись к разговору на конференции, мой старый знакомый заметил: «Забавно, как работает наш мозг, да? Иногда мы настолько зацикливаемся на чём-то одном, что не видим очевидного».
Чем больше я об этом думал, тем сильнее мне хотелось понять, почему так происходит.
Влияние когнитивных искажений на процесс тестирования
К сожалению, миллионы лет эволюции не подготовили нас к такой деятельности, как тестирование. Оказывается, когнитивные искажения, которые помогли нашему виду выжить и эволюционировать, далеко не всегда идеальны для контроля качества.
Научный портал ScienceDirect даёт следующее определение когнитивных искажений:
«Когнитивное искажение — это систематическое отклонение от объективной реальности, возникающее из-за особенностей человеческого мышления. В настоящее время известно более 200 видов когнитивных искажений, таких как эффект подтверждения и культурное искажение, которые могут влиять на анализ информации и принятие решений в различных областях».
По сути, наш мозг развил сотни механизмов, помогающих нам жить, но при этом мешающих объективности и влияющих на способность принимать решения. Например, мы склонны отдавать предпочтение информации, которая подтверждает наши убеждения (confirmation bias, эффект подтверждения), а наш культурный опыт и личный бэкграунд формируют нашу точку зрения (cultural bias, культурное искажение).
Эти особенности мышления могут приводить к систематическим ошибкам в суждениях и принятии решений, что критически важно для тестирования программного обеспечения.
Когнитивные искажения могут сказываться на всех этапах QA: от составления тест-кейсов и написания баг-репортов до управления тестированием, восприятия рисков и оценки качества продукта. Давайте подробно рассмотрим три частых искажения и то, как можно избежать их влияния.
Эффект подтверждения
Эффект подтверждения — это склонность искать информацию, подтверждающую уже имеющиеся убеждения, и игнорировать противоречивые данные. В тестировании ПО это искажение может серьёзно сказаться на качестве и полноте тестирования. Как может проявляться:
-
Фокус на ожидаемом поведении. Тестировщики могут неосознанно разрабатывать тест-кейсы, ориентированные на ожидаемую функциональность, и упускать из виду граничные условия или нестандартные сценарии.
-
Игнорирование противоречивых данных. Если баг не вписывается в привычную модель работы системы, тестировщик может недооценить его значимость или не исследовать достаточно глубоко.
-
Субъективная интерпретация результатов. Неоднозначные результаты тестов могут трактоваться так, чтобы подтвердить изначальные предположения тестировщика о работе системы.
Представим, что тестировщик работает над новой e-commerce платформой. Опираясь на свой опыт с аналогичными системами, он исходит из предположения, что процесс оформления заказа должен работать определённым образом. Он создаёт тест-кейсы, соответствующие этому предположению, уделяя внимание типичным сценариям, таким как успешная покупка с использованием действующей кредитной карты.
Стратегии снижения эффекта подтверждения:
-
Активное тестирование гипотез. Поощряйте тестировщиков искать доказательства, которые опровергают их предположения о поведении системы.
-
Разнообразие в команде тестирования. Стоит привлекать тестировщиков с разным опытом и точками зрения, чтобы уменьшить влияние индивидуальных когнитивных искажений.
-
Структурированные методы проектирования тестов. Используйте такие техники, как анализ граничных значений и разбиение на эквивалентные классы, чтобы добиться более полного тестового покрытия, включая неожиданные сценарии.
Искажение доступности
Искажение доступности возникает, когда люди переоценивают значимость или вероятность событий на основе того, насколько легко им вспомнить связанные примеры. В тестировании ПО это может приводить к смещённым приоритетам и неполному тестовому покрытию. В чём проявляется:
-
Чрезмерное внимание к недавним проблемам. Тестировщики могут сосредоточиться на недавно обнаруженных багах или сценариях, даже если они не самые критичные или распространённые.
-
Игнорирование менее заметных сценариев. Важные, но менее очевидные или редко встречающиеся случаи могут остаться без внимания из-за сосредоточенности на более запоминающихся.
-
Субъективная оценка рисков. Тестировщики могут переоценивать вероятность недавних или заметных багов и недооценивать риски менее очевидных, но потенциально критичных ошибок.
Рассмотрим команду, разрабатывающую мобильное приложение. Недавно в продакшене возникла серьёзная проблема: у пользователей со старыми устройствами приложение постоянно вылетало. Это было стрессовым и запоминающимся событием для команды. В последующих релизах тестировщики начинают чрезмерно концентрироваться на совместимости со старыми устройствами, выделяя на это непропорционально много времени.
Эта недавняя эмоционально значимая проблема привела к смещению фокуса в тестировании, из-за чего могут быть пропущены другие важные ошибки.
Стратегии снижения эффекта доступности
-
Комплексное планирование. Разрабатывайте и поддерживайте подробный тест-план, который охватывает все аспекты программного обеспечения, а не только недавно выявленные проблемные зоны.
-
Приоритизация на основе данных. Используйте метрики и исторические данные для определения приоритетов тест-кейсов, а не полагайтесь исключительно на недавний опыт.
-
Регулярный пересмотр тестового покрытия. Периодически оценивайте распределение усилий на тестирование, чтобы обеспечить сбалансированное покрытие всех важных аспектов ПО.
Эффект якоря
Эффект якоря (или привязки) заключается в том, что человек при принятии решений чрезмерно опирается на первую полученную информацию. В тестировании ПО это может приводить к узкому фокусу и упущению возможностей для более глубокого тестирования. Как проявляется:
-
Фиксация на первоначальных ожиданиях. Тестировщики могут зацепиться за первые впечатления или предположения о том, как должна работать функция, что ограничивает их исследование альтернативных сценариев.
-
Чрезмерная зависимость от требований. Строгое следование первоначальным спецификациям может помешать тестировщикам учитывать нестандартные способы взаимодействия пользователей с программным обеспечением.
-
Сужение фокуса в исследовательском тестировании. Если начальный вектор тестирования задан неправильно, он может повлиять на всю сессию, из-за чего могут быть упущены другие важные аспекты системы.
Представим, что тестировщик анализирует баг в системе. Разработчик утверждает, что причина в определённом модуле, поскольку недавно в нём были изменения. Тестировщик, полагаясь на это предположение, фокусируется только на этом модуле, но игнорирует другие возможные причины. В итоге выясняется, что проблема была в интеграции нескольких модулей, но из-за якорного эффекта тестировщик потратил больше времени на исследование неправильного направления
Стратегии снижения эффекта якоря:
-
Структурированное исследовательское тестирование. Используйте тест-чартеры (пояснение: Краткие, но четко сформулированные цели и направления тестирования, которые используются в исследовательском тестировании. Они помогают тестировщикам сосредоточиться на конкретных аспектах тестирования без жестких сценариев) или ограниченные по времени сессии, чтобы расширить охват тестирования и выйти за рамки первоначальных предположений.
-
Привлечение разных точек зрения. Вовлекайте различных тестировщиков или заинтересованные стороны, чтобы получить свежий взгляд и поставить под сомнение устоявшиеся предположения.
-
Тестирование на основе сценариев. Разрабатывайте разнообразные пользовательские сценарии, выходящие за рамки базовых требований, чтобы выявлять потенциальные дефекты в реальных условиях использования.
Стратегии преодоления когнитивных искажений в тестировании
Итак, теперь вы знаете о некоторых когнитивных искажениях и их влиянии на тестирование. Но как с ними бороться?
К сожалению, не существует «волшебной таблетки», которая отменит вашу человеческую природу и миллионы лет эволюции. Когнитивные искажения — часть человеческой природы, и полностью избежать их невозможно. Однако, осознавая их наличие, вы можете применить несколько стратегий, чтобы минимизировать их влияние:
-
Осведомлённость и обучение. В этой статье мы рассмотрели всего три примера, но стоит уделить внимание изучению других когнитивных искажений и их возможного влияния на процессы тестирования.
-
Разнообразие в тестовых командах. Привлечение специалистов с разным бэкграундом и уровнем опыта помогает избежать группового мышления и расширяет спектр тестирования, уменьшая влияние индивидуальных когнитивных искажений.
-
Структурированные подходы к тестированию. Вы уже применяете их, но старайтесь использовать методологии, обеспечивающие всесторонний и объективный подход к тестированию.
-
Взаимное ревью. Привлекайте коллег для оценки тестовой стратегии и применяемых методов.
-
Принятие решений на основе данных. Используйте метрики и объективные данные для определения приоритетов тестирования, а не полагайтесь только на интуицию или прошлый опыт.
Статья подготовлена для начинающих тестировщиков в рамках онлайн-курса “QA Engineer. Basic”.
Хорошая новость: в рамках этого курса студенты получат поддержку карьерного центра Otus. Узнать подробнее и записаться на открытые уроки можно на странице курса
Автор: kmoseenk