针对论坛系统进行功能测试和性能测试

news2025/1/13 10:22:33

项目链接:飞鸽论坛

目录

一. 项目背景

二. 项目功能

三. 功能测试

注册:

登录:

更改用户信息:

发布帖子:

更新帖子信息:

点赞:

评论:

发送私信:

测试报告

四. 性能测试

Virtual User Generator

Controller

Analysis

测试报告:


一. 项目背景

该论坛系统采用前后端分离的开发方式, 使用 SpringBoot, Mybatis 等开发框架进行开发, 集成了注册、登录、发送,删除帖子、点赞、私信等功能.

使用了 MySQL 去存储用户信息, 文章信息等所需要实现的数据 

二. 项目功能

注册用户: 将用户名,密码和昵称传入到后端, 校验有没有冲突用户名, 密码和重复密码是否相同, 通过校验后将用户名和密码等数据记录到 MySQL 中

登录: 查看是否存在等于的用户, 如果存在再校验密码是否正确, 校验通过跳转到 index.html 页面中

退出登录: 退出当前用户的登录状态

发布帖子: 可以选择区域、标题和内容去进行帖子的发布, 同时在帖子成功发布后跳转到 index.html 页面

点赞和评论删除: 在帖子中可以进行点赞和评论, 可以对自己的帖子进行删除

私信:  可以通过帖子和评论找到别的用户进行私信的发生

更改信息: 可以对自己的用户信息可以进行用户名、昵称、密码进行更改, 也可以对自己发布的帖子的区域、标题和内容进行更改

三. 功能测试

白盒测试在我的开发阶段已经进行过了, 所以这里主要进行的是黑盒测试

我将以此按照注册->登录->更改用户信息->发送帖子->更改帖子信息->删除帖子->点赞->评论->发送私信->退出登录这个流程去进行功能测试

注册:

1. 输入存在用户名

王五是之前已经注册过的, 每次测试都要保证单一变量

2. 两次密码输入不一致

3. 正确输入:

这里的正确输入后, 不会有提示, 直接跳转到登录页

登录:

由于登录是个频繁单一的测试操作, 所以我决定使用 selenium 进行自动化测试
输入不存在用户名:

    @Test
    @Order(1)
    public void login1() throws InterruptedException {
        // 打开驱动
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        // 打开网页
        webDriver.get("http://47.120.39.164:58080/sign-in.html");
        // 输入不存在用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys("小毛");
        // 输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys("123456");
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(2000);
    }

输入错误密码:

    @Test
    @Order(2)
    public void login2() throws InterruptedException {
        // 打开驱动
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        // 打开网页
        webDriver.get("http://47.120.39.164:58080/sign-in.html");
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys("李四");
        // 输入错误密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(2000);
    }

正确输入:

    @Test
    @Order(3)
    public void login3() throws InterruptedException {
        // 打开驱动
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver = new ChromeDriver(options);
        // 打开网页
        webDriver.get("http://47.120.39.164:58080/sign-in.html");
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys("李四");
        // 输入正确密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys("123456");
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(2000);
    }

正确输入后跳转到帖子列表页

更改用户信息:

 邮箱和电话号码修改完成

在原密码错误的情况下修改密码:

出现参数校验失败的错误

原密码正确的情况下两次密码输入不一样:

出现错误提示

参数都正确的情况下就会跳转到登录页, 并成功修改密码

发布帖子:

 在我们的首页和经验分享区都更新了帖子, 并且帖子数成功加一

更新帖子信息:

点击帖子后, 如果是自己发的帖子, 下放会出现一个编辑选项 

 进行更改:

 更改后可以看到帖子已经更改

点赞:

点击一个贴子进入

 进行一次点赞操作后, 可以发现点赞成功, 并且点赞数成功加一

评论:

点进一个帖子内进行评论

 

 可以看到评论成功并且评论数加一

发送私信:

可以向帖子的博主或者评论区里的人发生私信

 

