校园IT交流论坛-软件测试报告(功能/接口/自动化)

1. 项目简介(前后端分离)

本项目为校园IT交流论坛,采用前后端分离架构开发。系统主要面向校园IT用户,提供用户注册登录、发帖、回帖、评论、点赞、个人中心、消息通知等功能。本次测试针对校园IT交流论坛的完整业务流程进行了功能测试、接口测试和自动化测试,确保系统满足正常使用需求。

2. 测试环境与工具

2.1 硬件环境

  • PC:Windows 11笔记本

2.2 软件环境

  • 浏览器:Edge

2.3 测试工具

  • 功能测试:手工点击验证

  • 自动化测试:Java、Selenium、EdgeDriver

  • 接口测试:Postman、Python + pytest

3. 功能测试

3.1 用户注册与登录

3.1.1 登录页面功能

测试点1:输入正确的用户名和密码,点击登录

预期结果:登录成功,跳转到论坛首页

实际结果:登录成功,跳转到论坛首页

测试点2:输入错误的用户名和密码,点击登录

预期结果:登录失败,出现警告

实际结果:登录失败,出现警告

测试点3:输入正确的用户名和错误的密码

预期结果:登录失败,出现警告

实际结果:登录失败,出现警告

测试点4:输入错误的用户名和正确的密码

预期结果:登录失败,出现警告

实际结果:登录失败,出现警告

测试点5:不输入用户名和密码

预期结果:登录失败,提示用户名和密码不能为空

实际结果:登录失败,提示用户名和密码不能为空

测试点6:不输入用户名,输入密码

预期结果:登录失败,提示用户名不能为空

实际结果:登录失败,提示用户名不能为空

测试点7:输入用户名,不输入密码

预期结果:登录失败,提示密码不能为空

实际结果:登录失败,提示密码不能为空

3.1.2 注册页面功能

测试点1:正确输入用户名、昵称、密码、确认密码、勾选同意服务条例框和点击注册按钮

预期结果:注册成功,跳转到登录页面

实际结果:注册成功,跳转到登录页面

测试点2:不输入用户名、昵称、密码、确认密码,不勾选同意服务条例框,点击注册按钮

预期结果:注册失败,提示用户名、昵称、密码、确认密码不能为空,需要勾选同意服务条例框

实际结果:注册失败,提示用户名、昵称、密码、确认密码不能为空,需要勾选同意服务条例框

测试点3:不输入用户名、昵称、密码、确认密码,勾选同意服务条例框,点击注册按钮

预期结果:注册失败,提示用户名、昵称、密码、确认密码不能为空

实际结果:注册失败,提示用户名、昵称、密码、确认密码不能为空

测试点4:不输入用户名、昵称,输入密码、确认密码,勾选同意服务条例框,点击注册按钮

预期结果:注册失败,提示用户名、昵称不能为空

实际结果:注册失败,提示用户名、昵称不能为空

测试点5:输入用户名、昵称,不输入密码、确认密码,勾选同意服务条例框,点击注册按钮

预期结果:注册失败,提示密码、确认密码不能为空

实际结果:注册失败,提示密码、确认密码不能为空

测试点6:输入正确的用户名、昵称、错误的密码、确认密码,勾选同意服务条例框,点击注册按钮

预期结果:注册失败,提示检查确认密码

实际结果:注册失败,提示检查确认密码

3.2 论坛首页

测试点1:页面元素的检查

预期结果:用户个人信息存在,菜单栏存在,帖子分类模块存在,帖子列表页存在,发布帖子按钮、搜索框、浏览数、点赞数、评论数显示

实际结果:预期结果正确

测试点2:点击帖子的分类模块

预期结果:正常跳转到对应的帖子模块

实际结果:预期结果正确

测试点3:点击发布帖子按钮

预期结果:正常跳转到发布帖子页面

实际结果:预期结果正确

测试点4:在搜索框输入搜索内容并进行搜索

预期结果:页面出现与搜索内容相关的帖子

实际结果:页面并没有出现与搜索内容相关的帖子(Bug)

测试点5:点击主题切换按钮

预期结果:页面的主题得到切换

实际结果:预期结果正确

测试点6:别人给自己账号发消息时小铃铛是否有红点提示

预期结果:小铃铛有红点提示

实际结果:预期结果正确

3.3 帖子详情页

测试点1:页面元素检查

预期结果:发帖人昵称、发帖人头像、发帖时间、发帖内容、帖子的浏览数、点赞数、评论数存在,发送私信按钮、点赞按钮存在且能正常使用

