项目-博客驿站测试报告

测试用例设计

功能测试

该部分主要围绕对于博客系统的增删改查, 文章通过性审核, 关注功能等进行测试, 还进行了其它一些探索性的测试.

 

以上是作者设计的全部用例.

BUG发现:

问题1: 当多端同时操作同一篇文章BUG

环境: Windows11, Edge和Chrome浏览器

复现步骤:

1.先使用Edge浏览器登入zhangsan的账号, 再使用Chrome浏览器登入同一个账号

2.使用两端同时点入同一篇文章详情(zhangsan创作的)

3.在Edge浏览器的账号中点击删除文章, 同时Chrome浏览器的账号进行刷新/点击更新操作

预期结果: Chrome浏览器中的账号也退回到主页

实际结果: Chrome浏览器中的账号显示页面没有任何信息

建议解决方案: 当文章无法获取时, 想获取文章的账户退回到主页.

问题2:同浏览器中的会话共用问题

环境: Windows11, Edge浏览器

复现步骤:

1.在Edge浏览器中登入zhangsan的账号

2.同时在这个浏览器另开一个窗口, 登入zhangsan的账号.

3.第一个窗口中点击注销账号

4.第二个窗口中随意进行操作(刷新/点击查看文章详细等)

预期结果: 第二个窗口中的账号不受影响, 仍能够继续操作.

实际结果: 第二个窗口中的账号直接退回至登录页

建议解决方案: 在同一个浏览器中登录同一个账号时, 分配不同的会话.

 其它测试用例设计

该部分针对安全性, 界面, 易用性, 性能, 兼容性, 网络等用例进行了设计

这里仅挑选网络部分来讲, 其它的就不展开了.

这里使用fiddler对于弱网环境进行测试, 主要针对2G和3G网络环境下进行测试 

利用Ctrl F在脚本中查找m_SimulateModem然后在这里设置网速即可达到改网速的效果. 

将上行速率改为3000, 下行速率改为1500(2G)

勾选Simulate Modem Speeds以进入弱网模式.

 

测试结论: 前端部分的渲染耗时10s(真的很慢), 影响用户体验, 建议优化. 

将上行速率改为20, 下行改为10模拟3G环境.

测试结论: 响应时间正常, 可以正常使用.

自动化测试

介绍:本部分针对博客系统的核心功能进行测试: 即登录/列表页/详情页/编辑页. 进行对于博客的发布(含敏感词检测), 查看, 删除, 更新, 关注, 取消关注这些主要功能进行测试.

用例设计

代码编写

代码见: Java所有代码/CTest/src/main/java/org/example/blogtest · 灰灰快醒醒/邹锦辉个人所有代码 - 码云 - 开源中国 (gitee.com)

注: 这里使用Java中Selenium + JUnit进行测试

1.根据UI用例实现脚本编写: 每一个页面一个测试类, 然后对于各个用例进行编写.

2.公共属性设计单例, 方便进行代码复用.

3.创建启动以及截图经常使用, 将它们设为公共的.

4.注意添加隐式等待, 确保页面正确显示.

设计如下:

 公共类 AutotestUtils

1.创建驱动: 保存现场截图

2.注意: 在保存截图时命名按照时间进行划分, 然后要体现出测试类的类名, 方便问题追溯

3.注意文件名动态获取, 时间格式的设置等.

4.在内部实现对于浏览器驱动的创建, 并提供创建方法.

 登录页面测试BlogLoginTest

1.创建驱动, 打开页面

2.测试页面是否正常打开

3.测试正常登录: 多参数设置

4.测试异常登录: 密码错误, 为空等

5.注意测试顺序: 利用Order注解指定

6.注意清空输入内容以进行对现场的恢复

列表页测试BlogListTest

1.测试博客列表页是否能够正常打开

2.测试列表中查看全文的跳转情况. 

3.测试未登录时的处理情况

4.也要注意测试的顺序 

编辑页测试EditBlogTest

1.查看编辑页是否能够正常打开.

2.正确发布博客: 发布成功, 滚动到底部检查情况

3.博客发布异常: 空的标题/标题含敏感词等

4.注意测试的顺序

详情页测试 BlogDetailTest

1.查看详情页是否能够正常打开

2.回到主页, 记录当前用户的信息

3.进入详情页, 如果作者名和用户名一致, 查看编辑/删除文章按钮是否存在(并点击删除按钮), 回到主页查看文章是否存在

4. 如果作者名和用户名不一致, 则查看关注/取消关注按钮是否存在. 

