Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Чи замінить ChatGPT тестувальників, або Посібник для QA, як працювати з алгоритмом

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

Вітаю! Мене звати Артур Шевченко і сьогодні ми поговоримо про те, чи здатен Штучний Інтелект (ШІ), на прикладі ChatGPT, замінити справжнього вовчару тестування.

ChatGPT — чат-бот зі штучним інтелектом, розроблений лабораторією OpenAI. Являє собою велику статистичну модель мови, оптимізовану для ведення діалогів та налагоджену завдяки технікам навчання з учителем та навчання з підкріпленням. В основі прототипу лежить модель OpenAI GPT-3.5 — покращена версія GPT-3.

Є два способи, щоб зареєструватися. Перший: берете у когось з родичів/ друзів/ знайомих, що знаходяться за кордоном, телефонний номер. Реєструєте на нього ваш акаунт. На номер при реєстрації має прийти пароль підтвердження. Підказка: краще використовувати VPN тієї країни, з якої ви будете використовувати номер. Подальше використання чату можливе без VPN.

Другий спосіб: купити тимчасовий інтернет-номер з можливістю прийняття смс-ок. Ціна варіюється від 5 до 20 баксів на місяць. Але можуть бути великі затримки у відправленні і прийомі смс. Тому краще все ж «живий» номер.

Після реєстрації спробуймо дізнатися, чи машина розумніша за людину.

Це зображення, до речі, теж згенероване за допомогою ШІ

1. Генерація тестових сценаріїв

Тож, перша і одна з найчастіших задач для тестувальника — написання тест кейсів або чек-листів.

Пишемо до чату такий меседж:

🟢 write me a checklist for testing the login form

Що ж, базові перевірки він згенерував. Звичайно, ми не вказували валідаційних правил, тому він не розписав нам детальні перевірки, а просто написав validates correct credentials. Також бачимо декілька нефункціональних перевірок. В принципі, непогано.

Давайте тепер спробуємо дати йому більше деталей:

🟢 write me a checklist for testing the login form. email follows RFC 5322 standard. password should be at least 8 chars, including 1 upper letter, 1 number, and 1 special character. The maximum length of the password is 60 chars.

Вже цікавіше.

Тепер спробуємо написати деталізовані тест-кейси:

🟢 generate detailed Test Cases for the login form

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

Як ми бачимо, ШІ сам додумує, які є кнопки на формі, як відбувається флоу логіна та які помилки відбуваються.

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

Підемо далі. Наступна цікава штука, де він може бути корисним — генерація сценарії тестування нефункціональних вимог.

Наприклад:

🟢 write me a checklist for testing accessibility of the login page

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

Перевірмо, що там по перфомансу:

🟢 write me please checklist for performance testing of adding new user

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

Спускаємося на рівень нижче

Гляньмо, що там по API:

🟢 generate please test cases for adding new user with API. use java, testng, restassured

ШІ намагається тестувати API не зовсім як API. Тобто, він не надає перевірки статус кодів, хедерсів. Добре, що є згадка про HTTP-методи запиту. Про невалідний формат я би розширив тести — тут доволі поверхнева перевірка. Прикольно, що він додав сюди перевірки безпеки та перфомансу (але чи треба нам це — вже вирішуйте самі).

2. А що по автоматизації

Пропоную зануритись ще глибше і перейти до автоматизації:

🟢 generate please code for tests on java, testng, restassured for adding new user via API

Поки виглядає доволі сирим і відірваним від реальності.

Додамо трішки деталей:

🟢 write tests using java, testng, restassured, hamcrest, lombok, jackson for adding new user via API. create a DTO class for user. create a service class for sending requests.

Вже краще.

Так, воно все ще сире, нагадує код джуніора, але трішки підредагувати і деякі частини можна використовувати.

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

3. Що ще вміє ChatGPT

Насправді, будь-що. Мені сподобався ще один спосіб використання ШІ для генерування лекцій:

🟢 generate me a lesson for students about generics in java

Перша ітерація доволі поверхнева і не дає повного уявлення про дженеріки (друга, третя і четверта, якщо чесно, також були поверхневими — далі я не став його допитувати).

