测试环境
win10、Intellij IDEA Community Edition 2021.3.2、Google Chrome121.0.6167.185 、
注:因为一些不可控原因,该项目部署在本地,未部署至云端服务器
测试内容
功能测试
该部分针对项目对预期功能的完成情况进行测试
博客登录
再博客登陆界面输入用户名和密码后可正常登录。
博客注册
注册功能可用
个人文章管理页
以账号“测试人员01”为例:
在个人文章页面可对文章进行修改和删除操作。
文章的添加
点击“写博客”可添加新的文章
编辑博客功能可用
访问文章列表
点击“主页”按钮,跳转到文章列表
该功能可用
文章详情页
点击“查看全文”按钮跳转到文章详情页。
该功能可用
总结:
该项目的基本功能经测试后以达到预期效果
易用性测试
个人详情页跳转
个人详情页只能通过“登录”后自动跳转,无法直接访问到该页面。且离开个人详情页后只能通过回退页面或者重新登陆回到该页面
注册重复用户
如果注册时使用已有用户名仍可注册成功。
此时数据库中已经有用户名为“测试人员”的对象了。
然后我们再次以相同的用户名进行注册,发现仍能正常注册
但是会导致原账号与新账号都无法登录
删除重复用户后,恢复正常登录状态
大写提醒与密码可见
在输入密码时没有大写提醒和密码是否可见的选项框
头像自定义
头像在代码中被固定,无法满足用户自定义头像的需求
界面测试
页面大小变化对导航栏的影响
页面变化后导致导航栏文字排版变形
安全性测试
密码加密
密码经过加盐算法和MD5加密后,在数据库中也应该是加密状态
性能测试
假设有十个用户,每个用户访问博客主页100次。测试项目是否会崩溃
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static java.lang.Thread.sleep;
public class ThreadPoolExample {
/*测试10个人,每个人点击100次,项目是否崩溃*/
public static void main(String[] args) {
// 创建一个固定大小的线程池,池中有10个线程
ExecutorService executor = Executors.newFixedThreadPool(10);
// 在线程池中提交任务
for (int i = 0; i < 10; i++) {
Runnable worker = new WorkerThread("Task-" + i);
executor.execute(worker);
}
// 关闭线程池
executor.shutdown();
while (!executor.isTerminated()) {
// 等待所有任务完成
}
System.out.println("所有任务已完成");
}
static class WorkerThread implements Runnable {
private String taskName;
public WorkerThread(String taskName) {
this.taskName = taskName;
}
@Override
public void run() {
System.out.println("开始执行任务: " + taskName);
WebDriver webDriver = new ChromeDriver();
webDriver.get("http://127.0.0.1:8080/blog_list.html");
for (int i = 0; i < 100; i++) {
webDriver.findElement(By.cssSelector("a[href='blog_list.html']")).click();
}
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
webDriver.quit();
System.out.println("任务完成: " + taskName);
}
}
}