引言
从传统软件测试转向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
- 无内存泄漏或资源泄漏现象