【项目】论坛系统测试

在这里插入图片描述

一、项目介绍

论坛系统是采用前后端分离的方式实现的,使用到的技术有:SpringBoot,SpringMVC,MyBatis,MySQL等,并将其部署到了云服务器上。系统旨在为用户提供一个基于 Web 的文章发布和讨论平台。用户可以进行注册登录、查看和修改个人信息,以及进行帖子的增删改查等基础操作。此外,系统还提供了评论、站内信等交流功能,用户可以对帖子进行点赞,并在帖子详情页上查看阅读量、点赞数、评论量等信息。

二、测试环境

  • 硬件: LAPTOP-C2IIA694 (i7 10710U/16GB/512GB/MX250)
  • 操作系统: Windows11(专业版)
  • 浏览器: 129.0.6668.100(正式版本) (64 位)
  • 测试工具: 自动化测试Selenium,性能测试Jmeter
  • 自动化脚本运行环境: IntelliJ IDEA Community Edition 2022.3.3

三、测试用例

3.1 论坛系统功能测试用例

在这里插入图片描述

3.2 论坛系统非功能测试用例

在这里插入图片描述

四、测试计划

1. 手工测试

注:手工测试仅执行部分测试用例

1.1 注册页面

测试用例一:
用户名,昵称,密码以及确认密码均为必填,未填写完整,点击注册按钮
预期结果:页面提示该信息不能为空
实际结果:页面给出相应提示与预期结果一致
在这里插入图片描述

测试用例二:
输入用户名在数据库中已存在,点击注册按钮
预期结果:页面给出相应提示该用户已存在
实际结果:页面给出相应提示与预期结果一致

在这里插入图片描述
测试用例三:
输入用户名在数据库中不存在,密码和确认密码不一致,点击注册按钮
预期结果:页面给出相应提示该请检查确认密码
实际结果:页面给出相应提示与预期结果一致
在这里插入图片描述

测试用例四:
输入用户名在数据库中不存在,密码和确认密码一致,未勾选同意使用条款和隐私政策,点击注册按钮
预期结果:页面给出相应提示勾选框和同意字体为红色
实际结果:页面给出相应提示与预期结果一致
在这里插入图片描述

测试用例五:
输入的用户名数据库中不存在,昵称不为空,密码与确认密码一致并且勾选同意使用条款和隐私政策,点击注册按钮
预期结果:页面显示注册成功,并跳转回登录界面。
实际结果:页面显示注册成功并跳转至登陆界面与预期结果一致
在这里插入图片描述
在这里插入图片描述

1.2 登陆页面

测试用例一:
输入已存在的用户名,并且密码正确
预期结果:登录成功并跳转至列表页
实际结果:登录成功并跳转至列表页与预期结果一致

在这里插入图片描述
在这里插入图片描述
测试用例二:
账号为空/密码为空
预期结果:页面给出相应提示用户名不能为空/密码不能为空
实际结果:页面给出相应提示与预期结果一致
在这里插入图片描述

在这里插入图片描述
测试用例三:
账号为空密码不为空但账号密码错误
预期结果:页面给出相应提示用户名或密码错误
实际结果:页面给出相应提示与预期结果一致

在这里插入图片描述

1.3 主页面(列表页)

首页

  • 测试用例一:
    未登录状态下,打开列表页
    预期结果:跳转回登录界面
    实际结果:跳转回登录界面,与预期结果一致

  • 测试用例二:
    登录状态下,打开列表页
    预期结果:第一行论坛名和论坛logo,同行有搜索框,昼夜调节,消息,用户头像,下一行是导航栏显示所有版块名,各个板块均可点击,接下来左边是首页二字,左边是发布帖子按钮,下面是当前论坛的所有帖子。
    实际结果:页面加载成功,与预期结果一致
    在这里插入图片描述

  • 测试用例三:
    登录状态下,在搜索框输入关键字“Java”搜索
    预期结果:下方显示帖子正文中所有存在“Java”这三个字的帖子;
    实际结果:刷新回到首页界面,与预期不符。不支持搜索功能

  • 测试用例四:
    登录状态下,点击页面小月亮图标
    预期结果:可以实现昼夜调节
    实际结果:页面与预期结果一致

  • 测试用例五:
    登录状态下,点击消息模块
    预期结果:导航栏点击小铃铛显示当前所有私信,未读用文字和红色小圆点标识,已读用文字和灰色小圆点表示,已回复用文字和绿色小圆点标识
    实际结果:页面与预期结果一致
    在这里插入图片描述

  • 测试用例六:
    登录状态下,点击发布帖子按钮并测试板块下拉框
    预期结果:板块名默认选择Java并且下拉框正常
    实际结果:页面与预期结果一致
    在这里插入图片描述

  • 测试用例七:
    登录状态下,点击用户
    预期结果:出现我的帖子,个人中心,退出等选项
    实际结果:页面加载与预期结果一致
    在这里插入图片描述

我的帖子

  • 测试用例一:
    登录状态下,点击用户->我的帖子
    预期结果:出现个人头像,昵称,发帖数,邮箱,简介以及个人帖子等信息
    实际结果:页面加载与预期结果一致
    在这里插入图片描述
  • 测试用例二:
    登录状态下,点击用户->我的帖子->点击第一篇帖子
    预期结果:会出现帖子标题,个人头像昵称,帖子内容,点赞编辑删除按钮及回复框
    实际结果:页面加载与预期结果一致
    在这里插入图片描述
  • 测试用例三:
    登录状态下,点赞
    预期结果:页面右下角出现提示点赞成功
    实际结果:页面与预期结果一致
    在这里插入图片描述
  • 测试用例四:
    登录状态下,点击编辑帖子,清空内容直接点提交
    预期结果:页面右下角出现提示请输入帖子内容
    实际结果:页面与预期结果一致
    在这里插入图片描述
    …(手工测试仅测试部分测试用例)

