0


博客系统---测试报告

一、项目介绍

     1.本博客系统采用前后端分离技术,使用mysql存储用户数据,包括用户名,博客标题,博客编号,博客内容,编写时间等。

    2.博客系统分为四个模块:分别是博客系统登陆页、博客系统详情页、博客系统列表页,博客系统编辑页。采用的是http协议,涉及到get、post等方法,请求头类型为Content-Type: application/x-www-form-urlencoded,其中包括登录接口、用户接口、博客接口、注销接口。

    3.操作步骤通常是先登录博客系统,登录后可以看到博客列表页,按时间降序排列,可点击所写的每一篇博客查看内容,也可以点击写博客按钮来书写新博客并提交,提交完毕也可再次查看所写博客,最后还可以注销用户,下次再进入博客系统则需要重新登陆。        

二、测试目的和工具

2.1测试目的

    本测试报告为博客系统项目的测试报告,目的在于总结测试阶段以及分析测试结果,描述系统是否符合需求。预期参考人员包括用户、测试人员、开发人员、项目管理者、其他质量管理人员。本次测试的目的在于确保系统功能测试、接口测试和自动化测试正常无误,满足系统需要。

2.2测试工具

    本次测试过程中用到的工具有fiddler、postman、开发者工具等,其中fiddler用于抓包,详细的对HTTP 请求进行分析,Postman用于模拟客户端向服务器发送请求,开发者工具用于查找页面元素及查找bug。

三、测试

3.1功能测试

3.1.1用Xmind画出思维导图

3.3.2设计测试用例,列出表格
    博客登录页

    博客编辑页

    博客详情页

    博客列表页

    经过手动测试输入测试用例后发现,测试大部分通过 ,只有一项测试用例出现问题,后续已修复。

3.2接口测试

    用postman为各个接口设置断言验证响应中包含的字符串和返回的状态码,结果如下。

    博客登录页

    登录成功的情况

     登陆失败的情况

    由于登陆失败的情况过多,就不在此处一一展示了。

    博客编辑页

    博客详情页

    博客列表页

    综上可见,使用postman测试时,设置断言验证响应中包含的字符串和返回的状态码测试全部通过。

3.3自动化测试

3.3.1自动化测试预览

20240810_181746

3.3.2测试环境
    自动化测试环境:

    计算机型号:HP Pavilion Aero Laptop 13-be0xxx

    操作系统:Windows10家庭版

    数据库:MySQL5.7

    测试工具:selenium、JUnit 5.9.1

    浏览器:chrome、Firefox
