
博客系统简介一、项目背景个人博客系统采用前后端分离的方法来实现同时使用了数据库来存储相关的数据同时将其部署到云服务器上。前端主要有四个页面构成登录页、列表页、详情页以及编辑页以上模拟实现了最简单的个人博客系统。其结合后端实现了以下的主要功能登录、编辑博客、注销、删除博客、以及强制登录等功能。但是该项目没有设计用户注册功能只能提前在数据库中存储用户信息后经过校验登录并且用户头像不能自己设定在进行前端页面的书写过程中已经将头像的图片写为静态了而用户信息中的文章数以及分类数也没有在后端中具体实现直接在前端页面中写为了静态的。该个人博客系统可以实现个人用户简单的博客记录时间、标题、内容以及发布者等都可以进行详细地查看。二、项目功能该个人博客系统主要实现了以下几个功能登录、注销、写博客以及删除博客等功能登录功能用户名以及密码已经在后端写入了数据库没有实现账户注册功能即用户名以及密码是已经存在的。登录成功后就会跳转到列表页面。在右上角存在主页和写博客两个按钮但是在未登录情况下按下均只会跳转到登录页面。列表页面可以在列表页查看有限数量的博客简介其包括博客标题、发布时间以及内容概要。在左侧可以看到登录的用户以及文章数、分类数等的模块。在右上角有主页、写博客和注销三个功能主页即列表页写博客即博客编辑页注销即注销用户回到登录页面。详情页面在列表页面点击“查看全文”按钮就会跳转到详情页此时就可以看到该篇博客的完整内容。在右上角同样有主页、写博客、删除和注销四个功能删除即删除该篇博客删除之后就会跳转到列表页面该篇博客就被成功删除。写博客在登录之后的任意界面点击“写博客”之后就会进入博客编辑页面此时就可以进行博客的编写点击“发布文章”后就可以成功发布文章此时就会跳转到列表页。测试计划一功能测试测试用例实际执行测试的部分操作步骤/截图1正常登录2写博客测试3发布成功并查看详情页4删除博客进入详情页并点击“删除”之后成功删除如自动化测试的博客就已经被成功删除。5注销点击“注销”后回到登录页博客系统源码参考https://gitee.com/zhan-yutao/blog二自动化测试针对个人博客项目进行测试个人博客主要由四个页面构成登录页、列表页、详情页和编辑页主要功能包括登录、编辑并发布博客、查看详情、删除博客以及注销等功能。对于个人博客的测试主要就是针对主要功能进行测试然后按照页面书写测试类。个人博客地址http: 8.163.57.248:8080/blog.html自动化测试一般步骤1使用脑图编写web自动化测试用例2创建自动化项目根据用例来实现脚本一、脑图以页面书写测试类然后对主要功能进行测试。二、代码编写根据脑图进行测试用例的编写每个页面一个测试类然后再各个测试类中进行测试用例的编写。注意公共属性需要单独放一个类方便进行代码复用。使用测试套件便于运行以及修改。创建启动以及现场截图就是会频繁进行复用所以单独创建一个类进行存储。注意添加隐式等待为了确保页面正确加载显示。添加相关依赖pom.xml2. 新建包并在包下创建测试类以及公共类以下是所建立的是common公共包和Tests测试包公共类AutoTestUtils创建驱动、保存现场截图注意在保存现场截图的时候命名是按时间来进行文件夹的划分然后图片的名称要体现出测试类的类名方便进行问题的追溯。注意文件名的动态获取注意时间格式的设置。注意可以在创建驱动的时候修改默认的有头模式or无头模式2登录页面测试BlogLoginTest① 创建驱动并打开页面② 测试页面是否正常打开③ 测试正常登录多参数测试④ 测试异常登录用户名/密码错误的情况此处不测null⑤ 注意测试的顺序使用Order注解指定否则可能会因为执行顺序不对导致测试失败⑥ 注意清空内容后才能再次输入用户名以及密码3列表页测试BlogListTest① 测试博客列表页是否可以正常打开② 测试列表页的“查看全文”按钮是否可以正常跳转③ 测试未登录的直接链接是否会跳转到登录页面顺便测试了“注销”按钮④ 同样注意执行顺序4编辑页测试BlogEditTest① 测试编辑页是否可以正确打开② 测试博客是否可以正常发布元素齐全 or 部分元素③ 测试“写博客”按钮是否可以正常使用④ 执行顺序5详情页测试BlogDetailTest① 测试详情页的正确打开有blogId和没有blogId两种情况② 测试“删除”按钮是否可用注意比较的是时间因为标题可能会存在为空的情况③ 执行顺序④ 一定要注意导航回到列表页的操作6驱动释放DriverQuiteTest因为驱动的测试是要在最后一个测试类完成之后进行释放的如果是使用AfterAll注解那么每次修改测试类的时候都会需要挪动驱动释放的位置所以直接新建一个类作为驱动释放此时只需要在测试套件中放到最后就行。7测试套件runSuite测试套件的运行使用的是以测试类作为执行顺序的方式。8代码参考https://gitee.com/zhan-yutao/blog三、代码测试所有测试用例 通过如图所示但是会发现测试耗时有些长说明性能还有优化的空间。小结1一定要关注测试用例的执行顺序问题2对于页面的检查一定要到位如检查元素是否存在确保页面的正确性3注意多参数测试的页面导航问题4发现当多参数多用户登录时就会出现高并发的服务器错误情况该情况需要关注交给开发人员处理。5注意一定要关注执行顺序6因为列表页等的测试是需要在登录成功后才能抵达的所以在进行登录页面测试的最后一步应该是登录成功的状态这样子是为了确保列表页等能够正确进入测试。【并不是绝对但是需要进行关注】7驱动关闭的位置要注意只有最后一个用例结束之后才进行关闭。8为了把所有的用例的执行结果保存下来方便后续查错或查看也就是保存现场此时就需要直接在公共类中进行该方法的定义。9注意屏幕截图保存的方式动态时间戳 并进行时间格式化然后期望按照某种维度天、周以文件夹的方式进行保存。10SelectClasses的参数是可以指定执行类的顺序的注意是类的顺序不是用例的顺序11获取元素的时候建议获取固定的元素如时间、标题等内容不建议获取因为是动态的。然后元素的路径是不可变的所以可以使用xpath来进行元素的定位。12可以适当关注用例执行时间如果时间过长就需要考虑是我们自己写的测试用例的问题还是程序真的有性能问题呢13为了避免遗漏or遗忘驱动释放的位置可以单独写一个类来存放驱动释放然后直接放到套件测试类的最后就行。注意命名Test 结尾14测试用例并不是越多越好15可以使用无头模式来创建驱动测试报告详情参考https://gitee.com/zhan-yutao/blog难点以及亮点一、难点主要就是在进行顺序划定以及导航方面存在遗漏或者错误的情况另外对于页面登录过程中的内容清空也要格外注意一定要进行清空再者可以进行隐式等待确保页面加载完成提高自动化 的稳定性。二、亮点使用selenium4自动化测试工具和junit5单元测试框架结合如何实现的以及有什么亮点1实现① 是根据个人项目 来设计的测试用例然后根据测试用例使用selenium4自动化测试工具和junit5单元测试框架结合来实现web自动化测试的功能、步骤、技术一定要明确② 对于代码中的每个包都要进行概要介绍公共属性[复用]、测试用例[根据每个页面来进行设计的]然后使用测试套件将所有测试类进行加载2亮点① 使用了JUnit5中提供的注解避免生成过多的对象造成资源和时间的浪费提高了自动化的执行效率。② 只创建一次驱动对象避免每个用例重复创建驱动对象造成时间和资源的浪费。③ 使用参数化保持用例的简洁提高代码的可读性④ 使用测试套件降低了测试人员的工作量通过套件一次执行所有要运行的测试用例。⑤ 使用了等待提高了自动化的运行效率提高了自动化的稳定性减小误报的可能性。⑥ 使用了屏幕截图方便问题的追溯以及问题的解决。⑦ 使用了无头模式只注重结果可以留出屏幕。自动化写出来不难但是自动化执行速度快、更好地发现问题并避免误报才是难题。一定要测试主要功能三性能测试使用Jmeter进行简单性能测试针对登录、编写并发布博客以及删除博客、注销等功能进行简单的性能测试。然后在实现的过程中插入集合点以及事务等并通过设置来实现用户的并发操作。登录测试添加访问地址127.0.0.1:8080/blog.html因为用户名以及密码可以有多个所以可以进行参数化。添加事务以及集合点、检查点注意检查点一般放在请求之前。设置迭代次数为了能够更好地遍历到所有的参数一定要进行保存。检查点一定注意函数只放在要检查的URL前面不要随便再往前面放置。即只放在需求之前设置并发数量进行性能测试并导出测试报告以及图表1逐步加载 5 个并发用户持续压测 20 秒后逐步释放对博客系统核心接口进行性能验证评估系统在 5 并发下的表现2在Jmeter生成的页面中查看性能报告以及报表1. 报告2. 吞吐量3.每秒响应时间线程6.分析系统资源剩余的物理内存近70%即使用了近30%的内存对于简单的登录功能来说还是较高的内存使用还有内存优化的空间。 总之该性能还有优化的空间。接口自动化测试自动化代码参考https://gitee.com/zhan-yutao/blog脑图博客系统接口自动化项目结构说明② 全局 Token 管理登录后自动传递给所有接口全局统一日志方便进行查看全局请求工具类统一发送 GET/POST 请求Yaml用来装后端返回的token进行后续的接口测试登录接口测试 BlogLoginTest① 加载用户登录配置zhangsan /lisi② 测试正常登录多账号参数化验证③ 测试异常登录用户名错误、密码错误④ 测试登录接口响应状态码、返回字段⑤ 使用 Order 注解保证用例执行顺序⑥ 每次登录前清空参数避免数据污染博客列表接口测试 BlogListTest① 测试已登录状态正常获取博客列表② 测试未登录状态直接访问返回 401③ 校验列表数据结构、字段完整性④ 验证接口响应时间、业务正确性博客详情接口测试 BlogDetailTest① 测试正常 blogId查询详情成功② 测试异常 / 空 blogId接口校验拦截③ 测试未登录访问拦截并返回无权限④ 校验详情数据与列表数据一致性⑤ 用例执行顺序严格控制避免依赖错误新增博客接口测试 BlogAddTest执行成功① 测试正常发布标题 内容完整② 测试异常发布空标题、空内容、均为空③ 测试带图片、带链接内容的发布④ 测试未登录发布权限拦截⑤ 参数化多场景用例一键执行验证6作者信息接口测试 BlogAuthorTest① 测试正常获取当前登录用户信息② 测试未登录获取信息无权限③ 校验用户昵称、ID 等关键字段④ 异常参数场景覆盖7测试套件 Allure① 按指定顺序执行所有测试类② 统一生成 Allure 本地 HTML 报告③ 执行前自动清理旧报告数据④ 支持一键运行所有接口用例自动化测试图Auulre生成的测试报告Allure 测试概况本次测试共执行 33 条用例通过率 100%测试时间为 2026-03-21 16:10:15所有接口功能验证通过。亮点模块化设计驱动、截图、业务用例分离代码易维护、可复用。智能截图存档按照时间 测试类名动态命名出现问题的时候能快速定位。用例顺序可控通过 Order 注解控制执行流程避免依赖错乱。环境适配灵活支持有头 / 无头模式切换适配本地调试与服务器运行。参数化高效测试多账号登录参数化提升用例覆盖率与执行效率。Allure 可视化报告自动生成美观清晰的测试报告结果清晰可见。驱动统一管理独立类实现驱动释放避免资源浪费便于套件调度。