《网络聊天室项目:全面分析测试报告》

目录

  • 一、项目介绍
  • 二、项目功能
  • 三、测试计划
    • 1. 编写测试用例
    • 2. 实际执行测试的部分操作步骤
    • 3. 自动化测试
  • 四、项目bug
    • (1)bug描述
    • (2)bug描述
  • 五、项目总结

一、项目介绍

  网络聊天室项目实现了一个网络交流平台,用户在web页面登录以后可以和好友进行聊天。

二、项目功能

  该项目包的web网页包含登录页面和聊天页面,登录页面实现了登录功能,聊天页面可以选择好有并进行聊天,而且左侧的列表框会按时间显示聊天好友和最新的一条聊天信息;在聊天页面左上角的输入框中输入用户名后点击搜索按钮可以显示该用户。

三、测试计划

测试环境: Windows11系统,联想浏览器版本 9.0.5.11051(正式版)(64位),Edge浏览器版本 129.0.2792.79 (正式版本) (64 位)

1. 编写测试用例

  根据两个页面的功能和界面元素信息进行编写测试用例:
在这里插入图片描述

2. 实际执行测试的部分操作步骤

  由于测试用例较多,这里仅展示登录页面的登录成功、密码错误的登录失败和密码为空的登录失败三个测试用例;聊天页面仅展示通过用户名搜索用户、成功发送聊天信息、发送聊天信息为空和未登录状态下访问聊天页面四个测试用例。当测试聊天页面的搜索功能时发现该搜索功能不可使用,是一个bug,记录该bug。

(1)登录页面
用例1: 登录成功
数据:用户名——zhangsan,密码——123
预期结果:弹窗提示登录成功,点击确定跳转聊天页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实际结果:弹窗提示登录成功,成功跳转聊天页面

用例2: 登录失败——密码错误
数据:用户名——zhangsan,密码——111
预期结果:弹窗提示登录失败,点击确认可以重新登录
在这里插入图片描述
在这里插入图片描述
实际结果:弹窗提示登陆失败,点击确认后可以重新登录

用例3: 登录失败——密码为空
数据:用户名——zhangsan,密码为空
预期结果:弹窗提示当前输入的用户名或者密码为空,点击确定后可以重新登录
在这里插入图片描述
在这里插入图片描述
实际结果:弹窗提示用户名或密码输入错误,点击确认后可以重新登录

(2)聊天页面
用例1: 搜索用户名
数据:用户名——lisi
预期结果:显示好友lisi
在这里插入图片描述
在这里插入图片描述
实际结果:搜索前后界面并未发生变化,发现bug,记录bug:
环境:Windows 11系统,联想浏览器版本 9.0.5.11051(正式版)(64位)
操作步骤:

  1. 在上述环境中打开联想浏览器
  2. 输入网页聊天室网址并登陆
  3. 在搜索栏中输入lisi并搜索

预期结果:显示好友lisi
实际结果:页面并未发生变化,搜索功能失效

用例2: 成功发送聊天信息
数据:内容——你好,我叫张三!,发送好友——wangwu
预期结果:发送成功,与王五的历史对话记录上升到第一位,并且显示发送信息
在这里插入图片描述
在这里插入图片描述
实际结果:发送成功,与王五的历史对话记录上升到第一位,并且显示发送信息

用例3: 发送空的聊天信息
数据:发送好友——lisi
预期结果:发送无效
在这里插入图片描述
实际结果:发送无效

用例4: 未登录状态下访问聊天页面
预期结果:弹窗提示当前用户未登录,不显示用户名,显示历时对话记录,对话好友为lisi且内容为晚上吃啥,点击确定后跳转登录页面
在这里插入图片描述
在这里插入图片描述

实际结果:弹窗提示当前用户未登录,不显示用户名,显示历时对话记录,对话好友为lisi且内容为晚上吃啥,点击确定后跳转登录页面

3. 自动化测试

(1)创建Common和WebPageTest软件包
在这里插入图片描述
(2)测试代码
1)Untils.py 文件