获取当前作者粉丝量, 点击按钮后查看粉丝量变化情况

驱动释放 

直接将一个类作为驱动释放, 放到测试套件最后即可.

测试套件

使用的是当前测试类的执行顺序.

//测试套件运行 登录 -> 博客列表页 -> 博客编辑页 -> 博客详细页 -> 关闭驱动
@Suite
@SelectClasses({BlogLoginTest.class,BlogListTest.class,BlogDetailTest.class,BlogEditTest.class})
public class runSuite {
}

 测试结果

 全部测试通过, 测试耗时较为正常.

问题:

测试详情页时页面未完全加载, 说明该部分有性能瓶颈/未添加等待. 

小结

(1)一定要关注测试用例的执行顺序问题: 使用JUnit的@TestMethodOrder(MethodOrderer.OrderAnnotation.class)配合@Order注解即可

(2)对于页面要检查到位, 如检查元素以保证页面的正确性

(3)适当添加等待, 确保页面加载后/元素出来后再进行操作.

(4)注意驱动位置: 在最后一个用例结束后关闭. 

(5)注意截图保存形式: 时间 + 截图时的类

(6)测试用例不宜过多, 能够测试大部分功能即可.

(7)注意元素的获取时机, 一定要等加载出来了再进行获取

(8)由于测试类之间是前后衔接的, 需要记得在一个用例执行后恢复现场, 方便下一个类执行.

性能测试

工具: Jmeter

目的: 针对登录, 编写并发布博客, 删除博客等功能的简单性能测试.

登录测试

1.设置http请求默认值. 设置统一的IP地址和端口号

2.创建一个线程组, 设置一个HTTP请求, 并绑定正确用户的信息.

 3.创建结果树, 发送单个请求, 验证请求是否能够发送.

发现登录成功.

4.这时我们进行负载测试, 设定这样的用户增长环境:

 观察响应时间项:

发现用户线程数量在30-40左右时响应时间较长, 达到了0.5-1秒, 但是后面响应时间又缩短了, 总体上响应时间是比较正常的.

观察TPS(每秒处理事务数):

平均大概是每秒240的事务数, 对于博客系统这个小项目来说, 这个已经是很不错的了, 不用过度调优.

以下是汇总报告:

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

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

相关文章

6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大

内容提要 沪指全天围绕3000点关口来回拉锯,收盘跌破3000点。白酒及光刻机概念集体走低,中芯国际港股跌超2%。CRO医药概念及水利股逆势走强。 A股低开低走 沪指全天围绕3000点关口来回拉锯,收盘跌破3000点,跌0.24%。深成指跌0.04…

几何内核开发-实现自己的NURBS曲线生成API

我去年有一篇帖子,介绍了NURBS曲线生成与显示的实现代码。 https://blog.csdn.net/stonewu/article/details/133387469?spm1001.2014.3001.5501文章浏览阅读323次,点赞4次,收藏2次。搞3D几何内核算法研究,必须学习NURBS样条曲线…

板凳-------unix 网络编程 卷1-1简介

unix网络编程进程通信 unpipc.h https://blog.csdn.net/u010527630/article/details/33814377?spm1001.2014.3001.5502 订阅专栏 1>解压源码unpv22e.tar.gz。 $tar zxvf unpv22e.tar.gz //这样源码就被解压到当前的目录下了 2>运行configure脚本,以生成正确…

indexedDB---掌握浏览器内建数据库的基本用法

1.认识indexedDB IndexedDB 是一个浏览器内建的数据库,它可以存放对象格式的数据,类似本地存储localstore,但是相比localStore 10MB的存储量,indexedDB可存储的数据量远超过这个数值,具体是多少呢? 默认情…

前端初学java

目录 java术语 JDK Javac Java Jdb Jhat JVM JRE JAR JDK下载 运行java文件 字面量 隐式转换 强制转换 注意 运算符 &&、||、&、| Switch 程序入口 String[] args 数组 静态初始化 动态初始化 变量初始化 Java内存 方法 重载 Final 包 …

mac苹果窗口辅助工具:Magnet for mac 2.14.0中文免激活版

Magnet 是一款针对 MacOS 系统的窗口管理工具软件。它能够帮助用户更加高效地管理和组织桌面上的窗口,通过简单的快捷键操作,可以将窗口自动调整到指定的位置和大小,实现多窗口快速布局。Magnet 还支持多显示器环境下的窗口管理,可…

模拟算法讲解

