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

news2024/9/22 19:28:23

一、项目背景

  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.测试结果截屏

在这里插入图片描述

(三)性能测试

持续更新…

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

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

相关文章

页面内容---复制粘贴【收藏版】【H5 web端亲测有效】

js中的复制粘贴 . 页面内容—复制粘贴【收藏版】【H5 web端亲测有效】 navigator.clipboard.writeText(copyText) 是 Web API 中的一个方法&#xff0c;用于将指定的文本内容复制到用户的剪贴板。这个方法属于 Clipboard API&#xff0c;它使得网页能够读取和写入剪贴板的内容…

【笔记】数据结构笔记02

toc 前话 算法学习网站&#xff1a; itcharge 代码随想录 labuladong 参考严蔚敏数据结构 树与等价问题 typedef PTree MFSet;//查找算法int find_mfset(MFSet S,int i){if(i<1||i>S.n) return -1;//i不属于任一集合for(ji;S.nodes[j].parent>0;jnodes[j].paren…

用宝塔部署项目到阿里云服务器访问不到的问题

今天用宝塔部署项目到阿里云&#xff0c;开始前端部署到了80端口&#xff0c;能正常访问&#xff0c;后端部署到了8081&#xff0c;但是后端接口一直无响应&#xff0c;最后超时。 但是java正常运行 系统防火墙的状态正常&#xff0c;策略也是放行 阿里云安全组也已经配置了 …

【性能优化】:从理论中来到实践中去(三)

本文主要介绍真实代码实现 序言 根据前面两篇文章的梳理 【性能优化】&#xff1a;探索系统瓶颈的根源&#xff08;一&#xff09; 【性能优化】&#xff1a;设计模式与技术方案解析&#xff08;二&#xff09; 我们已经知道了自动化跑批系统的核心功能&#xff0c;今天就来真…

如何使用混合搜索实现更好的 LLM RAG 检索

通过结合密集嵌入和BM25构建高级本地LLM RAG管道 基本的检索增强生成&#xff08;RAG&#xff09;管道使用编码器模型在给定查询时搜索相似文档。 这也被称为语义搜索&#xff0c;因为编码器将文本转换为高维向量表示&#xff08;称为嵌入&#xff09;&#xff0c;在该表示中&…

【计算机组成原理】汇总五、中央处理器

五、中央处理器 文章目录 五、中央处理器1.CPU的功能与结构1.1CPU功能1.2运算器1.2.1基本结构1.2.2 ALU和寄存器的数据通路 1.3控制器1.3.1基本结构1.3.2控制器功能 1.4CPU的基本结构 2.指令执行过程2.1指令周期2.2指令周期流程2.3数据流2.4指令执行方案&#xff1a;如何安排多…

Type-C接口诱骗取电快充方案

Type-C XSP08Q 快充协议芯片是一种新型电源管理芯片&#xff0c;主要负责控制充电电流和电压等相关参数&#xff0c;从而实现快速充电功能。Type-C XSP08Q快充协议是在Type-C接口基础上&#xff0c;加入了XSP08Q协议芯片的支持&#xff0c;很大程度上提升了充电速度。 正常情况…

ConcurrentHashMap扩容原理 | 存储流程 | 源码探究

新人写手&#xff0c;代码菜鸡&#xff1b;笔下生涩&#xff0c;诚惶诚恐。 初试锋芒&#xff0c;尚显青涩&#xff1b;望君指点&#xff0c;愿受教诲。 本篇文章将从源码的层面&#xff0c;探讨ConcurrentHashMap的存储流程以及扩容原理 Java版本为JDK17&#xff0c;源代码可…

Ollama 本地部署

文章目录 前言一、Ollama是什么&#xff1f;二、使用步骤1.安装 OllamaWindows检验是否安装成功 2.运行ollama 模型库运行模型提问修改配置&#xff08;可选&#xff09;如果有个性化需求&#xff0c;需要修改默认配置&#xff1a; 参考 前言 Ollama是一个易于使用的本地大模型…

LivePortraitV3,支持图像驱动和区域控制,更精确的人像控制(WIN,MAC)

LivePortrait又又又又更新了&#xff01;这速度真是&#x1f44d;&#x1f3fb;&#x1f44d;&#x1f3fb; 【LivePortraitV3&#xff0c;支持图像驱动和区域控制&#xff0c;更精确的人像控制&#xff08;WIN&#xff0c;MAC&#xff09;】 https://www.bilibili.com/video/…

