AI测试 ChatGPT 在测试中的辅助应用

八百里加急送煎饼 · 2024年04月22日 · 最后由 皮卡丘 回复于 2024年04月29日 · 3633 次阅读

ChatGPT 在软件测试中的辅助应用

❗ 如下文字由 ChatGPT 4.0 生成 并稍作修饰
欢迎访问 https://assistant.old-eight.top 我的自建 chatgpt 网站

❗

在软件开发的生命周期中,测试是确保产品质量的关键环节。随着人工智能技术的发展,AI,尤其是像 ChatGPT 这样的先进语言模型,在软件测试中的应用越来越广泛,从功能测试到自动化测试,再到性能测试,ChatGPT 都能提供显著的辅助。本文将以登录功能为例,探讨 ChatGPT 在软件测试中的应用。

功能测试

功能测试旨在验证软件的各项功能是否按照需求规格说明书执行。以登录功能为例,测试的重点包括验证用户名和密码输入、登录逻辑、错误消息显示等。

  • 生成测试用例: ChatGPT 可以根据登录功能的需求,快速生成覆盖各种边界条件和异常情况的测试用例。例如,输入无效的用户名和密码、空的用户名或密码、注入攻击尝试等。

例子:

序号 测试用例名称 前置条件 输入数据 预期结果 实际结果 状态
1 正确的用户名和密码登录 用户已注册 正确的用户名和密码 成功登录,跳转到主页 待验证
2 错误的用户名 用户已注册 错误的用户名,正确的密码 显示错误信息 “用户名不存在” 待验证
3 错误的密码 用户已注册 正确的用户名,错误的密码 显示错误信息 “密码错误” 待验证
4 用户名和密码为空 留空用户名和密码字段 显示错误信息 “用户名和密码不能为空” 待验证
5 账户因多次登录失败被锁定 用户已注册且之前登录失败超过 3 次 正确的用户名和密码 显示错误信息 “账户已被锁定,请稍后再试” 待验证
  • 编写测试脚本: 基于生成的测试用例,ChatGPT 可以帮助编写自动化测试脚本,适用于不同的测试框架和语言。
  • 结果分析: 在测试执行后,ChatGPT 可以协助分析测试结果,识别失败的测试用例,并提供初步的故障诊断。

自动化测试

自动化测试通过减少手动测试工作量,提高测试效率和准确性。自动化测试分为 API 测试和 UI 测试。

API 测试

API 测试关注于后端服务的功能性验证。

  • 生成 API 测试用例: ChatGPT 可以根据 API 文档生成测试用例,包括不同的请求参数组合和预期的响应。
  • 编写 API 测试脚本: 利用生成的测试用例,ChatGPT 可以辅助编写 API 测试脚本,适用于 Postman、JMeter 等工具。

例子:
以下是一个简单的登录接口测试用例的示例,以及相应的文件结构说明。


tests/

├── __init__.py

├── conftest.py # 存放pytest的fixture配置

└── test_login.py # 存放登录接口的测试用例

  • init.py: 使 Python 将该目录视为包(package)的一部分,通常为空。
  • conftest.py: 用于定义所有测试用例共享的 fixture 配置。fixture 是 pytest 中一个非常强大的功能,用于设置测试前的预置条件,以及测试后的清理工作。
  • test_login.py: 存放具体的登录接口测试用例。

conftest.py 文件内容

import pytest 
import requests 
@pytest.fixture(scope="module") 
def base_url():
  return "http://yourapi.com/api"

@pytest.fixture(scope="module") 
def get_token(base_url):
  """模拟登录获取token"""
  url = f"{base_url}/login"
  response = requests.post(url, json={"username": "user", "password": "pass"})
  return response.json()["token"]

test_login.py 文件内容

import requests

def test_login_success(base_url):
    """测试登录成功的情况"""
    url = f"{base_url}/login"
    response = requests.post(url, json={"username": "user", "password": "pass"})
    assert response.status_code == 200
    assert "token" in response.json()

def test_login_failure(base_url):
    """测试登录失败的情况"""
    url = f"{base_url}/login"
    response = requests.post(url, json={"username": "wrong", "password": "pass"})
    assert response.status_code == 401

def test_access_with_token(base_url, get_token):
    """测试使用token访问受保护的接口"""
    url = f"{base_url}/protected"
    headers = {"Authorization": f"Bearer {get_token}"}
    response = requests.get(url, headers=headers)
    assert response.status_code == 200

在这个例子中,我们定义了三个测试用例:

  1. test_login_success: 测试正确的用户名和密码登录成功的情况。
  2. test_login_failure: 测试错误的用户名登录失败的情况。
  3. test_access_with_token: 测试使用从登录接口获取的 token 访问受保护的接口。