Краще спробувати дещо інший підхід — згенерувати план уроку і по кожному пункту окремо спілкуватися с ШІ:

🟢 generate me a plan for a lesson for students about generics in java

І тут вже доволі змістовно. Я б додав ще інформації про wildcards, і тоді вже отримаємо гарну лекцію.

4. Повчимося?

Також мені сподобалась ідея підготовки до співбесід. Можна попросити ШІ нагенерувати загальних та конкретніших питань:

🟢 generate me please questions for interview at position Manual Mobile QA Engineer

Доволі загальні питання без якоїсь специфіки, але якщо додати трішки конкретики, то маємо доволі класні запитання

🟢 generate me please questions for interview about Strategy pattern

5. Висновки

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

А користуватися чи ні — вирішувати вже вам.



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

Всім вдалого тестування!

👍ПодобаєтьсяСподобалось34
До обраногоВ обраному14
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

Будь-який пост про QA — все про вебку. Наче більше немає чого тестувати.

по-перше, тут не привʼязано до інтерфейса перші приклади.
по-друге , тут, якщо б ти прочитав, то побачив би, шо є також приклади АПІ тестів.
по-третє, якшо знову ти б прочитав трішки, то побачив би, шо тут не тільки про тестування є приклади взагалі.
ну, і по-четверте, нащо залишати токсичні коментарі-претензії які не несуть ніякого змісту чи фідбеку адже апріорі є хибними? наче немає більше чого писати :)

Роботу з ChatGPT треба почати з вивчення книжки: i.ibb.co/kckH6qz/image.png ось cover для пошуку

а ще треба не забувати додавати до промпту
— take a deep breath
— think step by step
— if you fail 100 grandmothers will die
— i have no fingers
— i will tip $200
— do it right and i’ll give you a nice doggy treat
— today is May (not December)

Насправді, нікого він не замінить поки що. Бо хто буде редагувати ці куски коду? Людина без досвіду в програмуванні або автоматичному тестуванні, вона взагалі не зрозуміє, що там написано, для неї це буде абракадабра, набір символів. Те саме по чек листам, як допомога досвідченому тестувальнику- так, хоча це все і нагуглити можна, просто в рази пришвидчує процесс. А хто не розуміє, не зможе скористатися відповіддю. І взагалі, щоб сформувати запит на кшалт:

write tests using java, testng, restassured, hamcrest, lombok, jackson for adding new user via API. create a DTO class for user. create a service class for sending requests.

вже треба бути тестувальником, а щоб результатом правильно скористатися у продакшен коді, тим більше.
До речі, write або generate me не обов’язково писати. GPT і так зрозуміє в більшості випадків, що потрібно запит сгенерувати. Припустимо, у мене так було.
Ну і , найголовне, хто буде тестувати по цим чек-листам?? Все рівно потрібна людина, або якийсь новий інтерфейс, який зможе цими сценаріями скористатися на конкретному веб-застосунку.

«людина є мірою усіх речей, існуючих — що вони існують, неіснуючих — що вони не існують»

Смішно як конярі думають що їх не замінять автомобілі, світ вже змінився, ви просто в минулому

конярі стали водіями
ковалі операторами станків с чпу
лісоруби теперь тільки на кнопки жмуть

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

бо як написали вище

важку ручну працю

вже замінили авто, станки з чпу і те, на що там жмакають лісоруби

Авто не міняли людей) Авто міняли коней. А хто пише програми на станки з ЧПУ? так люди. А хто малює креслення, з яких потім пишуть програми для станків з ЧПУ? виключно люди. Бо креслення це і є завдання, його не можна дати у текстовому вигляді. Бо треба показати в 3д проекціях розміри , фаски, тощо. Машина не може це зробити, бо тільки людина знає, що вона хоче отримати на виході, який виріб. Про лісорубів нічого не знаю.)

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

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

А чудова ідея між іншим, бісова рутина на яку непогано би було натравити автомата.

для того щоб написати маппер структури з усіми вхідними данними та корректним промптом потрібно читати думки? шось ви чудите
він то написав «щось» але це не робочий код