别暑气 迎秋意

今年长达40天的“三伏”结束啦&#xff01; 伏天过后&#xff0c;暑热逐渐消退&#xff0c;天气开始转凉&#xff0c;秋季逐渐来临。我们也该调整好生活节奏&#xff0c;去迎接收获季节的开始。 1、注意防寒保暖 天气逐渐转凉&#xff0c;昼夜温差不断增大&#xff0c;所以要…

Pytest自动化测试框架关联/参数化实战

关联 利用Python提供的fixture可以实现关联 实现步骤&#xff1a; 在case目录下&#xff0c;新建conftest.py文件&#xff0c;比如我们需要token&#xff0c;就在这个文件下定义一个公共的方法&#xff0c;调用登录接口并返回需要的token值&#xff08;注&#xff1a;公共的方…

【乐企】有关乐企能力测试接口对接-货物运输服务(详细)

1、前置条件&#xff0c;参考【乐企】有关乐企能力测试接口对接-基础版&#xff08;详细&#xff09; 2、接口文档 和基础版区别&#xff1a; 1、传参的时候添加了 用例编码&#xff1a;ylbm 2、发票上传接口的服务编码变化了&#xff1a;fwbm:HWYSFPSC 3、能力编码和用例编码…

Linux——安装软件(mysql)

一、应用部署&#xff1a; 安装软件 运行某个程序或者服务 安装软件包 dnf/yum 包安装工具官方网站提供的集成软件包源码编译安装 // 源码编译的步骤 只应用于编译型语言 对于解释性语言编写的程序 采用不用的方式打包 编译型语言编写的程序&#xff1a; nginx解释性语言…

Verilog刷题笔记63

找BUG 1、&#xff1a;Bug mux2 挑错&#xff1a; module top_module (input sel,input [7:0] a,input [7:0] b,output [7:0]out );assign out sel?a:b;endmodule结果正确&#xff1a; 原因: 1、输出out也应为8位 2、逻辑错误&#xff0c;&按位操作&#xff0c;需要将…

【可兼容的】protobuf、streamlit、transformers、icetk、cpm_kernels版本号

搞大模型训练的工作不可避免地需要很多库&#xff0c;但是非常讨厌的事情是这些库动不动就不兼容。最近在做文本分类训练的时候又遇到了这个问题&#xff0c;为了避免后面再安装包的时候把我之前的环境破坏了&#xff0c;所以特地来记录一下&#xff1a;protobuf、streamlit、t…

GD32F4xx---RTC初始化设置及闹钟方式实现秒中断讲解

GD32F4xx—RTC初始化设置及闹钟方式实现秒中断讲解 1、下载链接:源码工程 一、概述 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置。RTC模块提供了一个包含日期(年/月/日)和时间(时/分/秒/亚秒)的日历功能。除亚秒用二进制码显示外,时间和日期都以BC…

欧科云链: Web3浪潮下合规是“必选项”, 技术创新成发展重点

如果说2023年将是Web3的监管与合规之年。那么2024年就是Web3发展里程碑之年。 自2023年&#xff0c;包括美国、日本、新加坡、迪拜、中国香港等全球多个国家和地区金融中心都先后宣布要成为Web3中心、虚拟资产中心&#xff0c;并努力在监管框架下推动Web3生态的技术创新。 放…

对新手的现货白银交易建议

近期现货白银价格表现十分不错&#xff0c;连续的上涨已经突破了30关口&#xff0c;这是一个重要的心理关口&#xff0c;受投资行情的吸引&#xff0c;很多新手现货白银交易者入场。那么&#xff0c;有没有一些对这些新手投资者的现货白银交易建议呢&#xff1f;下面我们就来讨…

通过Docker部署Nacos,以及Docker Desktop进行管理

目录 一.不需要持久化存储 1.启动容器 2.查看容器和镜像​ 3.容器管理 二.持久化存储启动mysql容器 1.创建docker卷 2.运行容器,指定卷 3.在nacos里面随便建个配置文件 4.停止并删除nacos容器 5.重新运行容器,并且挂载相同的卷,也就是上面第二步的命令 6.打开nacos并…