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

项目链接:飞鸽论坛

目录

一. 项目背景

二. 项目功能

三. 功能测试

注册:

登录:

更改用户信息:

发布帖子:

更新帖子信息:

点赞:

评论:

发送私信:

测试报告

四. 性能测试

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.rhkb.cn/news/102631.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter使用方法

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录:存放可执行文件和配置文件 docs目录:api文档,用于开发扩展组件 printable-docs目录:用户帮助手册 li…

【NEW】视频云存储EasyCVR平台H.265转码配置增加分辨率设置

关于视频分析EasyCVR视频汇聚平台的转码功能,我们在此前的文章中也介绍过不少,感兴趣的用户可以翻阅往期的文章进行了解。 安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各…

C语言刷题(13)

第一题 第二题 第三题 第四题 第五题 第六题 第七题 注意 1.nsqrt(n),sqrt本身不会将n开根 2.初始化已经令sumn了,故相加的个数为m-1次

【业务功能篇74】三高微服务项目springboot-springcloud

三高指的是:高性能、高并发、高可用 2.项目架构 2.1 系统架构图 整体的项目架构图如下 2.2 业务组成 整体的项目业务组成如下

【Prometheus】概述及部署

目录 Prometheus 概述 Prometheus 的生态组件 Prometheus 的工作模式 Prometheus 的工作流程 Prometheus 的局限性 部署 Prometheus Prometheust Server 端安装和相关配置 部署 Exporters 监控 MySQL 配置示例 监控 Nginx 配置示例 部署 Grafana 进行展示 部署 Pro…

Linux centos7 高频词统计

如何统计文章中高频词?是我们经常遇到的问题,也是多场合考察个人知识整合能力的重要手段。招聘经典问题:linux中命令行统计文件中前10个高频词。 在讨论此问题中,主要应用到的知识点有:排序、去重、单词查询、grep、sed和awk使用…

一、数据库基础

数据库 一、数据库基础 1、一些概念 数据库:数据库(DataBase ,简称DB),就是信息的集合。数据库是由数据库管理系统管理的数据的集合;数据库管理系统:简称DBMS 。是一种操纵和管理数据库的大型…

redis7高级篇2 redis的BigKey的处理

一 Bigkey的处理 1.1 模拟造数 1.截图 2.代码 &#xff1a;使用pipe 批量插入10w的数据量 cat /root/export/monidata.txt | redis-cli -h 127.0.0.1 -a 123456 -p 6379 --pipe [rootlocalhost export]# for((i1;i<10*10;i)); do echo "set k$i v$i" >>…

网络安全(大厂)面试题

以下为网络安全各个方向涉及的面试题&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作。 注&#xff1a;本套面试题&#xff0c;已整理成pdf文档&#xff0c;但内容还在持续更新中&#xff0c;因为无论如何都不可能覆盖所有的面试问题&#xf…

【了解一下常见的设计模式】

文章目录 了解一下常用的设计模式(工厂、包装、关系)导语设计模式辨析系列 工厂篇工厂什么是工厂简单工厂「模式」&#xff08;Simple Factory「Pattern」&#xff09;简单工厂代码示例&#xff1a;简单计算器优点&#xff1a;缺点&#xff1a; 静态工厂模式特点&#xff1a; 工…

Python(八十六)字符串的编码与解码

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Apache BeanUtils工具介绍

beanutils&#xff0c;顾名思义&#xff0c;是java bean的一个工具类&#xff0c;可以帮助我们方便的读取(get)和设置(set)bean属性值、动态定义和访问bean属性&#xff1b;细心的话&#xff0c;会发现其实JDK已经提供了一个java.beans包&#xff0c;同样可以实现以上功能&…

tomcat8的安装和部署启动jpress应用

首先准备tomcat&#xff0c;jdk&#xff0c;jpress安装包 一. tomcat8的安装 1. 使用xftp等工具将软件包上传至Linux 2. 将jdk移至/usr/local/tomcat并安装jdk mv jdk-8u261-linux-x64.rpm /usr/local/tomcat yum localinstall jdk-8u261-linux-x64.rpm -y 3. 将tomca…

React+Typescript 状态管理

好 本文 我们来说说状态管理 也就是我们的 state 我们直接顺便写一个组件 参考代码如下 import * as React from "react";interface IProps {title: string,age: number }interface IState {count:number }export default class hello extends React.Component<I…

基于空间的图卷积神经网络:GNN

目录 欧氏空间中神经网络发挥巨大最作用&#xff0c;DNA&#xff0c;知识图谱三维或者多维空间不行 邻接矩阵实现图结构的矩阵化表示&#xff1a;造梦师 局和操作实现层内消息传递&#xff1a;带线的连接机传递消息 GCN通过邻域聚合实现特征提取 SVM支持向量机 ​编辑 硬分…

8.23 类 构造函数 析构函数 拷贝构造函数

#include <iostream>using namespace std;class Per{string name;int age;float *high;float *weight; public:Per(string name,int age,float high,float weight):name(name),age(age),high(new float(high)),weight(new float(weight)){cout << "Per的构造函…

司徒理财:8.23晚间黄金多空走势分析及操作策略

黄金走势分析&#xff1a;      黄金下跌遇阻&#xff0c;短线开启震荡调整走势&#xff0c;但跌势依旧没有改变&#xff0c;没有突破1906压力前&#xff0c;还是偏空走势&#xff0c;反弹继续干空。趋势行情&#xff0c;不要轻言翻转&#xff01;即便下跌结束&#xff0c;…

Git企业开发控制理论和实操-从入门到深入(一)|为什么需要Git|Git的安装

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/cate…

如何使用 Docker Compose 运行 OSS Wordle 克隆

了解如何使用 Docker Compose 在五分钟内运行您自己的流行 Wordle 克隆实例。您将如何部署 Wordle&#xff1f; Wordle在 2021 年底发布后席卷了互联网。对于许多人来说&#xff0c;这仍然是一种早晨的仪式&#xff0c;与一杯咖啡和一天的开始完美搭配。作为一名 DevOps 工程师…

基于swing的小区物业管理系统java jsp社区报修信息mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的小区物业管理系统 系统有1权限&#xff1…