点击发送后, 然后我们登录进这个账户进行查看:

 点击右上角的小铃铛, 就能看到对方发送的私信:

 同时可以进行回复

测试报告

四. 性能测试

性能测试使用 loadrunner 来进行

这里只对登录页面进行测试

Virtual User Generator

使用 Virtual User Generator 将我们的登录操作录制下来

 点击录制后会跳转到浏览器中, 右上角会出现一个小框

 输入用户名和密码后点击结束录制, 这样登录操作就录制好了

 录制完后, 将一些浏览器自带的请求删除掉, 就只剩这些请求

可以看到我们的用户名和密码

接下来点击 create Controller, 跳转到 controller 上

Controller

接下来进行一些设置:

 

 

 

设置完点击下面的 run 去运行

运行结束: 

 点击 Result 中的 Analyze Result, 进入 Analysis

Analysis

接下来就能看到我们的运行数据

 点击右边的就能看到图表:

 Running Vuser:

 这里和我们之前设置的一样

Hits per Second 和 Througput

 平均点击数和吞吐量也是符合规律

测试报告:

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

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

相关文章

激活函数总结(十七):激活函数补充(PELU、Phish)

激活函数总结(十七):激活函数补充 1 引言2 激活函数2.1 Parametric Exponential Linear Unit(PELU)激活函数2.2 Phish激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、…

juc基础(二)

目录 一、集合的线程安全 1、List集合 2、hashset 3、hashmap 二、多线程锁 三、Callable&Future 接口 1、Callable接口 2、Future 接口 3、FutureTask 四、JUC 三大辅助类 1、减少计数 CountDownLatch 2、 循环栅栏 CyclicBarrier 3、信号灯 Semaphore 一、…

虚拟助手如何帮助您进行数字营销

您的企业值得有效的数字营销。您每天都在努力工作,为您的客户创造高质量的体验。世界需要更多地了解它!您的产品和服务应位于每个社交提要和每个相关搜索的顶部。然而,数字营销可能具有挑战性。您不想做出错误的决定并将营销资金花在错误的地…

电商平台淘宝1688京东拼多多商品详情sku数据api接口源代码展示示例

淘宝商品详情API接口是淘宝开放平台提供的一个HTTP接口,可以用来获取淘宝商品的详细信息,包括商品的标题、价格、运费、销量、评价等等。使用该接口可以方便地获取商品信息,进行数据分析或者开发自己的电商应用。 item_get-获得淘宝商品详情…

C#,数值计算——用算法加速序列的收敛的计算方法与源程序

算法对序列的收敛加速。初始化方式使用参数nmax调用构造函数,nmax是要求和的项数,以及eps,即所需的精度。然后连续调用next函数,参数为next部分和序列的。序列极限的当前估计值为next返回。检测到收敛设置标志cnvgd。 using Syst…

生成模型 -- GAN

文章目录 1. 生成模型与判别模型1.1 生成模型 2. VAE3. GAN3.1 GAN-生成对抗网络3.2 GAN-生成对抗网络的训练3.2.1 判别模型的训练:3.2.2 生成网络的训练: 4. LeakyReLU5. GAN代码实例 1. 生成模型与判别模型 生成模型与判别模型 我们前面几章主要介绍了…

【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别

目录 一、MyBatis动态sql 1.1 动态sql的作用 1.2 动态sql作用论证 1.2.1 条件判断&#xff1a;<if> 1.2.2 循环迭代&#xff1a;<foreach> 1.2.3 SQL片段重用 1.2.4 动态条件组合&#xff1a;<choose><when><otherwise> 1.2.5 <where…

kali的一些使用和ms08-067、ms17-010漏洞

VM虚拟机-三种网络连接方式&#xff08;桥接、NAT、仅主机模式&#xff09; 虚拟机网络连接 一、Bridged&#xff08;桥接&#xff09; 二、NAT&#xff08;网络地址转换&#xff09; 三、Host-Only&#xff08;仅主机&#xff09; 在vmware软件中&#xff0c;选项栏的“编…

