【项目日记(五)】梦幻笔耕-测试报告

❣博主主页: 33的博客
▶️文章专栏分类:项目日记◀️
🚚我的代码仓库: 33的代码仓库🚚
🫵🫵🫵关注我带你了解更多项目内容

在这里插入图片描述

1.项目背景

个人博客系统主要采用前后端分离的方法进行实现,使用数据库来存储相关数据,并部署到云服务器上。前端主要界面,用户注册界面,登录界面,博客列表界面,博客详情界面。

2.测试环境

软件:Google Chrome
开发工具:IDEA
测试工具:自动化测试工具Selenium
操作系统:Windows 10家庭中文版
浏览器版本:Google Chrome126.0.6478.115(正式版本) (64 位)

3.测试计划

3.1功能测试

测试用例:
在这里插入图片描述
执行过程部分截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2自动化测试

自动化测试可以帮助我们去掉一些重复性的工作提高测试的效率。接下来主要对一些核心界面进行测试:
登陆界面:

@Order(1)
    @ParameterizedTest
    @CsvFileSource(resources = "LoginSuccess.csv")
    void LoginSuccess(String username, String password, String blog_list_url) {
        System.out.println(username + password + blog_list_url);
        // 打开博客登录页面
        webDriver.get("http://119.91.235.248:9090/blog_login.html");
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        // 输入账号admin
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码123
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 点击提交按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 跳转到列表页
        // 获取到当前页面url
        String cur_url = webDriver.getCurrentUrl();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 如果url=http://42.192.83.143:8563/blog_system/blog_list.html,测试通过,否则测试不通过
        Assertions.assertEquals(blog_list_url, cur_url);
        // 列表页展示用户信息是admin
        // 用户名是admin测试通过,否则测试不通过       
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        String cur_admin = webDriver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
        Assertions.assertEquals(username, cur_admin);
    }

博客列表页:

@Order(2)
    @Test
    void BlogList() {
        // 打开博客列表页
        webDriver.get("http://119.91.235.248:9090/blog_list.html");
        // 获取页面上所有博客标题对应的元素
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        int title_num = webDriver.findElements(By.cssSelector(".title")).size();
        // 如果元素数量不为0,测试通过
        Assertions.assertNotEquals(0 ,title_num);
    }

博客编辑页:

@Order(3)
    @Test
    void EditBlog() throws InterruptedException {
        // 找到写博客按钮,点击
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 通过Js讲鼻涕进行输入
        ((JavascriptExecutor)webDriver).executeScript("document.getElementById(\"title\").value=\"自动化测试\"");
        sleep(3000);
        // 点击发布
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(3000);
        // 获取当前页面url
        String cur_url = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://119.91.235.248:9090/blog_list.html", cur_url);
    }

博客详情页:

@Order(4)
    @ParameterizedTest
    @MethodSource("Generator")
    void BlogDetail(String expected_url, String expected_title, String expected_blog_title) {
        // 找到第一篇博客对应的产看全文按钮
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/a")).click();
        // 获取当前页面url
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        String cur_url = webDriver.getCurrentUrl();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 获取当前页面title
        String cur_title = webDriver.getTitle();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 获取博客标题
        String cur_blog_title = webDriver.findElement(By.cssSelector("body > div.container > div.right > div > h3")).getText();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expected_title ,cur_title);
        Assertions.assertEquals(expected_blog_title, cur_blog_title);
        if(cur_url.contains(expected_url)) {
            System.out.println("测试通过");
        } else {
            System.out.println(cur_url);
            System.out.println("测试不通过");
        }
    }

删除博客:

@Order(5)
    @Test
    void DeleteBlog() throws InterruptedException {
        // 打开博客列表页面
        webDriver.get("http://119.91.235.248:9090/blog_list.html");
        // 点击全文按钮
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
        // 点击删除按钮
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).click();
        sleep(3000);
        // 博客列表页第一篇博客标题不是“自动化测试”
        String first_blog_title = webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[1]")).getText();
        // 校验当前博客标题不等于“自动化测试”
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertNotEquals(first_blog_title, "自动测试");
    }

注销:

 @Order(6)
    @Test
    void Logout() {
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 校验url(登录url)
        String cur_url = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://119.91.235.248:9090/blog_login.html", cur_url);
        // 校验提交按钮
        WebElement webElement = webDriver.findElement(By.cssSelector("#submit"));
        Ass

测试全部通过
在这里插入图片描述
亮点
使用Selenium与Junit结合来测试:
①使用了JUnit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行
效率。
②只创建一次驱动对象,避免每 个用例重复创建驱动对象造成时间和资源的浪费。
③使用参数化:保持用例的简洁,提高代码的可读性
④使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
⑤使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。
⑥使用了屏幕截图:方便问题的追溯以及问题的解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值