一、项目背景
随着社交网络和社区平台的普及,用户对高交互性、个性化和信息获取效率的论坛系统需求逐渐提升。当前市面上的论坛系统虽多,但大多数要么功能过于复杂、用户体验不足,要么不具备良好的可拓展性和可维护性。因此,为了提升自己的实战能力并打造一个轻量级、功能完备、界面友好、交互流畅的Web端社区系统,本项目应运而生。
本项目定位为一款简洁高效的在线论坛平台,用户可以通过注册和登录实现身份认证,并具备完整的用户资料管理、帖子浏览、发帖、点赞、评论、私信通知等互动功能。项目以实际业务需求为导向,设计结构清晰、功能覆盖全面,适用于学习Web系统开发、前后端联调、自动化测试等多种场景,同时也为后期拓展自动化测试和测试工程师实战项目提供良好支撑。
二、测试计划
(一)测试用例

(二)功能测试
1.功能测试用例

2.实际测试部分操作步骤
1)正常注册界面:

2) 正常登录界面:

3) 修改个人邮箱以及简介:

4)发帖测试:

5) 个人发帖页面认证结果:

发帖数、个人简介、邮箱均符合预期结果。
6)个人页面修改密码:

点击修改后跳转到登录页面:

输入新密码登录成功:

7)退出登录回到登录页:

(三)自动化测试
一、脑图
书写测试类,然后对主要功能进行测试。

二、代码编写:
1.根据脑图进行测试用例的编写:每个功能一个测试类,然后再各个测试类中进行测试用例的编写。
2.注意公共属性需要单独放一个类,方便进行代码复用。
3.创建驱动以及现场截图是会频繁进行复用,所以单独创建一个类进行存储。
4.注意添加隐式等待,为了确保页面正确加载显示。
1.添加selenium4.0以及webdriver-manager软件包
2. 新建包并在包下创建截图保存目录、测试文件目录、公共类目录
以下按顺序分别是公共类、截图保存目录、测试目录

1)公共类:Utils.py
创建驱动、保存现场截图
在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
注意文件名的动态获取,注意时间格式的设置。
可以在创建驱动的时候修改默认的有头模式or无头模式
2)注册功能:ForumRegister.py
创建驱动,并打开注册页面
测试页面是否正常打开
测试异常注册:用户名已存在、密码与确认密码不一致的情况(此处不测null)
注意测试的顺序
注意清空内容后才能再次输入用户名、昵称以及密码
3)登录功能: ForumLogin.py
创建驱动,并打开登录页面
测试页面是否正常打开
测试异常登录:用户名不存在、用户名/密码错误的情况(此处不测null)
注意测试的顺序
注意清空内容后才能再次输入用户名以及密码
4) 修改个人信息功能:ForumPersonal.py
创建驱动,并打开个人信息页面
测试页面是否正常打开
分功能进行细致测试:
① 修改个人简介:
个人信息页面较长,需最大化窗口
加入等待,等待页面滚动后检查个人简介输入框元素
点击修改简介按钮后回到页面顶部点击个人帖子页面进行检查简介是否符合输入预期
注意清空内容后才能再次输入个人简介
② 修改当前账户密码:
个人信息页面较长,需最大化窗口后滚动检查修改密码输入框元素
加入等待,等待页面滚动后检查修改密码输入框元素
测试异常修改:新旧密码不匹配、修改的密码与重复密码不一致的情况
点击修改后会自动跳转到登录页重新进行认证
注意测试顺序
注意清空内容后才能再次修改密码
4. 注意先进行简介测试后重新进入个人信息页面,进行修改密码操作后登录验证结果进行发帖功能测试
5)发帖功能:ForumPost.py
创建驱动,打开列表页面点发布帖子按钮进入发帖页面
测试页面是否正常打开
分功能进行细致测试:
① 发帖功能:
注意论坛使用codemirror插件,应使用JavaScript语句选择编辑区并输入内容
加入等待,等待页面滚动后选择发布按钮
测试异常发送:不输入标题和内容、只输入标题不输入内容、只输入内容不输入标题
②帖子互动功能:
注意加入等待页面相应完成
注意评论回复使用codemirror插件,应使用JavaScript语句选择评论区并输入内容
6)测试类:RunTest.py
通过调用不同的测试方法来实现测试类的运行,最后注意加入驱动结束语句
三、完整测试代码链接
四、代码测试
运行代码,运行成功(无报错)以及运行时包含测试方法和时间的截图:


五、论坛系统访问链接
http://127.0.0.1:58080/sign-in.html
六、性能测试
使用jmeter进行简单性能测试:针对注册、登录、编写并发布博客功能进行简单的性能测试。
- 注册、登录、发帖通过开发者工具查看请求发送的格式,以此来进行性能测试脚本的编写。发现:网页请求URL以及请求方法,用户名以及密码等值均使用form表单的形式来进行发送。


- 使用postman接口工具进行测试、提示登陆成功

3.使用jmeter性能测试工具发送测试
- 创建阶梯加压线程组Stepping Thread Group进行性能测试
- 设置梯度测试值:同线程组运行20线程,每三秒增加五个线程直到达到20线程数后持续运行30秒,运行结束后每秒释放五个线程。
- 添加注册、登录、发帖等http请求
- 添加请求默认值防止多次输入,添加http cookie管理器保存登录cookie方便进行发帖时的登录验证
- 添加活动线程数、每秒事务数(TPS)、响应时间(RT)、聚合报告等进行观察



(运行后的截图)
- 运行成功后生成性能测试报告(无图形化的生成日志文件到指定目录下)


- 访问生成的html文件查看性能报告

- 也可详细的查看具体数据
- 点击率

- 事务响应时间

- 每秒事务总数

-
性能测试时遇到的问题:
由于论坛用户名唯一,注册时应添加随机函数进行随机生成用户名
-

-
使用随机函数进行生成,用户名格式为user+运行测试时的时间戳+100~999的随机数,防止测试时运行过快出现不唯一用户名
注意:添加http cookie管理器进行登录时cookie管理,方便进行发帖测试
七、安全测试
注意事项及亮点:
1.注意事项
(1)确保截图路径按年-月-日格式自动创建文件夹层级
(2)截图命名需动态包含测试类名+时间戳
(3)关注各功能代码执行顺序,先进行异常测试后再进行正常测试,方便继续测试下一功能
(4)进行输入框的操作时(注册、登录、修改密码、发帖)应先清空输入框,防止残留数据影响测试结果
(5)需验证页面关键元素确保页面正常打开
(6)测试过程中可能会遇到网络问题、浏览器卡顿、页面滚动未完成等问题,应注意加入time.sleep()或显式等待
(7) 获取元素的时候建议获取固定的元素,如网站logo等
(8)测试功能全部完成后需要关闭驱动释放资源
2.项目亮点
(1) 公共方法封装于Utils.py,实现代码复用(驱动管理、截图功能)
(2) 测试用例按功能模块划分,符合高内聚低耦合原则
(3) 动态生成带类名和时间戳的文件名,便于问题追溯
(4) 自动按日期归档截图,避免文件混乱
(5)处理长页面滚动、动态加载元素(显式等待 + JS滚动操作)
(6)覆盖所有关键异常分支(如密码不一致、用户名重复等)
2086

被折叠的 条评论
为什么被折叠?



