- Возможности
- Работает ли в России (коротко: сложно, но можно, здесь описывается, как получить доступ к ChatGPT в России)
- Регистрация в ChatGPT
- Пишем тесты в ChatGPT
- Тестирование интерфейса
- Тестирование API
- Feature-файл Cucumber
Суть
«Чат-бот ChatGPT привлек внимание QA-комьюнити. Рассмотрим, способна ли эта платформа упростить задачи тестировщиков; в первую очередь интересует автоматизация веб-тестирования и интерфейса.
OpenAI заявляет, что ChatGPT умеет писать код на разных языках программирования. Реализуем на JS (самом популярном ЯП в QA) самые частые юз-кейсы тестирования UI и API.
Забегая наперед: можно утверждать, что ChatGPT действительно умеет генерировать вполне рабочий код; хотя иногда этот код не идеален, нужны правки (небольшие).
Итак, рассмотрим, как настроить ChatGPT, как генерировать в нем JavaScript-код для Cypress, и оценим работоспособность кода.
Возможности ChatGPT
Продвинутый чат-бот с функциями искусственного интеллекта, обученный на огромном массиве данных. Модель изначально создавалась для чат-ботов и подобных диалоговых систем. Как и другие модели нейронной генерации текста, эта модель обучена на огромном массиве «нативных» текстов (то есть написанных людьми), поэтому выдает ответы, адаптированные под человеческое восприятие.
Работает ли в России
Да, но есть нюансы. О них здесь или здесь; список бесплатных VPN; + способы регистраии здесь.
Cypress
JS-фреймворк автоматизации тестирования веб-приложений. В нем удобно писать и выполнять автотесты; есть функции командной строки (CLI), перезагрузки страниц в реальном времени, и параллельного запуска тестов. Подходит для тестирования современных приложений со сложными пользовательскими взаимодействиями и асинхронными операциями. Позволяет писать тесты, имитирующие то как пользователь работает с приложением, и дает детальный репорт по результатам тестов. Применяется в связке с другими современными инструментами QA, платформами непрерывной интеграции, а также другими тестовыми фреймворками, в рамках общей стратегии тестирования. Используется как тестировщиками, так и разработчиками.
Регистрация в ChatGPT
- Ищем ChatGPT в Гугле.
- Нашли, открываем официальный сайт https://openai.com/blog/chatgpt/
- Нажимаем “Try CHATGPT” (фиолетовая стрелка). Далее видим опции входа и регистрации:
4. Регистрируемся (Signup, удобнее через имеющийся аккаунт в Gmail):
5. Система предложит ввести номер мобильного и принять на смартфон код для завершения регистрации в ChatGPT. После этого появится приветствие с объяснениями и ограничениями ChatGPT, и внизу окно чата, где и будем вводить свои вопросы. Теперь можем приступать.
Пишем тесты в ChatGPT
Итак, пробуем, на что способен ChatGPT по тестам интерфейса и API. Будем задавать вопросы (на английском), которые искусственный интеллект преобразует в код.
Тестирование UI в ChatGPT
Вопрос 1.
“Напиши JavaScript-код для Cypress: открыть URL-адрес http://qaautomationlabs.com/
(На английском: “Write Cypress/ Javascript code for opening the URL of the site http://qaautomationlabs.com“)
Система понимает такой запрос, обрабатывает его, и выдает ответ — пишет для нас готовый код:
Этот код выглядит нормально и запускается без проблем:
describe('My test', () => { it('Visits the website', () => { cy.visit('http://qaautomationlabs.com'); }); });
Страницу открывает:
Вопрос 2.
Предыдущее задание, плюс напечатать в консоли название страницы.
( На английском: “Write Cypress Javascript code for opening the URL of the site http://qaautomationlabs.com and print the title” ) :
Этот код тоже выполнился без проблем, и в консоли видим название-тайтл страницы:
describe("My Test Suite", function () { it("My Test Case", function () { cy.visit("http://qaautomationlabs.com/"); // open the URL cy.title().then(function (title) { console.log(title); // print the title }); }); });
Вопрос 3.
«Напиши Cypress JS код для открытия адреса http://qaautomationlabs.com/ и кликнуть по ссылке Блоги»
(На английском: “Write Cypress/ Javascript code for opening the URL of the site http://qaautomationlabs.com/ and Click on the Link “Blogs” )
Однако, на этот раз код оказался чуть некорректным:
Пришлось исправить код вручную, добавив {force: true } :
describe("Navigate to QAAutomationLabs website and click on Blogs link", () => { it("Visits the website and clicks on the Blogs link", () => { cy.visit("http://qaautomationlabs.com"); cy.get('a').contains('Blogs').click({ force: true }); }); });
И тогда код выполнился, страница открылась:
Вопрос 4.
Сценарий входа (login).
Вопрос сформулируем так:
«Напиши JavaScript код для Cypress, открыть URL-адрес https://www.saucedemo.com и залогиниться с юзернеймом standard_user и паролем secret_sauce и нажать кнопку Login“
(На английском: “ Write Cypress/ Javascript code to Open the URL https://www.saucedemo.com/ login with Username standard_user Password secret_sauce and click on the login button “).
ChatGPT выдает ответ:
Код нормальный:
const username = "standard_user"; const password = "secret_sauce"; describe("Login to Saucedemo", () => { it("should log in with valid credentials", () => { cy.visit("https://www.saucedemo.com/"); cy.get("#user-name").type(username); cy.get("#password").type(password); cy.get("#login-button").click(); }); });
Тестирование API в ChatGPT
ChatGPT умеет генерировать такие тесты.
Вопрос 1.
“Напиши код API на Javascript Cypress для GET-запроса по ссылке https://reqres.in/api/users?page=2 и проверь статус-код 200”
(На английском: “Generate Cypress API code for GET request for link https://reqres.in/api/users?page=2 and verify status code 200“)
Получаем код:
Код оказался 100% рабочий, получен ответ 200.
describe("Send GET request and verify status code", () => { it("should send a GET request and verify the status code", () => { cy.request("GET", "https://reqres.in/api/users?page=2").then((response) => { expect(response.status).to.eq(200); }); }); });
Вопрос 2.
“Напиши код Cypress API POST-запроса по ссылке https://reqres.in/api/users?page=2 с параметрами name”: “morpheus”, job”: “leader” в теле запроса, и проверь статус-код 201“
( “Generate Cypress API code for POST request for link https://reqres.in/api/users?page=2 by passing name”: “morpheus”, job”: “leader” in the body and verify status code 201“ )
Код нормальный, есть ответ 201.
const data = { name: 'morpheus', job: 'leader', }; describe('Send POST request and verify status code', () => { it('should send a POST request and verify the status code', () => { cy.request('POST', 'https://reqres.in/api/users?page=2', data).then((response) => { expect(response.status).to.eq(201); }); }); });
Вопрос 3.
“Напиши код API Cypress DELETE-запроса по ссылке https://reqres.in/api/users?page=2, и проверить статус 204.“
( “Generate Cypress API code for DELETE request for Url https://reqres.in/api/users?page=2 and verify status code 204“)
С кодом все ок, ответ 204.
describe("Send DELETE request and verify status code", () => { it("should send a DELETE request and verify the status code", () => { cy.request({ method: "DELETE", url: "https://reqres.in/api/users?page=2", }).then((response) => { expect(response.status).to.eq(204); }); }); });
Генерация .feature-файла Cucumber в ChatGPT
ChatGPT умеет такое.
Вопрос 1.
“Напиши мне feature-файл Cucumber, открывающий URL https://qaautomationlabs.com, далее нажать кнопку “Read more” и проверить наличие на странице текста “Running End-to-End Cypress Test cases In Google Cloud Build Pipeline”:
(“Generate the Cucumber feature file to Open the URL https://qaautomationlabs.com and click on the “Read more” button and verify the text Running End-to-End Cypress Test cases In Google Cloud Build Pipeline”):
Feature: Navigate to qaautomationlabs.com, click a button, and verify text As a user I want to visit qaautomationlabs.com, click a button on the page, and verify that certain text is displayed So that I can see the content that the button reveals and confirm that the expected text is present Scenario: Click the button and verify text Given I am on the qaautomationlabs.com homepage When I click the "Read more" button Then I should see the content that the button reveals And I should see the text "Running End-to-End Cypress Test cases In Google Cloud Build Pipeline"
Неплохо.
Вопрос 2.
“Напиши feature-файл Cucumber: открыть URL https://www.saucedemo.com, логин с юзернеймом standard_user и паролем secret_sauce, нажать кнопку LOGIN.”
(Generate the Cucumber feature file to Open the url https://www.saucedemo.com/ login with Username standard_user Password secret_sauce and click on LOGIN button):
Feature: Navigate to qaautomationlabs.com and click a button As a user I want to visit qaautomationlabs.com and click a button on the page So that I can see the content that the button reveals Scenario: Click the button Given I am on the qaautomationlabs.com homepage When I click the "Read more" button Then I should see the content that the button reveals
Все ок.
Вопрос 3.
“Напиши таблицу данных Cucumber для сайта https://www.saucedemo.com”
(«Generate cucumber Data table for https://www.saucedemo.com/ «):
Feature: Login feature As a user, I want to be able to log in to the website so that I can access my account. Scenario Outline: Successful login Given I am on the login page When I enter my email address "<email>" and password "<password>" And I click the login button Then I should be logged in Examples: | email | password | | standard_user | secret_sauce | | locked_out_user | secret_sauce | | problem_user | secret_sauce | | performance_glitch_user | secret_sauce |
И с этой задачей ChatGPT тоже справился.
Что имеем
ChatGPT хорошо работает для простых рутинных задач тестировщика. Уже понятно, что платформа может стать стандартом low-code-тестирования во многих областях QA. Хотя иногда и случаются небольшие ошибки, которые нужно исправлять вручную.
В целом, код написанный ChatGPT очень близок к написанному человеком, и вполне рабочий.»
***
Ну, и в завершение спросим у бота:
— Может ли ChatGPT заменить тестировщиков?
Ответ:
«- Нет, ChatGPT не сможет заменить тестировщиков. Хотя искусственный интеллект уже умеет отвечать на вопросы и генерировать тексты, ему не хватает умений тестировать ПО и находить баги систематически и внимательно. Люди-тестировщики играют критически важную роль в обеспечении качества ПО, используя свою креативность, опыт, и интуицию для поиска багов, которые ИИ найти не способен.»
***