【软件测试】基于博客系统的自动化测试

这篇具有很好参考价值的文章主要介绍了【软件测试】基于博客系统的自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.我的博客系统链接

2.使用selenium对博客系统进行自动化测试

1.引入依赖

2.创建公共类

3.创建测试套件类

4.测试登陆界面

5. 测试博客列表页

6.测试写博客页面

7.测试删除博客

8.最终运行结果


1.我的博客系统链接

用户登录

2.使用selenium对博客系统进行自动化测试

1.引入依赖

创建一个maven项目,在pop.xml中引入以下依赖

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.创建公共类

因为对每一个页面进行测试都需要创建浏览器驱动,所以我们可以把他提取出来并设置成静态的,就可以让创建和销毁驱动的操作只实现一次,其他类都继承这个类即可

【软件测试】基于博客系统的自动化测试,软件测试,数据库,selenium

package org.example.common;

import org.openqa.selenium.chrome.ChromeDriver;

import java.time.Duration;
import java.util.concurrent.TimeUnit;

public class AutotestUtils {

    private static ChromeDriver driver;

    public static ChromeDriver createDrive() {
        if (driver == null) {
            driver = new ChromeDriver();
            // 显示等待, 渲染页面, 防止找不到页面元素
            driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        }
        return driver;
    }
}

3.创建测试套件类

创建一个类,通过@Suite注解识别该类为测试套件类,使用@SelectClasses来注解声明我们要运行哪些类

【软件测试】基于博客系统的自动化测试,软件测试,数据库,selenium

package org.example.tests;

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({loginTest.class, BlogListTest.class, BlogEditTest.class})
public class RunSuite {

}

4.测试登陆界面

创建一个类继承AutTestUtils类得到浏览器驱动,然后开始测试

package org.example.tests;


import org.example.common.AutotestUtils;
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.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

import static java.lang.Thread.sleep;


@TestMethodOrder(MethodOrderer.OrderAnnotation.class)// 按顺序执行
public class loginTest extends AutotestUtils {
    public static ChromeDriver driver = createDrive();

    /**
     * 打开网页
     */
    @Test
    @BeforeAll
    static void init() {
        // 跳转到登陆界面
        driver.get("http://8.130.122.250:8080/blog/blog_login.html");
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    }

    /**
     * 检测登陆页面是否正常打开
     */
    @Test
    @Order(1)
    void loginPageTest() {
        // 显示等待
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 用断言判断用户登陆是否显示正确
        String expect = "用户登录";
        String actual = driver.findElement(By.cssSelector("body > div.login-container > form > div > div.title")).getText();
        Assertions.assertEquals(expect, actual);
        // 检查提交按钮是否存在
        driver.findElement(By.cssSelector("#btn_login_submit"));
    }

    /**
     * 异常登陆测试
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource({"张三, 12346","李四, 1236"})
    public void loginAbnormal(String username, String password) throws InterruptedException {
        driver.get("http://8.130.122.250:8080/blog/blog_login.html");
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //清空用户名和密码框
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        // 输入账号和密码
        driver.findElement(By.cssSelector("#username")).sendKeys(username);
        driver.findElement(By.cssSelector("#password")).sendKeys(password);
        driver.findElement(By.cssSelector("#btn_login_submit")).click();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

        // 与期望结果对比
        String expect = "用户名或密码不正确";
        // 强制等待
        sleep(2000);
        // 获取弹窗文本
        String actual = driver.switchTo().alert().getText();
        // 点击弹窗确认按钮
        driver.switchTo().alert().accept();
        Assertions.assertEquals(expect, actual);
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    }

    /**
     * 正常登陆测试
     */
    @Order(3)
    @ParameterizedTest
    @CsvSource({"张三, 123456","李四, 123456"})
    public void loginNormalTest(String username, String password) {
        driver.get("http://8.130.122.250:8080/blog/blog_login.html");
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //清空用户名和密码框
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        // 输入账号和密码
        driver.findElement(By.cssSelector("#username")).sendKeys(username);
        driver.findElement(By.cssSelector("#password")).sendKeys(password);
        driver.findElement(By.cssSelector("#btn_login_submit")).click();
        driver.navigate().back();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    }
}

