论坛系统的测试

项目背景

论坛系统采用前后端分离的方式来实现,同时使用数据库 来处理相关的数据,同时将其部署到服务器上。前端主要有7个页面组成:登录页,列表页,论坛详情页,编辑页,个人信息页,我的帖子页,站内信页,使用以上页面实现了一个简单的论坛系统。其结合后端实现了以下的主要功能:登录,编辑帖子,退出登录,删除帖子,发送信息,修改头像,个人信息等功能。

项目功能

该论坛系统主要实现了以下几个功能:登录,注销,发布帖子,删除帖子,发送站内信等功能。

  1. 登录功能:如果没有账号密码,先进行注册,填写用户名,昵称,密码以及确认密码,点击注册之后,后端会先对密码进行加密,然后将数据写入到数据库中,注册成功之后跳转到登陆页面进行登录。登录会填写账号密码,点击登录对密码进行加密,然后与数据库中存的密码进行对比,若相同则登录成功,反之登录失败。
  2. 主页页面:主页有导航栏,导航栏代表不同的帖子类型,可以在主页的首页查看所有的帖子,点击帖子类型,可以只展示该类型的帖子。点击帖子也可以查看帖子的详细信息。在主页右上角可以通过关键字来查询对应的帖子,也可以访问'个人中心'和'我的帖子'以及退出登录。
  3. 详情页面:这个页面中会显示出来帖子的标题,发布时间,浏览帖子总数,点赞数,以及留言数,并且你也可以对这篇帖子进行点赞和留言。如果访问的帖子是自己发布的帖子,还会有编辑和删除两个按钮。也可以点击其他用户的名字,可以访问其他用户的空间。
  4. 用户全部帖子页面:点击'我的帖子',会把当前用户所发布的帖子全部展示出来,右侧有个人介绍,类似于QQ空间,点击其他用户,可以访问其他用户的空间,也可以给其他用户留言。
  5. 站内信页面:点击发送信息之类的按钮,会弹出来一个模态框,输入文字之后可以将信息发送给其他用户。

测试计划

功能测试

测试用例

实际执行测试的部分操作步骤/截图

注册

登录

发布帖子在主页中查看

用户详情

发送私信

接收私信

自动化测试

注册

复制代码
package com.haifan.forum.test;

import com.haifan.forum.utils.AutoTestUtils;
import org.openqa.selenium.By;

public class ForumRegisterTest extends AutoTestUtils{
    public ForumRegisterTest(String url) {
        super(url);
    }

    // 正常注册
    public void registerSuccess() {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"nickname\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"passwordRepeat\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"policy\"]")).click();
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
        driver.quit();
    }


    public void registerUsernameNull() {
        driver.findElement(By.xpath("//*[@id=\"nickname\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"passwordRepeat\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"policy\"]")).click();
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
        driver.quit();
    }

    public void registerPasswordNull() {
        driver.findElement(By.xpath("//*[@id=\"nickname\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"policy\"]")).click();
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
        driver.quit();
    }

    public void registerAllNull() {
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
        driver.quit();
    }
}

登录

复制代码
package com.haifan.forum.test;

import com.haifan.forum.utils.AutoTestUtils;
import org.checkerframework.checker.units.qual.A;
import org.openqa.selenium.By;

public class ForumLoginTest extends AutoTestUtils {

    public ForumLoginTest(String url) {
        super(url);
    }

    public void loginSuccess() {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
    }

    public void loginUsernameNull() {
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
    }

    public void loginPasswordNull() {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        getScreenShot(getClass().getName());
    }
}

编辑帖子

复制代码
package com.haifan.forum.test;

import com.haifan.forum.utils.AutoTestUtils;
import org.apache.commons.codec.digest.DigestUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import java.awt.desktop.QuitEvent;

public class ForumEditTest extends AutoTestUtils {


    public ForumEditTest(String url) {
        super(url);
    }
    public ForumEditTest() {

    }
    public void login() {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
    }

    public WebElement setByXpath(String xpath) {
        WebElement element = driver.findElement(By.xpath(xpath));
        return element;
    }

    public void deleteForumSuccess() {
        login();
        setByXpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a/strong").click();
        setByXpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div[1]/div[2]/div[2]/div/div[3]/div/a/span").click();
        driver.quit();
    }

    public void postForumSuccess() {
        login();
        setByXpath("//*[@id=\"bit-forum-content\"]/div[1]/div/div/div[2]/div/a[1]").click();
        WebElement board = setByXpath("//*[@id=\"article_post_borad\"]/option[6]");
        WebElement title = setByXpath("//*[@id=\"article_post_title\"]");
        title.sendKeys("wozaiceshi");
        WebElement content = setByXpath("//div[@id=\"bit-forum-content\"]//div[contains(@class, \"editormd\")]//textarea");
        content.sendKeys("wozaiceshi");
        WebElement publish = setByXpath("//*[@id=\"article_post_submit\"]");
        publish.click();
        getScreenShot(getClass().getName());
        driver.quit();
    }

    public void postForumTitleNull() {
        WebElement board = setByXpath("//*[@id=\"article_post_borad\"]/option[6]");
        WebElement content = setByXpath("//*[@id=\"edit-article\"]/div[1]/div[6]/div[1]/div/div");
        content.sendKeys("wozaiceshi");
        WebElement publish = setByXpath("//*[@id=\"article_post_submit\"]");
        publish.click();
        getScreenShot(getClass().getName());

        driver.quit();
    }

    public void postForumContentNull() {
        WebElement board = setByXpath("//*[@id=\"article_post_borad\"]/option[6]");
        WebElement title = setByXpath("//*[@id=\"article_post_title\"]");
        title.sendKeys("wozaiceshi");
        WebElement publish = setByXpath("//*[@id=\"article_post_submit\"]");
        publish.click();
        getScreenShot(getClass().getName());

        driver.quit();
    }
}

用户详情

复制代码
package com.haifan.forum.test;
import com.haifan.forum.utils.AutoTestUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
public class ForumDetailTest extends AutoTestUtils {
    public ForumDetailTest(String url) {
        super(url);
    }
    public WebElement setByXpath(String xpath) {
        WebElement element = driver.findElement(By.xpath(xpath));
        return element;
    }
    public void login() {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("delaiwen");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("123456");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
    }
    public void detail() {
        login();
        setByXpath("/html/body/div[1]/header[1]/div/div/div[3]/a").click();
        setByXpath("//*[@id=\"index_user_profile\"]").click();
        getScreenShot(getClass().getName());
    }
}
相关推荐
niuniu_6661 天前
appium应用测试场景
功能测试·selenium·测试工具·appium·测试
小小的测试一下2 天前
业务流程先导及流程图回顾
功能测试·软件工程
suimeng63 天前
黑盒测试的等价类划分法(输入数据划分为有效的等价类和无效的等价类)
功能测试
熙客3 天前
Jmeter-功能测试
功能测试·jmeter
程序员杰哥4 天前
软件测试常用设计模式
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
互联网杂货铺4 天前
功能测试、性能测试、安全性测试详解
自动化测试·软件测试·功能测试·测试工具·职场和发展·性能测试·安全性测试
川石课堂软件测试5 天前
涨薪技术|Docker容器数据管理
运维·功能测试·docker·容器·单元测试
niuniu_6665 天前
Selenium 简单入门操作示例
功能测试·selenium·测试工具·单元测试·dubbo·测试