#需要导入的信息
import datetime
import os.path
import inspect
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium.webdriver.edge.options import Options#创建浏览器对象
class Driver:#类成员driver = ""#构造函数def __init__(self):#创建Edge浏览器选项对象options = Options()#可以添加无头模式等设置#options.add_argument('headless')#创建Edge浏览器驱动示例self.driver = webdriver.Chrome(service = Service(EdgeChromiumDriverManager().install()),options = options)#获取屏幕截图def get_screen_shot(self):#按照每天来划分图片#文件名称——2024-11-30dirname = datetime.datetime.now().strftime("%Y-%m-%d")#判断文件夹是否存在,若不存在册创建文件夹if not os.path.exists("../Pictures/"+dirname):os.mkdir("../Pictures/"+dirname)#图片文件名称——2024-11-30-090322#前面加上调用方法名方便定位该图片对应的方法filename = inspect.currentframe().f_back.f_code.co_name + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"self.driver.save_screenshot("../Pictures/" + dirname + "/" + filename)#创建Driver类对象
ChatDriver = Driver()

2)LoginPageTest.py 文件

#需要的内容
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from Common.Untils import ChatDriver#LoginPage 类
class LoginPage:url = ""driver = ""def __init__(self):self.url = "127.0.0.1:8080/login.html"self.driver = ChatDriver.driverself.driver.get(self.url)#登录失败测试def login_fail_test(self):# 输入正确的账号,错误的密码self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111")#点击登录按钮self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver,3).until(EC.alert_is_present())text = alert.textassert text == "登录失败!"time.sleep(0.5)ChatDriver.get_screen_shot()alert.accept()# 错误的账号,正确的密码self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("aaa")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver, 3).until(EC.alert_is_present())text = alert.textassert text == "登录失败!"time.sleep(0.5)ChatDriver.get_screen_shot()alert.accept()# 账号填写,密码为空self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver, 3).until(EC.alert_is_present())text = alert.textassert text == "当前输入的用户名或者密码为空!"ChatDriver.get_screen_shot()time.sleep(0.5)alert.accept()# 账号为空,密码填写self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver, 3).until(EC.alert_is_present())text = alert.textassert text == "当前输入的用户名或者密码为空!"ChatDriver.get_screen_shot()time.sleep(0.5)alert.accept()# 账号和密码都为空self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver, 3).until(EC.alert_is_present())text = alert.textassert text == "当前输入的用户名或者密码为空!"ChatDriver.get_screen_shot()time.sleep(0.5)alert.accept()#登录成功测试def login_suc_tes(self):# 清空输入框self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# 输入正确的账号和密码self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 定位提示弹窗,检验提示内容alert = WebDriverWait(self.driver, 5).until(EC.alert_is_present())text = alert.textassert text == "登录成功!"time.sleep(0.5)# 截图验证弹窗信息ChatDriver.get_screen_shot()# 确认弹窗,跳转聊天页面alert.accept()# 截图验证聊天页面ChatDriver.get_screen_shot()

3)ChatPageTest.py 文件

#需要的内容
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from Common.Untils import ChatDriver
from selenium.webdriver.support import expected_conditions as EC#ChatPage类
class ChatPage:url = ""driver = ""def __init__(self):self.url = "http://127.0.0.1:8080/client.html"self.driver = ChatDriver.driverself.driver.get(self.url)#页面元素验证测试def page_elem_test(self):# 查找主界面元素:昵称、搜索框、按钮、消息列表、消息列表按钮、联系人按钮、聊天框、输入框、发送按钮self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.left > div.user")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]")self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.left > div.search > button")self.driver.find_element(By.CSS_SELECTOR, "#session-list")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-session")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-friend")self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.right")self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.right > textarea")self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.right > div.ctrl > button")# 消息列表self.driver.find_element(By.CSS_SELECTOR, "#session-list > li:nth-child(4)").click()WebDriverWait(self.driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "body > div.client-container > div > div.right > div.message-show > div:nth-child(1)")))time.sleep(0.5)ChatDriver.get_screen_shot()# 联系人列表self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-friend").click()WebDriverWait(self.driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#friend-list")))time.sleep(0.5)ChatDriver.get_screen_shot()self.driver.find_element(By.CSS_SELECTOR, "#friend-list > li:nth-child(2) > h4").click()WebDriverWait(self.driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#session-list")))time.sleep(0.5)ChatDriver.get_screen_shot()#聊天功能验证def char_test(self):self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-session").click()self.driver.find_element(By.CSS_SELECTOR, "#session-list > li.selected > h3").click()self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.right > div.title")self.driver.find_element(By.CSS_SELECTOR, "body > div.client-container > div > div.right > textarea").send_keys("你好,我叫张三!")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()time.sleep(0.5)ChatDriver.get_screen_shot()