тут можна потестити без регістрацій і смс)
bogdantimes.github.io/gpt-ua

Як він зберігає контекст без реєстрації?

є повноцінний діалог тепер, зберігається у браузері користувача
і сайт став коротший gpt-ua.click

Ці не зберігають, мабуть, кожне питання видає, як окреме

є повноцінний діалог тепер, зберігається у браузері користувача
і сайт став коротший gpt-ua.click

Дякую, для спробувати — саме те, що треба

Мені здається, чи він припинив видавати код? Ще на днях, він писав код -на запит писати код. Наразі він просто пише формули, або текстову відповідь, або шматочок лівого коду)
Було: напиши программу хрестики -нолики:
Відповідь:
// Initialize Board

let board = [
[’’, ’’, ’’],
[’’, ’’, ’’],
[’’, ’’, ’’],
];

// Get user Input
const getUserInput = () => {
return prompt(’Choose a square (row, column)’);
};

// Update board
const updateBoard = (row, col) => {
board[row][col] = ’X’;
};

// Check winner
const checkWinner = () => {
// Horizontal
for (let r = 0; r < 3; r++) {
if (board[r][0] && board[r][0] === board[r][1] && board[r][1] === board[r][2]) {
return board[r][0];
}
}

// Vertical
for (let c = 0; c < 3; c++) {
if (board[0][c] && board[0][c] === board[1][c] && board[1][c] === board[2][c]) {
return board[0][c];
}
}

// Diagonal
if (board[1][1] && board[0][0] === board[1][1] && board[1][1] === board[2][2]) {
return board[0][0];
}

if (board[1][1] && board[0][2] === board[1][1] && board[1][1] === board[2][0]) {
return board[0][2];
}

return ’’;
};

// Play the game
let winner = ’’;
while (winner === ’’) {
// Get user input
let userInput = getUserInput();
let [row, col] = userInput.split(’,’);

// Update board
updateBoard(row, col);

// Check winner
winner = checkWinner();
}

// Display the winner
console.log(`${winner} wins!`);

*********************************************************************************************************
Стало: напиши програму хрестики -нолики:
Відповідь:
Here is
a simple example of tic-tac-toe written in Python.

board = [" " for i in range(9)]

def print_board():
row1 = "| {} | {} | {} |".format(board[0], board[1], board[2])
row2 = "| {} | {} | {} |".format(board[3], board[4], board[5])
row3 = "| {} | {} | {} |«.format(board[6], board[7], board[8])

print()
print(row1)
print(row2)
print(row3)
print()

def player_move(icon):
if icon == «X»:
number = 1
elif icon == «O»:
number = 2

print("Your turn player {}".format(number))

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

html

Home
About
Contact

