文墨天地测试报告

一、项目简介

本系统基于SSM框架精心打造。它为用户提供了一个便捷的创作与分享平台。用户可以轻松创建个性化的博客空间,自由撰写、编辑和发布博客。后台采用SSM框架,确保系统的稳定性和高效性。M有B按提示实现了数据的精确管理,优化了数据的存储和查询操作。Spring和Spring MVC则保障了系统的良好架构和流畅的交互体验。无论是个人记录生活点滴还是专业人士分享知识见解,本博客系统都能满足需求,成为用户展现自我,交流思想的理想之地。


二、测试

本博客旨在测试该项目是否能正常实现预期功能。下面,本博客将从功能界面

性能兼容性易用性安全性这五个方面来分析相关的测试用例。(因为本项目为web项目,故暂不考虑安装卸载方面的测试)

2.1 测试分析

2.1.1 功能上:


2.1.2 界面上


2.1.3 性能上


2.1.4 兼容性


2.1.4 易用性


2.1.5 安全性


2.2 实际测试

2.2.1 简单的手动测试

2.2.1.1 登录测试

1)成功登录时,跳转到博客列表页:正确的账号和密码


2)登录失败时,跳转到登录失败前端界面:错误的账号或密码


2.2.1.2 发布博客

1)点击写博客按钮

2)进入博客详情页,开始写博客

3)点击发布后,博客成功发布,且成功跳转到了博客列表页


2.2.1.3 删除博客

1)点击查看全文按钮

2)点击删除按钮

3)博客成功被删除,并跳转到博客列表页面


2.2.1.4 退出博客

1)进入博客列表页,点击注销按钮

2)成功注销,跳转到博客登录页


2.2.2 自动化测试

准备:

因为每次测试都需要创建驱动,打开浏览器,关闭浏览器,因此直接将创建驱动,关闭浏览器提取出来,分别通过注解使其在代码前后必定被执行到。

代码如下:

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class InitAndEndBrowser {
    static WebDriver webDriver;
    @BeforeAll
    static void OpenBlogSystem(){
        webDriver = new ChromeDriver();
    }
    @AfterAll
    static void CloseBlogSystem(){
        webDriver.quit();
    }
}

2.2.2.1 登陆测试

1)登录成功测试:

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import static java.lang.Thread.sleep;
public class Tests extends InitAndEndBrowser {
    //登录测试用例
    @ParameterizedTest
    @CsvSource({"'http://127.0.0.1:8080/blog_login.html','张三','http://127.0.0.1:8080/blog_list.html','123456'"})
    void Login(String url, String userName, String expected_jump_url, String password) throws InterruptedException {
        webDriver.get(url);
        webDriver.get(url);
        sleep(3000);
        //输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(userName);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(3000);
        //登录成功后,校验是否登录成功
        String username = webDriver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
        if (username.equals(userName)) {
            System.out.println("登录成功测试用例,测试通过.....");
        } else {
            System.out.println("登录成功测试用例,测试不通过.....");
        }
    }
}

登录成功:


2)登录失败测试:

import org.openqa.selenium.By;
import static java.lang.Thread.sleep;
import org.openqa.selenium.WebElement;
import org.junit.jupiter.api.Test;
public class Tests extends InitAndEndBrowser {
    @Test
    void LoginError() throws InterruptedException {
        String username = "张三";
        String password = "12345";//错误密码

        //打开页面
        sleep(3000);
        webDriver.get("http://127.0.0.1:8080/blog_login.html");
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //点击登录按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(3000);
        WebElement webElement = webDriver.findElement(By.cssSelector("body > h1"));
        if (webElement.getText().equals("用户名或密码错误,登录失败!!!!")){
            System.out.println("登录失败测试用例,测试用例通过.....");
        }else{
            System.out.println("登录失败测试用例,测试用例不通过.....");
        }
        //也可以通过断言来判断是否一致。如果测试失败,直接就通过不了,且会告知错期望的值和实际值是什么
//        Assertions.assertEquals("用户名或密码错误,登录失败!!!!", webElement.getText());
    }
}

测试成功:


2.2.2.2 发布博客测试

登录成功以后,测试发布博客(只有登录以后才能写博客并发布,因为在登录界面并无写博客按钮)

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import static java.lang.Thread.sleep;
import org.openqa.selenium.JavascriptExecutor;
public class Tests extends InitAndEndBrowser {
    //登录测试用例
    @ParameterizedTest
    @CsvSource({"'http://127.0.0.1:8080/blog_login.html','张三','http://127.0.0.1:8080/blog_list.html','123456'"})
    void Login(String url, String userName, String expected_jump_url, String password) throws InterruptedException {
        webDriver.get(url);
        webDriver.get(url);
        sleep(3000);
        //输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(userName);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();

        sleep(3000);
        //登录成功后,校验是否登录成功
        String username = webDriver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
        if (username.equals(userName)) {
            System.out.println("登录成功测试用例,测试通过.....");
        } else {
            System.out.println("登录成功测试用例,测试不通过.....");
        }

        //测试发布博客
        String cur_url = webDriver.getCurrentUrl();
        if (cur_url.equals(expected_jump_url)) {
            System.out.println("博客页面测试用例,测试通过......");
        } else {
            System.out.println("博客页面测试用例,测试不通过....");
        }
        sleep(3000);

        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        sleep(3000);
        //输入标题(通过Selenium执行JS脚本来完成)document.querySelector("#title").value="测试"
        ((JavascriptExecutor) webDriver).executeScript("document.querySelector(\"#title\").value=\"测试\"");
        sleep(2000);

        //点击发布博客按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(10000);
        System.out.println("发布博客测试用例通过....");

        //校验博客发布成功
        //1.找到发布成功的博客的标题
        String title = webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
        sleep(2000);
        //2.校验标题对应的元素跟我们所写的标题一致,如果一致,则测试通过,否则测试不通过【可以拿到刚发布的博客的title,即使之前有博客的名字跟现在刚发布的博客的名字一样,也无法通过测试】
        Assertions.assertEquals("测试", title);
        sleep(2000);
    }
}

