Як я спробував замінити себе на ШІ в реалістичних умовах роботи тестера

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

Привіт, друзі! Я — Льоша, автор блогу про тестування QAMania і один з ведучих подкасту «Питання Якості» на DOU. В одному з останніх випусків подкасту ми якраз обговорювали, чи замінить ChatGPT тестерів?

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

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

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

❗️ Дослідження я проводив, використовуючи ChatGPT-4, розраховуючи отримати найякісніші результати.

Аналіз поганих вимог

Почати я вирішив з очевидно поганих вимог, в яких постарався зібрати всі можливі проблеми: текст в стилі «потік свідомості» і відсутність будь-якої структури, граматичні і логічні помилки, дивні побажання.

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

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

It's a Tamagotchi-style game where players feed, cure, clean, and interact with a virtual pet.

Далі я попросив його згенерувати мені use cases, і вийшло добре, враховуючи, наскільки бідні оригінальні вимоги.

Use Case: Feeding the Pet
Actor: Player
Preconditions: The pet is hungry.
Postconditions: The pet's hunger level is decreased.
Flow of Events: The player selects the 'feed' option in the game menu, and the pet's hunger level is decreased.

Далі я попросив проаналізувати мої вимоги згідно стандарту IEEE 830, що описує характеристики хороших вимог, такі як точність, однозначність і т.д. І нарешті отримав від нього трохи критики: структури нема, scope незрозумілий, опис програми поверхневий і не повний. Самі вимоги не містять нефункціональних деталей, обмежень до дизайну. І згідно стандарту, це взагалі на вимоги не схоже. 😁

Ну, ок, кажу. Якщо все так погано, сформуй мені список питань і уточнень, які я можу переслати відповідальному аналітику чи product owner’у, щоб усе покращити. І тут я отримав трохи крінжі. Наприклад:

  • «У вимогах написано, що гра має бути цікава людям від 3 до 93, але може і ні, давай визначимо іншу авдиторію» — це нісенітниця, оскільки вказане речення — не вимога взагалі, і не має бути присутня в SRS.
  • «Як гравцю відслідковувати прогрес?» — питання валідне, але невже це топ 2, що б ти питав? Невже твоє віртуальне око нічого більше не муляє?
  • «Яка в грі буде стратегія монетизації? Може преміум зробимо чи вбудовані покупки?» — гри ще нема, а вже думає про прибутки. Впевнений, EA Games вже тобі раді. 😁

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

The game should run smoothly and without delays in response to user actions.

Наступний крок аналізу — написання тест-кейсів. І чат впорався, хоч і не з першого разу. Довелось окремо його просити прибрати з тестів всі нелогічності й неоднозначності, які він тупо скопіював з тексту.

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

Аналіз нормальних вимог

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

Потім спитав майже той самий список питань. Якість вимог згідно з стандартом IEEE 830 — тут чат нас похвалив 😄

Overall, your SRS document appears to be quite thorough and well-structured based on the sections you've shared. It adheres well to the IEEE 830 standard, providing clear, detailed, and precise requirements for your Circus Ticket Application.

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

Тест-кейси — з першої спроби написав досить поганенько. До рівня junior QA не дотягує. Точніше, як чек-лист — все просто супер. Розробляючи вимоги, ми спеціально робили деякі секції такими, щоб бути покритими різними техніками тест-дизайну, і чат успішно їх використав. Але він не зміг зробити нормальні кроки, і передумов замало:

Test Case 1 - Coupon Discount
Preconditions: User is logged in and the coupon "DISC5" exists in the database.
Input: Enter coupon "DISC5" during the ticket buying process.
Expected Result: The final price should be discounted by 5% of the ticket's basic price.

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

Test Case ID: TC_LP_01
Test Case Description: Verify that the application correctly applies a 5% discount when a valid coupon number is entered.
Preconditions:
The Circus Ticket Application is installed and accessible.
User is registered as a Customer in the application.
User is logged in and has at least one ticket in the cart.
Test Steps:
1. Navigate to the Shopping Cart page.
2. Input a valid coupon number in the 'Coupon Number' field.
3. Click on the 'Apply Coupon' button.
Expected Result: The application should calculate a 5% discount on the ticket's basic price and display the updated final price.
Postconditions: The cart contains a ticket with a discount applied to its basic price.

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

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

