
目录1.智能聊天助手项目2.测试计划3.测试工具4.设计测试用例5.手动测试5.1 功能测试5.1.1 新建会话5.1.2 给模型发送消息5.1.3 点击指定会话获取会话内容5.1.4 删除会话5.2 兼容性测试5.2.1 浏览器兼容5.2.2 移动端兼容6.自动化测试用例设计6.1 Common模块6.2 image模块6.3 Test模块7.发现的BUG7.1 兼容异常8.测试总结1.智能聊天助手项目该项目是从零实现AI模型接入的SDK基于该SDK实现的一款智能聊天助手主要可以用于与云端模型deepseek-chat,gpt-4o-mini,与本地部署模型deepseek-r1:1.5b进行对话2.测试计划1.根据本项目编写测试用例2.根据编写的测试用例进行对应的测试3.编写自动化测试脚本进行自动化测试3.测试工具Apifox,pyCharm,selenium,Edge浏览器Chrome浏览器4.设计测试用例本项目主要是用来与大语言模型进行对话因此测试用例的编写主要侧重于功能测试测试环境操作系统Windows 11 64位浏览器Edge:153.0.4234.32 (正式版本) (64 位),Chrome:版本 152.0.7977.83正式版本64 位测试工具Apifox,Pycharm,selenium项目首页地址测试地址编写测试用例5.手动测试5.1 功能测试因为本项目是接入不同的大语言模型因此与模型进行交互首先要和指定的模型建立起会话所以我们首先来测试新建会话的功能。5.1.1 新建会话预期结果点击新建会话出现模型选择其中有三个模型分别是云端接入模型deepseek-chat,gpt-4o-mini和本地部署模型deepseek-r1:1.5b,选择任意模型点击确认会话创建成功。选择deepseek-chat模型进行创建预期结果会话创建成功选择gpt-4o-mini模型进行创建预期结果会话创建成功选择deepseek-r1:1.5b模型进行创建预期结果会话创建成功5.1.2 给模型发送消息给deepseek-chat模型发送消息在对话框中输入你要给模型的消息按回车或者点击发送按钮进行发送举例发送“你是什么模型”预期的结果用户给模型发送的消息内容展示在右侧并且成功发送模型一段时间之后进行回复给gpt-4o-mini发送消息预期结果鼠标光标放入输入框输入要发送的消息内容点击发送或者回车消息发送成功展示在右侧模型一段时间后进行回复。给本都部署的deepseek-r1:1.5b模型发送消息预期结果鼠标光标放入输入框输入要发送的消息内容点击发送或者回车消息发送成功展示在右侧模型一段时间后进行回复。5.1.3 点击指定会话获取会话内容预期结果点击任意会话会显示用户和模型的所有对话上下文内容5.1.4 删除会话删除当前会话预期结果在会话列表中找到当前会话点击右下角…出现删除会话点击之后当前会话删除会话的所有内容也被删除5.2 兼容性测试本次兼容测试的环境为Edge浏览器版本 153.0.4234.32 (正式版本) (64 位)Chrome浏览器版本153.0.8010.37正式版本 64 位 Android 15 版本5.2.1 浏览器兼容在Edge浏览器中打开页面预期结果页面能够正常打开功能能够正常运行在Chrome浏览器上打开页面预期结果功能可以正常运行页面完整5.2.2 移动端兼容在Android 15版本上运行预期结果功能能够正常运行页面布局合理6.自动化测试用例设计采用Web自动化方式对本项目进行自动化测试主要测试项目的界面和功能设计测试用例编写Web自动化测试脚本这里我们自动化测试主要使用的工具是Selenium库以及PyCharm,在Chrome浏览器中进行自动化测试6.1 Common模块在这个模块里主要实现安装驱动创建驱动对象打开浏览器并访问项目的页面设计单例屏幕截图的相关设置。#Utils.py###用例设计公共的方法importdatetimeimportosfromwebdriver_manager.chromeimportChromeDriverManagerfromselenium.webdriver.chrome.serviceimportServicefromseleniumimportwebdriverclassDriver:driveroptionsdef__init__(self):#创建浏览器驱动对象self.driverwebdriver.Chrome(serviceService(ChromeDriverManager().install()))self.driver.get(http://193.112.29.233:8080/)self.driver.implicitly_wait(3)defScreenShot(self):#截图保存到image目录中的当天日期目录#截图的名称设置为调用的方法名-年-月-日-时-分-秒#创建目录dirnamedatetime.datetime.now().strftime(%Y-%m-%d)ifnotos.path.exists(../image/dirname):os.mkdir(../image/dirname)#设置截图名称并保存filenamedatetime.datetime.now().strftime(%Y-%m-%d-%H%M%S).pngself.driver.save_screenshot(../image/dirname/filename)#创建单例ChatDriverDriver()6.2 image模块用来保存我们测试时的截图6.3 Test模块对测试用例编写自动化脚本进行测试其中home.py:对首页进行测试New_Conversation.py:对新建会话进行测试Conversation.py对与模型对话进行测试Message.py对查看历史消息进行测试Delete_Session.py:对删除会话功能进行测试Session_List.py:对会话列表进行测试home.pyfromCommon.UtilsimportChatDriverfromselenium.webdriver.common.byimportByclassHome:driverdef__init__(self):self.driverChatDriver.driver#未有会话defUnSessionPage_Elements(self):#查找页面中的AI聊天助手元素assertself.driver.find_element(By.CSS_SELECTOR,body div.app-container aside div.sidebar-header div span).textAI聊天助手#新建会话按钮self.driver.find_element(By.CSS_SELECTOR,#btnNewChatTop)self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome)#暂无会话点击新建对话开始 字样assertself.driver.find_element(By.CSS_SELECTOR,#sessionList div).text暂无会话点击新建对话开始ChatDriver.ScreenShot()#已有对话defPage_Elements(self):# 查找页面中的AI聊天助手元素assertself.driver.find_element(By.CSS_SELECTOR,body div.app-container aside div.sidebar-header div span).textAI聊天助手# 新建会话按钮self.driver.find_element(By.CSS_SELECTOR,#btnNewChatTop)self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome)#会话列表信息截图展示# 获取会话总数countlen(self.driver.find_elements(By.CSS_SELECTOR,#sessionList div))ifcount0:# 无会话检查查找暂无会话点击”新建对话“开始assertself.driver.find_element(By.CSS_SELECTOR,#sessionList div).text暂无会话点击新建对话else:foriinrange(1,count1):self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[{1}])self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[2])self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[2]/div/span)time.sleep(3)ChatDriver.ScreenShot()New_Conversation.pyfromCommon.UtilsimportChatDriverfromselenium.webdriver.common.byimportByclassnewChat:driverdef__init__(self):self.driverChatDriver.driver#点击创建对话按钮看是否出现全部可用模型defnew_conversation(self):self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(1) )self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(2))self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(3))#创建deepseek-chat模型成功defdeepseek_chat_create_success(self):self.driver.find_element(By.CSS_SELECTOR,#btnCancelModel).click()self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(1)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#sessionList div)self.driver.find_element(By.CSS_SELECTOR,#chatView div.chat-input-area div.input-wrapper)self.driver.find_element(By.CSS_SELECTOR,#chatModelName)#创建gpt-40-mini模型成功defgptCreateSuccess(self):self.driver.find_element(By.CSS_SELECTOR,#btnCancelModel).click()self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(3)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#sessionList div)self.driver.find_element(By.CSS_SELECTOR,#chatView div.chat-input-area div.input-wrapper)self.driver.find_element(By.CSS_SELECTOR,#chatModelName)#创建deepseek-r1:1.5b模型成功defdeepseek_r1CreateSuccess(self):self.driver.find_element(By.CSS_SELECTOR,#btnCancelModel).click()self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(2)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#sessionList div)self.driver.find_element(By.CSS_SELECTOR,#chatView div.chat-input-area div.input-wrapper)self.driver.find_element(By.CSS_SELECTOR,#chatModelName)Conversation.pyimporttimefromselenium.webdriver.common.byimportByfromCommon.UtilsimportChatDriverclassConversation:driverdef__init__(self):self.driverChatDriver.driver#新建对话给模型发送消息defsendMessage(self,modelName):ifmodelNamedeepseek-chat:self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(1)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#messageInput).send_keys(你是什么模型)self.driver.find_element(By.CSS_SELECTOR,#btnSend).click()elifmodelNamegpt-40-mini:self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(3)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#messageInput).send_keys(你是什么模型)self.driver.find_element(By.CSS_SELECTOR,#btnSend).click()elifmodelNamedeepseek-r1:self.driver.find_element(By.CSS_SELECTOR,#btnNewChatWelcome).click()self.driver.find_element(By.CSS_SELECTOR,#modelGrid label:nth-child(2)).click()self.driver.find_element(By.CSS_SELECTOR,#btnConfirmModel).click()self.driver.find_element(By.CSS_SELECTOR,#messageInput).send_keys(你是什么模型)self.driver.find_element(By.CSS_SELECTOR,#btnSend).click()#截图ChatDriver.ScreenShot()#选择指定会话给模型发消息,这里遍历所有会话发送消息defsendMessageBysession(self):sessionself.driver.find_elements(By.CSS_SELECTOR,#sessionList div)countlen(session)foriinrange(1,count1):self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]).click()self.driver.find_element(By.CSS_SELECTOR,#messageInput).send_keys(我叫张三你好)self.driver.find_element(By.CSS_SELECTOR,#btnSend).click()ChatDriver.ScreenShot()time.sleep(3)Message.pyfromselenium.webdriver.common.byimportByimporttimefromCommon.UtilsimportChatDriverfromTest.New_ConversationimportnewChatfromTest.ConversationimportConversationclassMessage:driverdef__init__(self):self.driverChatDriver.driver#没有会话新建会话并与模型发送消息然后点击当前会话查看消息defUnSessionPage_Elements(self):#使用newChat中的方法,创建会话new_ChatnewChat()new_Chat.deepseek_r1CreateSuccess()#发送消息ConConversation()Con.sendMessage(deepseek-r1)#点击当前会话并截图self.driver.find_element(By.CSS_SELECTOR,#sessionList div).click()ChatDriver.ScreenShot()#有会话遍历会话列表截图查看历史消息defConversationPage_Elements(self):sessionself.driver.find_elements(By.CSS_SELECTOR,#sessionList div)countlen(session)foriinrange(1,count1):self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]).click()ChatDriver.ScreenShot()Delete_Session.pyfromselenium.webdriver.common.byimportByimporttimefromCommon.UtilsimportChatDriverclassdelete_session:def__init__(self):self.driverChatDriver.driverdefdeletesession(self):#获取会话总数countlen(self.driver.find_elements(By.CSS_SELECTOR,#sessionList div))ifcount0:#无会话检查查找暂无会话点击”新建对话“开始assertself.driver.find_element(By.CSS_SELECTOR,#sessionList div).text暂无会话点击新建对话else:foriinrange(1,count1):self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[2]/div/button).click()self.driver.find_element(By.CSS_SELECTOR,#menuDelete).click()ChatDriver.ScreenShot()Session_List.pyfromselenium.webdriver.common.byimportByimporttimefromCommon.UtilsimportChatDriverclassSessionList:def__init__(self):self.driverChatDriver.driver#将会话列表这个测试用例的步骤结合一下defUnSessionPage(self):countlen(self.driver.find_elements(By.CSS_SELECTOR,#sessionList div))ifcount0:# 无会话检查查找暂无会话点击”新建对话“开始assertself.driver.find_element(By.CSS_SELECTOR,#sessionList div).text暂无会话点击新建对话else:foriinrange(1,count1):self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[{1}])self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[2])self.driver.find_element(By.XPATH,f//*[idsessionList]/div[{i}]/div[2]/div/span)time.sleep(3)ChatDriver.ScreenShot()7.发现的BUG7.1 兼容异常移动端在Android 15版本下出现了以下异常1.打开页面之后没有会话列表2.创建会话之后只能对当前会话进行交互且无法删除8.测试总结1.系统核心功能会话管理、消息发送、模型接入、前端交互整体可用6 个 HTTP 接口与前端页面均可正常工作。2.前端页面在响应格式、SSE 转义、时间戳等方面已做兼容性处理可适配后端当前返回。