【项目】文心博客坊系统测试报告

一.项目背景

本系统基于SSM框架实现。它为用户提供了一个便捷的内容创作与分享平台。用户可以轻松注册登录,发表博客文章,涵盖文字、图片等多种形式。系统具备简洁美观的界面设计,方便用户浏览与搜索感兴趣的内容。通过SSM框架的整合,系统具有良好的稳定性、可扩展性和性能表现,为用户打造了一个优质的博客交流空间。

二.项目功能

该应用主要实现了以下几个功能:登录、注册、编写博客、上传个人信息。

登录功能:账号以及密码已经在注册时写入了数据库,即:用户名以及密码是已经存在的,登录成功后就会跳转到对应的身份的列表页面。用户登录成功后,会出现用户资料卡以及发布的博客列表。

注册功能:输入用户名和密码即可注册成功,如果用户名已注册则会跳转到异常页面并显示:当前用户名已经被使用,请更换用户名后再来尝试注册。

编写博客功能:登录后即可在导航栏点击“写博客”按钮,即可开始编写博客。

上传个人信息:登录后,点击资料卡中的“修改个人信息”按钮,即可开始修改个人信息,可修改的信息有:用户名、登录密码、github地址、头像。

三.功能测试 

1)测试用例 

功能测试结果:测试用例100%通过

2)自动化测试

自动化测试覆盖模块:登录页面、注册页面、博客列表页面、编辑列表页面、博客详情页面、修改资料页面。

自动化代码示例: 

1.common包 

package commen;

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.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;

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

public class Utils {
    public static WebDriver driver;

    public static WebDriver createDriver(){
        if(driver==null){
            //驱动程序管理的⾃动化
            WebDriverManager.edgedriver().setup();
            EdgeOptions options=new EdgeOptions();

            //允许访问所有连接
            options.addArguments("--remote-allow-origins=*");

            driver=new EdgeDriver(options);
            //等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
        }
        return driver;
    }

    public Utils(String url){
        driver=createDriver();
        driver.get(url);
    }

    public void getScreenShot(String str) throws IOException {
        SimpleDateFormat sim1=new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2=new SimpleDateFormat("HHmmSS");

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

        String filename="./src/test/image/"+dirTime+"/"+str+"-"+fileTime+".png";

        File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(filename));

    }
}

 

2.tests包

(1)LoginPage

package tests;

import commen.Utils;
import org.openqa.selenium.By;
import org.openqa.selenium.TakesScreenshot;

import java.io.IOException;

//http://127.0.0.1:8080/login.html
public class LoginPage extends Utils {
    public static String url="http://127.0.0.1:8080/login.html";
    public LoginPage(){
        super(url);
    }

    /*
    检查页面加载是否成功
     */
    public void LoginPageRight() throws InterruptedException {

        //通过查看页面元素来检查页面加载成功与否
        driver.findElement(By.cssSelector("#submit"));

        //登录输入框
        driver.findElement(By.cssSelector("body > div.login-container"));


    }

    //检查登录功能
    public void LoginSuccess() throws InterruptedException, IOException {
        //保证输入时没有文本
        //方法一:
//        driver.findElement(By.cssSelector("#username")).clear();
//        driver.findElement(By.cssSelector("#password")).clear();
        //方法二:
        //driver.navigate().refresh();

        //输入正确的账号密码
        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();

        //检查点击登录后是否登陆成功(两个页面中的不同点都可以作为检查登录是否成功的标志)
        //登录页面和登陆成功页面 的 标题不一样
        String expect=driver.getTitle();
        assert expect.equals("博客列表");


    }

    public void LoginFail() throws InterruptedException, IOException {

        //1.错误的用户名和错误的密码
        driver.findElement(By.cssSelector("#username")).sendKeys("abcdrfg");
        driver.findElement(By.cssSelector("#password")).sendKeys("123");
        driver.findElement(By.cssSelector("#submit")).click();
        //
        String text=driver.findElement(By.cssSelector("body")).getText();
        assert text.equals("登陆失败,用户名或密码错误,请重新登录~");

        getScreenShot(getClass().getName());

        //登陆失败之后返回登录页,方便继续测试登录成功用例
        driver.navigate().back();
    }

}

 

(2)ListPage

package tests;

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

public class ListPage extends Utils {
    public static String url="http://127.0.0.1:8080/blog_list.html";
    public ListPage(){
        super(url);
    }

    public void ListByLogin() throws InterruptedException {

        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();


        //能找到菜单
        driver.findElement(By.cssSelector("body > div.nav"));
        //能找到个人信息
        driver.findElement(By.cssSelector("body > div.container > div.left > div"));
        //能找到博客列表模块
        driver.findElement(By.cssSelector("body > div.container > div.right"));

        Thread.sleep(2000);
        driver.quit();
    }
}

 

(3) RegisterPage

package tests;

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

public class RegisterPage extends Utils {
    public static String loginurl="http://127.0.0.1:8080/login.html";
    public static String registerurl="http://127.0.0.1:8080/login.html";
    public RegisterPage(){
        super(registerurl);
    }

    public void RegisterPageRight(){
        //登录页面点击注册
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).click();
        String text=driver.getTitle();
        assert text.equals("注册用户");

        //直接打开注册页面
//        String text2=driver.getTitle();
//        assert text2.equals("注册用户");
    }

    public void RegisterSuccess(){
        driver.findElement(By.cssSelector("#username")).sendKeys("wangwu");
        driver.findElement(By.cssSelector("#password")).sendKeys("123459");
        driver.findElement(By.cssSelector("#submit")).click();

        String text=driver.getTitle();
        assert text.equals("登录页面");


    }

    public void RegisteFail(){
        driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();
        //

        String text=driver.findElement(By.cssSelector("body > h2")).getText();
        assert text.equals("当前用户名已经被使用,请更换用户名后再来尝试注册");

        driver.quit();

    }
}

(4) EditPage

package tests;

import commen.Utils;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class EditPage extends Utils {
    public static String editurl="http://127.0.0.1:8080/blog_edit.html";
    public static String listurl = "http://127.0.0.1:8080/blog_list.html";
    public static String loginurl = "http://127.0.0.1:8080/login.html";
    public static String detailurl = "http://127.0.0.1:8080/blog_detail.html";

    public EditPage(){
        super(listurl);
    }

    public void EditSuccess() throws InterruptedException {

        //1.编辑博客页面可以正常打开
        //1)输入连接打开
//        driver.get(editurl);
        //2)从列表页面打开
//        driver.get(listurl);
        //3)从登录页面打开
//        driver.get(loginurl);
        //4)从博客详情页打开
//        driver.get(detailurl);

       driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();

        //2.正常填写博客能提交成功(只写标题不填内容(本来就有内容))
//        driver.findElement(By.cssSelector("#title")).sendKeys("我的博客888");
//        driver.findElement(By.cssSelector("#submit")).click();
//        //检查一下博客发布之后是否成功
//        String title = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
//        assert title.equals("我的博客888");

//        driver.quit();
    }

    public void EiditFail(){
        //不写标题
        driver.findElement(By.cssSelector("#submit")).click();
        String text=driver.findElement(By.cssSelector("body")).getText();
        assert text.equals("当前提交的博客标题或者正文缺失");
        driver.navigate().back();

        //不写内容
        driver.findElement(By.cssSelector("#title")).sendKeys("我的博客666");
        driver.findElement(By.cssSelector("#submit")).click();
        String text2=driver.findElement(By.cssSelector("body")).getText();
        assert text2.equals("当前提交的博客标题或者正文缺失");
        driver.navigate().back();

        //都不写
        driver.findElement(By.cssSelector("#submit")).click();
        String text3=driver.findElement(By.cssSelector("body")).getText();
        assert text2.equals("当前提交的博客标题或者正文缺失");

    }

}

(5)DetailPage 

package tests;

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

import java.io.IOException;

public class DetailPage extends Utils {
    public static String url="http://127.0.0.1:8080/blog_detail.html";
    public DetailPage(){
        super(url);
    }

    public void DetailSuccess() throws IOException, InterruptedException {
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();

        driver.quit();
    }
}

 (6)PageByNoLogin

package tests;

import commen.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;

import java.io.IOException;

import static commen.Utils.driver;

public class PageByNoLogin extends Utils {
    public static String listurl = "http://127.0.0.1:8080/blog_list.html";
    public static String editurl = "http://127.0.0.1:8080/blog_edit.html";
    public static String detailurl = "http://127.0.0.1:8080/blog_detail.html";
    public static String updateurl = "http://127.0.0.1:8080/blog_update.html";


    public PageByNoLogin() {
        super(updateurl);
    }

    public void ListPageByNoLogin() throws IOException {
        driver.get(listurl);

        //调整到登录页面
        String expect = driver.getTitle();

        getScreenShot(getClass().getName());

        assert expect.equals("登录页面");
    }

    public void DetailPageByNoLogin() throws IOException {
        driver.get(listurl);

        String expect = driver.getTitle();

        getScreenShot(getClass().getName());

        assert expect.equals("登录页面");

    }
    public void EditPageByNoLogin() throws IOException, InterruptedException {
        driver.get(editurl);
        driver.findElement(By.cssSelector("#title")).sendKeys("第三篇博客");
        driver.findElement(By.cssSelector("#submit")).click();

        driver.findElement(By.cssSelector("body > h2"));
        getScreenShot(getClass().getName());

        driver.quit();
    }

    public void UpdatePageByNoLogin(){
        String text=driver.getTitle();
        assert text.equals("HTTP状态 404 - 未找到");
    }


}

 

自动化测试用例数量:28

 自动化测试结果:pass:27/28,fail:1/28

 自动化测试问题是否已经修复:

四.遗留风险

系统主功能基本没有问题,可能仍有细节未照顾到。

五.测试结果评估 

 主功能测试通过,项目可以上线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值