项目背景
论坛系统采用前后端分离的方式来实现,同时使用数据库 来处理相关的数据,同时将其部署到服务器上。前端主要有7个页面组成:登录页,列表页,论坛详情页,编辑页,个人信息页,我的帖子页,站内信页,使用以上页面实现了一个简单的论坛系统。其结合后端实现了以下的主要功能:登录,编辑帖子,退出登录,删除帖子,发送信息,修改头像,个人信息等功能。
项目功能
该论坛系统主要实现了以下几个功能:登录,注销,发布帖子,删除帖子,发送站内信等功能。
- 登录功能:如果没有账号密码,先进行注册,填写用户名,昵称,密码以及确认密码,点击注册之后,后端会先对密码进行加密,然后将数据写入到数据库中,注册成功之后跳转到登陆页面进行登录。登录会填写账号密码,点击登录对密码进行加密,然后与数据库中存的密码进行对比,若相同则登录成功,反之登录失败。
- 主页页面:主页有导航栏,导航栏代表不同的帖子类型,可以在主页的首页查看所有的帖子,点击帖子类型,可以只展示该类型的帖子。点击帖子也可以查看帖子的详细信息。在主页右上角可以通过关键字来查询对应的帖子,也可以访问'个人中心'和'我的帖子'以及退出登录。
- 详情页面:这个页面中会显示出来帖子的标题,发布时间,浏览帖子总数,点赞数,以及留言数,并且你也可以对这篇帖子进行点赞和留言。如果访问的帖子是自己发布的帖子,还会有编辑和删除两个按钮。也可以点击其他用户的名字,可以访问其他用户的空间。
- 用户全部帖子页面:点击'我的帖子',会把当前用户所发布的帖子全部展示出来,右侧有个人介绍,类似于QQ空间,点击其他用户,可以访问其他用户的空间,也可以给其他用户留言。
- 站内信页面:点击发送信息之类的按钮,会弹出来一个模态框,输入文字之后可以将信息发送给其他用户。
测试计划
功能测试
测试用例

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

登录

发布帖子在主页中查看

用户详情

发送私信

接收私信

自动化测试
注册
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());
}
}