Окремо стало цікаво, чи зможе чат проаналізувати ризики, і попросив його надати список, вказавши для кожного вплив, імовірність і сценарій пом’якшення (mitigation). Але отримав список випадкових подій з випадковими цифрами. Йому явно не вистачило контексту проєкту розробки і питати більше деталей для аналізу ризиків чат навіть не намагався.

Висновки

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

  • Аналітики і тестери можуть поки що спати спокійно — зробити пристойний системний аналіз навіть одного документу, ми, люди, все ще можемо краще. 😁
  • Не зважаючи на те, що чат не бачить очевидних логічних проблем в тексті, він чудово розуміє контекст написаного, як би погано текст не був оформлений і його можна використати, щоб він почитав будь-яку маячню і видавав вам короткий переказ.
  • На додачу до попереднього пункту — чат може виділити основні use cases і навіть накидати список тест-кейсів. Так, їх всі треба буде вичитати, але це може бути простіше, ніж писати їх руками. Особливо, коли написання тест-кейсів — необхідна формальність.
  • А ще чат робить гарні шаблони будь-яких документів. Я просив тести, плани, звіти. Їх не обов’язково використовувати as is, але ви завжди можете звіритись, чи не пропустили якийсь пункт при плануванні роботи чи якусь метрику при підготовці тестового звіту.
  • Чат — дуже потужний інструмент, але все ще інструмент. Якщо ви знаєте, що саме від нього хочете, і можете оцінити якість результату (а не прийняти його за істину) — він може зекономити вам час на читанні і написанні документів. Але зробити роботу за вас — точно ні, бо не має таких важливих якостей як ініціативність, допитливість і розуміння.
  • P.S. А ще я почав активно використовувати його в програмуванні — шукає і пропонує рішення, які я, навіть знаючи вже відповідь, не зміг знайти ні в офіційній документації тих фреймворків, що використовую, ні на stackoverflow
👍ПодобаєтьсяСподобалось12
До обраногоВ обраному2
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

Написали тут мені:

Добрий день, цікавить допомога з виконання курсової з кросплатформеного програмування.
Потрібно виконати або вебдодаток або десктоп/IOS додаток на Java для реалізації цього завдання:

Тема 1. Програма для моделювання сортувального вузла на залізниці.

Програма повинна розділяти на попередньо вказану (від двох до п’яти)
кількість напрямків потяг, що складається з вагонів такої ж кількості типів (на
кожний напрямок формується потяг із вагонів одного типу). Сформувати звіт,
що містить номера вагонів по напрямах, час формування та ПІБ виконавця.
Передбачити можливість формування потягу з файлу та з клавіатури.

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

І це у мене типова ситуація — вони всі питають: за який час? та за які гроші?

Як би я міг одразу відповісти на ці питання — я б не відмовлявся від таких замовлень.
Не маю еталону..

І тут мене осяяла думка: А що, якщо...

Цікаво, чи міг би на ці два питання (за який час? за які гроші? ) дати відповідь штучний інтелект?
Спитав у Бінга:

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

Ось так:
— рівень знань (Чи може ШІ оцінити мій рівень знань?)
— досвід (А як врахувати досвід?)
— інструменти

Як на мене то все це якісь дані, які можна здобути. Тобто...

Тарифікуючий ШІ можливо створити?

Дякую, Олексію, було цікаво і пізнавально! 👍

Задав питання щодо порядку елементів у YANG моделях, відповідь #1:
“In the YANG data modeling language, the order of elements in an XML document generally does not matter. YANG models define the structure and hierarchy of data, but they do not impose any requirements on the order in which elements appear in an XML instance document.

YANG models specify the data elements and their relationships, constraints, and other properties, but they do not enforce the order of elements in the XML. As long as the XML document adheres to the data model’s schema and contains the expected data elements, the order of the elements in the XML document is typically irrelevant.”