4)RunTest.py 文件

from Common.Untils import ChatDriver
from WebPageTest.ChatPageTest import ChatPage
from WebPageTest.LoginPageTest import LoginPageif __name__=="__main__":#登录失败测试LoginPage().login_fail_test()#登录成功测试LoginPage().login_suc_tes()#检查聊天页面元素ChatPage().page_elem_test()#聊天功能测试ChatPage().char_test()#关闭浏览器ChatDriver.driver.quit()

四、项目bug

(1)bug描述

  在Edge浏览器上输入正确的账号和密码后,点击登录按钮,页面未响应。
在这里插入图片描述
环境:Windows11系统,Edge浏览器129.0.2792.79 (正式版本) (64 位)
操作:

  1. 输入登录网址:127.0.0.1:8080/login.html
  2. 输入账号:zhansan,密码:123
  3. 点击登录按钮

预期结果:提示弹窗登录成功
实际结果:页面未响应

(2)bug描述

  在聊天页面的搜索栏中搜索好友lisi,页面未响应。
在这里插入图片描述
环境:Windows 11系统,联想浏览器版本 9.0.5.11051(正式版)(64位)
操作步骤:

  1. 在上述环境中打开联想浏览器
  2. 输入网页聊天室网址并登陆
  3. 在搜索栏中输入lisi并搜索

预期结果:显示好友lisi
实际结果:页面并未发生变化,搜索功能失效

五、项目总结

  该聊天室项目的主要功能(登录和与好友聊天)均能实现,但是其次要功能搜索好友并未响应,且其兼容性较差,在Edge浏览器上不能进行登录。

  该项目除了需要修改上述两个bug以外,还应该在登录页面添加注册功能,并考虑在聊天页面添加图片、视频、表情包等输入内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据新视界 -- 大数据大厂之 Hive 数据压缩:优化存储与传输的关键(上)(19/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

软通动力携子公司鸿湖万联、软通教育助阵首届鸿蒙生态大会成功举办

11月23日中国深圳,首届鸿蒙生态大会上,软通动力及软通动力子公司鸿湖万联作为全球智慧物联网联盟(GIIC)理事单位、鸿蒙生态服务(深圳)有限公司战略合作伙伴,联合软通教育深度参与了大会多项重磅…

动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)

本节课程地址:多头注意力代码_哔哩哔哩_bilibili 本节教材地址:10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…

故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab) 源码设计 %% 初始化 clear close all clc disp(此程序务必用2023b及其以上版本的MATLAB!否则会报错!) warning off %

用html+jq实现元素的拖动效果——js基础积累

用htmljq实现元素的拖动效果 效果图如下&#xff1a; 将【item10】拖动到【item1】前面 直接上代码&#xff1a; html部分 <ul id"sortableList"><li id"item1" class"w1" draggable"true">Item 1</li><li …

单片机学习笔记 12. 定时/计数器_定时

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

计算机视觉硬件知识点整理六:工业相机选型

文章目录 前言一、工业数字相机的分类二、相机的主要参数三、工业数字摄像机主要接口类型四、选择工业相机的考量因素六、实例分析 前言 随着科技的不断进步&#xff0c;工业自动化领域正经历着前所未有的变革。作为工业自动化的重要组成部分&#xff0c;工业相机在工业检测、…

如何使用brew安装phpredis扩展?

