Як я перевіряв, на що здатен ChatGPT у процесі тестування

TelegramУсі статті, обговорення, новини про тестування — в одному місці. Підписуйтеся на DOU | QA!

Привіт, мене звати Сергій Ткач, я — Quality Assurance engineer в аутстаф-компанії ImproveIT Solutions. Маю понад 6 років досвіду. Працював в різних командах, з різними людьми та над такими ж різними проєктами (від медичних застосунків до ресурсів з вебінарами про шампуні).

А тому помітив, що частенько буває, коли ти запитуєш когось на проєкті про «базові» речі, можеш зіткнутися з тим, що не всі готові зразу відповісти, або ж виникає проблема у формулюванні самого питання. Буває, що розробник, який займається однією частиною функціоналу, не може зрозуміти, як тобі допомогти, якщо твоє питання стосується взаємодії цього функціоналу із частиною, що була написана, до прикладу, іншою командою років п’ять тому.

З цих причин інколи можуть виникати труднощі з розв’язанням певних задач, що й підштовхнуло мене спробувати поекспериментувати із новітніми технологіями.

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

Пошуковий агент чи шпаргалка з SQL

Розпишу трохи про свої експерименти з безплатною версією ChatGPT. Спершу вважав це тільки забавкою та пробував розвести чат на морально-психологічні дилеми, за що отримав три попередження, а тому трохи зупинився з такого роду експериментами.

Кілька разів використовував його замість пошукового агента, він досить сильно допомагав, на цьому, здавалося б, усі його можливості вичерпано. Але, коли вкотре переглядав новини пов’язані з ChatGPT, почув думку, що його можна використовувати як помічника чи то пак асистента для розжовування коду, ба навіть, написання простих запитів.

З того і почалося. Спершу закинув кілька простих запитів, просто для перевірки, чи взагалі таке можливо:

Результат мене не тільки здивував, але й налякав — наскільки це потужний інструмент у потрібних руках. Тому захотів уточнити для нього промпт, щоб можна було окремо виводити дані за датою. Ось що вийшло:

Як на мене, чудовий результат! Виходить, що мені не потрібно сидіти й вишукувати в документації умовний опис JOIN команди та як її правильно використати. Часто буває таке, що, як би ми не хотіли чи старалися, виникають ситуації, де костиль на костилі, а тестувати все одно потрібно. І потрібно використати той же JOIN.

Але, поспішаючи з тестуванням якогось функціоналу та бігаючи між розділами документації, може настати момент, коли в голові настільки сумбур, що забуваєш, як написати SELETC, SELCT, SELEKT, SELECT.

Блискучий помічник з налаштування та підтримки автоматизації на проєкті

Одними запитами я не обмежився. Розуміючи, наскільки ChatGPT має потенціал, я продовжив експерименти, але цього разу трохи складніші, оскільки потроху почав займатися автоматизацією.

Це було пов’язано з тим, що на одному з моїх проєктів дуже хотіли створити простеньку автоматизацію свого вебзастосунку. Я викликався це робити, бо мав трохи досвіду з Cypress та загалом вже почав рухатися у напрямку автоматизації.

Оскільки колег, які б займалися Cypress, поряд не було, налаштуванням я зайнявся з допомогою того ж ChatGPT. Мене особливо вразило те, що на найпростіший промпт він видав практично покроковий список дій, які я маю виконати, щоб зробити те, що я його запитав.

Вирізав тільки частину скриншоту, бо кожен наступний крок обростає деталями, які необхідно зробити, аби все працювало справно:

Зараз більшість часу все ж займаюся автоматизацією, тому виникає більше проблем з окремими компонентами чи елементами, які чомусь не видимі для автотесту. Проте користувач бачить їх та може з ними працювати, що й сталось на одному з моїх проєктів.

Я ніяк не міг знайти елемент CKEditor та постійно отримував помилку «(uncaught exception)CKEditorError: Cannot read properties of null (reading ’root’)». Перерив документацію, яка стосується цього редактора, шукав рішення на StackOverflow, але нічого не міг знайти.

