Существует прямая связь восприятия человека с образом его мыслей, мнением относительно различных ситуаций. Не всегда мышление и мнения человека объективны — в них могут наблюдаться систематические ошибки и отклонения. При возникновении подобных отклонений видимого от реального, говорят о ловушках мышления или же, научным языком, о когнитивных искажениях. Программное обеспечение неизменно создается людьми, тестируется людьми и, в большинстве случаев, используется людьми. И каждый человек в этой цепочке подвержен собственным когнитивным искажениям.
30. Киев 2017<Ловушки мышления в тестировании>
«You should work to reduce your biases, but
to say you have none is a sign that you have
many» — Nate Silver
Слепое пятно искажений
32. Киев 2017
Спроси себя
• Почему я верю, что дела обстоят именно так?
• Есть ли контраргументы моему мнению?
Насколько они совпадают с реальным
положением дел?
• Кто или что повлияло на мой выбор?
• Следую ли я за группой, потому что она верит
в то же самое, что и я?
• Что я потеряю, если поступлю так, а не
иначе? И что я выиграю?
• Действительно ли мои действия повлекут за
собой запланированные события?
<Ловушки мышления в тестировании>
33. Киев 2017
Что бы почитать на тему?
• John Stevens. The Psychology of Software
#Testing
• Дэн Хиз, Чип Хиз. Ловушки мышления. Как
принимать решения, о которых вы не
пожалеете
• Дэн Ариэли. Предсказуемая
иррациональность. Скрытые силы,
определяющие наши решения
• www.fallacyfiles.org/taxonomy.html
<Ловушки мышления в тестировании>
Мозг – идет по пути наименьшего сопротивления
Наш мозг – крутая штука. Он позволяет «мыслить», освобождает нас от скучной, утомительной, однообразной рутины по узнаванию окружающих предметов, определения их предназначения и местоположения в пространстве, а также избавляет от необходимости думать о том, как контролировать движения тела. В общем, дает возможность не задумываться над второстепенными мелочами. Благодаря этому мы можем сосредоточиться на том, что действительно для нас важно.
Ежесекундно наши органы чувств «бомбардируют» миллионы различных стимулов. Cправиться с таким потоком информации не под силу ни самому современному компьютеру, ни даже нашему мозгу — на то, чтобы думать в каждый момент времени, не хватит никаких мыслимых и немыслимых ресурсов. Именно поэтому в ходе эволюции люди приобрели так называемые эвристики — мыслительные шаблоны, практически инстинктивные суждения, позволяющие на основе обрывков информации выстраивать гипотетические логические цепочки и не тратить лишнее время на обдумывания и размышления. Да, это не совсем рационально. Зато быстро и работает!
То, что создано, чтобы облегчить жизнь, работает и в обратную сторону, загоняя людей в определенные рамки. Худшие проявления эвристических шаблонов ученые назвали «когнитивными искажениями». Это систематические ошибки в человеческом мышлении, естественные ограничения мозга, своего рода логические ловушки, из-за которых многие мысли, суждения, умозаключения, рождающиеся непрерывным потоком в наших головах, кажутся непогрешимо верными, но при объективной проверке оказываются полностью ложными. При этом человек может быть уверен в своих неверных суждениях на протяжении многих лет.
Программное обеспечение неизменно создается людьми, тестируется людьми и, в большинстве случаев, используется людьми. И каждый человек в этой цепочке подвержен собственным когнитивным искажениям.
Самый страшный сон любого ответственного тестировщика — пропустить серьезный баг. Тестировщик старается, тщательно анализирует требования и пишет тест кейсы, внимательно проверяет продукт, а после выпуска пользователь в течение недели сообщает о критической проблеме.
Как много багов, очевидных другим, мы пропускаем? Много…
Наши искажения влияют на все тестирование как ручное, так и автоматизированное. Знание собственных искажений и их последствий является ключом к эффективному созданию тестовых сценариев, их выполнению и нахождению дефектов.
Я бы хотела рассказать о наиболее часто встречающихся когнитивных искажениях, влияющих на работу тестировщика ПО, и о методах снижения негативных эффектов от их проявлений.
Ловушка подтверждения
Одно из опасных и очень распространенных когнитивных искажений — ловушка подтверждения. Это тенденция человека искать, интерпретировать или отдавать предпочтение информации, которая согласуется с его точкой зрения, убеждением или гипотезой, и игнорировать факты, опровергающие ее.
Чем опасна эта ловушка для тестировщиков? Допустим, перед тестированием какой-то функциональности вы решили уточнить у разработчика, на какие области, по его мнению, стоит обратить внимание. Основываясь на полученной информации, вы приоретизируете тестирование.
Подход срабатывает: в более рисковой области вы находите серьезные проблемы, а в менее рисковой области проблем, как и ожидалось, нет.
После релиза оказывается, что в некритической области пользователи нашли критический баг. Высока вероятность, что вы видели либо баг, либо его проявления, но из-за того, что считали область беспроблемной, ваш мозг его отфильтровал.
Быстрый и простой путь снизить риск от ловушки подтверждения — привлечение еще одного человека для тестирования той же функциональности. Высока вероятность, что у человека будет своя ловушка подтверждения, но она, скорее всего, будет отличаться от ловушки первого тестировщика.
Быстрый и простой путь снизить риск от ловушки подтверждения — привлечение еще одного человека для тестирования той же функциональности. Высока вероятность, что у человека будет своя ловушка подтверждения, но она, скорее всего, будет отличаться от ловушки первого тестировщика.
Ваша компания (проект) придерживается линии поведения в ситуации, когда она не работает, лишь потому что уже вложило много денег в этот проект.
Например, у вас тяжеловесная и требующая больших временных затрат на поддержку автоматизация. Регрессия кое-как прогоняется, но на развитие и расширение покрытия уже не остается ни сил, ни времени. Стоит задуматься о переписывании\оптимизации фреймворка. Но так как деньги были вложены и потеряны, ежики продолжают плакать, колоться, но есть кактус.
Еще одно, не менее распространенное искажение — когнитивный диссонанс — состояние психического дискомфорта, вызванное столкновением в сознании человека конфликтующих представлений: идей, верований, ценностей или эмоциональных реакций.
Опасность этой ловушки в том, что человек не любит внутренних конфликтов и человек ленив. Проще скорректировать своё мнение, чем вникнуть в причины возникновения конфликта. Тестировщикам важно распознавать, когда они находятся в состоянии когнитивного диссонанса и учиться задавать вопросы, прежде чем принимать решение. Как только человек принимает решение, он находит всяческие подтверждения правильности сделанного выбора.
Если во время тестирования тестировщику необходима какая-то информация о продукте, и он получает из двух источников противоречащие ответы, возникает когнитивный диссонанс. Очень просто выбрать ответ, полученный из более авторитетного источника либо наиболее ожидаемый ответ. Сложнее потратить время и усилия, чтоб детально разобраться. Опасность в том, что если в какой-то области возникли противоречия, то, очень вероятно, там будут и баги.
Рассмотрим пример. Людей попросили определить, кем работает мужчина, застенчивый и тихий, библиотекарем или фермером. Более вероятным посчитали, что описываемый – библиотекарь. На самом деле мужчин библиотекарей в 20 раз меньше, чем мужчин фермеров. Но тут сыграл факт застенчивости.
Когда у нас есть два независимых события/факта, то их одновременное выполнение не может быть более вероятно, чем вероятность любого из двух отдельных событий. Однако, люди забывают об этом и приписывают более высокую вероятность в комбинации событий, ошибочно связывая количество событий с количеством вероятности.
В тестировании может повлиять на интерпретацию документации: при составлении тест кейсов нужно понимать, насколько часто какой-то сценарий будет использоваться и, соответственно, насколько он критичен. Эта ловушка может повлиять на понимание вероятности.
Избежать можно, обсудив детали заранее, посмотреть статистику использования конкретной функциональности.
Иллюзорная корреляция
Иллюзорная корреляция — восприятие преувеличенно тесной связью между переменными, которой в реальности или не существует, или она значительно меньше, чем предполагается.
Суть иллюзорной корреляции заключается в том, что человек может «отчетливо» видеть несуществующие взаимосвязи между параметрами, свойствами или явлениями. Например, если человек считает, что цвет волос может говорить о степени умственного развития.
В тестировании, особенно когда команда тестировщиков удалена от аналитиков и разработчиков, тестировщик может начать тестировать функциональность исходя не из требований, а из какой-либо своей гипотезы, как все должно работать.
Уменьшить вероятность возникновения этой ловушки поможет вовлечение других в планирование тестирования (мы отправляем аналитику тест кейсы на ревью) и парное тестирование.
Чтобы понять, где ваш мозг «дал сбой», и защитить себя от воздействия иллюзорных корреляций, стоит воспользоваться так называемой таблицей случайностей.
Таблица случайностейКлетка А: полнолуние и аврал в психиатрической больнице. Два явления представляют собой хорошо запоминающееся сочетание, поэтому мы в будущем будем переоценивать их значение.
Клетка B: полнолуние и затишье в больнице. Ничего особенного не происходит («не-событие»). Нам будет довольно трудно вспомнить эту ночь, поэтому мы склонны игнорировать данную ячейку.
Клетка C: полнолуния нет, но в больнице аврал. В этой ситуации медсестры просто скажут в конце смены: «Суматошная ночь на работе…».
Клетка D: полнолуния по-прежнему нет, и пациенты ведут себя спокойно. Это снова пример «не-события»: ничего запоминающегося не происходит, поэтому мы проигнорируем эту ночь.
Самый просто пример этой ловушки – это визуальная иллюзия. Мы смотрим на какую-то вещь, нам кажется, что она является чем-то одним, а на самом деле это совершенно другое.
Это самая распространенная ловушка и часто объясняет почему умные люди могут говорить глупые вещи: просто потому что их мозг может видеть не то, что на самом деле есть.
Чтобы избежать подобной ловушки, тестировщик может попробовать взглянуть на ситуацию с других углов. Но это очень сложно, требует опыта и времени.
Люди склонны находить какие-то зависимости там, где их нет. Например, видеть фигуры животных, когда смотрят на облака или считать, что определенная пара обуви приносит удачу в игре. Нас даже учат анализировать ряды и находить зависимости (вспомните тесты Айзенка).
Представьте себе, что вы подбрасываете монетку, 5 раз выпал орел, потом решка и снова 5 раз орел. Каким будет результат следующего броска? Люди, видящие зависимость, скажут, что однозначно выпадет решка. Впрочем, найдутся такие люди, которые знают о существовании лжепаттернов и решат, что выпадет орел, хотя вероятность 50\50.
Однажды проводили эксперимент с людьми и крысами. В совершенно произвольном порядке загоралась либо зеленая, либо красная лампочка. Не было никаких паттернов, но зеленая загоралась в 75% случаев. За угаданный цвет крысы получали награду. Они в итоге быстро поняли, что зеленая загорается чаще и всегда выбирали ее, выиграывая в 75% случаев. Люди искали зависимости и выигрывали в 65% случаев.
В тестировании это опасно тем, что увиденная зависимость мешает повторить баг.
Люди склонны находить какие-то зависимости там, где их нет. Например, видеть фигуры животных, когда смотрят на облака или считать, что определенная пара обуви приносит удачу в игре. Нас даже учат анализировать ряды и находить зависимости (вспомните тесты Айзенка).
Представьте себе, что вы подбрасываете монетку, 5 раз выпал орел, потом решка и снова 5 раз орел. Каким будет результат следующего броска? Люди, видящие зависимость, скажут, что однозначно выпадет решка. Впрочем, найдутся такие люди, которые знают о существовании лжепаттернов и решат, что выпадет орел, хотя вероятность 50\50.
Однажды проводили эксперимент с людьми и крысами. В совершенно произвольном порядке загоралась либо зеленая, либо красная лампочка. Не было никаких паттернов, но зеленая загоралась в 75% случаев. За угаданный цвет крысы получали награду. Они в итоге быстро поняли, что зеленая загорается чаще и всегда выбирали ее, выиграывая в 75% случаев. Люди искали зависимости и выигрывали в 65% случаев.
В тестировании это опасно тем, что увиденная зависимость мешает повторить баг.
Чем больше человек о чем-то думает, тем более важным ему это кажется.
Однажды был проведен эксперимент. Давайте посмотрим видео Это так называемая ловушка фокусировки, когда человек не обращает внимания ни на что, кроме какой-то конкретной области.
Еще один пример проявления ловушки фокусировки – картина Джоконда. 100 лет назад она была совершенно неизвестной картиной. В 1911 году ее украли и газеты очень сильно разрекламировали событие, несколько месяцев новость не сходила с первых полос. Картина изначально была настолько неизвестна, что одно из изданий поместило фото другой картины.
Пример из тестирования. Тестировщик заводит два бага, критичный и нет. Критичный исправился быстро, некритичный нет. Дев и куа работают над нам довольно долго и через какое-то время тестировщику начинает казаться, что без фикса этого бага выйти в релиз нельзя, хотя, судя по затратам времени, возможно, и не стот исправлять этот баг.
Чем больше человек о чем-то думает, тем более важным ему это кажется.
Однажды был проведен эксперимент. Давайте посмотрим видео Это так называемая ловушка фокусировки, когда человек не обращает внимания ни на что, кроме какой-то конкретной области.
Еще один пример проявления ловушки фокусировки – картина Джоконда. 100 лет назад она была совершенно неизвестной картиной. В 1911 году ее украли и газеты очень сильно разрекламировали событие, несколько месяцев новость не сходила с первых полос. Картина изначально была настолько неизвестна, что одно из изданий поместило фото другой картины.
Пример из тестирования. Тестировщик заводит два бага, критичный и нет. Критичный исправился быстро, некритичный нет. Дев и куа работают над нам довольно долго и через какое-то время тестировщику начинает казаться, что без фикса этого бага выйти в релиз нельзя, хотя, судя по затратам времени, возможно, и не стот исправлять этот баг.
Ошибка выжившего — склонность недооценивать недоступные прямому наблюдению данные по группе «погибших».
Это ловушка, о которой стоит помнить, когда мы не уверены в полноте информации, предоставленной для анализа.
Впервые она была зарегистрирована в США, во время Второй Мировой войны. Решив укрепить самолеты, тем самым уменьшив число потерь, изначально приняли логичное, на первый взгляд, но неправильное решение: у вернувшихся самолетов больше всего пробоин было на крыльях и хвосте, их и решили укреплять. Вмешался статистик Абрахам Вальд, объяснив, что крылья и хвост — сильные места, ведь самолеты, подбитые в эти зоны, вернулись на базу, в отличие от самолетов, получивших пробоины в других местах.
Еще одним ярким примером составления искаженного мнения является поверье, что дельфины спасают тонущих людей, подталкивая их к берегу. А кто спросит у утонувших, не подталкивали ли их дельфины от берега, просто играя?
В тестировании нередко проявляется, когда тестировщик готовит тестовые данные однобоко, выбрав легкий и явно видимый вариант. Еще одним примером может быть тестирование по принципу «в прошлый раз так делали — и все хорошо».
Ошибка выжившего — склонность недооценивать недоступные прямому наблюдению данные по группе «погибших».
Это ловушка, о которой стоит помнить, когда мы не уверены в полноте информации, предоставленной для анализа.
Впервые она была зарегистрирована в США, во время Второй Мировой войны. Решив укрепить самолеты, тем самым уменьшив число потерь, изначально приняли логичное, на первый взгляд, но неправильное решение: у вернувшихся самолетов больше всего пробоин было на крыльях и хвосте, их и решили укреплять. Вмешался статистик Абрахам Вальд, объяснив, что крылья и хвост — сильные места, ведь самолеты, подбитые в эти зоны, вернулись на базу, в отличие от самолетов, получивших пробоины в других местах.
Еще одним ярким примером составления искаженного мнения является поверье, что дельфины спасают тонущих людей, подталкивая их к берегу. А кто спросит у утонувших, не подталкивали ли их дельфины от берега, просто играя?
В тестировании нередко проявляется, когда тестировщик готовит тестовые данные однобоко, выбрав легкий и явно видимый вариант. Еще одним примером может быть тестирование по принципу «в прошлый раз так делали — и все хорошо».
Это не совсем ловушка, но в некоторых статьях негатив также причисляют к ловушкам. До определенной степени в тестировании это даже скорее полезно. Человеческий мозг устроен так, что в короткой перспективе обращает больше внимания на негатив, чем на позитив. Соответственно, чем больше обращает на него внимание, тем больше его ожидает.
Может в тестировании проявляться в двух случаях:
Страх изменения (заставляет говорить «нет» на какие-либо изменения).С одной стороны хорошо, т к заставляет сторонников изменения продумывать аргументы и еще раз подумать нужно ли это изменение. С другой стороны – плохо, т к может тормозить развитие в целом.
Недоверие девелоперам. С одной стороны у нас работа такая «доверяй, но проверяй». Но в некоторых случаях может затормаживать процесс.
Например, очень сложно закрыть тестирование, если не было найдено ни одного, пусть даже маленького бага.
У негатива есть обратная сторона - позитив, оптимизм.
Знаете, как-то проводила собеседование на позицию тестировщика в свою команду. Парень, которого я собеседовала, очень оптимистично сказал на вопрос о негативном тестировании, что у них в проекте очень продвинутые девелоперы и они не делают багов. А если и делают, то бизнес пользователи у них тоже молодцы и не ошибаются. Стоит ли говорить, что собеседование он не прошел?
Пример из жизни:
Часто купив какую-то дорогую вещь мы ожидаем или даже уверены, что ее качество лучше чем у более дешевого аналога.Например, дорогое вино будет казаться вкуснее, чем дешевое, хотя вслепую человек их может и не различитьВ тестировании может проявляться в том, что задачу выполненную джуниор девелопером мы можем тестировать более тщательно, чем задачу синьора, потому что джун менее опытен и соответственно, больше вероятность, что он сделает багу. Но, на самом деле синьоры, как правило, делают более сложные задачи и, поэтому, вероятность в итоге примерно одинаковая
Эмоции – не ловушка, но последствия примерно такие же. Эмоции влияют на восприятие человека и одну и ту же вещь мы можем видеть негативно или позитивно в зависимости от нашего эмоционального состояния. Что самое главное, эмоции влияют на фокусировку и на сосредоточенность человека, потому что когда мы, например, очень счастливы – нам очень радостно и, возможно, нам очень не хочется углубляться в дебри сложного и занудного алгоритма.
Как правило, девелоперы тестируют свой код во время его написания либо сразу же после. В таком случае, написание кода и его тестирование происходит в одном эмоциональном состоянии, как следствие там возникают одинаковые слепые пятна. Поэтому, хорошо, когда код тестируется человеком, который его не писал.
Лечением от всех ловушек является общение. Чем больше людей вовлечелно в этот процесс, тем больше вероятность, что у них разные фильтры и они будут по-разному перекрывать слепые зоны. Еще выше эта вероятность, когда у этих людей разный бекграунд – аналитик, девелопер, тестировщик.
Как я уже упоминала, что, как в примере с гориллой, человек сфокусирован на своем задании и не видит, что происходит вне зоны этой фокусировки.
Тут можно поспорить, что у девелоперов и тестировщиков глобальная цель одна, сделать какое-то классное приложение, но на самом деле мы не ставим себе глобальную цель, а ориентируемся на задачу, которая имеет свою маленькую цель. И мы ориентируемся на эти под-цели, а они у девелоперов и тестировщиков, как правило, разные. Поэтому, хорошо, когда есть два разных человека с разными подходами, т к у них эта зона фокусировки увеличивается в два раза.
Любые сравнения натянуты, но все же. При написании книги, например, есть автор и есть редактор. Даже если автор не один, а группа авторов, все равно есть редактор. При написании статьи есть журналист и есть редактор. Это связано с тем, что человек часто не способен посмотреть на себя и свое творение со стороны, поэтому очень удобно, когда есть человек, способный дать обратную связь.
Многие искажения и ловушки сознания исчезают, когда вы просто выявляете их. Однако другие настолько сильно въедаются, что приходится долго распутывать этот клубок. Изучайте манеру своего мышления и выявляйте все ловушки.
Но если вам кажется, что вы подвержены какому-либо когнитивному искажению в меньшей степени, чем другие люди, – поздравляю, вы находитесь под влиянием еще одного когнитивного искажения