博客项目系统的自动化测试

目录

测试环境

博客系统界面

测试用例

1. 博客登录页面测试用例

2. 博客详情页面测试用例

3. 删除功能测试用例

自动化测试

AutoTestUtils

博客登录页面测试

界面文字测试

窗口大小测试

登录成功测试

登录失败测试

整体代码

博客列表页面测试

界面文字测试

博客详情页跳转测试

博客编辑页跳转测试

注销按钮测试

整体代码

博客详情页面测试

界面文字测试

删除功能测试

博客编辑页跳转测试

注销按钮测试

整体代码

博客编辑页面测试

界面文字测试

测试博客发布功能

注销按钮测试

整体代码

通过 Suite 套件测试

测试结果


测试环境

Chorme浏览器 版本号:112.0.5615.138(正式版本) (64 位)操作系统:win10

博客系统界面

 


测试用例

1. 博客登录页面测试用例

功能测试

界面测试

性能测试

 

安全性测试

 

易用性测试

兼容性测试

 

 

2. 博客详情页面测试用例

功能测试

界面测试

性能测试

 

安全性测试

兼容性测试

 

易用性测试

 

3. 删除功能测试用例

功能测试

性能测试

 

界面测试

 

安全性测试

 

易用性测试 

兼容性测试


自动化测试

AutoTestUtils

在每个测试类中都要创建和销毁驱动对象,频繁的创建和销毁会浪费很多系统资源,所以我们将其单独创建一个方法并封装起来.

import org.openqa.selenium.chrome.ChromeOptions;

import java.time.Duration;

public class AutoTestUtils {
    public static ChromeDriver chromeDriver;
    //创建出驱动对象
    public static ChromeDriver createDriver() {
        //要是还没有创建出对象,就创建出一个浏览器/驱动对象
        if (chromeDriver == null) {
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--remote-allow-origins=*");
            chromeDriver = new ChromeDriver(options);
            //要是代码执行得很快,就会导致前端没渲染好,找不到元素的问题,所以要使用等待机制
            //最多等待10s(隐式等待)
            chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        }
        return chromeDriver;
    }
}

博客登录页面测试

博客登录页面主要测试界面文字是否正常显示,登录情况是否会有异常出现

界面文字测试

public void appearance() {
    getDriver();
    //检测系统名称是否正确
    String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
    Assertions.assertEquals("我的博客系统",str1);
    //主页,和写博客是否正常
    String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
    Assertions.assertEquals("主页",str2);
    //登录窗口的内容
    String str3 = driver.findElement(By.cssSelector("body > div.login-container > form > div > h3")).getText();
    Assertions.assertEquals("登录",str3);
    String str4 = driver.findElement(By.cssSelector
        ("body > div.login-container > form > div > div:nth-child(2) > span")).getText();
    
    Assertions.assertEquals("用户名",str4);
    String str5 = driver.findElement(By.cssSelector("body > div.login-container > form > div > div:nth-child(3) > span")).getText();
    Assertions.assertEquals("密码",str5);
    String str6 = driver.findElement(By.cssSelector("#submit")).getAttribute("value");
    Assertions.assertEquals("提交",str6);
}

窗口大小测试

public void windowSize() {
    driver.manage().window().maximize();
    driver.manage().window().minimize();
    driver.manage().window().setSize(new Dimension(1000,800));//自定义大小
}

登录成功测试

public void LoginSuc(String name, String password) throws IOException {
    //当登录别的账号的时候,就要先将之前的账号密码框清空,再进行登录
    driver.findElement(By.cssSelector("#username")).clear();
    driver.findElement(By.cssSelector("#password")).clear();

    driver.findElement(By.cssSelector("#username")).sendKeys(name);
    driver.findElement(By.cssSelector("#password")).sendKeys(password);
    driver.findElement(By.cssSelector("body > div.login-container > form > div > div:nth-child(4)")).click();
    //上面的三步只是登录的基本步骤,并不能保证能登录成功,所以还要对跳转之后的页面进行检查,要是找不到元素的话就会报错
    driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a"));
    driver.findElement(By.cssSelector("body > div.container > div.left > div > h3"));
    //当一个账号登录成功的时候,想再登录另一个账号的时候,此时就找不到上面的3个元素了,因为此时页面已经不再是登录页面了,所以要退回到登录的页面
    driver.navigate().back();
}

登录失败测试

public void LoginFail(String name, String password) throws IOException, InterruptedException {
    driver.findElement(By.cssSelector("#username")).clear();
    driver.findElement(By.cssSelector("#password")).clear();
    driver.findElement(By.cssSelector("#username")).sendKeys(name);
    driver.findElement(By.cssSelector("#password")).sendKeys(password);
    Thread.sleep(5000);
    driver.findElement(By.cssSelector("#submit")).click();
    //检查登录页面跳转失败的情况,结果发现,在登录成功的页面中也有这个元素,所以仅仅只有这个元素是不能判断的,可以获取一下文本
    Thread.sleep(5000);
    String expectation = "用户名或者密码错误,登录失败!";
    String actual = chromeDriver.findElement(By.cssSelector("body")).getText();
    Assertions.assertNotEquals(expectation, actual);
    Thread.sleep(5000);
    driver.navigate().back();
}

整体代码

package BlogAutoTest;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.Ch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值