如何使用brew安装phpredis扩展&#xff1f; phpredis扩展是一个用于PHP语言的Redis客户端扩展&#xff0c;它提供了一组PHP函数&#xff0c;用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…

硬件看门狗工作原理

硬件看门狗是什么&#xff1f; 硬件看门狗&#xff08;Hardware Watchdog&#xff09;是一种用于监控系统运行状态的硬件设备或电路。它的主要功能是检测系统是否正常运行&#xff0c;并在系统出现故障或无响应时自动重启或采取其他恢复措施。 工作原理与引脚 硬件看门狗一般…

Linux -初识 与基础指令1

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【Linux】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4da; 前言&#x1f5a5;️ 初识&#x1f510; 登录 root用户&#x1f465; 两种用户➕ 添加用户&#x1f9d1;‍&#x1f4bb; 登录 普通用户⚙️ 常见…

Elasticsearch在liunx 中单机部署

下载配置 1、下载 官网下载地址 2、上传解压 tar -zxvf elasticsearch-XXX.tar.gz 3、新建组和用户 &#xff08;elasticsearch 默认不允许root账户&#xff09; #创建组 es groupadd es #新建用户 useradd ryzhang -g es 4、更改文件夹的用户权限 chown -R ryzhang …

Refit 使用详解

Git官网&#xff1a;https://github.com/reactiveui/refit Refit 是一个针对 .NET 应用程序的 REST API 客户端库&#xff0c;它通过接口定义 API 调用&#xff0c;从而简化与 RESTful 服务的交互。其核心理念是利用声明性编程的方式来创建 HttpClient 客户端&#xff0c;使得…

Ubuntu24.04配置DINO-Tracker

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历&#xff0c;在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令&#xff1a; conda info可能因为我原本就没有把 Anacod…

vulnhub靶场【哈利波特】三部曲之Aragog

前言 使用virtual box虚拟机 靶机&#xff1a;Aragog : 192.168.1.101 攻击&#xff1a;kali : 192.168.1.16 主机发现 使用arp-scan -l扫描&#xff0c;在同一虚拟网卡下 信息收集 使用nmap扫描 发现22端口SSH服务&#xff0c;openssh 80端口HTTP服务&#xff0c;Apach…

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Maltab&#xff09; 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Maltab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

getchar()

getchar():从计算机终端&#xff08;一般是键盘&#xff09;输入一个字符 1、getchar返回的是字符的ASCII码值&#xff08;整数&#xff09;。 2、getchar在读取结束或者失败的时候&#xff0c;会返回EOF 输入密码并确认&#xff1a; scanf读取\n之前的内容即12345678 回车符…

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1&#xff1a;状态表示2&#xff1a;状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结&#xff1a; 下降最小路径和 1&#xff1a;状态表示 假设&#xff1a;用dp[i][j]表示&#xff1a;到达[i,j]的最小路径 2&#xff1a;状态转…

实现PDF文档加密,访问需要密码

01. 背景 今天下午老板神秘兮兮的来问我&#xff0c;能不能做个文档加密功能&#xff0c;就是那种用户下载打开需要密码才能打开的那种效果。boss都发话了&#xff0c;那必须可以。 需求&#xff1a;将 pdf 文档经过加密处理&#xff0c;客户下载pdf文档&#xff0c;打开文档需…

HarmonyOS Next 模拟器安装与探索

HarmonyOS 5 也发布了有一段时间了&#xff0c;不知道大家实际使用的时候有没有发现一些惊喜。当然随着HarmonyOS 5的更新也带来了很多新特性&#xff0c;尤其是 HarmonyOS Next 模拟器。今天&#xff0c;我们就来探索一下这个模拟器&#xff0c;看看它能给我们的开发过程带来什…

深入探索进程间通信:System V IPC的机制与应用

目录 1、System V概述 2.共享内存&#xff08;shm&#xff09; 2.1 shmget — 创建共享内存 2.1.2 ftok&#xff08;为shmmat创建key值&#xff09; 2.1.3 为什么一块共享内存的标志信息需要用户来传递 2.2 shmat — 进程挂接共享内存 2.3 shmdt — 断开共享内存连接 2.4…