AI聊天助手-测试报告

一、报告概述

1. 项目背景

AI聊天服务器是一个基于C++开发的智能对话系统,旨在为用户提供统一的AI模型访问接口,支持多种主流AI模型的集成与管理。项目通过RESTful API架构设计,实现了跨平台、多模型的智能对话能力,为开发者和终端用户提供了便捷的AI服务访问方式。

系统包含的核心模块:

  • ChatSDK:核心SDK,负责模型管理和AI交互
  • HTTP服务器:提供RESTful API接口
  • Web前端:用户交互界面
  • 模型集成:支持DeepSeek、ChatGPT(因网络限制无法访问)和本地Ollama模型

2. 测试目的

  • 功能验证
  • 确保核心功能能实现,如模型管理、会话管理、消息处理
  • 验证服务器启动和运行正常
  • 检查API接口的完整性及正确性
  • 用户体验
  • 评估前端界面布局的合理性和易用性
  • 检查页面上的按钮和功能是否能正常使用
  • 检验AI响应的质量和速度
  • 兼容性测试
  • 确保常用浏览器下能正常使用
  • 测试多个用户同时访问是否正常

3. 所需技术与开发环境

所需技术

  • C++ STL 标准库
  • cpp-httplib 第三方开源网络库
  • jsoncpp 第三方开源序列化、反序列化库
  • gflags 命令行参数解析库
  • spdlog 日志库
  • HTML/CSS/JavaScript 前端技术
  • Fetch API 技术
  • DeepSeek/OpenAI/Ollama API
  • RESTful API
  • SSE协议
  • CORS

开发环境

  • Ubuntu 22.04 云服务器
  • VSCode
  • CMake

测试环境

  • 操作系统:Windows 11
  • 浏览器:Edge、微信浏览器
  • 测试工具:curl、Apifox、Selenium、PyCharm 2024.1.7

二、测试用例

|-------|----------|------------------------------------------------------------------------------------------|--------------------|
| 用例编号 | 测试项 | 测试步骤 | 预期结果 |
| TC001 | 服务器启动 | 执行启动命令,设置环境变量 | 服务器成功启动,监听8080端口 |
| TC002 | 模型列表获取 | GET /api/models | 返回所有可用模型列表 |
| TC003 | 会话创建 | POST /api/session with model参数 | 返回session_id和model |
| TC004 | 发送消息(全量) | POST /api/message | 返回完整的AI响应 |
| TC005 | 发送消息(流式) | POST /api/message/async | 流式返回AI响应 |
| TC006 | 获取历史消息 | GET /api/session/{session_id}/history | 返回该会话的所有历史消息 |
| TC007 | 删除会话 | DELETE /api/session/{session_id} | 会话被成功删除 |
| TC008 | 前端访问 | 浏览器访问 http://182.61.53.128:8080 | 显示欢迎界面 |
| TC009 | 新建对话 | 点击"新建对话"按钮 | 显示模型选择对话框 |
| TC010 | 模型切换 | 在不同会话中使用不同模型 | 各模型独立工作 |

三、手动测试

1. 服务器启动测试

测试场景一:正常启动服务器

  • 测试步骤:设置环境变量,执行启动命令
  • 预期结果:服务器成功启动,监听8080端口
  • 实际结果:服务器启动成功,监听8080端口

测试场景二:缺少API密钥启动

  • 测试步骤:不设置任何API密钥启动
  • 预期结果:服务器启动失败或提示错误
  • 实际结果:服务器启动失败并提示错误

2. API接口测试

测试场景一:获取模型列表

  • 测试步骤:使用GET命令请求 /api/models
  • 预期结果:返回所有可用模型列表
  • 实际结果:返回了所有可用模型列表

测试场景二:创建会话

  • 测试步骤:使用POST命令请求 /api/session 创建会话
  • 预期结果:返回session_id和model
  • 实际结果:成功创建并返回session_id和model

测试场景三:发送消息

  • 测试步骤:使用POST命令请求 /api/message 发送消息
  • 预期结果:返回AI的响应
  • 实际结果:返回AI的响应,跟我打招呼

3. 前端界面测试

测试场景一:访问首页

  • 预期结果:显示AI聊天助手欢迎界面
  • 实际结果:显示AI聊天助手欢迎界面

