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

一、项目背景

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

(三)性能测试

持续更新...

相关推荐
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen2 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员2 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋3 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~3 小时前
《设计模式》装饰模式
java·设计模式
秃了也弱了。3 小时前
WireShark:非常好用的网络抓包工具
网络·测试工具·wireshark
A尘埃3 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交4 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图