当前位置: 首页 > news >正文

[易聊]软件项目测试报告

一、项目背景

  1. 随着互联网发展,各种各样的软件,比如游戏、短视频、购物软件中都有好友聊天功能,这是一个可在浏览器中与好友进行实时聊天的网页程序。“ 易聊 ”相对于一般的聊天软件,可以让用户免安装、随时随地的通过浏览器网页实现与朋友在线聊天。
  2. 项目整体采用前后端分离的方式实现,同时使用数据库进行数据的持久化存储,前端主要由登录界、注册界面,聊天主界面构成,后端使用Java流行的SpringBoot框架来进行服务器搭建。
  3. 该项目实现了简单的表情发送,图片发送,具有一定的可扩展性,如视频通话,发送语音等。

二、项目介绍

  1. 开发环境:IDEA版本2023.2、Win10 、JDK17、MySQL5.7
  2. 通信协议:项目整体通信基于HTTP通信协议、在线消息发送升级成Websocket协议。
  3. 功能介绍:
  • 用户登录:在输入正确的用户名、密码后跳转到主界面;未登陆状态访问聊天界面跳转到登录界面;禁止用户重复登录。
  • 用户注册:前后端数据通信采用通信,用户注册时存储采用密码加密存储
  • 好友管理:可以通过查询用户名,实时发送好友申请,也可以删除好友。
  • 聊天信息管理:当对方在线时,实时收到消息(文本、图片),对方不在现时,信息存储到数据库中,用户上线可查看;用户可单向删除聊天记录。
    4.项目代码链接

三、测试计划

(一)功能测试

  1. 测试用例
    在这里插入图片描述

  2. 执行测试的部分操作/截图
    (1)查询好友

  • 空输入查询
    在这里插入图片描述

  • 部分用户名查询
    在这里插入图片描述

  • 完整用户名查询
    在这里插入图片描述

(2)添加好友

  • 好友申请发送
    在这里插入图片描述
    在这里插入图片描述

  • 好友申请接收
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)删除好友
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(二)部分自动化测试

  1. 自动化测试步骤(消息发送功能)
    (1) 两名测试用户账号分别通过打开无痕模式下浏览器,进行用户登录;
    (2) 分别打开对方的聊天框;
    (3) 用户1向用户2发送测试消息;
    (4) 后端拿到最新消息进行比对;
    (5) 得到测试结果;
  2. 测试代码
