云聊天项目测试

news2024/11/17 6:33:09

前言

以下将对云聊天项目编写测试用例以及主要功能的自动化测试。

1. 测试用例的编写

请添加图片描述

2. 自动化测试

以下进行部分自动化测试用例的执行,检验项目功能是否符合预期。

2.1 登录功能测试

测试代码: 输入非法用户名或密码逻辑相似,不重复描述。

 //输入正确用户名和密码测试登录功能
    @ParameterizedTest
    @CsvSource({"admin,123456"})
    @Order(1)
    public void loginNormalTest(String username, String password) throws IOException, InterruptedException {
        //先清除用户名和密码框
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        //输入用户名和密码并点击登录
        driver.findElement(By.cssSelector("#username")).sendKeys(username);
        driver.findElement(By.cssSelector("#password")).sendKeys(password);
        driver.findElement(By.cssSelector("#submit")).click();

        sleep(3000);
        //点击弹窗确定
        Alert alert = driver.switchTo().alert();
        //测试弹窗提示信息是否正确
        String alertText = alert.getText();
        String expect = "登录成功!";
        Assertions.assertEquals(expect, alertText);
        alert.accept();
        //测试是否跳转到主界面
        sleep(5000);
        String url = "http://124.221.76.124:59091/client2.html";
        Assertions.assertEquals(url,driver.getCurrentUrl());

        // 校验当前登录的用户是不是admin,如果是测试通过,否则测试不通过
        String user_name = driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).getText();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(username, user_name);
        sleep(5000);
        
    }

预期效果: 输入正确的用户名和密码弹窗提示登陆成功,点击登录成功跳转到主界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际效果: 页面正确跳转,与预期结果相符。

2.2 注册功能测试

测试代码:

 //注册功能测试
    @ParameterizedTest
    @CsvSource({"test1,123456"})
    @Order(1)
    public void rigisterTest(String username,String password) throws InterruptedException {
        driver.get("http://124.221.76.124:59091/register.html");
        //先清除用户名和密码框
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        driver.findElement(By.cssSelector("#username")).sendKeys(username);
        driver.findElement(By.cssSelector("#password")).sendKeys(password);
        driver.findElement(By.cssSelector("#submit")).click();

        sleep(5000);
        //点击弹窗确定
        Alert alert = driver.switchTo().alert();
        //测试弹窗提示信息是否正确
        String alertText = alert.getText();
        String expect = "注册成功是否跳转登陆页面?";
        Assertions.assertEquals(expect, alertText);
        alert.accept();
        //测试是否跳转到主界面
        sleep(5000);
        String url = "http://124.221.76.124:59091/login.html";
        Assertions.assertEquals(url,driver.getCurrentUrl());
    }

预期效果: 输入不存在的用户名和密码弹窗提示注册成功!是否跳转登录页面,点击确定成功跳转到登录页面。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际效果: 页面正确跳转,与预期结果相符。

2.3 主界面测试

2.3.1 用户信息显示

测试代码:

  * 测试登录成功之后主界面用户信息是否正确
     */
    @Test
    public void UserInfoTest() throws InterruptedException {
        sleep(3000);
        String excepted = "admin";
        String actual = driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[3]")).getText();
        Assertions.assertEquals(excepted,actual);
    }

预期效果: 当前用户信息是登录用户的信息。
在这里插入图片描述
在这里插入图片描述

实际效果: 用户信息匹配,与预期结果相符。

2.3.2 搜索框功能

