Є багато книг про психологію програмування і про те, як психологічні аспекти впливають на процес розробки. Тестування так само має власну специфіку, і Оксані захотілося розібратися, як мозок впливає на процес тестування, задіяні при цьому процеси мислення та ухвалення рішень. Книги “Психологія комп'ютерного програмування” Джеральда Вайнберга та “Пастки мислення” Чіпа та Дена Хизів лише підсилили її інтерес. Своє дослідження Оксана почала з когнітивних упереджень та їхнього підсумкового впливу на забезпечення якості програмного продукту.
Когнітивне упередження (або викривлення) — термін, що використовується для опису багатьох спостережних ефектів у людському розумі, деякі з них можуть призвести до відхилення у сприйнятті, неточного судження чи нелогічної інтерпретації. Це явище вивчають соціальна психологія та міждисциплінарна когнітивна наука.
Поняття систематичних когнітивних упереджень першими сформулювали ізраїльсько-американські психологи Деніел Канеман і Амос Тверські. Спочатку вважалось, що такі упередження впливають на три основні процеси: ухвалення рішення, умовиводи та винесення судження. Але насправді сфера, якої вони торкаються, є набагато ширшою. Одразу обмовлюся, що накручувати себе не варто: когнітивні упередження не пов'язані з захворюванням чи відхиленням, їм піддається будь-хто. Виникають вони мимоволі, і лише факт того, що ми звертаємо на це увагу, вже знижує ймовірність неприємних наслідків, а їх, на жаль, може бути багато.
Згадайте, чи доводилось вам ухвалювати рішення або робити дії, про які ви за деякий час пошкодували? Коли, усвідомивши наслідки, ніяк не могли зрозуміти, чому вчинили так? Найімовірніше, на ваш вибір вплинуло когнітивне упередження. Якщо хтось думає, що в нього не буває когнітивних упереджень, це найчастіше свідчить якраз про інше.
“Вам варто працювати над зменшенням кількості своїх упереджень. І якщо ви стверджуєте, що у вас їх мало, то, найімовірніше, їх навпаки, багато”, — казав Нейт Сільвер.
Існує декілька видів когнітивних упереджень. Спробуймо розібратися, як кожне з них впливає на роботу.
Упередженість підтвердження
Упередженість підтвердження (сonfirmation bias) — це фільтр, крізь який ми бачимо реальність, знаходячи підтвердження власних очікувань. Він змушує думати вибірково та, що найстрашніше, дозволяє упередженням перешкоджати нашому активному прагненню фактів. Завдяки упередженості підтвердження люди схильні чути й бачити лише ті аргументи, що здатні підтвердити висновок, у який вони повірили із самого початку.
Влаштоване це когнітивне упередження досить складно. У його межах окремо чи спільно діють одразу три механізми:
1. Упереджений пошук інформації
Люди взагалі схильні в першу чергу помічати ті факти, що підтверджують гіпотезу, яка їм сподобалась. Найбільш яскраво цей тип упередженості ілюструють відомі всім конспірологи. Наприклад, прихильники теорії “місячної змови” упевнені в тому, що “Аполлон-11” нікуди не літав, а вся операція з висадки на Місяць була сфальшована американцями. Вчені, астро- та космонавти неодноразово висловлювали сумніви щодо самої можливості відзняти такі кадри на Землі. Насправді зробити фальсифікацію на такому високому рівні і приховати факти про неї мало не так само складно, як організувати саму космічну експедицію. Але прихильники конспірологічної теорії відкидають усе, що в неї не вкладається, оперуючи окремими, зате, на їхню думку, незаперечними доказами. “Прапор не має розвиватися у вакуумі, решта не має значення!”. Напевне вам знайома безліч подібних ідей різних ступенів поширення. А в нинішній ситуації їхню кількість доповнило і припущення про штучне походження вірусу COVID-19. У будь-якому разі ми самі обираємо, чому вірити та які джерела читати. І ніхто не може завадити людині користуватися непідтвердженою або навіть явно вигаданою інформацією та відкидати альтернативну.
2. Упередженість інтерпретації
Навіть оперуючи однаковим набором фактів, люди здатні зробити з них діаметрально протилежні висновки відповідно до своїх первісних симпатій і принципів. Як приклад можна навести дослідження, під час якого учасники-республіканці читали твіти, додані в їхні стрічки ботами-демократами. А демократи, навпаки, отримували аналогічну інформацію щодо роботи опозиційної їм республіканської партії. За місяць експерименту політичні переконання кожної зі сторін стали лише твердішими. Мабуть, отримуючи інформацію від політичних конкурентів, учасники переконувались у тому, що їхні погляди — єдині правильні. Будь-яку, навіть позитивну інформацію про незгодних із ними вони трактували у негативному ключі.
3. Упередженість пам'яті
Навіть ті, кому вдалося зібрати повний набір об'єктивних фактів і нейтрально їх інтерпретувати, часто запам'ятовують їх вибірково. Прагнучи наполягти на своїй думці, люди згадуватимуть лише те, що її підтверджує. Навряд під час сварки чи дискусії ви переказували ситуацію з минулого, здатну скомпрометувати позицію, яку ви підтримуєте зараз? Нічого такого ви й не згадали, бо мозок завжди пропонує те, що додає нам упевненості в собі та доводить нашу правоту.
У вас уже постало запитання, як це стосується тестування? Уявіть ситуацію: ви працюєте в команді, в одного зі членів якої спостерігається упередженість підтвердження, тобто ще можна сказати — упередженість віри, коли людина завжди шукає докази тому, що відповідає її логіці. Небезпека в тому, що таке упередження може швидко перерости у психологічну проекцію, коли людина приписує власні якості, почуття та бажання оточуючим. Таким чином переконання одного члена команди можуть сформуватися в інших.
Уявімо, що в команді є розробник, який вважає тестування непотрібним. Він у цьому переконаний і переконує в цьому своїх колег. Така поведінка загрожує серйозними наслідками не лише для тестувальника, а й для замовника, оскільки може постраждати якість продукту розробки.
Когнітивне викривлення може виникнути і під впливом сталої думки одного з найавторитетніших членів команди. Наприклад, ви заводите баг, але ваш тімлід закриває його, не полагодивши, оскільки вважає фічею. Спокуса автоматично погодитися з авторитетом є великою — зрештою, не дарма людину призначили керувати командою. Але, можливо, варто продовжити копати в цьому напрямку, щоб самостійно підтвердити чи спростувати рішення тімліда. Я в жодному разі не хочу сказати, що довіряти лідерам не потрібно, але сам характер роботи тестувальника передбачає насамперед опору на факти. Навіть якщо вони йдуть урозріз із думкою авторитету чи всієї команди. Будь-хто може бути не в курсі останніх змін або піти шляхом найменшого опору, просто запрацювавшись.
Когнітивний дисонанс
Когнітивний дисонанс (cognitive dissonance) — це неприємне почуття, викликане зіткненням суперечливих ідей у свідомості людини.
Мабуть, вперше цей ефект було описано в байці Езопа. Голодна лисиця знаходить виноградну лозу. Але та висить надто високо, і як лисиця не старається, дістати гроно винограду не вдається. Тоді вона вирішує, що виноград ще не дозрів і їй він, мабуть, ні до чого. Лисиця заспокоює себе, змінюючи сприйняття ситуації, — визнати, що ягоди досить солодкі й готові до вживання, було б дуже болісно. Щоб примирити дві конфліктуючі ідеї (“Я хочу цей виноград”, “Я не можу дістати цей виноград”), лисиця відкидає одну з них. Біль, який вона намагається заглушити, психологи називають когнітивним дисонансом.
Зрозуміло, Езоп писав не про тварин, а описував людські реакції. Згадайте свою першу реакцію на смак алкоголю або запах сигарети. Вам справді сподобалось? Навряд. Наша вроджена реакція на них — неприйняття. Наприклад, до пива людина звикає лише після тривалого повторення досвіду його вживання. Ми бачимо, як ним насолоджуються інші, і примиряємо протиріччя (“Людям подобається пиво”, “Пиво — це несмачно”), навчившись розділяти спільне задоволення.
Із тестуванням когнітивний дисонанс тісно пов'язаний. Уявимо, що було дві юзер сторі для тестування, обидві мають однаковий пріоритет, і ви вибрали сторі A замість B. Підсвідомо сторі А була вам більше до душі. Тут приходить колега і каже, що пріоритет сторі B набагато вищий, незважаючи на цифри. У вас з'являється конфлікт, і розум має пояснити, чому обрано сторі А, а не B. Виникають такі міркування:
- Я протестував сторі А, оскільки для мене це було важливішим, саме її я хотів протестувати.
- Сторі A тісніше пов'язана з проблемами користувачів, тому думаю, що в неї вищий пріоритет, ніж у B.
Ви спробуєте обґрунтувати причину вибору, що викликав певні сумніви.
У тестуванні ми часто стикаємося з ситуаціями, коли є два суперечливі оракули і потрібно ухвалити рішення, який з них є правильним. Іноді у гру входить когнітивний дисонанс. Рішення може бути неправильним, і найгірше, що проблема виникає пізніше, коли потрібно пояснити, чому зроблено такий вибір. Наслідки неправильно ухвалених рішень можуть бути непередбачуваними й небезпечними.
Я вважаю, що когнітивний дисонанс насправді шкодить тому, що ми тестуємо. Наші очікування від роботи програмного забезпечення, яке тестується, суперечать тому, що воно насправді робить. І ми коригуємо наші очікування, щоб виправдати те, що робить програмне забезпечення. Тоді є небезпека пропустити важливу помилку.
Наприклад, ми тестуємо відповідно до вимог і заводимо дефект у разі невідповідності цим вимогам, навіть якщо поведінка програми в принципі правильна і дефект у самих вимогах. Тобто тестувальник займається так званим monkey testing — абсолютно не аналізуючи логіку поведінки програми та бізнес клієнта. Щоб виключити подібні ситуації, треба ретельно та неодноразово перечитувати вимоги, оскільки написані вони природною мовою і задача їхньої інтерпретації має безліч рішень.
Тому твердження, що поведінка програмного забезпечення не відповідає вимогам, може бути як мінімум неоднозначним. Замислиться над такою тезою: перечитуючи одну й ту саму книгу кілька разів, ми іноді робимо різні висновки та формулюємо різні міркування.
Омана поєднання або помилковість кон'юнкції
Омана поєднання — когнітивне викривлення, за рахунок якого події у зв'язці виглядають правдоподібніше, ніж окремо.
Не описуватиму широко відому “проблему Лінди”, а запропоную ситуацію, з якою стикаються під час тестування. Давайте уявимо таку юзер сторі.
Девід вступив до консерваторії, щоб стати скрипалем і грати класичну музику. Після закінчення університету він перевчився на програміста і пише код у великій продуктовій компанії. Яке з таких тверджень здається більш правдоподібним?
- Req1: якщо користувач — програміст, то екрані має з'явитися “програміст”;
- Req2: якщо користувач — програміст і любить слухати класичну музику, то на екрані має з'явитися “музичний програміст”.
Запитайте себе, яку вимогу ви тестували б довше, на чому б зосередили більше уваги? Я впевнена, що відповідь буде Req2, тому що людям властиво віддавати перевагу більш складним і заплутаним ситуаціям. Хоча факт того, що Req1 є логічно правдоподібнішим, ніж Req2, доведено наукою.
У тестуванні часто приділяють особливу увагу якимось edge-cases замість найбільш імовірних, навіть якщо терміни горять. Це відбувається якраз через таке когнітивне викривлення.
Також трапляються випадки, коли ми приходимо до розробників за порадою, які зони було зачеплено та чому приділити увагу. Під час тестування максимально зосереджуємось на зазначеному функціоналі та мимохіть переглядаємо нібито не зачеплений. Ось у таких безпечних, за словами розробника, місцях і з'являються баги. Щоб уникнути таких ситуацій, звісно, добре застосовувати автоматизоване тестування. Але якщо його немає, лишається не розслаблятися і не довіряти чужій думці, плануючи тестування з максимальним покриттям.
Когнітивні рамки
Ефект обмеження рамками або фреймінг (framing) — когнітивне викривлення, в якому форма подачі інформації впливає на її сприйняття. Припустимо, на столі стоїть двохсотграмовий стакан зі ста грамами води. Подивитися на нього можна з двох боків: як на напівпорожній та напівповний. Від того, як ми подаємо інформацію, змінюється її забарвлення.
Тепер подивимось на всі улюблені звіти з тестування. Звіт має містити потрібну та важливу інформацію для замовника, але в якій формі її презентувати, вирішувати вам. Тобто можна почати звіт з кількості знайдених багів, а можна з того, які ми молодці і як багато всього протестували, як працює застосунок, і лише потім описувати дефекти. Зі свого досвіду скажу, що ефективніше працює другий формат.
Ще один яскравий приклад — спілкування з розробником щодо якогось дефекту. Не варто починати розмову з претензій, наприклад: “Як ти міг не побачити, тут же чорним по білому написано”, або ще гірше — сказати, що розроблена фіча є суцільним багом і необхідно все переробляти. Від того, як ви подаєте інформацію, залежатиме подальше порозуміння і взаємодія.
Ілюзорна кореляція
Ілюзорна кореляція — перебільшення тісного зв'язку між змінними, навіть якщо такого зв'язку немає.
Уявімо ситуацію, коли розробник бачить зв'язок між змінними, що насправді відсутній. У підсумку ми можемо отримати дефект. Те саме трапляється і з тестувальником, який під час роботи знаходить якийсь зв'язок, вибудовує шаблони залежностей між функціональностями, де їх апріорі немає. Дуже важливо пам'ятати про це викривлення, коли ви вибираєте тести для регресії у стислий термін, — тут потрібно ретельно аналізувати взаємозв'язки.
Також у межах ілюзорної кореляції іноді виникають проблеми в тестувальників, які працюють ізольовано. Справа в тому, що, коли людина одна, вона формує власні методи і створює власні гіпотези щодо того, як має працювати продукт за певних умов. І тут тестування стає однобічним пошуком доказів, що відповідають поточній гіпотезі тестувальника. Результуючий фактор цього викривлення полягає в тому, що тестуються лише ті випадки, які відповідають ілюзорній кореляції фахівця. А сценарії, що не відповідають очікуванням, залишаються неперевіреними. Так пріоритетні дефекти може бути пропущено. Дуже важко уникнути попадання в ілюзорну кореляційну пастку, оскільки людський розум намагається знайти найпростіший шлях.
Щоб уникнути когнітивних упереджень, важливо не працювати ізольовано та залучати інших і під час планування тестування, і під час його виконання та формування звітів.
Критичне мислення
Прочитавши все сказане вище, ви, напевно, хотіли б дізнатися, як зменшити вплив когнітивних упереджень. Інструмент є — це критичне мислення.
Критичне мислення — активна інтерпретація і оцінка спостережень, зв'язків, інформації та їхня аргументація.
Існує безліч визначень критичного мислення, як і безліч способів його розвитку в конкретної людини та технік, що допомагають мислити критично. Про це можна написати окрему статтю, інформації дуже багато. Я обмежуся лише прикладом та визначенням, яке, на мій погляд, максимально коротко описує весь процес.
Людина має дві системи мислення:
- Система 1 — особливо корисна у знайомих ситуаціях, коли часу мало і потрібна негайна дія.
- Система 2 — більш рефлексивна система мислення, корисна для винесення суджень.
Прочитайте судження нижче та підрахуйте кількість літер F:
FINISHED FILES ARE THE RESULT OF YEARS OF SCIENTIFIC STUDY COMBINED WITH THE EXPERIENCE OF YEARS.
Скільки вийшло? Дві? Три? Поверніться та перерахуйте ще раз.
Насправді у реченні шість F, і якщо ви задіяли систему 2, то вийде саме такий результат. Ця система прямо стосується критичного мислення — говорячи технічною мовою, це мислення ручне, тобто не автоматичне.
Для тестувальника вміння критично мислити є надзвичайно важливим. Цю здатність варто розвивати і застосовувати на практиці якнайчастіше. Людина здатна мислити критично півтори години, потім потрібна перерва. Тому в тестуванні головний помічник — це пауза. Робіть перерви на каву або чай не менше ніж на 15 хвилин. При цьому під час перерви не слід обговорювати робочі моменти. Говоріть про футбол, відпочинок, зрештою, про політику. Головне — дати мозку перепочити від роботи.
Емоційний стан
Емоція — психологічний процес, який впливає на те, що ми робимо. Чи замислювалися ви колись над наступними питаннями?
Чи знаходимо ми більше багів у поганому настрої? Психологи кажуть, що люди, налаштовані негативно, притягують негатив. А отже, якщо розглядати баги як негатив, така людина має знаходити їх частіше. Також в агресивному стані ми хочемо трощити все навколо себе і, відповідно, ламаємо програму з подвійною старанністю. Проте, пошукавши інформацію на форумах та блогах, поспілкувавшись із колегами, я зробила висновок, що більшості поганий настрій швидше заважає працювати на повну силу.
Чи слухаєте ви музику на робочому місці? Я думаю, що більшість слухає.
А чи замислювались ви над тим, чи впливає музика на ефективність роботи? Відповідь на це запитання пов'язана з питанням вище. Від того, яку музику і як слухають люди, залежить їхній настрій, а від настрою — ефективність. Я люблю тихенько слухати музику. Так вона не відволікає мене від роботи, а, навпаки, створює приємний бекграунд для виконання завдань. Якщо я роблю звук гучнішим, музика починає мені заважати, розсіюючи увагу. Звісно, це справа кожного, хто як любить, хто як звик, головне — щоб музика підвищувала продуктивність, а не навпаки.
Припустимо, ви посперечалися з розробником щодо якоїсь фічі. Чи маєте ви потім бажання її тестувати? Так, можливо, ви розлютитесь і захочете її зламати, а може, навпаки, не захочете зайвий раз спілкуватися з опонентом і підсвідомо виберете подивитися на розроблену функціональність крізь рожеві окуляри? У мене був такий випадок на початку кар'єри. Ще коли я була практиканткою, мені довірили тестування однієї з фіч. Під час аналізу вимог і написання документації я пішла до розробника, щоб уточнити декілька нюансів. Як з'ясувалося, його думка від моєї відрізнялась, мої заперечення він розніс вщент. Я була дуже пригнічена і не хотіла взагалі тестувати цю фічу. Команда тестувальників на проекті була великою, тому я попросила колегу помінятись завданнями. Розпочавши тестування, він виявив дефект. А якби цю властивість тестувала я, дефект пішов би у прод. Ось така історія.
Наш настрій тією чи іншою мірою впливає на процес тестування. У когось продуктивність зростає в хорошому настрої, у когось — у поганому. Я обговорила це питання з багатьма людьми, думки відрізняються. Дехто каже, що, будучи налаштованими позитивно, ми залишаємо все як є, не хочемо морочитися через дрібниці та підсвідомо вважаємо, що проблем не так багато і про дрібниці можна забути. Це небезпечне ставлення до тестування, тому що проста маленька проблемка може стати величезною проблемою надалі. Якщо ж ми у поганому настрої, ймовірно, захочемо знайти те, що нас дратує, нехай це буде якась дрібниця.
Коли я почала писати цю статтю, я думала, що висновку про те, як емоції впливають на нашу спроможність до тестування, дійти буде просто. Але це виявилось набагато складніше, ніж я очікувала, і я досі не беруся стверджувати, який настрій є кращим для роботи.
Для себе я зробила такий висновок: хороший тестувальник має вміти впоратися зі своїми емоціями та перемкнутися. Тобто залишати проблеми і хвилювання за межами роботи, знайти максимально ефективний стан та вміти входити у нього.
Висновок
Хотілося б підсумувати все вищесказане рекомендаціями:
- Ставтеся до власних переконань, припущень та думок інших людей у вашій команді з обережністю. Критичне мислення — це ключик до зменшення впливу упереджень.
- Будьте обізнані щодо вашого емоційного стану та того, як він може вплинути на тестування.