测试场景二:新建对话

  • 测试步骤:点击"新建对话"按钮
  • 预期结果:显示模型选择对话框
  • 实际结果:显示模型选择对话框

测试场景三:发送消息

  • 测试步骤:在聊天界面输入消息并发送
  • 预期结果:显示用户消息和AI响应
  • 实际结果:用户发出消息后ai给予了响应

测试场景四:查看历史会话

  • 测试步骤:点击侧边栏历史会话
  • 预期结果:显示历史消息
  • 实际结果:正常显示历史消息

测试场景五:删除会话

  • 测试步骤:点击删除会话按钮
  • 预期结果:会话被删除
  • 实际结果:会话被成功删除

4. 多模型测试

测试场景一:DeepSeek模型测试

  • 测试步骤:使用deepseek-chat模型发送消息
  • 预期结果:返回DeepSeek的响应
  • 实际结果:成功返回

测试场景二:ChatGPT模型测试

  • 测试步骤:使用gpt-4o-mini模型发送消息
  • 预期结果:返回ChatGPT的响应
  • 实际结果:返回失败,出现网络问题

测试场景三:Ollama本地模型测试

  • 测试步骤:使用deepseek-r1:1.5b模型发送消息
  • 预期结果:返回本地模型的响应
  • 实际结果:返回失败,出现网络问题

5. 兼容性测试

在微信浏览器中可正常打开并使用:

在edge浏览器中可正常打开并使用:

四、自动化测试

1. API接口自动化测试

创建一个测试工具类,方便测试各个API接口

python 复制代码
import requests
import json

class APITester:
    def __init__(self, base_url):
        self.base_url = base_url
    
    def get_models(self):
        """测试获取模型列表接口"""
        url = f"{self.base_url}/api/models"
        response = requests.get(url)
        return response.json()
    
    def create_session(self, model):
        """测试创建会话接口"""
        url = f"{self.base_url}/api/session"
        data = {"model": model}
        response = requests.post(url, json=data)
        return response.json()
    
    def send_message(self, session_id, message):
        """测试发送消息接口(全量返回)"""
        url = f"{self.base_url}/api/message"
        data = {"session_id": session_id, "message": message}
        response = requests.post(url, json=data)
        return response.json()
    
    def get_history(self, session_id):
        """测试获取历史消息接口"""
        url = f"{self.base_url}/api/session/{session_id}/history"
        response = requests.get(url)
        return response.json()
    
    def delete_session(self, session_id):
        """测试删除会话接口"""
        url = f"{self.base_url}/api/session/{session_id}"
        response = requests.delete(url)
        return response.json()

API接口测试示例

python 复制代码
def test_api_functions():
    tester = APITester("http://182.61.53.128:8080")
    
    # 测试获取模型列表
    print("=== 测试获取模型列表 ===")
    models = tester.get_models()
    print(f"模型列表: {json.dumps(models, indent=2, ensure_ascii=False)}")
    
    # 测试创建会话
    print("\n=== 测试创建会话 ===")
    session = tester.create_session("deepseek-chat")
    session_id = session.get("data", {}).get("session_id")
    print(f"创建会话: {json.dumps(session, indent=2, ensure_ascii=False)}")
    
    # 测试发送消息
    if session_id:
        print("\n=== 测试发送消息 ===")
        response = tester.send_message(session_id, "你好,请介绍一下你自己")
        print(f"消息响应: {json.dumps(response, indent=2, ensure_ascii=False)}")
    
    # 测试获取历史消息
    if session_id:
        print("\n=== 测试获取历史消息 ===")
        history = tester.get_history(session_id)
        print(f"历史消息: {json.dumps(history, indent=2, ensure_ascii=False)}")
    
    # 测试删除会话
    if session_id:
        print("\n=== 测试删除会话 ===")
        delete_response = tester.delete_session(session_id)
        print(f"删除会话: {json.dumps(delete_response, indent=2, ensure_ascii=False)}")

if __name__ == "__main__":
    test_api_functions()

自动化测试通过:

2. 前端界面自动化测试

使用Selenium进行前端界面测试

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