Запитував розробників, які були причетні до імплементування саме цього редактора на вебсторінку, але рішення так і не було. Тому вирішив запитати ChatGPT, як можна розв’язати цю проблему. Він, звісно, спершу вказував на те, що потрібно оновити версію цього редактора:

Але моя впертість і запевнення від розробника, що ми використовуємо найновішу версію, призвели до того, що ChatGPT все ж таки здався та почав пропонувати якісь рішення.

Я додавав їх в код, і картинка дійсно змінилася — елемент став видимим для тестів. Звісно, вилізли інші помилки, й десь після п’ятого уточнювального промпту з логами та частинами коду, він видав повноцінне розв’язання проблеми:

З огляду на рішення, яке було запропоноване чатом, я припустив, що все ж на проєкті була не найновіша версія редактора CKEditor. А наступна детальніша розмова з розробником довела цю думку.

Спершу найсвіжіше оновлення було, але через нього не працювала інша критично важлива функціональність, тому на проєкті вирішили повернутися на одну з попередніх версій цього редактора. Втім, це ніде не було вказано у загальній документації. Відтак, у цьому випадку ChatGPT блискуче допоміг розібратися у досить заплутаному клубку дій та наслідків.

Чудовим прикладом застосування чату стала модифікація збірки запитів з формату .json у формат .js для використання в автотестах. Так, все це можна було зробити руками й це зайняло б кілька тижнів, але завдяки чату я спромігся у чорновому форматі зробити це за два дні та цілком владнати нюанси за третій.

Як на мене, це прекрасний показник збільшення ефективності роботи, особливо у ситуаціях, коли за короткий термін можуть надходити кардинально різні вимоги до програмного забезпечення чи до умов тестування цього програмного забезпечення.

Якщо ж відійти від інших сторонніх застосунків, ChatGPT чудово обробляє чітко направлені промпти, наприклад, написання чек-листа для якогось функціоналу:

Вийшов список з 14 пунктів, але нам такий не потрібен, тому пишу уточнювальний промпт:

Так, дехто може зауважити, що він трохи наплутав і забрав якраз необхідні обчислення з першого пункту, змішав та змінив четвертий і п’ятий пункти або ж перевірку з сьомого пункту замінив на збереження налаштувань. Згоден.

Проте, якщо дивитися на саму концепцію, то у цьому випадку умовний тестувальник має два списки, які легко копіювати та вставляти в будь-який текстовий редактор чи документацію. Себто, не потрібно писати все з нуля і витрачати дорогоцінний час, а просто відредагувати так, як потрібно в цей момент, та надалі використовувати для тестів вже готовий чек-ліст.

Підсумовуючи, хочу підкреслити, що ChatGPT ще досить сирий. Буває, що сам вигадує деякі поняття. Але, на мою думку, це швидше його фішка аніж недолік. І вона поки допомагає вирізнити його стиль від написаного людиною.

Проте, сподіваюся, що в наступній ітерації або ж новій версії, він буде точнішим там, де це просто необхідно для технічних промптів. А в інших випадках мовна модель надалі генеруватиме просту випадкову відповідь, яка не потребує ані підтвердження, ані застосування.

Як, наприклад, у випадку з моєю розповіддю про морських коників та монгольський степ:

Наостанок післяслово

Попри те, що автоматизація займає все більший простір у житті людини, ми як професіонали мусимо розвиватися у «своїх сферах» та випробовувати різні креативні підходи. Інакше можна законсервуватися у своїй бульбашці, а потім довго нити у соцмережах, що якусь умовну технологію більше ніхто не використовує.