预期效果: 输入用户名,点击搜索按钮右侧显示所有与用户名匹配的用户。

 /**
     * 测试搜索框功能
     */
    @ParameterizedTest
    @CsvSource({"zhangsan"})
    public void searchTest(String input) throws InterruptedException {
        sleep(3000);
        //输入搜索内容
        driver.findElement(By.cssSelector("#searchInput")).sendKeys(input);
        sleep(3000);
        //点击搜索
        driver.findElement(By.cssSelector("#searchButton")).click();
        sleep(3000);
        //检查右侧显示是否正确
        String excepted ="zhangsan";
        String actual = driver.findElement(By.cssSelector("#Users > li > div.nameDiv")).getText();
        Assertions.assertEquals(excepted,actual);

    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际效果: 显示所有相关用户,与预期结果相符。

2.3.3 会话列表

场景一

测试代码:

   /**
     * 测试会话列表功能
     */
    @Test
    public void sessionListTest() throws InterruptedException {
        //场景1,点击会话列表显示所有会话信息
        driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session")).click();
        sleep(3000);

        //测试用户信息显示是否正确
        String actualName= driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > h3")).getText();
        String exceptedName = "tony";
        Assertions.assertEquals(exceptedName,actualName);
        String actualMessage = driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > p")).getText();
        String exceptedMessage = "我们已经是好友啦,快...";
        Assertions.assertEquals(exceptedMessage,actualMessage);

        //场景2,点击好友列表项查看右侧是否正确会话信息
        driver.findElement(By.cssSelector("#session-list > li:nth-child(1)")).click();
        sleep(3000);
        String actualTitle = driver.findElement(By.cssSelector("#right > div.title")).getText();
        String exceptedTitle = "tony";
        Assertions.assertEquals(exceptedTitle,exceptedTitle);
    }

预期效果: 点击会话列表按钮,显示用户的所有会话信息

实际效果: 会话列表显示正确,与预期结果相符。

场景二

预期效果: 点击会话列表项按钮,右侧显示会话的历史信息

在这里插入图片描述
在这里插入图片描述

实际效果: 历史消息加载成功,与预期结果相符。

2.3.4 好友列表

场景一

测试代码:

/**
     * 测试好友列表功能
     */

    @Test
    public void friendlistTest() throws InterruptedException {
        //场景1,点击好友列表显示所有好友信息
        driver.findElement(By.cssSelector("#getFriend")).click();
        sleep(3000);

        //测试用户信息显示是否正确
        String actualName= driver.findElement(By.cssSelector("#friend-list > li:nth-child(1) > h4")).getText();
        String exceptedName = "john";
        Assertions.assertEquals(exceptedName,actualName);

        //场景2,点击好友列表项查看是否跳转到会话列表项,右侧显示对应聊天记录
        driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).click();
        sleep(3000);
        String actualName2= driver.findElement(By.cssSelector("#session-list > li.selected > h3")).getText();
        String exceptedName2 = "john";
        Assertions.assertEquals(exceptedName2,actualName2);
        String actualMessage = driver.findElement(By.cssSelector("#session-list > li.selected > p")).getText();
        String exceptedMessage = "我们已经是好友啦,快...";
        Assertions.assertEquals(exceptedMessage,actualMessage);

        //测试右侧是否显示正确聊天记录
        driver.findElement(By.cssSelector("#session-list > li:nth-child(1)")).click();
        sleep(3000);
        String actualTitle = driver.findElement(By.cssSelector("#right > div.title")).getText();
        String exceptedTitle = "john";
        Assertions.assertEquals(exceptedTitle,actualTitle);
    }

预期效果: 点击好友列表按钮,显示用户的所有好友信息
在这里插入图片描述
在这里插入图片描述

实际效果: 好友列表显示正确,与预期结果相符。

场景二

预期效果: 点击好友列表项按钮,跳转到会话列表并选中与该好友的会话列表项,如果没有就新增一个会话列表项,右侧显示与该好友的聊天记录。
在这里插入图片描述

在这里插入图片描述

实际效果: 跳转到会话列表项成功,与预期结果相符。

2.3.5 添加好友功能

测试代码:

 /**
     * 测试搜索框功能
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource({"zq"})
    public void searchTest(String input) throws InterruptedException {
        sleep(3000);
        //输入搜索内容
        driver.findElement(By.cssSelector("#searchInput")).sendKeys(input);
        sleep(3000);
        //点击搜索
        driver.findElement(By.cssSelector("#searchButton")).click();
        sleep(3000);
        //检查右侧显示是否正确
        String excepted ="zq";
        String actual = driver.findElement(By.cssSelector("#Users > li > div.nameDiv")).getText();
        Assertions.assertEquals(excepted,actual);

    }

    /**
     * 测试添加好友功能
     */
    @Test
    @Order(2)
    public void addFriendTest() throws InterruptedException {

        //在搜索用户测试用例之后,点击添加好友
        driver.findElement(By.cssSelector("#Users > li > div.addDiv")).click();
        sleep(3000);
        //跳转到登录页面登录被添加用户
        driver.get("http://124.221.76.124:59091/login.html");
        //先清除用户名和密码框
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        //输入用户名和密码并点击登录
        driver.findElement(By.cssSelector("#username")).sendKeys("zq");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");

        driver.findElement(By.cssSelector("#submit")).click();
        sleep(3000);
        Alert alert = driver.switchTo().alert();
        alert.accept();

        //查看申请列表是否有好友申请
        sleep(3000);
        driver.findElement(By.cssSelector("#tab-apply")).click();


    }

预期效果: 在搜索框搜索用户名,右侧显示用户搜索结果,输入备注信息,点击添加按钮,被添加用户收到好友申请。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实际效果: 好友申请发送成功,与预期结果相符。

该功能与搜索框功能还有好友申请列表场景二按顺序执行,可以进一步测试同意或者拒绝好友申请功能。

2.3.6 好友申请列表

测试代码:

    
    /**
     * 测试好友申请列表,并同意好友申请
     */
    @ParameterizedTest
   @Order(3)
    @CsvSource({"admin"})
    public void applListTest(String applyName ) throws InterruptedException {
        //查看申请列表是否有好友申请
        sleep(3000);
        driver.findElement(By.cssSelector("#tab-apply")).click();
        sleep(3000);
        //测试是否是该用户的好友申请
       String actualName =  driver.findElement(By.cssSelector("#Appliers > li > div.applyNameDiv")).getText();
       String exceptedName = applyName;
       Assertions.assertEquals(exceptedName,actualName);
       //同意好友申请
        driver.findElement(By.cssSelector("#Appliers > li > div.agreeTab")).click();
//        //拒绝好友申请
//        driver.findElement(By.cssSelector("#Appliers > li > div.rejectTab")).click();
        sleep(500000);
    }

场景一

预期效果: 点击好友申请列表按钮,右侧显示用户的所有好友申请信息
在这里插入图片描述

实际效果: 好友申请列表显示正确,与预期结果相符。

场景二

预期效果: 在申请列表点击同意按钮,即添加好友成功,并且自动发送一条消息。
在这里插入图片描述

实际效果: 同意好友申请成功,与预期结果相符。

场景三
预期效果: 在申请列表点击拒绝按钮,即清空好友申请列表,忽略申请。
在这里插入图片描述

实际效果: 拒绝好友申请成功,与预期结果相符。

2.3.7 消息传输功能

预期效果: 点击某用户会话列表项,在右侧消息输入区域输入信息,点击发送,该用户收到信息。
在这里插入图片描述
在这里插入图片描述

实际效果: 消息发送接收成功,与预期结果相符。

2.3.7 删除好友功能

预期效果: 打开tony消息区域,点击右侧消息区域的扩展,点击删除好友,聊天记录清空,好友列表无此好友。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际效果: 好友删除成功,与预期结果相符。

2.3.8 删除聊天记录功能

测试代码:

  /**
     * 测试删除好友或者聊天记录功能
     */
    @Test
    public void deleteFriend_session() throws InterruptedException {
        //1.选择一个列表项
        driver.findElement(By.cssSelector("#session-list > li:nth-child(1)")).click();
        sleep(3000);
        //2.点击删除聊天记录功能
        driver.findElement(By.cssSelector("#right > div.title > div")).click();
        sleep(3000);
//        driver.findElement(By.cssSelector("#Dropdown > div.deleteChat")).click();
//        sleep(3000);
//        //2.点击删除好友功能
        driver.findElement(By.cssSelector("#Dropdown > div.deleteFriend")).click();
        sleep(3000);
        //3.查看好友列表是否不存在该好友
        driver.findElement(By.cssSelector("#getFriend")).click();
        sleep(3000);
        //通过父子类标签找到所有的好友
        List<WebElement> elementList = driver.findElements(By.cssSelector("#friend-list"));
        for (int i =0;i<elementList.size();i++){
            if ((elementList.get(i).getText().equals("john"))){
                System.out.println("测试不通过");
                break;
            }
        }
        System.out.println("测试通过");

//        //3.查看会话列表是否不存在该会话
//        driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session")).click();
//        sleep(3000);
//        List<WebElement> elementList = driver.findElements(By.cssSelector("#session-list"));
//        for (int i =0;i<elementList.size();i++){
//            if ((elementList.get(i).getText().equals("zq"))){
//                System.out.println("测试不通过");
//                break;
//            }
//        }
//        System.out.println("测试通过");

    }

预期效果: 打开zq消息区域,点击右侧消息区域的扩展,点击删除聊天记录,聊天记录清空。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实际效果: 聊天记录删除成功,与预期结果相符。

3. 总结

根据部分自动化测试用例执行结果可知,项目功能大体完善。接下来可以继续执行编写的测试用例,进一步测试功能、界面、兼容性、安全性等等。

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

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

相关文章

wustojc3001求三角形面积

#include <stdio.h> #include <math.h> int main() {float a,b,c,d;double s;scanf("%f%f%f",&a,&b,&c);if(ab>c&&ac>b&&cb>a){d(abc)/2;ssqrt(d*(d-a)*(d-b)*(d-c));//数学公式printf("%.2f",s);}retur…

听GPT 讲Alertmanager源代码--dispatch/silence/inhibit等

目前Alertmanager项目共计53M大小&#xff0c;其中.git占了46M&#xff0c;总的go代码行数不足6万行(包括.pb.go等文件)&#xff0c;不算是一个大项目。 但实现了告警的分发&#xff0c;静默等功能&#xff0c;值的研究&#xff0c;尤其是dispatch中的route部分。 在Prometheus…

使用 Terraform 与事件驱动的 Amazon CodeBuild 提升云上数据应用运维效率

背景信息 企业客户在云上部署的一系列数据应用的过程中&#xff0c;数据开发团队往往负责脚本内容&#xff0c;而其背后一系列云上资源的管理通常由一支云运维职能团队通过 IaC&#xff08;Infrastructre as Code&#xff09;实现。然而&#xff0c;当数据开发团队开发及部署相…

商城-学习整理-高级-商城业务-Sentinel限流熔断降级Sleuth+Zipkin链路追踪(二十二)

目录 一、秒杀系统的架构二、SpringCloud Alibaba-Sentinel简介1、熔断降级限流什么是熔断什么是降级异同&#xff1a;什么是限流 2、Sentinel 简介官方文档&#xff1a;Sentinel 具有以下特征:Sentinel 分为两个部分: 3、Hystrix 与 Sentinel 比较4、整合 FeignSentinel 测试熔…

Qt与电脑管家4

折线图&#xff1a; #ifndef LINE_CHART_H #define LINE_CHART_H#include <QWidget> #include <QPainter> #include "circle.h" class line_chart : public QWidget {Q_OBJECT public:explicit line_chart(QWidget *parent nullptr); protected:void pa…

SecureBridge安全文件下载的组件Crack

SecureBridge安全文件下载的组件Crack SecureBridge包括SSH、SSL和SFTP客户端和服务器组件。它使用SSH或SSL安全传输层协议和加密消息语法来保护任何TCP流量&#xff0c;这些协议为客户端和服务器提供身份验证、强数据加密和数据完整性验证。SecureBridge组件可以与数据访问组件…

汽水问题!!!!

目录 题目要求&#xff1a; 题目分析&#xff1a; 代码演示&#xff1a; ​ 题目要求&#xff1a; ⽔已知1瓶汽⽔1元&#xff0c;2个空瓶可以换⼀瓶汽⽔&#xff0c;输⼊整数n&#xff08;n>0&#xff09;&#xff0c;表⽰n元钱&#xff0c;计算可以多少汽 ⽔&#xff0…

四款源代码扫描工具

一、DMSCA-企业级静态源代码扫描分析服务平台 端玛企业级静态源代码扫描分析服务平台&#xff08;英文简称&#xff1a;DMSCA&#xff09;是一个独特的源代码安全漏洞、质量缺陷和逻辑缺陷扫描分析服务平台。该平台可用于识别、跟踪和修复在源代码中的技术和逻辑上的缺陷&…

【STM32】串口通信乱码(认识系统时钟来源)

使用 stm32f407 与电脑主机进行串口通信时&#xff0c;串口助手打印乱码&#xff0c;主要从以下方面进行排查&#xff1a; 检查传输协议设置是否一致&#xff08;波特率、数据位、停止位、校验位&#xff09;检查MCU外部晶振频率是否和库函数设置的一致 最终发现是外部晶振频…

蓝桥杯上岸每日N题 (闯关)

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 不清楚蓝桥杯考什么的点点下方&#x1f447; 考点秘籍 想背纯享模版的伙伴们点点下方&#x1f447; 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…

Linux命令200例:telnet用于远程登录的网络协议(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

华为擎云“磨刀”,政企数字化转型“砍柴”

文|智能相对论 作者|李永华 毫无疑问&#xff0c;消费级硬件已进入稳态式红海竞争格局&#xff0c;惨烈厮杀的同时各厂商的市场地位又相对固定。 这意味着机会少的同时困难大。 于是&#xff0c;越来越多终端厂商将着力点之一转向商用市场。 华为就是其中之一。 2023年3月…

常用的软件测试工具清单,建议收藏。

常用的测试工具有10类&#xff1a; 1.测试管理工具 2.接口测试工具 3.性能测试工具 4.C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app自动化工具 10.web安全测试工具 1.测试管理工具 1&#xff0c;TestDirector(大而全) 2&…

1. HBase中文学习手册之揭开Hbase的神秘面纱

揭开Hbase的神秘面纱 1.1 欢迎使用 Apache Hbase1.1.1 什么是 Hbase?1.1.2 Hbase的前世今生1.1.3 HBase的技术选型&#xff1f;1.1.3.1 不适合使用 HBase的场景1.1.3.2 适合使用 HBase的场景 1.1.4 HBase的特点1.1.4.1 HBase的优点1.1.4.2 HBase的缺点 1.1.5 HBase设计架构 1.…

Shell 脚本常用命令

Shell 脚本常用命令 一.日志打印1.信息打印效果2.占位符打印效果 二.文件检索1.文件夹查找2.文件名称3.文件内容检索 三.字符串处理1.字符串截取2.字符串长度获取3.字符串判断4.数字判断5.数字运算 四.日期获取五.文件遍历1.遍历获取修改时间和MD52.Find 查找 六.循环重试1.Whi…

解决jmeter导入jmx文件报错方法

有的时候我们导入别人的jmx文件&#xff0c;但是在导入的时候会报错&#xff0c;如下图&#xff1a; 这是缺少jmeter插件jar包所引起的&#xff0c;下载对应jar包放到jmeter安装目录对应的lib/ext下就可以了。可以通过插件管理工具包下载安装&#xff0c;也可以直接下载对应的…

Linux命令200例:tar命令主要用于创建、查看和提取归档文件(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

基于开源模型搭建实时人脸识别系统(四):人脸质量

续人脸识别实战之基于开源模型搭建实时人脸识别系统&#xff08;三&#xff09;&#xff1a;人脸关键点、对齐模型概览与模型选型_CodingInCV的博客-CSDN博客 不论对于静态的人脸识别还是动态的人脸识别&#xff0c;我们都会面临一个问题&#xff0c;就是输入的人脸图像的质量可…

用于优化开关性能的集成异质结二极管的4H-SiC沟道MOSFET

标题&#xff1a;4H-SiC Trench MOSFET with Integrated Heterojunction Diode for Optimizing Switching Performance 摘要 本研究提出了一种新型的4H-SiC沟道MOSFET&#xff0c;其在栅槽底部集成了异质结二极管&#xff08;HJD-TMOS&#xff09;&#xff0c;并通过TCAD模拟进…

Eduma主题 - 线上教育WordPress主题/网站

Eduma主题 – 线上教育WordPress主题是为教育网站、LMS、培训中心、课程中心、学院、大学、学校、幼儿园而制作的。基于我们使用以前的主题eLearning WP构建WordPress LMS的经验&#xff0c;Education WP是下一代&#xff0c;也是围绕WordPress最好的教育主题之一&#xff0c;它…