Технологический рубеж: примеры применения больших моделей ИИ в автоматизированном тестировании
Технологический рубеж: примеры применения больших моделей ИИ в автоматизированном тестировании

Всем привет, я Брат Шесть! Сегодня мы поговорим о том, как использовать большие модели искусственного интеллекта (например, GPT-3.5) для автоматического тестирования. Хотя это звучит высококлассно, это не так уж и удивительно. Следуйте за нами шаг за шагом, чтобы убедиться, что вы можете легко это сделать. сделайте это, научившись этому, вы избавите себя от проблем на работе.

Эта статья предназначена для функционального тестирования и новичков.,Здесь я постараюсь объяснить простым языком с примерами.,Постарайся быть понятым всеми,Рекомендуется всем сначаласобирать,Чтобы не найти его потом. 😎

01

Готовьтесь заранее и действуйте планомерно

Во-первых, нам нужно что-то подготовить, так же, как мы должны подготовить ингредиенты перед приготовлением.

Установить Python

Сначала вы должны установить Python на свой компьютер. Стоит ли говорить, на каком компьютере сейчас нет Python? Если вы все еще не знаете, как его установить, просто найдите «Руководство по установке Python» на Baidu и следуйте ему.

Установите библиотеку OpenAI.

Далее нам нужно установить библиотеку OpenAI, которая используется для вызова модели GPT-3.5. Откройте командную строку (называемую CMD в Windows, Терминал в Mac и Linux) и введите следующую команду:

Язык кода:javascript
копировать
pip install openai

Получить ключ API

Сначала нам нужно выяснить ключ API. Как будто тебе нужно взять с собой ключ, когда выходишь. Без этой вещи ты не сможешь войти.

Язык кода:javascript
копировать
api_key = "your_openai_api_key"
openai.api_key = api_key

Видите, эти две строки кода настраивают ваш ключ API. Просто замените «your_openai_api_key» на свой ключ и все.

02

Выдвигайте требования и уточняйте цели

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

Язык кода:javascript
копировать
prompt = «Создать тестовые примеры для пользователя Авторизоваться, которые включают только нормальные и нештатные ситуации. 2 Вариант использования статьи"

Просто скажите большой модели наши требования всего в одном предложении. Просто и понятно, без заморочек.

03

Построение сообщений: что приходит и уходит

Это похоже на общение с кем-то: вам приходится говорить взад и вперед. Мы должны рассказать большой модели, что она делает и что делаем мы. Таким образом, он может служить нам лучше.

Язык кода:javascript
копировать
messages = [
    {"role": "system", "content": «Ты полезный помощник.»},
    {"role": "user", "content": prompt}
]

Эти две строки кода создают список сообщений. Первое сообщение сообщает большой модели, что это полезный помощник, а второе сообщение — это подсказка, которую мы только что написали. Это все равно, что поздороваться с большой моделью и затем дать ей задание.

04

Вызовите API и получите всю огневую мощь

Этот шаг очень важен. Точно так же, как мы призываем кого-то что-то сделать, мы должны кому-то позвонить, прежде чем кто-то сможет нам ответить. И нам предстоит найти нужного человека — мощную модель GPT-3,5-турбо.

Язык кода:javascript
копировать
try:
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        max_tokens=512
    )
except Exception as e:
    print(f"Error generating response: {e}")
    exit(1)

Этот код вызывает большую модель GPT-3.5-турбо. Если что-то пойдет не так, будет выведено сообщение об ошибке и программа перестанет работать. Мы должны быть осторожны, чтобы не допустить, чтобы все пошло не так.

05

Извлеките варианты использования, например поиск сокровищ.

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

Язык кода:javascript
копировать
generated_text = response.choices[0].message.content.strip()
test_cases = generated_text.split('\n')

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

06

Распечатайте варианты использования для краткого обзора

Нам нужно посмотреть, какие тестовые примеры генерирует для нас большая модель. Точно так же, как когда вы получаете посылку и вам нужно открыть ее, чтобы увидеть, что это такое. Нам нужно быстро осмотреться, чтобы мы чувствовали себя уверенно.

Язык кода:javascript
копировать
print("Generated Test Cases:")
for i, case in enumerate(test_cases):
    print(f"Test Case {i+1}: {case}")

Этот код распечатывает тестовые примеры, созданные большой моделью. Напечатайте их один за другим, чтобы мы могли ясно видеть. Таким образом, мы можем узнать, хороши ли варианты использования, созданные для нас большой моделью, и полезны ли они.

07

Анализируйте варианты использования и вникайте в суть вещей

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

Язык кода:javascript
копировать
def parse_test_case(case):
    parts = case.split(',')
    username = parts[0].split(':')[1].strip()
    password = parts[1].split(':')[1].strip()
    expected_result = parts[2].split(':')[1].strip()
    return username, password, expected_result

Эта функция используется для анализа тестовых случаев. Разделите тестовый пример на несколько частей по запятым, а затем разделите каждую часть на две части по двоеточиям, выберите полезную информацию и удалите пробелы с обеих сторон. Таким образом, мы получаем имя пользователя, пароль и ожидаемые результаты и можем лучше проводить автоматическое тестирование.

08

Распечатайте еще раз, чтобы подтвердить правильность