实际结果:发帖时间存在错误,可以一直点赞,其余正常(Bug)

3.4 回复信息页面

测试点1:页面元素检查

预期结果:回复的输入框、回复的菜单栏、回复按钮、回复列表显示且能正常使用

实际结果:预期结果正确

3.5 发送私信页面

测试点1:页面元素检查

预期结果:发送私信的对象名能够显示且正确,输入框能够输入内容,取消和发送按钮显示且能正常使用

实际结果:预期结果正确

3.6 我的帖子页面

测试点1:用户基本信息显示检查

预期结果:用户头像、用户昵称、发帖数量、邮箱号、注册日期、邮箱号、个人介绍显示且正确

实际结果:预期结果正确

测试点2:发布的帖子列表检查

预期结果:发布的帖子数量及内容正确,将鼠标移至帖子名称,点击会跳转到相应帖子界面

实际结果:预期结果正确

3.7 个人中心页面

测试点1:页面元素检查

预期结果:用户昵称、用户头像显示,修改头像按钮、昵称及修改按钮、邮箱地址及修改按钮、电话号码及修改按钮、个人简介及修改按钮、原密码输入框、新原密码输入框、确认密码输入框、提交修改按钮显示且能正常使用

实际结果:点击修改头像按钮,无法修改头像(Bug),其余正常

测试点2:输入正确的原密码、新原密码、确认密码,点击提交修改按钮

预期结果:修改密码成功

实际结果:修改密码成功

测试点3:输入正确的原密码,不输入新原密码和确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点4:输入正确的原密码、新原密码,不输入确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点5:输入错误的原密码,输入新原密码和确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点6:输入正确的原密码,不输入新原密码,输入确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点7:不输入原密码,输入新原密码和确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点8:不输入原密码、新原密码和确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点9:不输入原密码,输入新原密码,不输入确认密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

测试点10:不输入原密码,输入确认密码,不输入新原密码

预期结果:修改密码失败,出现警告

实际结果:修改密码失败,出现警告

3.8 帖子发布页面

测试点1:点击发布帖子按钮,检查页面元素

预期结果:版块框显示且可选版块,标题输入框显示且能输入,内容输入框显示且能输入,内容输入框菜单栏显示且能正常使用,发布文章按钮存在且能正常使用

实际结果:预期结果正确

4. 自动化测试(Selenium)

4.1 自动化目的

对高频核心流程进行自动化用例编写,减少重复回归工作量。

4.2 自动化测试模块

登录、注册、论坛首页、帖子详情页、回复信息页、发送私信页、我的帖子页、个人中心页、帖子发布页

4.3 核心脚本片段

java 复制代码
import common.Utils;
import org.openqa.selenium.By;

import java.io.IOException;

public class LoginTest extends Utils {
    public static String url = "http://114.132.42.83:58080/sign-in.html";

    public LoginTest() {
        super(url);
    }

    /**
     * 测试登录页面能否正常打开
     */
    public void checkLoginRight() throws IOException {
        //检查用户名框
        driver.findElement(By.cssSelector("#username"));
        //检查密码框
        driver.findElement(By.cssSelector("#password"));
        //检查登录按钮
        driver.findElement(By.cssSelector("#submit"));
        //检查"点击注册"
        driver.findElement(By.cssSelector("body > div.page.page-center > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a"));
        //屏幕截图
        getScreenshot(Thread.currentThread().getStackTrace()[1].getMethodName());
    }

    /**
     * 登录成功
     */
    public void loginSuccess() throws IOException, InterruptedException {
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        //用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("绿叶");
        //密码
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        //登录按钮
        driver.findElement(By.cssSelector("#submit")).click();
        //登录成功会出现个人信息框
        driver.findElement(By.cssSelector("#index_nav_avatar"));
        //屏幕截图
        getScreenshot(Thread.currentThread().getStackTrace()[1].getMethodName());
    }
}

4.4 自动化结果

  • 总用例:30 条
  • 通过:30 条
  • 失败:0 条
  • 结论:核心页面流程正常,脚本可用于回归

5. 接口自动化测试

5.1 测试模块

  • 用户模块:注册、登录、退出登录、修改用户信息、修改用户密码、查询用户信息
  • 版块模块:获取首页版块列表、获取版块信息
  • 文章模块:发布帖子、获取帖子列表、点击帖子获取详情、修改帖子、点赞帖子、删除帖子、获取用户帖子列表
  • 回复模块:回复帖子、获取回复列表
  • 站内信模块:发送站内信、查询用户所有站内信、获取未读数、标记已读、回复站内信