Як можемо побачити, виживає той, хто росте, виживає той, хто еволюціонує, а той, хто пропагує постулати новітнього «Луддизму», залишається на сторінках історії як пережиток минулого...

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Скажу, як автоматизатор, що чатжпт- 💩
Сам він нічого не вміє , йому треба давати такі підказки, що без досвіду у автоматизації я би цього не знав навіть.
Якщо просто сказати, щоб написав тести по якимось даним, то він напише таке 💩, що підтримувати це неможливо.
Також він не може адекватно написати код з використанням того чи іншого патерну.
Якщо треба згенерувати дані — тоді цей інструмент корисний.

Ну цікава думка, та мені все ж таки чат допоміг з кількома надзвичайно складними ситуаціями на проєктах, так він довго до того йшов і я задавав уточнюючі промпти та все ж я отримав рішенння, яких ані в гуглі, ані в стековерфлоу не те що не було, навіть таких питань ніхто не задавав, ну і все ж таки якщо достатньо продумати промпт, то він видасть досить очікуваний результат, хоч деколи додає свої «фантазії» бо це все ж таки мовна модель, а не тім лід якого можна щось спитати, ну а він з висоти свого досвіду вже бачив всі можливі варіянти і з пів слова розуміє про що йде мова, саме чату потрібні додаткові вхідні дані, тому загалом і цілковито покладатися на сиру технологію не потрібно, проте слідкувати за її розвитком та час від часу використовувати можна.

Наразі мені простіше самому написати, ніж задавати питання боту.
Але розумію, що у майбутньому прийдеться більше з ним комунікувати.
А можливо, колись це забере у мене роботу 😐

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

Чат не замінний помічник, з бардом від гугл можна навіть не порівнювати)) Але чат деколи видає хибні данні

Коли я робив щось схоже я паралельно «задавав» ті самі запитання до Гугл. І коли порівнюєш, то складно сказати, що краще, бо Чат впевнено видає помилкове рішення яке ще треба протестити, а таку саму відповідь на Стаковерфлоу вже встигли замінусувати і навіть надати поясненя чому.

У моєму випадку були питання, яких ніхто ніколи не задавав на стековерфлоу, тому прийшлося гратися з бубном, тобто з чатом, так він не зразу дав рішення, але моя наполегливість ну і те що його вчили не тільки на художній літературі видали прямо таки те рішення, яке працює та з яким не змогли допомогти мені «шкіряні мішки», тому очевидно, що технологія розвиватиметься, з часом думаю навіть шнурки будуть зі штучним інтелектом і заставлятимуть носія ходити більше кроків)

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

Можу сказати, що ваш емпіричний досвід з питаннями на стековерфлоу не є вичерпним, мало того, проблема з якою я стикнувся, повязана із тим що Сайпрес не міг розпарсити частину айфрейма, навіть офіційна документація по всіх елементах, які мені потрібно було перевірити не описувала (принаймні та версія, яка була доступна), але завдяки тому що я скормив йому логи помилок та старався максимально описати, що я від нього хотів, він видав саме те що я очікував. Ну і що це значить оце — «...питає щось геть не потрібне...», якщо у документації взагалі нічого не пише, а колеги які працювали з елементами, які мені потрібно було потестувати, не могли внятно допомогти бо на той момент від початку створення в’юшки до моменту її тестування змінилося кілька поколінь девів, які точно розуміли рівно те що стосувалося їх роботи, а все що було «до», ніхто навіть не хотів розгрібати і копатися у тонах легасі коду тому і відповіді від живих людей я не отримував буквально тижнями, а чат, у порівнянні, видав працюючу відповідь за 5-8 промптів, що як на мене досить швидкий варіянт вирішення проблем.

Ну буває ще варіант «питати щось надто очевидне».
Хай там як але рішення, яке є тільки у ChatGPT, навіть звучить не дуже.

Називати щось, чого навіть у документації немає «надто очевидним» — сильно, моя повага. Питання до чату, фактично єдине, що мені допомгло, я тому і статтю написав, бо насправді до того моменту ставився до чату немов то забавка якась, де можна дурниці написати, а він дурниці буде відповідати)

З мого досвіду, його відповіді дуже підступні, хоча з першого погляду можуть виглядати нормальними.

Підписатись на коментарі