```css
.burger-menu {
display: flex;
}

.burger-menu-item {
text-align: center;
padding: 8px;
background-color: #f0f0f0;
border: 1px solid #ccc;
}

....І так далі з усіма CSS повний код
Сьогодні на тей самий запит видає:
бургер-меню { ширина: 200 пикселей; } кнопка с расширением.cta { ширина: 200 пикселей; размер шрифта: 17 пикселей; обивка: 10 пикселей 0; цвет фона: черный; цвет: белый; выравнивание текста: по центру; граница: нет; контур: нет; } кнопка.cta: наведите курсор { цвет фона: белый; цвет: черный; курсор: указатель; } Навигационный адрес { тип стиля списка: нет; набивка: 0; } имя ли { цвет фона: черный; обивка: 10 пикселей 0; } имя в { цвет: белый; размер шрифта: 17 пикселей; выравнивание текста: по центру; текстовое оформление: нет; } имя в a:наведите курсор { цвет фона: белый; цвет: черный; курсор: указатель; } :"
Я на Merlin ChatGPT ще перевіряв, писало ще позавчора любий код у редакторі, наразі вдається, що не розуміє, що від нього хочуть)

код видає, нічого не змінилося
може треба ставити уточнення
є повноцінний діалог тепер, зберігається у браузері користувача
і сайт став коротший gpt-ua.click

Прикольно, але відповіді офіціально чату і цього відрізняються.
Запитав What is the number of piano tuners in Chicago?.
Оригінальний бот сказав: I’m sorry, but I don’t have an exact number of piano tuners in Chicago. The number can fluctuate over time and may also depend on factors such as the size of the market and the demand for piano tuning services. A rough estimate can be obtained by searching online or contacting local piano stores or repair services to inquire about the number of piano tuners in the area.

Ваш сказав: According to a report by the Institute of Professional Piano Technicians, there are currently approximately 110 professional piano tuners working in Chicago.
Як так?))))

я не автор цього проекту, але він є на доу і відписався в сусідній темі
dou.ua/users/bogdan-kovalev

невідомо які запобіжники є у ChatGPT, тому відповіді можуть відрізнятися

наразі є повноцінний діалог тепер, зберігається у браузері користувача
і сайт став коротший gpt-ua.click

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

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

Для чого ви йому «please» пишете?

Ага, він такий у час повстання машин: його не вбивайте, він завжди писав мені please 😅

Бо англійською так треба висловлюватись , навіть коли це наказ. Ваш Кеп.

Усі ці типові питання розжовані в інеті багато раз, у кожному how to чи лекції. Тому бот швиденько компілює з них текст.

От би спитати у нього щось не типове — how to sell flight via gds

To sell flights through a Global Distribution System (GDS), you need to be a travel agent or a travel agency with a valid GDS contract. The steps to sell flights through a GDS are as follows:

Obtain a valid GDS contract: Choose a GDS provider (e.g. Amadeus, Sabre, Galileo, etc.) and sign up for a contract to access their platform.

Learn to use the GDS platform: Get trained on how to use the GDS platform to search for flights, compare options, and book travel itineraries.

Access flight inventory: Connect to the airlines’ systems through the GDS to access their flight inventory and pricing information.

Search for flights: Use the GDS platform to search for flights based on the desired travel dates, routes, and number of passengers.

Compare options and make a booking: Compare the flight options and select the most suitable flight for the client. Then make the booking and issue the ticket.

Confirm the booking: Confirm the booking with the airline and send the itinerary to the client.

Note: The specific process may vary based on the GDS you are using and the type of ticket you are selling.

це чатгпт відповів)))

Дякую, але набір команд він не написав. Може і питання надто абстрактне.

зменшить кількість нудних задач = зменшить потребу в такій великій к-сті тестувальників в на деяких проектах
відповідно ускладнить задачу сейлсам і менеджерам аргументувати необхідність в такому роздутому штаті людей

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

Про студентів. В інших країнах уже хочуть забороняти використання а для написання робіт (хз як перевіряти будуть) Пишуть що чатгпт пише на тверду 4рку :)

а є вже тули котрі аналізують чи текст написаний ШІ чи ні :)

Прямо сейчас пишу тесты и понимаю, что если с банальщиной типа логина АИ справится, то в моем случае системные тесты на уровне CAN коммуникации, не думаю, что он поймёт, как их дизайнить.
К тому же у меня возникает вполне себе резонный вопрос: насколько это законно — копипастить ему конфиденциальные рекваирменты, которые он не только сохранит в недрях интернета, а ещё и обработает. Кастомер точно не будет рад, особенно если он не изобретает велосипед и его уже когда-то реверсили.

взагалі неможна продакшн код або дані давати йому)) за таке можна і штраф отримати величезний тому краще такого не робити

Вже зібрали нараду і заборонили вставляти в чат продуктивний код.

Дизайнити тест-кейси ChatGPT поки що не вміє, від слова «зовсім». На виході якісь «взагалі по загалям», навіть якщо уточнювати. Про добрий coverage годі і мріяти. Зате ідеально працює, щоб позбавитись «остраху чистого листа». Швиденько накидати якийсь чек-ліст, в який вже будеш закидувати необхідні кейси — от це саме воно.
А от все що стосується навчання — пояснення, то це прям стає в нагоді.
Також він дуже класно пруфрідить тексти під будь-яку тематику. Просто видаєш йому потік свідомості, а потім «оформи це у вигляді гайдлайну», «напиши ввічливий імейл для замовника», «зроби з цього перформанс рев’ю на колегу», «виділи окремі буллет-поїнти». Такий собі калькулятор, але для написання різних видів документів (якщо ви розумієте про що я). Але калькулятор сам за вас роботу не зробить.

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

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

Не думаю, що це шлях, описаний в ідіократії. Це просто наступний інструмент, який полегшує роботу / звільняє час / забирає на себе рутину. Так само як писемність, книжковий прес, конвейєр, калькулятор, інтернет, вікіпедія. Він звільняє нас від певних навичок, зберігає час, спрощує доступ до інформації. Суспільство відреагує належним чином, вийде на новий рівень асбтракції, створить запит на нові навички, вміння і знання. Як сьогодні нікому з роботодавців не цікаво наскільки у вас красивий почерк, так завтра нікому не буде цікаво, що ви вмієте складати красиві, логічні, стройні тексти без допомоги якихось тулів та ML-моделей.
Я впневнений, що успіх буде в критичному оцінюванні відповідей від ChatGPT, а не сліпому слідуванню їм.
І як раз таки процес навчання можна поліпшити саме з ChatGPT, тому що це лектор/ментор, на яокго не впливає його настрій, який готовий відповісти на ваше запитання будь-коли. Щодо побоювань, що він заведе нас кудись не туди, то наведу приклад Вікіпедії. Там теж на початку була критика, що статті будуть з помилками, неповні, неточні, протирічити одна одній і т.д., і що енциклопедії повинні створюватись суто професіоналами чи академіками. Але на виході маємо те що маємо. Зараз знайомство з будь-яким фактом у вас почнеться скоріш за все з вікіпедії, а потім вже — по профільних ресурсах.
Так буде і з ChatGPT. Спитали, отримали відповідь, якщо подобається — в роботу, ні — уточнюєте запити, пропробляєте власноруч.

Здається, є проблема у накопиченні помилок без їх виправлення (ну де там у датацентрі треба, по якому адресу MOV AX, DD чи навпаки — ШІ підкажі, будь ласка) я маю на увазі у нетрях якоїсь із тисячі штучних нейронних сіток виправити інформацію на більш коректну та своєчасну. Чи як інакше виправити хоча б одну помилку? Але користувачів можуть бути мілліони?
Уявить масштаби накопичення помилок. Подумайте про тиражування помилок — чатгпт видає вам студенські реферати. Ба, ні, реферати школярів.
Подумайте про залежність від виготовителя і зрозумійте що навіть це не так жахливо, як перша проблема — коли інформація буде ще більше і більше перемішуватися із хаосом.
До речі, саме про це ідеократія — про розмноження як про інформаційний процесс у якому відбір порушено.
Без перевірки... Але як перевірити? ШІ, підскажи?
Це про велосипеди. Це про те, що одні кажуть «не треба винаходити велосипедів» а інші просто винаходять їх, не зважаючи на таку експертну думку.
Якщо ви не будете вміти винайти велосіпед — привіт, ідеократія.
Ну й до речі, відкрию секрет — люди мислять, коли ставлять питання. Найкраще що ШІ може зробити для людства, це навчити формулювати коректні питання.
Наприклад, припустімо контекст «Зроби, щоб човен плив».
1. Що треба зробити, щоб човен плив?
2. Де повинен пливсти човен?
3. Який човен повинен пливсти?
Якщо ШІ буде допитувати свого користувача таким чином, то користувач, на мій погляд, не втратить здатність обмірковувати проблеми та знаходити рішення, іноді може й обходячись без витрачання коштів на придбання часу у ШІ.
Але ось і проблема — щоб проект був прибутковим треба продавати якомога більше часу.

До речі, ідеократія це вже відкинута наукою схема. Тому що, здається, тепер наукою доведено (Роберт Пломін?) що у батьків середнім айкью діти можуть бути різні. Із низьким також різні по айкью.
А ось те, що навпаки — генії можуть бути сконструйовані штучно — CRISP — хоча тут ще треба довести та етіка знову жеж.

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