public class Main {public static void main(String[] args) throws InterruptedException {FirstTest firstTest = new FirstTest();firstTest.test01();}
}
public class FirstTest {void test01() throws InterruptedException {//1.创建驱动,打开浏览器WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");options.addArguments("--incognito");WebDriver driver = new ChromeDriver(options);//2.打开登录网址driver.get("http://127.0.0.1:8080/login.html");//3.找到账号密码框WebElement id = driver.findElement(By.cssSelector("#text"));WebElement password = driver.findElement(By.cssSelector("#myInput"));WebElement login = driver.findElement(By.cssSelector("body > section > div.content-w3ls.text-center > div:nth-child(4) > button"));//4.输入正确的账号密码id.sendKeys("李佳俊");password.sendKeys("123456");//5.点击登录login.click();Thread.sleep(1000);driver.switchTo().alert().accept();Thread.sleep(1000);String s = driver.findElement(By.cssSelector("body > div.client-container > div.main > div.left > div.user")).getText();if(s.equals("李佳俊")){System.out.println("测试用户李佳俊登陆成功");}else {System.out.println(s);System.out.println("登陆失败");}SecondTest secondTest = new SecondTest();Thread thread2 = new Thread(()->{try {secondTest.test01();} catch (InterruptedException e) {throw new RuntimeException(e);}});thread2.start();Thread.sleep(5000);driver.findElement(By.cssSelector("#session-list > li")).click();Thread.sleep(1000);driver.findElement(By.cssSelector("#messageInput")).sendKeys(Constant.TEST_MESSAGE);Thread.sleep(1000);driver.findElement(By.cssSelector("#send")).click();Thread.sleep(1000);List<WebElement> elements = driver.findElements(By.cssSelector("body > div.client-container > div.main > div:nth-child(2) > div.message-show > div > div > p"));WebElement element = elements.get(elements.size()-1);if(element.getText().equals(Constant.TEST_MESSAGE)){System.out.println("消息发送成功");}else {System.out.println("消息发送失败"+element.getText());}driver.quit();}
}
public class SecondTest {void test01() throws InterruptedException {//1.创建驱动,打开浏览器WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");//无痕模式options.addArguments("--incognito");WebDriver driver = new ChromeDriver(options);//2.打开登录网址driver.get("http://127.0.0.1:8080/login.html");//3.找到账号密码框WebElement id = driver.findElement(By.cssSelector("#text"));WebElement password = driver.findElement(By.cssSelector("#myInput"));WebElement login = driver.findElement(By.cssSelector("body > section > div.content-w3ls.text-center > div:nth-child(4) > button"));//4.输入正确的账号密码id.sendKeys("苏宣");password.sendKeys("123456");//5.点击登录login.click();Thread.sleep(1000);driver.switchTo().alert().accept();Thread.sleep(1000);String s = driver.findElement(By.cssSelector("body > div.client-container > div.main > div.left > div.user")).getText();if(s.equals("苏宣")){System.out.println("测试苏宣用户登陆成功");}else {System.out.println(s);System.out.println("登陆失败");}Thread.sleep(1000);driver.findElement(By.cssSelector("#session-list > li")).click();Thread.sleep(5000);List<WebElement> elements = driver.findElements(By.cssSelector("body > div.client-container > div.main > div:nth-child(2) > div.message-show > div > div > p"));WebElement element = elements.get(elements.size()-1);if(element.getText().equals(Constant.TEST_MESSAGE)){System.out.println("消息接收成功");}else {System.out.println("消息接收失败"+element.getText());}driver.quit();}
}

3.测试结果截屏

在这里插入图片描述

(三)性能测试

持续更新…

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 面向对象编程的四个基本原则(封装、继承、多态和抽象),并给出一个简单的例子说明如何在 Java 中应用这些原则?
  • Postman中参数填写方式
  • FaceFormer嘴形同步论文复现
  • Web开发
  • 使用Python+docx+jieba+wordcloud给word文档生成词云图
  • Java18 设计模式
  • vue2.0+ts中默认demo组件
  • ubuntu 安装opencv(3.4.16)
  • 【C++二分查找 贪心】1552. 两球之间的磁力
  • C语言 | Leetcode C语言题解之第384题打乱数组
  • 五、代理模式
  • E1.S接口如何解决SSD过热问题?
  • AI问答-协议-上传协议:FTP、FTPS、SFTP
  • 【算法 动态规划 简单多状态 dp 问题】打家劫舍题型
  • 第十七章 rust异步库tokio入门
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  •  D - 粉碎叛乱F - 其他起义
  • Git学习与使用心得(1)—— 初始化
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript异步流程控制的前世今生
  • JAVA多线程机制解析-volatilesynchronized
  • Laravel5.4 Queues队列学习
  • learning koa2.x
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Redis的resp协议
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 订阅Forge Viewer所有的事件
  • 动态规划入门(以爬楼梯为例)
  • 读懂package.json -- 依赖管理
  • 技术发展面试
  • 排序(1):冒泡排序
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 入口文件开始,分析Vue源码实现
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 我的zsh配置, 2019最新方案
  • 学习使用ExpressJS 4.0中的新Router
  • 一、python与pycharm的安装
  • 运行时添加log4j2的appender
  • 智能合约开发环境搭建及Hello World合约
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #{}和${}的区别?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (1)虚拟机的安装与使用,linux系统安装
  • (13)Hive调优——动态分区导致的小文件问题
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (二)构建dubbo分布式平台-平台功能导图
  • (回溯) LeetCode 78. 子集
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (一)认识微服务
  • (原創) 物件導向與老子思想 (OO)
  • (转)visual stdio 书签功能介绍
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)