Юзер-тест без юзерів: як я симулюю тестування інтерфейсів через LLM (і де це ламається)
Привіт! Мене звати Марина, я UI/UX & Product Designer. У цій статті розповім вам, як симулюю тестування інтерфейсів через LLM.
Реальне юзер-тестування — це завжди довго і дорого. Поки ти знайдеш п’ять людей, домовишся з ними про час, проведеш сесії і потім ще все розшифруєш — спринт уже закінчився, а дизайн встиг поїхати далі. Тому в якийсь момент з’являється спокуса: а що, якщо прогнати інтерфейс через мовну модель, яка «вдаватиме» користувача? І отримати фідбек за 10 хвилин замість двох тижнів?
Я вже кілька місяців активно так роблю — проганяю через LLM і окремі екрани, і цілі флоу, і навіть A/B-варіанти. Нижче розбираю, що воно реально вміє, де відверто бреше, і як це правильно вбудовувати в процес, щоб не нашкодити.
Головна думка, яку варто тримати в голові весь час: LLM непогано емулює міркування користувача, але погано емулює його поведінку. Це крутий інструмент саме для pre-test — швидко згенерувати гіпотези, відсіяти очевидні косяки ще до того, як йти до живих людей. Але це точно не заміна реальному тестуванню.
Що таке «синтетичний юзер» насправді
Жодної магії тут немає. Просто береш і задаєш моделі конкретну персону: вік, наскільки вона дружить з технікою, в якому контексті користується продуктом, яку мету переслідує і як взагалі думає. Даєш їй скріншот або прототип — і вона реагує від першої особи. Розказує, чого очікувала побачити, куди б тикнула пальцем, що її спантеличило, а що взагалі роздратувало.
Якщо прогнати через один і той самий екран кілька різних персон — одразу бачиш розкид реакцій. Дуже показово виходить. Технічно це можна робити по-різному: від простого «опиши, як би ця людина відреагувала» до цілих агентних систем, де персони реально «клікають» по прототипу, і ти отримуєш повну трасу їхніх дій.
Наприклад, у дослідницькому фреймворку UXAgent (CHI 2025) хлопці генерують тисячі синтетичних користувачів, проганяють їх крізь сайт і збирають як якісні дані (що агент «думав» на кожному кроці), так і кількісні (скільки кліків, скільки часу тощо).
Але в основі скрізь однакова ідея: модель просто дуже правдоподібно відіграє людину, спираючись на все, що «вичитала» про таку категорію людей.
Як це виглядає на практиці: A/B на скрінах
Найзручніший для мене формат — це пряме порівняння двох варіантів одного екрана. Ти завантажуєш два варіанти:
- Variant A — контроль (старий варіант);
- Variant B — нова версія зі змінами.
Задаєш пул різних персон (з різним характером, рівнем техкомфорту, віком тощо), і отримуєш чіткий результат:
- Загальну перевагу — скільки людей вибрало A, а скільки B;
- Дослівні цитати від кожної людини (що саме вони подумали і сказали);
- Зрізи за характером, техкомфортом, віком тощо;
- Іноді — кількісні оцінки: Clarity (зрозумілість), Trust (довіра), Intent (намір діяти), Drop-off (ймовірність того, що людина піде зі сторінки) тощо.
Конкретний приклад
Беремо екран челенджу в застосунку для вивчення іноземних мов.
Variant A: спокійна сторінка з прогресом, поточним рівнем і нагородами.
Variant B: той самий челендж, але з агресивним заголовком «ВИВЧИ 1000 СЛІВ ЗА 7 ДНІВ» і плашкою «Залишилося лише 162 місця» — починай прямо зараз, інакше потім буде пізно!"
Що показала симуляція: Майже всі персони обрали Variant A. А найцікавіше — практично всі, незалежно одна від одної, «зачепилися» за одну й ту саму річ. Плашка «Залишилося лише 162 місця» у більшості викликала відчуття тиску і сприймалася як темний патерн. Хтось написав: «Відчуваю, ніби я вже пропустив дедлайн і все втратив». Інший: «Це просто маркетинговий шум, а не корисна інформація».
Ось саме такий результат — це і є валідний, корисний вихід симуляції. LLM добре ловить тон, копірайт, темні патерни, перше враження від заголовків, лейблів і закликів до дій (CTA). А от далі починаються проблеми.
Що симуляція реально вміє
Генерувати гіпотези, а не готові відповіді — це її головна цінність. Вона швидко підсвічує «тут щось не так», щоб ти потім міг перевірити це на реальних людях. І це працює ще до будь-якого реального тесту — можна проганяти навіть Figma-прототип, коли коду ще немає.
Добре ловить проблеми копірайту й тону: незрозумілі лейбли, агресивні CTA, формулювання, які звучать як тиск. У таких «людських» речах («а що я сам думаю про цей текст?») модель дуже близька до реальності. Чудово розпізнає темні патерни й маніпулятивні формулювання — начитана на цьому і миттєво ловить шаблони.
Добре робити first-click тест: «Куди ти натиснеш, щоб зробити X?» по скріну. Відразу видно, де лейбли неочевидні, особливо в складних флоу.
І сильно прискорює підготовку: чернетки персон, сценаріїв тестів, гайдів для інтерв’ю — все це симуляція видає за хвилини.
Чого вона не вміє (і про це треба говорити чесно)
1. Передбачати реальну поведінку людей
Це найголовніше. У дослідженнях агенти ходять ідеальними прямими шляхами. А реальна людина петляє, сумнівається, забуває, що хотіла зробити, повертається назад і частенько просто забиває. Коли UX-агентам дали згенеровані дані живим UX-дослідникам, ті сказали: «Це не схоже на реальних людей». Бо в симуляції все занадто логічно, послідовно і детально. Реальний користувач так не думає.
2. Влучати в силу ефекту і розкид
Синтетичні користувачі добре ловлять загальний напрямок («варіант B гірший за A»). Але вони погано передають, наскільки гірший і наскільки по-різному реагують різні люди. Саме це й показували дослідження Nielsen Norman Group.
3. Бути по-людськи упередженою і нерівномірною
Реальні люди можуть щось ненавидіти всім серцем, а на інше їм просто по барабану. У синтетичних персон усе «однаково турбує». Через це ти отримуєш довгі, акуратні, збалансовані списки проблем замість живого пріоритетного інсайту, який реально допомагає приймати рішення.
4. Не підтакувати
Моделі дуже люблять говорити те, що ти хочеш почути. Якщо в промпті хоч трохи просвічується, який варіант «правильний», вона з радістю це підтвердить.
5. Працювати у вузьких, специфічних доменах
З широкими споживчими архетипами ще більш-менш. А от коли треба симулювати офіцера комплаєнсу, лікаря в клініці чи enterprise-байєра — модель просто фантазує на основі слабких даних.
Пастка хибної точності
Окремо варто сказати про цифри. Коли симуляція видає тобі Clarity 8/10, Trust 7/10, Drop-off +1,9% тощо — це виглядає дуже переконливо. Але це не метрики. Це все та ж рівна, «правильна» оцінка, просто загорнута в цифри.
Моє практичне правило: дивись на напрямок, ігноруй величину. Те, що всі персони кажуть «від цього варіанту відчувається тиск», — це корисний сигнал. А от «Drop-off зріс на 1,9» — це просто модель придумала правдоподібну цифру. Не неси її на презентацію стейкхолдерам як реальні дані.
І чесно кажучи, етичний момент: видавати синтетичний фідбек за повноцінний ресерч — нечесно. Завжди позначай: це directional (напрямковий), а не evidential (доказовий).
Як робити це правильно
Вбивай в промпті «послужливого відмінника». Це головна проблема. Модель за замовчуванням намагається бути корисною і знайти «правильну» відповідь. Треба прямо писати: «Ти не дизайнер. Ти не знаєш, як це мало б працювати. Реагуй тільки на те, що бачиш. Якщо щось незрозуміло — тупи, дратуйся, придумуй хибні висновки, можеш взагалі кинути задачу».
Давай реальні скріншоти, а не текстові описи. Коли ти описуєш екран — ти вже інтерпретуєш його для користувача.
Запускай багато різних персон. Одна персона — це анекдот. Бери
Змушуй спочатку сформулювати мету, а потім діяти. Інакше отримаєш реакцію на інтерфейс у вакуумі.
Не зациклюйся на одній моделі. Claude, GPT, Gemini — головне, як ти її запромптив.
Де це місце в процесі
Просте правило: до живого тестування, але ніколи замість нього. Симуляція — це суперінструмент на початку. Вона допомагає швидко відсіяти відверто погані варіанти, загострити гіпотези і прийти на реальне тестування підготовленим. Це економить час живих учасників, а не замінює їх.
Найкраща зв’язка: Синтетика → відбір гіпотез → реальний тест (вже на звужених варіантах) → за потреби евристична оцінка.
Підсумок
Симуляція користувацького тестування через LLM — це не «AI замінив ресерч». Це швидкий і дешевий генератор гіпотез, який добре ловить тон, копірайт і темні патерни UX. Але він погано передає реальну поведінку, силу ефектів і справжню людську нерівномірність.
Якщо тримати цю межу — інструмент просто золото. Якщо стерти межу і йти зі скріншотом «Drop-off +1.9» до продакта — ти просто згенерував собі фальшиву впевненість. А це гірше, ніж не тестувати взагалі.
11 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВи точно підмітили, що LLM часто займається підлабузництвом і існує великий ризик залишитись у власній бульбашці сприйняття тієї ідеї, на яку хочеш отримати конструктивний відгук. Варто робити окрему сесію з задачею надати ніщивну критику, або brainstorm pros/cons — дуже корисно.
О, у точку! Окрема сесія під критику працює краще, ніж «оціни, будь ласка» у тому ж чаті. Ще два прийоми: не казати моделі, який варіант «мій» (інакше підігрує), і давати роль скептика, якому платять знайти причину НЕ користуватись продуктом. Дякую, що згадали 🙏🏻
Вітаю, було цікаво почитати про такий підхід.
1. Конкретно у ваших випадках що ви використовуєте як сутність для тестування? Умовно, це Figma-прототип/просто скріни, які десь зібрані/вже готові і задеплоєні рішення/etc...?
2. Цікавить також технічна складова, які саме інструменти використовуєте і які конкретні моделі на вашу думку найкраще виконують ту чи іншу задачу?
Вітаю, Богдане! Дякую, що прочитали 🙏
1. Здебільшого це звичайні скріни: експортовані фрейми або скріншоти готового екрана. Figma-прототип теж заходить, але саме статичні скріни основний робочий формат, бо модель реагує на те, що буквально бачить. Тестувати можна будь-що: і концепт у Figma ще до коду, і вже задеплоєне рішення (просто скріниш його). Головне годувати реальне зображення, а не текстовий опис, бо опис ти вже проінтерпретував за користувача
2. По інструментах: для швидких прогонів вистачає звичайного чату, а для A/B і пулу персон зібрали невеликий власний скрипт на API (кожна персона = окремий виклик). Щодо моделей чесно, конкретна модель важить менше, ніж очікуєш. Claude, GPT, Gemini усі ок, якщо приймають скрін + текст. Вирішальне не «яка модель», а наскільки добре ти запромптив її поводитись як розгублений юзер, а не як ефективний розв’язувач задач. Я працюю переважно на Claude подобається, як він тримає роль персони й ловить тон/копі, але різницю між топовими моделями я б назвала косметичною порівняно з якістю промпту
дякую за уточнення)3-8 скрінів, ви балком закидаєте весь флов чи по одному скріну «зготовуєте» llm’ці
І ще тоді від мене, додаткове уточнення щодо п.1
Якщо мова йде про юзер флов певного функціоналу, скажімо який складається з
По одному скріну, послідовно в одному треді не балком
Логіка така: якщо закинути весь флоу одразу, модель уже бачить фінал і відповідає як людина, яка наперед знає, чим усе закінчиться.
А весь сенс спіймати реакцію «я тут вперше й не знаю, що далі». Тому даю екран 1 → ловлю реакцію → екран 2 (у тому ж контексті, щоб персона пам’ятала, звідки прийшла) → і так до кінця. Так зберігається та сама розгубленість на кожному кроці
Балком використовую хіба що окремим фінальним проходом коли вже треба оцінити флоу цілісно: чи не ламається логіка між кроками, чи тон консистентний. Але це вже інша задача не «перше враження», а аудит зв’язності)
Хороший підхід для першого скрінінгу ідеї!
Дуже дякую! 🙏🏻
Ви правильно кажете, що це аж ніяк не заміна реальному тестуванню. Але що тоді вся ця весела машинерія мала би замінити? Здоровий глузд? Інтуїцію? Критичне мислення? Дискусії зі стейкхолдерами? Знання best practice/industry standards? Хіба не було простіших і надійніших фільтрів для відсіювання шлаку на ранніх етапах?
Вітаю! На початку статті прописала: «Головна думка, яку варто тримати в голові весь час: LLM непогано емулює міркування користувача, але погано емулює його поведінку. Це крутий інструмент саме для pre-test — швидко згенерувати гіпотези, відсіяти очевидні косяки ще до того, як йти до живих людей. Але це точно не заміна реальному тестуванню.»
Так я ж про це і питаю. :) Хіба не можна відсіяти очевидні косяки і поробить гіпотези без цієї возні? Як вона зробила вас кращим дизайнером, а ваші продукти кращими для людей? Втім, питання це риторичне, поживем-побачим.