Попросив пруф, відповідь #2:
“Apologies for any confusion caused. In YANG, the order of elements within a container or a list does matter. The YANG data modeling language defines a specific order for the elements within a container or a list, and XML instances should adhere to that order specified in the YANG model.

The YANG specification itself defines the order of elements within a container or a list. According to the YANG 1.1 specification, Section 7.7.3:

’The order of the child statements within a container or list is significant, and is used to define the XML element ordering within the container or list. The order of these child statements is also used to define the default order of these child elements when the container or list is serialized into XML or JSON.’”

До того, щоб когось заміняти чи довіряти якусь серйозну роботу ще далеко

Коментар порушує правила спільноти і видалений модераторами.

тільки я оце написав, як класно ШІ розуміє контекст, як він мені таку фігню сьогодні видав 😄

Донька попросила на ДН лук. поліз на розетку шукати, а вони є різних типів: звичайні, блочні і рекурсивні. І от не знаю я, що таке рекурсивний лук. Якщо гуглити — то гугл видає посилання на магази, де рекурсивний лук можна купити, але не пише, що це таке.
➡️ Питаю в чатГПТ — він каже «Рекурсивний лук — це гумовий математичний термін, який походить від поняття рекурсії. Рекурсія відноситься до процесу повторення або виклику функції самою собою»
➡️ Питаю в chatGPT (англійською) — і знову ліва відповідь «Recursive BoW (Bag of Words) is a variant of the traditional Bag of Words model that incorporates a recursive or hierarchical structure. The Bag of Words model...»
➡️ питаю в bing, і хоч він дає мені пояснення, але щось в ньому не так... 🤣 рекурсивний лук — це цибуля з загнутими плечима в сторону, протилежну від стрільця...

Recursive BoW (Bag of Words) is a variant of the traditional Bag of Words model that incorporates a recursive or hierarchical structure

га-га-га, красава :)
Насправді, це цікавий феномен, тому що гугл на запит «recursive bow» зразу відповів

Showing results for recurve bow
Search instead for recursive bow

і, відповідно, ми тут же дізнаємось, що коректний термін англійською «recurve bow» і на нього вже є всі вірні пояснення.

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

два гопника.jpeg

I’m sorry, but as of my training data cut-off in September 2021, there’s no such thing as a “recursive bow” in terms of archery or weaponry. Perhaps you’re referring to a “recurve bow”?

A recurve bow is a type of bow that has tips that curve away from the archer when the bow is strung. This design gives the bow more power, and therefore more speed to the arrow, for the same amount of pull compared to a straight-limbed bow. This is due to the mechanical advantage that the recurve design provides.

Recurve bows can be used for many purposes, including target archery, hunting, and in some traditional forms of archery. They are the only type of bow allowed in Olympic archery events.

If you meant something other than a recurve bow, could you please clarify? If there have been any developments or new terminology introduced after September 2021, I might need to use the browser tool to look up the most current information.

Чат — це звичайна переставлялка слiв мiсцями. Якщо щось було вже десь написане и потрапило в датасет для навчання — чат справиться. Якщо щось не гуглиться вiдносно швидко — чат теж посмочке.

Ще як варiант — видати саммарi або нагенерити буллшиту з чиiхось фраз

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

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

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

А хайпонув він з двох причин — магія та швидке гугління)

Коментар порушує правила спільноти і видалений модераторами.

-

ChatGPT — это по факту шаблонизатор, плюс огромный датасет украденных данных.

огромный датасет украденных данных

define «украденных данных»

Данные без правильной лицензионной аттрибуции

щось ви дійсно втомлений, бо якусь фігню пишете. Чи є десь пруфи, щось чиїсь дані викрадені?

Я б сказав не то що вкрадені, а вдало підібрані ) Мало хто задумується, що можна і не можна згодовувати чату. Таким чином він «краде» те, що погано лежить )

не згоден. От дивіться, ви почитали статтю, написану вище. Можливо дізнались щось нове, тобто навчились. Я ж не звинувачую вас, що ви вкрали інформацію зі статті. І навіть, якщо моя стаття надихнула вас написати власну статтю, все одно це буде вже ваша стаття, а не крадена моя ¯\_(ツ)_/¯

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

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