AI 应用测试指南 (面向传统测试工程师)-01.引言和性能测试

1 阅读4分钟

引言

从传统软件测试转向AI应用测试,测试人员需要转变思维模式。传统测试主要关注确定性的、基于规则的功能验证,而AI应用测试则更多地关注不确定性、概率性和模型的行为表现。

AI应用测试的核心挑战在于:

  • 不确定性:同样的输入可能产生不同的输出
  • 复杂性:AI模型的决策过程往往是黑盒的
  • 资源密集:AI应用通常需要大量计算资源
  • 安全风险:可能产生有害、偏见或不准确的内容

本指南旨在帮助传统测试工程师快速理解AI应用的核心测试要点,掌握AI应用测试的关键技能。


1. 性能测试

AI应用,特别是基于大语言模型的应用,通常是计算密集型的,对性能有很高的要求。由于AI模型推理过程复杂,性能测试是确保用户体验和系统稳定性的关键。

1.1. 响应时间测试

  • 测试目标: 衡量用户发送请求到接收到AI完整响应所需的总时间。
  • 关键指标:
    • 首字节时间(TTFB): AI开始输出第一个字符的时间
    • 完整响应时间: 生成完整回答所需的总时间
    • 流式输出延迟: 如果支持流式输出,每个token的输出间隔
  • 测试方法:
    • 分类测试: 按问题复杂度分类测试(简单问答、复杂推理、长文本生成、代码生成等)
    • 输入长度测试: 测试不同输入长度对响应时间的影响
    • 历史对话长度测试: 测试对话轮次增加对响应时间的影响
  • 测试工具:
    • 自定义脚本记录时间戳
    • Postman/Insomnia进行API测试
    • 专业性能测试工具如JMeter
  • 性能标准:
    • 简单问答:< 3秒
    • 复杂推理:< 10秒
    • 长文本生成:< 30秒
    • 95%的请求应在预期时间内完成

1.2. 并发量测试 (TPS/QPS)

  • 测试目标: 测试系统在同一时间能处理多少用户的请求,找到系统的性能瓶颈。
  • 关键指标:
    • TPS (Transactions Per Second): 每秒处理的事务数
    • QPS (Queries Per Second): 每秒处理的查询数
    • 并发用户数: 同时在线的用户数量
    • 错误率: 在高并发下的请求失败率
  • 测试方法:
    • 阶梯式加压: 从1个用户开始,逐步增加到10、50、100、500、1000等
    • 峰值测试: 模拟突发流量场景
    • 持续负载测试: 在一定并发量下持续运行较长时间
  • 测试工具:
    • JMeter: 开源性能测试工具
    • LoadRunner: 商业性能测试工具
    • Locust: Python编写的负载测试工具
  • 测试场景设计:
    • 混合负载:同时包含简单和复杂查询
    • 真实用户行为模拟:包含思考时间和操作间隔
  • 性能标准:
    • 确定系统在不牺牲响应时间或稳定性的前提下,可以支持的最大并发用户数
    • 错误率应低于1%
    • 响应时间不应随并发数线性增长

1.3. 服务器资源占用率监控

  • 测试目标: 监控AI应用在不同负载下的服务器资源使用情况,识别资源瓶颈。
  • 关键监控指标:
    • CPU使用率: 特别关注推理过程中的CPU峰值
    • GPU使用率: 如果使用GPU加速,监控GPU利用率和显存使用
    • 内存使用率: 监控模型加载和推理过程中的内存占用
    • 磁盘I/O: 监控模型文件读取和日志写入的I/O性能
    • 网络带宽: 监控请求和响应的网络流量
  • 监控工具:
    • 系统级: top, htop, iostat, vmstat
    • GPU监控: nvidia-smi, gpustat
    • 专业监控: Prometheus + Grafana, Datadog, New Relic
    • 应用级: 自定义metrics收集
  • 测试方法:
    • 在进行并发测试的同时,实时监控资源使用情况
    • 记录资源使用的峰值和平均值
    • 分析资源使用模式,识别瓶颈
  • 性能标准:
    • CPU使用率:< 80%(留有余量应对突发)
    • 内存使用率:< 85%
    • GPU使用率:< 90%
    • 磁盘I/O等待时间:< 10ms
    • 无内存泄漏或资源泄漏现象