5. 测试博客列表页

步骤同上

package org.example.tests;

import org.example.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogListTest extends AutotestUtils {

    // 获取驱动
    private static ChromeDriver driver = createDrive();

    /**
     * 打开网页
     */
    @BeforeAll
    public static void openWeb() {
        driver.get("http://8.130.122.250:8080/blog/blog_list.html");
    }

    /**
     * 测试博客列表显示是否正常
     */
    @Order(1)
    @Test
    void elementAppear() {
        driver.get("http://8.130.122.250:8080/blog/blog_list.html");
        // 判断登录用户为李四
        String actualUsername = driver.findElement(By.cssSelector("#h_list_username")).getText();
        String username = "李四";
        Assertions.assertEquals(actualUsername, username);
        // 判断标题不为空
        String title = driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(1) > div.blog-title")).getText();
        Assertions.assertNotNull(title);
        // 判断登录url
        String url = "http://8.130.122.250:8080/blog/blog_list.html";
        String actualUrl = driver.getCurrentUrl();
        Assertions.assertEquals(url, actualUrl);
    }

    /**
     * 测试按钮
     */
    @Test
    @Order(2)
    public void buttonTest() {
        // 查看全文按钮测试
        driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(1) > div.aEl > a")).click();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        driver.navigate().back();

    }
}

6.测试写博客页面

注释中有详细步骤

package org.example.tests;

import org.example.common.AutotestUtils;
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.JavascriptExecutor;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

import static java.lang.Thread.sleep;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogEditTest extends AutotestUtils {


    static ChromeDriver driver = createDrive();
    /**
     * 打开博客编辑页
     */
    @BeforeAll
    static void openWeb() {
        driver.get("http://8.130.122.250:8080/blog/blog_eidt.html");
    }

    /**
     * 错误发布测试
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource({",正文"})
    void abnormalTest (String title, String content) throws InterruptedException {
        driver.get("http://8.130.122.250:8080/blog/blog_eidt.html");
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入测试
        ((JavascriptExecutor)driver).executeScript("document.querySelector(\"#title\").value="+title+"");
        driver.findElement(By.cssSelector("#submit")).click();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 等弹窗出现
        sleep(1000);
        // 点击弹窗
        driver.switchTo().alert().accept();
        driver.navigate().back();
    }

    /**
     * 正确发布测试
     */
    @Order(2)
    @Test
    void normalTest() throws InterruptedException {
        // 点击按钮
        driver.findElement(By.cssSelector("body > div.nav > div > div > a:nth-child(2)")).click();
        sleep(8000);
        // 输入标题与正文
        String title = "自动化测试最终版2";
        driver.findElement(By.cssSelector("#title")).sendKeys(title);
        // 编辑器无法输入,使用一个能写出来符号的按钮替代
        driver.findElement(By.cssSelector("#blog_edit > div.editormd-toolbar > div > ul > li:nth-child(5) > a > i")).click();
        sleep(1000);
        // 点击提交
        driver.findElement(By.cssSelector("#submit")).click();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 强制等待弹窗
        sleep(1000);
        // 点击弹窗,是否为发布成功
        String expect = "发布成功";
        String actual = driver.switchTo().alert().getText();
        driver.switchTo().alert().accept();
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 查看跳转页面是否为博客列表界面
        String url = "http://8.130.122.250:8080/blog/blog_list.html";
        String actualUrl = driver.getCurrentUrl();
        Assertions.assertEquals(url, actualUrl);
        // 查看第一条博客标题是否为刚才所发
        String actualTitle = driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(1) > div.blog-title")).getText();
        Assertions.assertEquals(title, actualTitle);
    }

    /**
     * 关闭浏览器
     */
    @AfterAll
    static void quit() {
        driver.quit();
    }
}

7.测试删除博客

因为删除博客的功能暂时没有完成,下次补上

8.最终运行结果

【软件测试】基于博客系统的自动化测试,软件测试,数据库,selenium

本篇博客就到这里啦!!我们下篇博客见~~