【工具】VirtualBox虚拟机安装Windows操作系统

前面的文章中介绍了VirtualBox虚拟机的安装,VirtualBox虚拟机中如何安装操作系统,是本文的重点,下面将进行详细介绍。 使用VirtualBox虚拟机安装Windows操作系统有很多好处,主要包括以下几点: 节省资源:通过虚拟化技术,一台物理计算机可以同时运行多个虚拟机,每个虚拟…

什么是网站SSL证书?

SSL证书&#xff0c;使用SSL/TLS协议在服务器与客户端加密传输数据&#xff0c;提供身份验证的一种数字证书。 如果您不知道SSL证书&#xff0c;它还有一些别的叫法&#xff1a; HTTPS证书&#xff08;SSL证书能将网站从HTTP明文连接升级为HTTPS加密连接&#xff09;&#xf…

【Redis从头学-8】Redis中的ZSet数据类型实战场景之用户积分榜

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Re…

Day8.22 E. Unforgivable Curse (easyhard version)

文章目录 E1. Unforgivable Curse (easy version)E2. Unforgivable Curse (hard version) E1. Unforgivable Curse (easy version) Problem - 1800E1 - Codeforces 将s串转换成t串&#xff0c;每次能交换s串中下标绝对值差3或差4的字符 有点像bfs最小步数&#xff0c;但是字…

时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化

时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于SWD群体分解的分量可视化&#xff0c;基于群体分解的信号分解技术&#xff0c;MATLAB程序…

软考高级系统架构设计师(二)计算机操作系统

【原文链接】软考高级系统架构设计师&#xff08;二&#xff09;计算机操作系统 2.1 进程管理 2.1.1 操作系统的三个重要作用 管理计算机中运行的程序和分配各种软硬件资源为用户提供友善的人机界面为应用程序的开发和运行提供一个高效的平台 2.1.2 操作系统的四个特征 并…

Android开发基础知识总结(四)简单控件(下)

一.按钮触控 最常见的按钮button类继承自Textview类。 需要注意的是&#xff0c;在Button中显示的单词默认全部大写 ~ public void onClick(View v){s1et1.getText().toString();//有一些小bug&#xff0c;好像变量必须声明在Onclick方法内部才有效&#xff1f;&#xff1f;&am…

数据结构-----树的易错点

1.树的度和m叉树 •度为m的树&#xff08;度表示该结点有多少个孩子&#xff08;分支&#xff09;&#xff09; 任意结点的度<m(最多m个孩子) 至少又一个结点度m(有m个孩子) 一定是非空树&#xff0c;至少有m1个结点 •m叉树 任意结点的度<m(最多有m个孩子) 允许所…

Shell 编程快速入门 之 数学计算和函数基础

目录 1. 求两数之和 整数之和 浮点数之和 2. 计算1-100的和 for...in C风格for循环 while...do until...do while和until的区别 关系运算符 break与continue的区别 3. shell函数基础知识 函数定义 函数名 函数体 参数 返回值 return返回值的含义 return与…

2023大数据专业建设解决方案

打造产教融合的就业育人综合服务平台。 随着大数据产业链与技术链的逐步成熟&#xff0c;整体人工智能岗位将从原来的以算法人才为主&#xff0c;开始转向以应用型人才与数字 蓝领人才为主&#xff0c;形成金字塔型人才结构。应用型本科与职业院校的学生也将逐渐在人工智能领域…

Docker(一) 安装Docker

一、安装 安装前置条件 yum install -y yum-utils device-mapper-persistent-data lvm2 更换数据源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 1、指定版本安装 yum list docker-ce --showduplicates | sort -r yum …

深入浅出理解卡尔曼滤波

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 一、参考资料 我所理解的卡尔曼滤波 图说卡尔曼滤波&#xff0c;一份通俗易懂的教程 卡尔曼滤波简单分析 How a Kalman filter works, in pictures 说说卡尔曼滤波…