Як я перевіряв, на що здатен ChatGPT у процесі тестування
Усі статті, обговорення, новини про тестування — в одному місці. Підписуйтеся на 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 ще досить сирий. Буває, що сам вигадує деякі поняття. Але, на мою думку, це швидше його фішка аніж недолік. І вона поки допомагає вирізнити його стиль від написаного людиною.
Проте, сподіваюся, що в наступній ітерації або ж новій версії, він буде точнішим там, де це просто необхідно для технічних промптів. А в інших випадках мовна модель надалі генеруватиме просту випадкову відповідь, яка не потребує ані підтвердження, ані застосування.
Як, наприклад, у випадку з моєю розповіддю про морських коників та монгольський степ:
Наостанок післяслово
Попри те, що автоматизація займає все більший простір у житті людини, ми як професіонали мусимо розвиватися у «своїх сферах» та випробовувати різні креативні підходи. Інакше можна законсервуватися у своїй бульбашці, а потім довго нити у соцмережах, що якусь умовну технологію більше ніхто не використовує.
Як можемо побачити, виживає той, хто росте, виживає той, хто еволюціонує, а той, хто пропагує постулати новітнього «Луддизму», залишається на сторінках історії як пережиток минулого...
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів