即时通讯平台项目测试(登录/注册页面)

http://8.130.98.211:8080/login.html项目访问地址:即时通讯平台icon-default.png?t=N7T8http://8.130.98.211:8080/login.html

本篇文章进行登录和注册页面的测试。自动化脚本的依赖在文章末尾。

登录页面测试

 UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:人工测试

测试步骤:

  1. 打开Edge浏览器
  2. 输入 http://8.130.98.211:8080/login.html 点击回车进行访问

预期效果:

实际效果:界面、元素布局正确。

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试点:

测试方法:自动化测试

测试数据:{"lisi", "lisi"}、{"lisi", "123"}、{"aaa", "lisi"}、{"adfsa", "1212"}

自动化测试脚本:

public class TestLogin {
    @Test
    public void login() throws InterruptedException {
        String[][] value = {{"lisi", "lisi"},
                {"lisi", "123"},
                {"aaa", "lisi"},
                {"adfsa", "1212"}};
        //预期结果:true、false、false、false
        boolean[] result = new boolean[value.length];
        for (int i = 0; i < value.length; i++) {
            result[i] = testLogin(value[i][0], value[i][1]);
        }
        System.out.println(Arrays.toString(result));
    }
    
    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
    }

    //登录测试
    private boolean testLogin(String name, String password) throws InterruptedException {
        WebDriver webDriver = new EdgeDriver();
        webDriver.get("http://8.130.98.211:8080/login.html");
        //等待页面加载
        webDriver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
        //检查当前是否处于登录页面
        String logo = webDriver.findElement(By.cssSelector("body > div > div > h3")).getText();
        if (!"登录".equals(logo)) {
            throw new RuntimeException("当前登录页面打开异常");
        }
        //输入账号
        webDriver.findElement(By.cssSelector("#userName")).sendKeys(name);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //进行登录
        webDriver.findElement(By.cssSelector("#submit")).click();
        //先强制等待1秒,然后再隐式等待,防止页面还未跳转就执行后续代码
        Thread.sleep(1000);
        webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        //获取新页面的url
        try{
            //如果未登录成功会弹窗警告,所以需要处理异常
            String url = webDriver.getCurrentUrl();
            //判断页面是否成功跳转
            return "http://8.130.98.211:8080/client.html".equals(url);
        } catch (UnhandledAlertException e) {
            return false;
        } finally {
            webDriver.close();
        }
    }
}

预期结果:true、false、false、false

实际结果:代码输出结果与预期一致

注册页面测试

UI测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试方法:人工测试

测试步骤:

  1. 打开Edge浏览器
  2. 输入 http://8.130.98.211:8080/login.html 点击回车进行访问
  3. 点击注册按钮

预期结果:

实际结果:界面、元素布局正确。

功能测试

测试环境:Win11;IntelliJ IDEA 2023.2;Microsoft Edge版本 125.0.2535.51 (正式版本) (64 位)

测试点:

测试方法:自动化测试

测试脚本:


