一、项目背景
以SSM为框架实现的博客系统有四个功能,登录账号进入博客首页,首页展示发布的博客列表,还可以编写或者更改博客内容。为了确保博客系统在各种场景下都能正常运行,需要进行尽可能全面的功能测试和自动化测试。本项目旨在通过自动化测试工具对博客系统的登录、首页、详情页和编辑页进行功能验证,确保系统的稳定性和用户体验。
二、项目简介
此博客系统采用了前后端分离的方法,同时匹配数据库以及云服务器实现的。前端主要有四个页面,如登录页面、首页页面、博客编辑页面、博客详情页面。结合后端实现了登录、编辑、修改、删除博客的功能。
登录页面:账号密码已经写入数据库,暂不支持新用户账户注册功能。输入正确的账号密码即可进入首页查看个人信息和博客列表等。如果账号错误,弹窗显示“用户不存在”;如果密码输入错误,弹窗显示“密码错误”。
首页页面:登录后用户可浏览博客列表,查看博客发布时间以及标题和内容,右上角支持一键写博客、注销账号、回到首页这三个功能。在用户未登录时,无法通过URL访问以下所有页面,而是跳转到登录页面。
博客编辑页面:在登录后任意界面点击右上角的写博客即可进入编辑页面,进行博客编辑,发布时必须要有标题和内容,否则弹出窗口表示发布失败。
博客详情页:在首页展示的博客列表处点击“查看全文”即可进入,此时可以看到该博客的完整内容以及可以编辑和该删除博客。
三、测试计划
1. 测试目标
-
验证博客系统的核心功能是否按预期工作。
-
确保系统在不同场景下的稳定性和可靠性。
2. 测试范围
-
登录功能:包括成功登录、错误用户名登录、错误密码登录、错误用户名和密码登录。
-
首页功能:包括用户信息展示、博客列表展示、导航按钮功能。
-
详情页功能:包括博客内容展示、编辑和删除按钮功能。
-
编辑功能:包括博客编辑和提交功能。
3. 测试环境
-
操作系统:Windows 10
-
浏览器:Chrome 134.0.6998.89
-
测试工具:Selenium 4.0.0、WebDriver Manager 4.0.2
4. 测试策略
-
功能测试:验证每个功能模块的正确性。
-
异常测试:验证系统在异常输入或操作下的表现。
-
回归测试:确保代码修改后原有功能不受影响。
四、测试工具
-
Selenium:用于自动化浏览器操作,模拟用户行为。
-
WebDriver Manager:自动管理浏览器驱动,确保测试环境的一致性。
-
Python:编写测试脚本,调用Selenium。
-
Gitee:管理测试代码。
五、功能测试
1. 测试用例:
测试用例设计一般从以下几个方面设计:功能测试、界面测试、性能测试、易用性测试、安全性测试、兼容性测试、弱网测试等六个方面进行测试。对web网站主要是针对核心功能进行测试,测试用例图如下:
2. 测试用例部分内容
-
登录功能:包括成功登录、错误用户名登录、错误密码登录、错误用户名和密码登录
-
首页功能:包括用户信息展示、博客列表展示、导航按钮功能。
-
详情页功能:包括博客内容展示、编辑和删除按钮功能。
-
编辑功能:包括博客编辑和提交功能。
六、自动化测试
(1)自动化测试脚本:
1. Utils.py
内容:封装浏览器驱动的初始化和截图功能。
方法:
__init__:初始化Chrome浏览器驱动。
getScreeShot:截取当前页面并保存为图片。
2. BlogLogin.py
内容:测试博客系统的登录功能。
方法:
LoginSucTest:测试成功登录。
LoginFailNameTest:测试错误用户名登录。
LoginFailPassTest:测试错误密码登录。
LoginFailNamePassTest:测试错误用户名和密码登录。
3. BlogList.py
内容:测试博客系统的首页功能。
方法:
ListSucTest:测试登录状态下的首页显示的个人信息、博客列表以及右上角的功能、
ListFailTest:测试未登录状态下的首页功能。
4. BlogDetail.py
内容:测试博客系统的详情页功能。
方法:
DetailSUCTest:测试登录状态下的博客详情页展示的博客发布标题、时间、内容以及编辑和删除按钮。
DetailFailTest:测试未登录状态下的博客详情页功能。
5. BlogEdit.py
内容:测试博客系统的编辑功能。
方法:
EditSucTest:测试输入博客标题和内容后发布是否成功。
EditFailTest:测试未输入标题时发布是否成功。
6. RunTest.py
内容:调用各个测试类,执行完整的测试流程。
依次调用BlogLogin、BlogList、BlogDetail、BlogEdit的测试方法。
完整自动化测试脚本链接
(2)遇到的问题
-
执行自动化测试时,测试用例的顺序很重要,要使得每个测试用例之间不产生冲突。比如在失败登录后,紧接着测试博客首页功能时,就会报错。
-
对于页面输入框多次输入的情况下,一定要使用clear清空,否则会出现叠加的情况。比如在输入错误账号登录失败后,使用back回退到登录页面,直接输入正确账号正确密码也无法正常登录。
-
注意等待时间,合理利用隐式等待。避免因页面加载速度慢而导致的测试失效。同时要给弹出窗口留够时间,避免因页面检测不到弹窗而报错
(3)亮点
-
在每次测试完成后,自动截取当前页面图片,以当天日期+时间的格式保存在当日文件夹下,便于后续分析和问题排查。
-
只创建一次驱动,避免每个用例重复创建驱动对象而降低了性能。
-
有些场景页面渲染速度因网络问题等原因加载速度较慢,添加隐式等待,可避免测试程序提前报错,同时也提高了自动化测试效率。
-
使用Selenium进行自动化测试,结合WebDriver Manager自动管理浏览器驱动,确保测试环境的一致性和稳定性。