模拟算法是一种基于实际情况模拟的算法,通过模拟现实世界中的系统或过程,来研究它们的性质和行为。模拟算法可以用于解决各种问题,包括物理模拟、经济模拟、社会模拟等。 模拟算法的基本步骤包括: 定义问题:明确需要模…

禁用/屏蔽 Chrome 默认快捷键

Chrome 有一些内置的快捷键,但是它并没有像其他软件一样提供管理快捷键的界面。在某些时候,当我们因为个人需求希望禁用 Chrome 某些快捷键时,又无从下手。 好在有开发者开发了 Chrome 插件,可以禁用 Chrome 快捷键的插件&#x…

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题:无限易pythonGo打开执行的时候报:“没有Qt平台插件可以初始化,请重新安装应用程序。”的错误,点击确定后无限易崩溃闪退。 二、解决问题: 1、重新安装依赖,打开CMD输入pip list,查…

用户态协议栈06-TCP三次握手

最近由于准备软件工程师职称考试,然后考完之后不小心生病了,都没写过DPDK的博客了。今天开始在上次架构优化的基础上增加TCP的协议栈流程。 什么是TCP 百度百科:TCP即传输控制协议(Transmission Control Protocol)是…

「动态规划」如何求环绕字符串中唯一的子字符串个数?

467. 环绕字符串中唯一的子字符串https://leetcode.cn/problems/unique-substrings-in-wraparound-string/description/ 定义字符串base为一个"abcdefghijklmnopqrstuvwxyz"无限环绕的字符串,所以base看起来是这样的:"...zabcdefghijklm…

浅谈红队攻防之道-office文件免杀

最完美的状态,不是你从不失误,而是你从没放弃成长。 ∙菜单栏:集成了Cobalt Strike的所有功能。 ∙快捷功能区:列出了常用功能。 ∙目标列表区:根据不同的显示模式,显示已获取权限的主机及目标主机。 ∙…

如何打包数据库文件

使用 mysqldump 命令: mysqldump -u username -p database_name > output_file.sql username 是数据库的用户名。database_name 是要导出的数据库名称。output_file.sql 是导出的 SQL 文件名,可以自定义。 示例: mysqldump -u root -p…

OS复习笔记ch12-2

辅存管理 文件分配问题 创建文件一次性分配最大空间吗?分配连续的分区空间,分区多大?用什么数据结构记录? (1)分配方式 类似于#ch8-3调页机制,文件分配也有预分配和动态分配的形式。 一般拷贝…

【database1】mysql:DDL/DML/DQL,外键约束/多表/子查询,事务/连接池

文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化)1.1 服务端:双击mysql-installer-community-5.6.22.0.msi1.2 客户端:命令行输入my…

文华财经多空精准买卖点止损止盈数值主图指标公式源码

文华财经多空精准买卖点止损止盈数值主图指标公式源码&#xff1a; DD:EVERY(H>HV(H,20),1); KK:EVERY(L<LV(L,20),1); D:DD&&SUM(DD,BARSLAST(KK))1; K:KK&&SUM(KK,BARSLAST(DD))1; Y:1; DRAWCOLORKLINE(Y&&ISDOWN,COLORYELLOW,0); DRAW…

How to create a langchain doc from an str

问题背景&#xff1a; Ive searched all over langchain documentation on their official website but I didnt find how to create a langchain doc from a str variable in python so I searched in their GitHub code and I found this : 在 langchain 的官方文档中&#…

吴恩达机器学习 第二课 week4 决策树

目录 01 学习目标 02 实现工具 03 问题描述 04 构建决策树 05 总结 01 学习目标 &#xff08;1&#xff09;理解“熵”、“交叉熵&#xff08;信息增益&#xff09;”的概念 &#xff08;2&#xff09;掌握决策树的构建步骤与要点 02 实现工具 &#xff08;1&#xff09;…

视频讲解|【双层模型】分布式光伏储能系统的优化配置方法

1 主要内容 该讲解视频对应的程序链接为【双层模型】分布式光伏储能系统的优化配置方法&#xff0c;模型参考《分布式光伏储能系统的优化配置方法》&#xff0c;分为上下层求解方式&#xff0c;上层采用粒子群算法确定储能的选址和容量方案&#xff0c;以全年购电成本、网络损…

<router-view />标签的理解

< router-view />标签的理解 < router-view />用来承载当前级别下的子集路由的一个视图标签。显示当前路由级别下一级的页面。 App.vue是根组件&#xff0c;在它的标签里使用&#xff0c;而且配置好路由的情况下&#xff0c;就能在浏览器上显示子组件的效果。 如…