成功发布:


2.2.2.3 删除博客测试

成功发布博客以后,测试是否能成功删除博客

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import static java.lang.Thread.sleep;
import org.openqa.selenium.JavascriptExecutor;
public class Tests extends InitAndEndBrowser {
    //登录测试用例
    @ParameterizedTest
    @CsvSource({"'http://127.0.0.1:8080/blog_login.html','张三','http://127.0.0.1:8080/blog_list.html','123456'"})
    void Login(String url, String userName, String expected_jump_url, String password) throws InterruptedException {
        webDriver.get(url);
        webDriver.get(url);
        sleep(3000);
        //输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(userName);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();

        sleep(3000);
        //登录成功后,校验是否登录成功
        String username = webDriver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
        if (username.equals(userName)) {
            System.out.println("登录成功测试用例,测试通过.....");
        } else {
            System.out.println("登录成功测试用例,测试不通过.....");
        }

        //测试发布博客
        String cur_url = webDriver.getCurrentUrl();
        if (cur_url.equals(expected_jump_url)) {
            System.out.println("博客页面测试用例,测试通过......");
        } else {
            System.out.println("博客页面测试用例,测试不通过....");
        }
        sleep(3000);

        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        sleep(3000);
        //输入标题(通过Selenium执行JS脚本来完成)document.querySelector("#title").value="测试"
        ((JavascriptExecutor) webDriver).executeScript("document.querySelector(\"#title\").value=\"测试\"");
        sleep(2000);

        //点击发布博客按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(10000);
        System.out.println("发布博客测试用例通过....");

        //校验博客发布成功
        //1.找到发布成功的博客的标题
        String title = webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
        sleep(2000);
        //2.校验标题对应的元素跟我们所写的标题一致,如果一致,则测试通过,否则测试不通过【可以拿到刚发布的博客的title,即使之前有博客的名字跟现在刚发布的博客的名字一样,也无法通过测试】
        Assertions.assertEquals("测试", title);
        sleep(2000);

        //删除博客
        //加以个校验是否是自己的博客,只有自己的博客,自己才有资格删除
        //点击查看全文【如果只有一条博客,删完就没了,该如何校验呢?如果不知一条,又要如何校验呢】
        webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
        sleep(3000);
        //点击删除按钮
        webDriver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)")).click();
        sleep(10000);
        //校验是否成功删除
        String url2 = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://127.0.0.1:8080/blog_list.html", url2);
        System.out.println("校验删除博客成功......");
    }
}

删除成功:


2.2.2.4 退出博客测试

校验能否成功退出

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import static java.lang.Thread.sleep;
import org.openqa.selenium.JavascriptExecutor;
public class Tests extends InitAndEndBrowser {
    //登录测试用例
    @ParameterizedTest
    @CsvSource({"'http://127.0.0.1:8080/blog_login.html','张三','http://127.0.0.1:8080/blog_list.html','123456'"})
    void Login(String url, String userName, String expected_jump_url, String password) throws InterruptedException {
        webDriver.get(url);
        webDriver.get(url);
        sleep(3000);
        //输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(userName);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        //点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();

        sleep(3000);
        //登录成功后,校验是否登录成功
        String username = webDriver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
        if (username.equals(userName)) {
            System.out.println("登录成功测试用例,测试通过.....");
        } else {
            System.out.println("登录成功测试用例,测试不通过.....");
        }

        //测试发布博客
        String cur_url = webDriver.getCurrentUrl();
        if (cur_url.equals(expected_jump_url)) {
            System.out.println("博客页面测试用例,测试通过......");
        } else {
            System.out.println("博客页面测试用例,测试不通过....");
        }
        sleep(3000);

        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        sleep(3000);
        //输入标题(通过Selenium执行JS脚本来完成)document.querySelector("#title").value="测试"
        ((JavascriptExecutor) webDriver).executeScript("document.querySelector(\"#title\").value=\"测试\"");
        sleep(2000);

        //点击发布博客按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(10000);
        System.out.println("发布博客测试用例通过....");

        //校验博客发布成功
        //1.找到发布成功的博客的标题
        String title = webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
        sleep(2000);
        //2.校验标题对应的元素跟我们所写的标题一致,如果一致,则测试通过,否则测试不通过【可以拿到刚发布的博客的title,即使之前有博客的名字跟现在刚发布的博客的名字一样,也无法通过测试】
        Assertions.assertEquals("测试", title);
        sleep(2000);

        //删除博客
        //加以个校验是否是自己的博客,只有自己的博客,自己才有资格删除
        //点击查看全文【如果只有一条博客,删完就没了,该如何校验呢?如果不知一条,又要如何校验呢】
        webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
        sleep(3000);
        //点击删除按钮
        webDriver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)")).click();
        sleep(10000);
        //校验是否成功删除
        String url2 = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://127.0.0.1:8080/blog_list.html", url2);
        System.out.println("校验删除博客成功......");
        
        //校验注销
        //找到注销按钮,点击
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
        sleep(3000);
        String url3 = webDriver.getCurrentUrl();
        String username1 = webDriver.findElement(By.cssSelector("body > div.container-login > div > div:nth-child(2) > span")).getText();
        Assertions.assertEquals("http://127.0.0.1:8080/blog_login.html",url3);
        Assertions.assertEquals("用户名",username1);
        System.out.println("测试注销成功......");
    }
}

成功退出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值