public class TestLogin {
    @Test
    public void register() throws InterruptedException {
        String[] values = {
                "aaa","123","12asd","as","12","a2","qwertyuiopasdfgh","1234567890123456","123456789012345w",
                "zhangsande","1234567890","qwe1234567",
                "a","1","qweqwwwwwwwqqqqwee","12132234534363623464",
                "qweqwe7dhf7y76647yruh","@uhas()","asds asds","13213  32",
                "@12312334","asd12 ","asd12@","","@(){}","     ","a@",
                "w ","2 ","2@","@#","  ","qwertyuiopasdfg@","qwertyuiopasdfg@","qwertyuiopasdfg ",
                "123456789012345 ", "123456789012345@","12345678901234 w",
                "12 456789012345w","12345678901234$w","*&^%$#@!@#$%^&*&",
                "                ","12345678901234562","oqwertyuiopasdfgh","oqwertyuiopasdfg4",
                "qwe@werewq","qwertyuiop ","123456789 ","123456789@","12345678d ","q12345678@",
                "!@#$%^&*()","          "
        };
        //预期结果:前十二个是true,后面都是false;
        boolean[] result = new boolean[values.length];
        for (int i = 0; i < values.length; i++) {
            int a = i;
            Thread thread = new Thread(()->{
                try {
                    result[a] = testRegister(values[a], "123");
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            });
            thread.start();
            if (i % 3 == 2) {
                Thread.sleep(6000);
            }
        }
        Thread.sleep(10000);
        System.out.println(values.length+"个测试用例");
        System.out.println(Arrays.toString(result));
    }

    @BeforeAll
    public static void init() {
        System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe");
    }

    //判断注册是否成功
    public boolean testRegister(String name, String password) throws InterruptedException {
        WebDriver webDriver = new EdgeDriver();
        webDriver.get("http://8.130.98.211:8080/login.html");
        //点击注册
        webDriver.findElement(By.cssSelector("#submit2")).click();
        webDriver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
        //判断此时是否处于注册页面
        String logo = webDriver.findElement(By.cssSelector("body > div > div > h3")).getText();
        if (!"注册".equals(logo)) {
            throw new RuntimeException("未跳转到注册页面");
        }
        //输入账号
        webDriver.findElement(By.cssSelector("#userName")).sendKeys(name);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //进行注册操作
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(500);
        //对结果进行判断,并返回结果
        Alert alert = webDriver.switchTo().alert();
        String result = alert.getText();
        //点击确认
        alert.accept();
        Thread.sleep(500);
        boolean flag = "注册成功".equals(result);
        Thread.sleep(300);
        //如果注册成功则判断页面是否跳转至登录界面
        if (flag) {
            logo = webDriver.findElement(By.cssSelector("body > div > div > h3")).getText();
            boolean ret = "登录".equals(logo);
            webDriver.close();
            return ret;
        }
        webDriver.close();
        return false;
    }

}

预期结果:前十二个是true,后面都是false

实际结果:

测试脚本的依赖 

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
    <!--截图-->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>5.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>1.9.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.9.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言课设--读取文件并统计数据

读取文件并统计数据 // 统计记事本英文字符数 //功能 &#xff1a; 读 文件 a.txt 统计出各种 数字 大写字母 小写字母 0~9 A~Z a ~z各有多少个 程序主体框架如下&#xff1a; #include<stdio.h> int a[128]{0};//其中数组元素a[i]保存 ASCII 码为i的字符的数量 v…

css样式学习样例之边框

成品效果 边框固定 .login_box{width: 450px;height: 300px;background-color: aliceblue;border-radius: 3px;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%); }这段CSS代码定义了一个名为.login_box的类的样式&#xff0c;它主要用于创建一个登录框…

【在Linux世界中追寻伟大的One Piece】HTTPS协议原理

目录 1 -> HTTPS是什么&#xff1f; 2 -> 相关概念 2.1 -> 什么是"加密" 2.2 -> 为什么要加密 2.3 -> 常见的加密方式 2.4 -> 数据摘要 && 数据指纹 2.5 -> 数字签名 3 -> HTTPS的工作过程 3.1 -> 只使用对称加密 3.2 …

Linux系统安装软件包的方法rpm和yum详解

起因&#xff1a; 本篇文章是记录学习Centos7的历程 关于rpm 常见命令 1&#xff09;查看已经安装的软件包 rpm -q 软件包名 2&#xff09;查看文件的相关信息 rpm -qi 软件包名 3&#xff09;查看软件包的依赖关系 就是说要想安装这个软件包&#xff0c;就必须把一些前…

亚信安全发布2024年6月威胁态势,高危漏洞猛增60%

近日&#xff0c;亚信安全正式发布《2024年6月威胁态势报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;报告显示&#xff0c;6月份新增信息安全漏洞 1794个&#xff0c;高危漏洞激增60%&#xff0c;涉及0day漏洞占67.67%&#xff1b;监测发现当前较活跃的勒索病毒…

CountDownLatch内部原理解析

文章目录 1、CountDownLatch介绍1.1、功能介绍1.2、demo1.3、问题 2、前置知识2.1、AQS整体结构2.1.1、整体结构2.1.2、state属性2.1.3、head和tail属性 3、CountDownLatchAPI源码解析3.1、countDown方法3.1.1、Sync类3.1.2、releaseShared方法3.1.3、tryReleaseShared方法 3.2…

C++库函数--next_permutation(详细)

next_permutation介绍 用于生成某个序列的下一个排列。它通常在需要生成排列的问题中使用&#xff0c;比如全排列问题。 使用方法 普通序列 &#xff1a;next_permutation&#xff08;起始地址&#xff0c;末尾地址1&#xff09; 结构体&#xff1a;next_permutation&#…

解决 Layout Inspector无法查看Component Tree 布局层级信息 | Android Studio Koala

问题描述 Tool -> Layout Inspector 显示下图&#xff0c;无法生成.li文件查看Component Tree&#xff0c;变成实时的Preview并功能点击操作&#xff0c;跟模拟器一样。 原因&#xff1a;默认勾选了"Enable embedded Layout Inspector"&#xff0c;启用了嵌入式…

笔记本电脑内存不够

笔记本电脑内存不够是众多笔记本用户面临的常见问题&#xff0c;尤其是对于一些需要处理大型文件或者运行复杂软件的用户&#xff0c;这个问题可能会严重影响笔记本的使用体验。那么&#xff0c;我们应该如何解决笔记本电脑内存不够的问题呢&#xff1f;本文将从几个方面进行详…

flask使用定时任务flask_apscheduler(APScheduler)

Flask-APScheduler描述: Flask-APScheduler 是一个 Flask 扩展&#xff0c;增加了对 APScheduler 的支持。 APScheduler 有三个内置的调度系统可供您使用&#xff1a; Cron 式调度&#xff08;可选开始/结束时间&#xff09; 基于间隔的执行&#xff08;以偶数间隔运行作业…

RabbitMq - Java客户端基础【简单案例 +Work模型】

目录 1、前置知识 1.1、AMQP怎么理解 1.2、Spring AMQP是什么 1.3、为什么要了解Spring-AMQP&#xff1f; 2、使用Spring-AMQP实现一个发消息案例 3、Work模型 问题&#xff1a; 优化&#xff1a; 小结&#xff1a;Work模型的使用&#xff1a; 1、前置知识 1.1、AMQP怎…

[激光原理与应用-101]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 5 - 3C行业应用 - 电子布局类型

目录 前言&#xff1a; 一、激光在3C行业的应用概述 1.1 概述 1.2 激光焊接在3C-电子行业应用 二、3C电子行业中激光焊接 2.1 纽扣电池 2.2 均温板 2.3 指纹识别器 2.4 摄像头模组 2.5 IC芯片切割 三、3C行业中激光切割 四、激光在3C行业中的其他应用 4.1 涂层去除…

Towards Accurate and Robust Architectures via Neural Architecture Search

基于网络架构搜索的准确性与鲁棒性结构研究 论文链接&#xff1a;https://arxiv.org/abs/2405.05502 项目链接&#xff1a;未开源 Abstract 为了保护深度神经网络免受对抗性攻击&#xff0c;对抗性训练因其有效性而受到越来越多的关注。然而&#xff0c;对抗训练的准确性和鲁…

服务器本地部署文件服务器minio

minio类似于阿里云的OSS&#xff0c;为不方便把图、文、日志等形式的文件保存在公有云上的&#xff0c;可以在自己的服务器上部署文件服务器 看过本人前几个文章的&#xff0c;使用docker就会很快上手部署&#xff0c;直接上所有代码 #添加镜像 docker search minio docker p…

jvm 03 JVM的运行时数据区域 ,(类常量池,运行时常量池,字符串常量池这个三个的区别),操作系统内存模型JMM和JVM的内存模型联系

方法区在jdk8后&#xff0c;改成元空间 JVM内存模型&#xff1a; JMM 主内存&#xff1a;本地方法区和堆 工作内存&#xff1a;私有的工作栈 其实一个JVM内存模型&#xff08;主要就是运行时数据区域&#xff09;一个Java进程的JMM&#xff0c;工作内存JVM中线程的内存区域…

关于umjs的主题切换实现

注意本文写作日期2024年7月7日&#xff0c;我目前是最新版本的 注意&#xff1a;该功能仅 antd v5 可用 最后目标实现 先说一下&#xff0c;umijs布局默认是内置ant-design/pro-layout布局写的 看一下官网ProLayout - 高级布局和布局与菜单 直接在app.tsx加入以下&#xff…

Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目

学习目标 能够说出git的作用和管理源代码的特点能够如何创建git仓库并添加忽略文件能够使用add、commit、push、pull等命令实现源代码管理能够使用github远程仓库托管源代码能够说出代码冲突原因和解决办法能够说出 git 标签的作用能够使用使用git实现分支创建&#xff0c;合并…

磐维2.0数据库日常维护

磐维数据库简介 “中国移动磐维数据库”&#xff08;ChinaMobileDB&#xff09;&#xff0c;简称“磐维数据库”&#xff08;PanWeiDB&#xff09;。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。 其产品内核能力基于华为 OpenG…

pyrender 离线渲染包安装教程

pyrender 离线渲染包安装教程 安装 安装 官方安装教程:https://pyrender.readthedocs.io/en/latest/install/index.html#installmesa 首先 pip install pyrenderclang6.0安装 下载地址:https://releases.llvm.org/download.html#6.0.0 注意下好是叫&#xff1a;clangllvm-6…

L04_MySQL知识图谱

这些知识点你都掌握了吗&#xff1f;大家可以对着问题看下自己掌握程度如何&#xff1f;对于没掌握的知识点&#xff0c;大家自行网上搜索&#xff0c;都会有对应答案&#xff0c;本文不做知识点详细说明&#xff0c;只做简要文字或图示引导。 1 基础 1.1内部组件结构 1.2 数据…