class FrontendTester:
    def __init__(self, url):
        self.url = url
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)
    
    def test_homepage(self):
        """测试首页访问"""
        self.driver.get(self.url)
        # 检查首页元素
        title = self.driver.find_element(By.CSS_SELECTOR, "h1")
        assert "AI聊天助手" in title.text
        print("首页访问测试通过")
    
    def test_create_session(self):
        """测试创建会话"""
        self.driver.get(self.url)
        # 点击新建对话按钮
        new_session_btn = self.driver.find_element(By.CSS_SELECTOR, ".new-session-btn")
        new_session_btn.click()
        
        # 选择模型
        model_item = self.driver.find_element(By.CSS_SELECTOR, ".model-item")
        model_item.click()
        
        # 点击确定按钮
        confirm_btn = self.driver.find_element(By.CSS_SELECTOR, ".confirm-btn")
        confirm_btn.click()
        
        # 检查是否进入聊天界面
        chat_interface = self.driver.find_element(By.CSS_SELECTOR, ".chat-interface")
        assert chat_interface.is_displayed()
        print("创建会话测试通过")
    
    def test_send_message(self):
        """测试发送消息"""
        # 先创建会话
        self.test_create_session()
        
        # 输入消息
        message_input = self.driver.find_element(By.CSS_SELECTOR, "#messageInput")
        message_input.send_keys("你好,请介绍一下你自己")
        
        # 点击发送按钮
        send_btn = self.driver.find_element(By.CSS_SELECTOR, ".send-btn")
        send_btn.click()
        
        # 等待AI响应
        time.sleep(5)
        
        # 检查是否有AI响应
        messages = self.driver.find_elements(By.CSS_SELECTOR, ".message")
        assert len(messages) > 0
        print("发送消息测试通过")
    
    def close(self):
        self.driver.quit()

def test_frontend_functions():
    tester = FrontendTester("http://182.61.53.128:8080")
    
    try:
        tester.test_homepage()
        tester.test_create_session()
        tester.test_send_message()
        print("前端界面测试全部通过")
    finally:
        tester.close()

if __name__ == "__main__":
    test_frontend_functions()

前端界面自动化测试通过:

五、性能测试

1. 响应时间测试

|---------|---------------|-------|-------|
| 测试项 | 测试方法 | 预期指标 | 实际数据 |
| API响应时间 | 测量各API接口的响应时间 | < 5秒 | < 2秒 |
| 前端加载时间 | 测量页面加载时间 | < 3秒 | < 1秒 |
| 流式响应延迟 | 测试流式返回的延迟 | < 1秒 | < 1秒 |

2. 并发测试

|--------|-------------|----------|----------|
| 测试项 | 测试方法 | 预期指标 | 实际数据 |
| 并发请求处理 | 同时发送多个请求 | 正常处理所有请求 | 正常处理所有请求 |
| 会话管理能力 | 创建多个会话并同时使用 | 各会话独立工作 | 各会话独立工作 |
| 内存占用 | 监控服务器内存使用 | < 500MB | < 30MB |

六、问题记录

|--------|--------------------|------|-----|--------|
| 问题编号 | 问题描述 | 严重程度 | 状态 | 备注 |
| BUG001 | ChatGPT模型无法使用 | 高 | 待修复 | 疑似网络问题 |
| BUG001 | Ollama本地模型无法使用 | 高 | 待修复 | 疑似网络问题 |

七、测试总结

本次测试覆盖的功能、性能、安全性等核心指标大都满足上线标准 ,但有一模型功能无法使用,建议尽快处理。

相关推荐
李元豪2 小时前
3分分类计算差值
人工智能·分类·数据挖掘
云烟成雨TD2 小时前
Spring AI 1.x 系列【22】深度拆解 ToolCallbackProvider 生命周期与调用链路
java·人工智能·spring
KC2702 小时前
OpenAkita 深度解析:开源多Agent协作框架的实战指南
人工智能·aigc·ai编程
sg_knight2 小时前
设计模式实战:观察者模式(Observer)
python·观察者模式·设计模式
Humbunklung2 小时前
WMO 天气代码(Code Table 4677)深度解析与应用报告
开发语言·数据库·python
元拓数智2 小时前
基于数据关系映射的企业AI系统权限最小化落地方法
人工智能
柠萌f2 小时前
从“尝鲜”到“落地”:易元AI真实商家案例拆解(美妆/服饰/3C)
人工智能
人工智能AI技术2 小时前
阿里云发布Qwen3.5-Omni,全模态大战开启
人工智能
用户446594547872 小时前
用 React 写 CLI 是什么体验?—— Ink 框架深度解析与实战
人工智能