3.3.3测试代码
    将每次打开浏览器和关闭浏览器的操作单独放在一个文件中
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.close();
    }
}
    自动化测试登录博客成功、登录博客失败、编辑博客、注销博客的功能。

    自动化测试登录博客成功
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.*;
import static java.lang.Thread.sleep;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Tests extends InitAndEndBrowser{
    @Order(1)
    @ParameterizedTest
    @CsvSource({"'http://127.0.0.1:9000/blog_system/login.html','小颜','http://127.0.0.1:9000/blog_system/blog_list.html','112233'"})
    void Login(String url,String username,String expect_url,String password) throws InterruptedException {
        webDriver.get(url);
        sleep(2000);
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(2000);
        String userName=webDriver.findElement(By.cssSelector("body > div.container > div.container-left > div > h3")).getText();
        if (userName.equals(username)){
            System.out.println("测试通过");
        }else {
            System.out.println("测试不通过");
        }
        String URL=webDriver.getCurrentUrl();
        if(URL.equals(expect_url)){
            System.out.println("测试通过");
        }else {
            System.out.println("测试失败");
        }
    }
     自动化测试发布博客(编辑)
    @Test
    @Order(2)
    void PublishBlog() throws InterruptedException {
        //打开博客列表页,点击写博客按钮
        webDriver.get("http://127.0.0.1:9000/blog_system/blog_list.html");
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        sleep(2000);
        //输入标题(还可以通过Selenium执行JS脚本完成)
        //((JavascriptExecutor)webDriver).executeScript("document.querySelector(\"#title-input\").value=\"好好学习,天天向上!!!\"");
        webDriver.findElement(By.cssSelector("#title-input")).sendKeys("这是我的第四篇博客");
        sleep(2000);
        // 点击发布博客按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(2000);
        WebElement title=webDriver.findElement(By.cssSelector("body > div.container > div.container-right > div > div.title"));
        sleep(2000);
        Assertions.assertNotNull(title);

    }
     自动化测试注销博客
    @Test
    @Order(3)
    void LoginOut() throws InterruptedException {
        webDriver.get("http://127.0.0.1:9000/blog_system/blog_list.html");
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
        sleep(2000);
        String LoginURL=webDriver.getCurrentUrl();
        String username=webDriver.findElement(By.cssSelector("body > div.login-container > div > form > div:nth-child(1) > span")).getText();
        if (LoginURL.equals("http://127.0.0.1:9000/blog_system/login.html")&&(username.equals("用户名"))){
            System.out.println("测试通过");
        }else {
            System.out.println("测试失败");
        }
        Assertions.assertEquals("http://127.0.0.1:9000/blog_system/login.html",LoginURL);
        Assertions.assertEquals("用户名",username);
    }
     自动化测试登录博客失败
    @Test
    @Order(4)
    void LoginError() throws InterruptedException {
        String username="小怡";
        String password="112233";
        webDriver.get("http://127.0.0.1:9000/blog_system/login.html");
        sleep(2000);
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#submit")).click();
        sleep(2000);
        WebElement webElement=webDriver.findElement(By.cssSelector("body"));
        sleep(2000);
        Assertions.assertEquals("您输入的用户名或密码不正确!",webElement.getText());
    }
}
    运行结果如下,测试通过与否可以通过断言或if条件语句来判断,上述代码中是穿插使用(最好统一,此处是为了展示两种写法)。

四、测试结果

4.1出现的bug

     经过实际测试发现预期结果与实际结果大部分一致!需要提交修改的bug如下:

     1.在登陆成功以后发现博客列表页不能正常显示,编辑博客发布后也不会显示在页面中抓包后发现前端没有错误,是原本项目中的jequery链接失效了,访问不了,后面修改后发现页面可以正常显示。

   2.在自动化测试发布博客的时候出现以下报错Unable to locate element: {"method":"css selector","selector":"body > div.container > div.container-right > div > div.title"}即不能定位元素。检查代码发现,页面渲染需要一定的时间,而后端中代码执行速度较快,页面无法快速显现而报错,最终通过设置sleep()来满足渲染所需时间。

4.2bug提交

附件

    后续查出了错误原因后,已将bug全部修复。

五、总结

    功能测试较为充分且测试目标已全部完成,在测试过程中发现存在bug导致页面无法正常显示。经排查,发现是原本项目中的jequery链接失效了,随之替换后正常运行。

    接口测试一切顺利。

    性能测试出现报错情况,是由于页面渲染速度慢于代码执行速度,导致页面无法及时显示,最终报错。最后在代码中搭配使用sleep即可解决。

    在测试的过程中,我们要保持头脑清醒,写测试用例的时候不要漏写,特别要注意在范围边界值附近时的测试,要熟练运用Xmind、Excel来编写测试用例,postman、fiddler、开发者工具等来查错、抓包,发现bug的时候要及时记录、上报,并附上bug出现的截图,bug解决后要及时关闭,每次测试完成之后要及时总结,吸取教训,不断学习,提升自身专业能力以便后续工作的执行,加油!

本文转载自: https://blog.csdn.net/m0_72776676/article/details/141090579
版权归原作者 m0_72776676 所有, 如有侵权,请联系我们删除。

“博客系统---测试报告”的评论:

还没有评论