Нам нужно посмотреть, как выглядит разобранный тестовый пример. Это все равно, что пытаться разгадать, что написано в письме после того, как ты его взломал. Мы должны подтвердить, верен ли анализ и есть ли какие-либо проблемы.

Язык кода:javascript
копировать
parsed_test_cases = []
for i, case in enumerate(test_cases):
    try:
        username, password, expected_result = parse_test_case(case)
        parsed_test_cases.append((username, password, expected_result))
        print(f"Parsed Test Case {i+1}: Username={username}, Password={password}, Expected Result={expected_result}")
    except Exception as e:
        print(f"Error parsing test case {i+1}: {e}")

Этот код проходит тестовые примеры, созданные большой моделью, анализирует их один за другим, а затем печатает результаты анализа. Если что-то пойдет не так, выводится сообщение об ошибке. Таким образом, мы можем вовремя обнаружить и решить проблемы.

09

Вернитесь к варианту использования и приготовьтесь к бою

Наконец, нам нужно извлечь проанализированные тестовые примеры, чтобы мы могли использовать их где-нибудь еще. Точно так же, как вам приходится забирать вещи домой после покупки чего-то в супермаркете. Нам необходимо в любой момент подготовить эти варианты использования к автоматическому тестированию.

Язык кода:javascript
копировать
print("\nParsed Test Cases:")
for i, (username, password, expected_result) in enumerate(parsed_test_cases):
    print(f"Test Case {i+1}: Username={username}, Password={password}, Expected Result={expected_result}")

Этот код снова распечатывает проанализированные тестовые примеры, чтобы мы могли видеть более четко. Таким образом, мы можем с уверенностью использовать эти варианты использования.

10

Резюме, последний штрих

После этого набора процессов мы можем четко контролировать большую модель ИИ. Сначала установите ключ API, затем сообщите большой модели, что мы хотим сделать, затем вызовите API, чтобы большая модель сгенерировала для нас тестовые примеры, затем извлеките сгенерированные тестовые примеры, распечатайте их, просмотрите, а затем проанализируйте. их, а затем распечатайте их. Посмотрите и, наконец, используйте проанализированные тестовые примеры.

Это так просто, просто следуйте за мной шаг за шагом, и вы сможете этому научиться.

После запуска вы можете получить тестовые случаи входа пользователя в систему, сгенерированные большой моделью, а также четко проанализировать эти тестовые примеры, чтобы использовать их в автоматизированном тестировании. Это работает очень хорошо!

Эффект следующий:

Язык кода:javascript
копировать
Generated Test Cases:
Test Case 1: Ниже приведены некоторые простые пользовательские тестовые случаи «Авторизоваться», включая нормальные ситуации и некоторые распространенные исключения:

1. Нормальная ситуация:
- Введите правильное имя пользователя и пароль.
- Должно быть разрешено успешно авторизоваться.

Пример кода (Python):
```python
def test_login_normal(self):
    self.driver.get("https://example.com/login")
    username = self.driver.find_element_by_name("username")
    password = self.driver.find_element_by_name("password")

    username.send_keys("test_user")
    password.send_keys("test_password")

    login_button = self.driver.find_element_by_css_selector(".login-button")
    login_button.click()

    # Убедитесь, что на странице «Авторизация» отображается правильное содержимое.
    assert "Home" in self.driver.page_source, "Failed to navigate to Home page after successful login"
    ```

2. Исключение:
- Введите неверное имя пользователя или пароль.
- неуспешный Авторизоваться。
- Не удалось загрузить веб-страницу.
- Ошибка кода подтверждения.

Пример кода (Python):
```python
def test_login_failure(self):
    self.driver.get("https://example.com/login")
    username = self.driver.find_element_by_name("username")
    password = self.driver.find_element_by_name("password")

    username.send_keys("invalid_username")
    password.send_keys("invalid_password")

    login_button = self.driver.find_element_by_css_selector(".login-button")
    login_button.click()

    # Убедитесь, что вы не перенаправлены на страницу Авторизоваться.
    assert self.driver.current_url != "https://example.com/login", "Failed to navigate to login page"

    # Убедитесь, что нет запросов на код подтверждения.
    assert not self.driver.find_elements_by_class_name("captcha"), "Captcha should be hidden"

    # Убедитесь, что сообщения об ошибках не отображаются.
    assert not self.driver.find_element_by_class_name("error-message").is_displayed(), "Error message should not be displayed"

    # Убедитесь, что вы не переходите на страницу регистрации.
    assert self.driver.current_url != "https://example.com/register", "Failed to navigate to register page"

    def test_login_timeout(self):
        self.driver.get("https://example.com/login")
        username = self.driver.find_element_by_name("username")
        password = self.driver.find_element_by_name("password")

        username.send_keys("test_user")
        password.send_keys("test_password")

        login_button = self.driver.find_element_by_css_selector(".login-button
                                                                Error parsing test case 1: list index out of range

Осмелюсь сказать, что эта статья полна полезной информации. Если вы не знаете, как использовать большие модели ИИ для автоматического тестирования, быстро прочтите нашу статью, чтобы научиться. Это гарантированно сделает вас мастером автоматизированного тестирования и блистательным в работе.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose