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

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

一、项目背景

  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.kler.cn/a/286248.html

相关文章:

  • AI-System 学习
  • Oracle Primavera P6自动进行进度计算
  • Java小白入门教程:内置数据类型(四类八种)和引用数据类型
  • LigerUI在MVC模式下的响应原则
  • Python - Quantstats量化投资策略绩效统计包 - 详解
  • 计算机网络一点事(22)
  • Windows上编译GTest并执行测试用例
  • “线程池中线程异常后:销毁还是复用?”
  • OpenAI 神秘模型「草莓」预计今秋推出,ChatGPT 将迎重大升级|TodayAI
  • 【60天备战软考高级系统架构设计师——第五天:需求分析方法与工具】
  • uniapp组件用法
  • Android自定义View实现不同朝向字体变色
  • Leetcode 3272. Find the Count of Good Integers
  • RabbitMQ 是什么?应用场景有哪些?
  • IBM Speech to Text:发出语音识别请求
  • Qt 实现应用程序换肤功能
  • ASP.NET Core 入门教程二 实现基本 GET 和 POST 接口
  • 【论文解读】SAM模型超级进化:面向移动端的轻量级SAM,比FastSAM快4倍!(附论文地址)
  • 【攻略】第三届数据库大赛创新上云性能挑战赛-高性能分析型查询引擎赛道-冠军
  • OpenCV绘图函数(5)绘制标记函数drawMarker()的使用
  • C++避坑小知识
  • 短视频流量|基于SprinBoot+vue的短视频流量数据分析系统(源码+数据库+文档)
  • 【华三】不懂链路聚合?看这篇就够了!华三配置详解
  • 公众号里的产品宣传册是如何制作的?
  • 2024HarmonyOS应用开发者高级认证最新整理题库和答案(已收录182道 )
  • 【Qt的TS文件转换器】利用Python实现自动化TS文件转换