校园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 天前
Python基础-列表元组集合字典
测试
互联网科技看点1 天前
深度解码狼人杀:2026年逻辑大师为何集体经典版?
自动化
程序猿阿伟1 天前
《QClaw隐藏的GitHub自动化神级用法》
运维·自动化·github
key_3_feng1 天前
基于OpenClaw的Alibaba Cloud Linux 3自动化部署YashanDB深度方案
linux·运维·自动化·yashandb
GISer_Jing1 天前
AI Agent Skills 发现指南:前端工程化与自动化全景
前端·人工智能·自动化
薛定猫AI1 天前
【深度解析】零代码到 CLI 双路径构建 AI Agent:RAG、工具调用与自动化工作流实战
大数据·人工智能·自动化
workflower2 天前
人机交互部分OOD
运维·人工智能·自动化·集成测试·人机交互·软件需求
电化学仪器白超2 天前
小乌龟Git全程图形化操作指南:嵌入式本地版本管理与Gitee私有云备份实战
git·python·单片机·嵌入式硬件·物联网·gitee·自动化
没有口袋啦2 天前
《基于 GitOps 理念的企业级自动化 CI/CD 流水线》
阿里云·ci/cd·云原生·自动化·k8s
liulilittle2 天前
Prompt for OpenCode + CodeX-5.3:多个重型任务交付给AI自动化完成
运维·自动化·prompt