要运行这些测试,你需要将终端的当前目录切换到tests目录的父目录,然后运行pytest命令。pytest 会自动发现并运行tests目录下所有以test_开头的 Python 文件中的测试用例。

UI 测试

UI 测试着重于用户界面和用户体验的验证。

  • 生成 UI 测试场景: ChatGPT 能够根据用户故事或需求说明书,生成详细的 UI 测试场景,包括用户操作步骤和预期结果。
  • 辅助编写 UI 测试脚本:
    基于生成的测试场景,ChatGPT 可以帮助编写适用于 Selenium、Appium 等工具的 UI 自动化测试脚本。
    -例子

    my_ui_tests/
    │
    ├── tests/
    │          └── test_login.py
    │
    └── playwright.config.py
    
    my_ui_tests/
    │
    ├── tests/
    │          └── test_login.py
    │
    └── playwright.config.py
    
    • my_ui_tests/:这是项目的根目录。
    • tests/:这个目录包含所有的测试用例文件。
    • test_login.py:这是一个具体的测试用例文件,用于测试登录功能。
    • playwright.config.py:这是 Playwright 的配置文件,用于定义全局测试设 置,如浏览器类型、视图端口大小等。 ### Playwright 配置文件 (playwright.config.py) 首先,创建一个配置文件来设置一些基本的测试参数:
# playwright.config.py
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright):
    browser = playwright.chromium.launch(headless=False)  # 使用非无头模式启动浏览器
    context = browser.new_context()

    # 在此处添加全局配置,例如视图端口大小、用户代理等
    # context.set_viewport_size({"width": 1280, "height": 720})

    return {
        "browser": browser,
        "context": context,
    }
# tests/test_login.py
from playwright.sync_api import sync_playwright

def test_login():
    with sync_playwright() as p:
        # 使用配置文件中的设置启动浏览器和上下文
        config = run(p)
        page = config["context"].new_page()

        # 打开登录页面
        page.goto("https://example.com/login")

        # 输入用户名和密码
        page.fill("input[name='username']", "user@example.com")
        page.fill("input[name='password']", "password")

        # 点击登录按钮
        page.click("text='登录'")

        # 验证是否登录成功,这里假设登录后会跳转到首页
        assert page.url == "https://example.com/home"

        # 关闭浏览器
        config["browser"].close()

if __name__ == "__main__":
    test_login()

这个测试用例首先启动一个浏览器实例,然后打开一个假设的登录页面,填写用户名和密码,点击登录按钮,最后验证是否成功跳转到了首页。
请注意,这个例子使用的是同步 API,Playwright 也提供了异步 API,具体使用哪个取决于你的项目需求。此外,实际的登录页面 URL、输入框的选择器等信息需要根据你的实际应用进行调整。

性能测试

性能测试旨在验证软件在特定条件下的响应时间、稳定性和资源消耗等性能指标。以登录功能为例,性能测试关注点包括登录响应时间、系统承载用户量等。

  • 生成性能测试计划: ChatGPT 可以帮助定义性能测试的目标和指标,如每秒请求数(TPS)、平均响应时间等。
  • 编写性能测试脚本: 基于测试计划,ChatGPT 可以辅助编写性能测试脚本,适用于 LoadRunner、JMeter 等工具。
  • 分析性能测试结果: 在性能测试执行后,ChatGPT 可以协助分析测试结果,识别性能瓶颈,并提出优化建议。

结语

ChatGPT 在软件测试中的应用,不仅可以提高测试效率和质量,还能协助测试团队更有效地识别和解决问题。随着 AI 技术的不断进步,未来 ChatGPT 在软件测试领域的作用将更加显著,成为软件质量保障的一个重要环节。

共收到 9 条回复 时间 点赞
八百里加急送煎饼 关闭了讨论 04月22日 15:56
八百里加急送煎饼 重新开启了讨论 04月22日 15:56

ChatGPT 在软件测试中的应用,不仅可以提高测试效率和质量,还能协助测试团队更有效地识别和解决问题。

那你倒是在工作中用起来呀。




注册成功,无法登录成功

皮卡丘 回复

你再试试呢,是有一个 bug,我已经连夜起床修复了🐔



还是不行,在验证邮箱时,应该是无法验证。再去登录,登录不成功

怎么使用 GPT4

皮卡丘 回复

现在还有这个问题嘛,我没看到有异常登录的报错呢

薄荷可乐 回复

登录页面有个演示账号,可以体验 4.0 的功能哈



不行,注册成功了,在登录的时候提示账号未注册

皮卡丘 回复

我知道了,现在可以注册成功了,先体验一波。谢谢。
1.这次注册成功,没有在邮箱上确认,直接登录,提示账号未注册。需要邮箱确认后,再登录才可以。
1.上周问题是:邮箱点击确认报 404,导致无法注册成功

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册