【软件测试】基于博客系统的自动化测试,软件测试,数据库,selenium文章来源地址https://www.toymoban.com/news/detail-607654.html

到了这里,关于【软件测试】基于博客系统的自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件测试】python+selenium自动化测试

    一、什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 单元测试 java的单元测试框架是Junit,在这里不再赘述。 接口自动化 接口测试就是

    2023年04月09日
    浏览(77)
  • 软件测试 自动化测试selenium篇(一)

    目录 一、什么是自动化测试  单元测试  接口自动化  UI自动化 二、如何实施自动化测试  自动化测试需要了解的技能 三、selenium介绍 webdriver的工作原理:  四、Selenium+Java环境搭建                    验证环境是否搭建成功 创建java项目,添加pom文件中添加依赖 常见问题

    2024年02月07日
    浏览(61)
  • 软件测试之单元测试自动化入门基础

    所谓的单元测试(Unit Test)是根据特定的输入数据,针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构: 函数,类,模块 等。在Python中比较知名的单元测试模块: unittest pytest doctest nose 所谓的测试

    2024年02月03日
    浏览(38)
  • 软件测试 自动化测试selenium API

    1.1.1 CSS 选择器定位元素 CSS 选择器 就是一个语法 浏览器 (ctrl + f)可以进行选择 类选择器:.class值(.s_ipt) id 选择器:#id值(#kw) 父类选择器 子类选择器:父类选择器表达式 子类选择器表达式 标签选择器:标签名(form) 1.1.2 XPath 定位元素 XPath 是一种在XML 文档中定位元

    2024年04月28日
    浏览(45)
  • 【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

    前言 使用场景 原理 环境准备  开发 First Script WebDriver API 浏览器 元素 总结 Selenium是一款可以自动化操作浏览器的开源项目,最初的目的是浏览器功能的自动化测试,但是随着项目的发展,人们根据它的特性也用来做一些更多的有意思的功能而不仅仅是UI的自动化测试工具。

    2024年02月08日
    浏览(66)
  • 软件测试/自动化测试/测试开发/性能测试经典好书推荐

    目录 前言 测试理论与实践 性能测试 安全测试 自动化测试 编程语言与开发技能 管理技能 软件测试入行容易进阶难。从测试小白成长为测试经理、总监级别人才,要跨越长长的技术栈升级之路,挑战非常高的综合能力要求。 大牛都是相似的:具备扎实的测试方法论基础,能

    2024年02月09日
    浏览(56)
  • 第八章 软件测试自动化

    通过本章的学习,了解自动化测试应考虑的各种因素及如何衡量自动化测试成本,掌握自动化测试和手工测试的优缺点,能正确选择软件测试策略,了解测试工 具的分类和使用目的,熟悉常用的测试工具,了解自动化测试的过程。 (一)自动化测试概述(一般) 理解:自动

    2024年02月08日
    浏览(38)
  • 软件测试面试题——接口自动化测试怎么做?

    面试过程中,也问了该问题,以下是自己的回答: 接口自动化测试,之前做过,第一个版本是用jmeter 做的,1 主要是将P0级别的功能接口梳理出来,根据业务流抓包获取相关接口,并在jmeter中跑通,2 是整理了项目上的所有接口,先将单个接口跑通,然后再编写不同的接口用

    2024年02月14日
    浏览(53)
  • 自动化测试:让软件测试更高效更愉快!

    谈谈那些实习测试工程师应该掌握的基础知识(一)_什么时候才能变强的博客-CSDN博客 https://blog.csdn.net/qq_17496235/article/details/131839453 谈谈那些实习测试工程师应该掌握的基础知识(二)_什么时候才能变强的博客-CSDN博客 https://blog.csdn.net/qq_17496235/article/details/131850980 自动化测

    2024年02月14日
    浏览(50)
  • 软件自动化测试入门攻略

    京东购买:https://item.jd.com/14351742.html   \\\"《软件自动化测试入门攻略》一书是作者花费了近两年时间完成的一本大作,专门为入 门、入行人员编写,无论你是初学者,还是想转型、转专业学习软件自动化测试,本书 都适合你。书中充分考虑到新手入门自动化测试的特点,从工

    2024年01月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包