目录
- 1. 项目背景
- 1.1 测试目标
- 2. 项目功能
- 3.测试分类
- 3.1 功能测试
- 3.2 自动化测试
- 3.2.1自动化测试遇到的问题以及解决:
- 3.2.2 自动化测试结果
- 3.3 性能测试
- 4. 基于场景性能测试下遇到的一些问题
- 4.1 解决博客id不存在的问题?
- 4.2 添加博客请求响应失败?
1. 项目背景
- 易通博客系统是为了更好的帮助我们去归档、总结知识和笔记,此项目是参照线上博客系统,如CSDN,来实现的,更加方便的去管理、总结重点知识,以及后续的回顾以及复习。
1.1 测试目标
- 四个主页面测试覆率达90%,界面元素能够正常显示,功能都能够正常使用。
2. 项目功能
- 个人博客系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。前端主要有四个页面构成:登录页、列表页、详情页以及编辑页,以上模拟实现了最简单的个人博客系统。其结合后端实现了以下的主要功能:登录、编辑博客、注销、删除博客、以及强制登录等功能。
3.测试分类
3.1 功能测试
-
测试用例: 测试用例100%通过。
-
实际执行测试的部分操作截图
输入正确的用户名和密码,点击登录:
编辑博客并发布:
博客列表页:
点击进入博客详情,进行删除博客:
确认删除成功:
点击注销回到登录页:
3.2 自动化测试
-
自动化测试用例:
-
自动化测试覆盖模块:登录页面、博客列表页、博客编辑页、博客详情页。
-
自动化测试代码:
-
添加相关依赖到pom.xml
-
创建测试用例类和公共类
-
测试用例代码编写
-
-
自动化代码示例: 自动化测试代码
3.2.1自动化测试遇到的问题以及解决:
- 1、本项目中博客编辑页用的编辑器是第三方编辑器(markdown),编辑页的元素能进行查找元素是否存在、页可以进行点击,但是不能发送数据,即无法输入博客内容,会报元素不可交互异常。
- 解决方法:由于博客内容本身就有默认内容,就不需要手动实现,只需测试标题即可。
- 2、比较常见的一个问题:在登录失败时会有个警告弹窗,此时就需要点击警告弹窗才能对页面元素进行交互,但是在自动化测试中,会报错,找不到alert。
- 原因:自动化测试很快,弹窗还没弹出来就去找元素了。此时就需要添加一个显示等待。
3.2.2 自动化测试结果
测试用例个数:11个,成功通过个数10,有一个存在问题,最后也解决了成功通过。
3.3 性能测试
- 使用 jmeter进行简单的性能测试:登录,列表页,详情页,添加博客进行场景的性能测试。
- 添加一个梯度压测线程组。
- 添加HTTP请求默认值,添加默认的协议、IP、端口号、内容编码
- 添加HTTP信息头管理器
- 添加账号密码CSV数据文件
- 添加登录请求,由于登录是通过token令牌验证,后续用户信息、列表页其他都需要token,所以在登录请求这里提取token。
- 列表页,详情页需要列表页传的blogId参数,所以在这里提取出有效的blogId。
- 添加详情页请求
- 添加上传博客请求,传递的标题和内容写在消息体数据。
- 添加监听器:查看结果树、聚合报告、响应时间、活跃线程、吞吐量
-
梯度压测线程组
-
测试完查看监听器内容:
-
聚合报告:
-
活跃线程
-
响应时间:
-
吞吐量
-
-
性能测试完成之后,把这里的jmx文件执行一遍再生成测试报告:
-n:无图形化运行,-t 被运行的脚本,-l:将运行信息写入日志文件中,-e:生成测试报告,-o:指定报告输出目录。
-
生成的测试报告:
查看html生成的测试报告内容:
测试全部通过,错误为0。
响应时间表:
4. 基于场景性能测试下遇到的一些问题
4.1 解决博客id不存在的问题?
- 博客列表页会返回有效的博客id,添加后置处理器的JSON提取器来提取出来作为详情页的参数值。
4.2 添加博客请求响应失败?
- 对比jmeter请求头信息和浏览器请求头信息。
- 得知content-Type不一样,先通过postman测试修改这个Content-Type,修改为jmeter中的内容格式,发现响应的结果和jmeter一样,所以在jmeter中单独给添加博客请求,添加请求信息头,修改Content-Type:Application-json,不能添加到全局请求信息头中,不然会作用其他的请求。