个人中心

  • 测试用例一:
    登录状态下,点击用户->个人中心
    预期结果:下方显示该登录用户的所有信息
    实际结果:页面与预期结果一致
    在这里插入图片描述
  • 测试用例二:
    登录状态下,修改头像
    预期结果:打开 电脑,上传本地图片并更新头像。
    实际结果:打开电脑,上传本地图片,但是没有反应。与预期不符(不支持修改头像)。
  • 测试用例三:
    登录状态下,修改昵称
    预期结果:修改成功,右下角出现提示操作成功
    实际结果:页面与预期结果一致在这里插入图片描述
  • 测试用例四:
    原密码正确,新密码和确认密码不一致,修改失败,给出错误提示
    预期结果:修改失败,页面右下角出现提示两次密码输入不相同
    实际结果:页面与预期结果一致
    在这里插入图片描述
    …(手工测试仅测试部分测试用例)

2. 自动化测试

自动化测试码云链接:FourmAutoTest

2.1 添加对应的依赖

  1. 先添加对应的依赖
   <dependencies>
       <dependency>
           <groupId>io.github.bonigarcia</groupId>
           <artifactId>webdrivermanager</artifactId>
           <version>5.8.0</version>
       </dependency>
       <dependency>
           <groupId>org.seleniumhq.selenium</groupId>
           <artifactId>selenium-java</artifactId>
           <version>4.0.0</version>
       </dependency>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>

在这里插入图片描述
2. 定义两个包common里放公共方法类,tests包里放各个页面的测试,运行类RunTest放在两个包外
在这里插入图片描述

2.2 Utils类(公有类)

公有类:创建driver对象,测试过程中屏幕截图的通用工具类

package common;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;

/**
 * Created with IntelliJ IDEA.
 * Description:自动化测试论坛系统公共方法
 */
 
public class Utils {
   
    public static WebDriver driver;
    public static WebDriver createDriver(){
   
        if(driver == null){
   
            WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            //允许访问所有链接
            options.addArguments("--remote-allow-origins=*");
            driver = new ChromeDriver(options);
            //等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        }
        return driver;
    }
    public Utils(String url) {
   
        //调用driver对象
        driver = createDriver();
        //访问url
        driver.get(url);
        //窗口最大化
        driver.manage().window().maximize();
    }

    //屏幕截图
    public void getScreenShot(String str) throws IOException, IOException {
   

        //     ./src/test/image/
        //                     /2024-07-17/
        //                                /test01-17453010.png
        //                                /test02-17453020.png
        //                     /2024-07-18/
        //                                /test01-17453030.png
        //                                /test02-17453034.png
        //屏幕截图
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");

        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim2.format(System.currentTimeMillis());

        //./src/test/image/2024-07-17/test01-17453020.png
        String filename ="./src/test/image/"+ dirTime +"/" + str + "-" + fileTime+".png";
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(filename));
    }

}

2.3 RegisterPage类 (注册页面)

测试注册页面的加载,注册成功和注册成功

package tests;

import common.Utils;
import org.openqa.selenium.By;

import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * Description:自动化测试论坛系统注册页面
 * Author: WJW
 */
public class RegisterPage extends Utils {
   
    public static String url = "http://127.0.0.1:9580/sign-up.html";

    public RegisterPage() {
   
        super(url);
    }

    public void RegisterPageRight() {
   
        //论坛logo图标
        driver.findElement(By.cssSelector("body > div > div > div.text-center.mb-4 > img"));
        //用户注册
        driver.findElement(By.cssSelector("#signUpForm > div > h2"));
    }

    //注册成功
    public void RegisterSuc() throws InterruptedException {
   
        //输入用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("橘子004");
       //输入昵称
        driver.findElement(By.cssSelector("#nickname")).sendKeys("橘子树0");
        //输入密码
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        //输入确认密码
        driver.findElement(By.cssSelector("#passwordRepeat")).sendKeys("123");
        //点击同意使用条款和隐私服务
        driver.findElement(By.cssSelector("#policy")).click();
        //点击注册
        driver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(1000);
        //校验注册是否成功并返回登录页面
        String title = driver.getTitle();
        assert title.equals("比特论坛 - 用户登录");

    }

    //注册失败01--该用户已存在
    public void RegisterFai01() throws IOException {
   
        //在登录页面点击注册按钮
       // driver.findElement(By.cssSelector("body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a")).click();
        //输入用户名
        driver.findElement(By.cssSelector("#username")).sendKeys("1");
        //输入昵称
        driver.findElement(By.cssSelector("#nickname")).sendKeys("1");
        //输入密码
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        //输入确认密码
        driver.findElement(By.cssSelector("#passwordRepeat")).sendKeys("123");
        //点击同意使用条款和隐私服务
        driver.findElement(By.cssSelector("#policy")).click();
        //点击注册
        driver.findElement(By.cssSelector("#submit")).click();

        //获取当前异常文本
        String fail01 = driver.findElement(By.cssSelector("body > div.jq-toast-wrap.bottom-right > div > h2")).getText();
        //对当前异常进行截图
        getScreenShot(getClass().getName());
        //断言
        assert fail01.equals("警告");

    }

    //注册失败02--用户名为空
    public void RegisterFai02() throws IOException {
   
        //刷新当前注册页面
        driver.navigate().refresh();
        //输入用户名 当前用户名为空
        driver.findElement(By.cssSelector("#username"));
        //输入昵称
        driver.findElement(By.cssSelector("#nickname")).sendKeys("1")
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值