5.2 核心代码

python 复制代码
import pytest
import requests
from jsonschema import validate

from utils.request_util import host, Request
from utils.yaml_util import write_yaml

//登录
@pytest.mark.order(2)
class TestUserLogin:
    request = Request(True)
    url = host + "user/login"
    schema = {
        "type": "object",
        "required": ["code", "message", "data"],
        "additionalProperties": False,
        "properties": {
            "code": {
                "type": "number"
            },
            "message": {
                "type": "string"
            },
            "data": {
                "type": "null"
            }
        }
    }
    @pytest.mark.parametrize("login", [
        {
            "username": "绿叶",
            "password": "123",
            "message": "操作成功"
        }
    ])
    def test_login_success(self, login):
        request_client = Request(use_session=True)
        data = {
            "username": login["username"],
            "password": login["password"]
        }
        r = request_client.post(url=self.url, data=data)
        validate(instance=r.json(), schema=self.schema)
        assert r.status_code == 200
        assert r.json()["code"] == 0
        assert r.json()["message"] == login["message"]

        cookie = request_client.get_cookies()
        write_yaml("cookies.yml", cookie)
    
//获取首页版块列表
class TestBoardGetById:
    url = host + "board/getById"
    schema = {
        "type": "object",
        "properties": {
            "code": {
                "type": "integer"
            },
            "message": {
                "type": "string"
            },
            "data": {
                "type": ["object", "null"],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "articleCount": {
                        "type": "integer"
                    },
                    "sort": {
                        "type": "integer"
                    },
                    "state": {
                        "type": "integer"
                    },
                    "deleteState": {
                        "type": "integer"
                    },
                    "createTime": {
                        "type": "string"
                    },
                    "updateTime": {
                        "type": "string"
                    }
                },
                "additionalProperties": False,
                "required": []
            }
        },
        "additionalProperties": False,
        "required": [
            "code",
            "message",
            "data"
        ]
    }
    # 已登录(参数正确)
    def test_board_getById_login_success(self):
        cookie_dict_pre = read_yaml("cookies.yml", "JSESSIONID")
        cookie_dict = {"JSESSIONID": cookie_dict_pre}
        url = self.url + "?id=" + str(read_yaml("cookies.yml", "boardId"))
        r = Request().get(url, cookies=cookie_dict)
        validate(r.json(), schema=self.schema)
        assert r.json()["code"] == 0
        assert r.json()["message"] == "操作成功"

5.3 接口测试结果

  • 总用例:124 条
  • 通过:124 条
  • 失败:0 条
  • 结论:核心接口返回正常,业务逻辑稳定

6. 测试结论

本次对校园IT交流论坛完成了功能测试、自动化测试、接口自动化测试。需要完善搜索功能,点赞功能和头像修改功能,以提高用户的使用体验。

相关推荐
工业机器人销售服务1 天前
伯朗特颗粒原料自动上料转运,无尘输送,杜绝原料粉尘污染颗粒原料产线的粉尘问题,源头不在“输送”而在“接口
机器人·自动化
熊猫钓鱼>_>1 天前
腾讯云 COS × WorkBuddy X skill:实现我的游戏项目资源管理自动化“龙虾”
游戏·自动化·腾讯云·agent·cos·skill·workbuddy
左心房的默白,,,1 天前
33:HSMS over TCP/IP 通信原理与配置
运维·自动化
北京耐用通信1 天前
耐达讯自动化 Modbus RTU转Profibus 网关产品技术说明书
人工智能·物联网·网络协议·自动化·信息与通信
志栋智能1 天前
超自动化巡检:在混合云时代更显其必要性
大数据·运维·网络·人工智能·自动化
企服AI产品测评局1 天前
2026年Agent元年!深度解析实在Agent未来路线图:从自动化工具到全能数字员工的跃迁
运维·人工智能·ai·chatgpt·自动化
tang&1 天前
【测试】Web页面UI自动化测试完全指南:8步通用测试框架
ui·测试
搞科研的小刘选手1 天前
【西安交通大学主办】第六届人工智能、自动化与高性能计算国际会议 (AIAHPC 2026)
网络·人工智能·机器学习·数据挖掘·自动化·云计算·并行式
Super Scraper1 天前
如何使用 cURL 发送 JSON:-d、--json 及常见错误的完整指南
人工智能·爬虫·python·自动化·json·mcp
会Tk矩阵群控的小木1 天前
小红书矩阵系统2026最新技术架构与多账号自动化运营实战
运维·矩阵·架构·自动化·个人开发