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

一、项目背景

  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. 测试代码
java 复制代码
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.测试结果截屏

(三)性能测试

持续更新...

相关推荐
计算机毕设指导65 分钟前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study6 分钟前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
Chris _data9 分钟前
二叉树oj题解析
java·数据结构
牙牙70514 分钟前
Centos7安装Jenkins脚本一键部署
java·servlet·jenkins
paopaokaka_luck22 分钟前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
以后不吃煲仔饭35 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师35 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
The_Ticker41 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
大数据编程之光1 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
爪哇学长1 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法