个人博客论坛系统测试报告

目录

一、项目介绍

二、测试计划

1、功能测试

(1)测试环境:

(2)测试用例编写

(3)部分功能测试

2、自动化测试

注册页面测试

验证注册成功的情况

验证注册失败的情况

登录界面测试

登录成功测试

登录失败测试

显示博客列表测试

未登录状态下测试

登录状态下测试

 发布帖子测试

未登录状态下测试

登录后测试

帖子详情页测试

未登录状态下

登录状态下

删除帖子测试

登录状态下测试

个人中心显示

未登录测试

登录状态下测试

显示个人信息并修改

未登录测试

登录显示个人信息测试

 登录后修改昵称测试

 登录后修改密码测试

退出测试

3、性能测试

对登录界面进行性能测试。

VUG录制脚本 

使用Controller 

生成测试报告


一、项目介绍

   基于Spring前后端分离的博客论坛系统,实现了注册、登录、显示帖子、编辑帖子、删除帖子、回复帖子、点赞帖子,修改个人信息等功能,并将其部署到云服务器上。

要点:

1、使用统⼀返回格式+全局错误信息定义处理前后端交互时的返回结果;
2、使用@ControllerAdvice+@ExceptionHandler实现全局异常处理;
3、使用拦截器实现用户登录校验;
4、集成Swagger实现⾃动⽣成API测试接口;

5、对密码进行加密处理。

 访问地址:http://124.71.152.247:8081/sign-in.html

二、测试计划

1、功能测试

(1)测试环境:

操作系统:Windows 10家庭版
项目运行环境:IIntelliJ IDEA Community Edition 2022.1.4、JDK1.8、MySQL5.7
浏览器:Chorme、Edge、FireFox、QQ浏览器
自动化脚本环境:IIntelliJ IDEA Community Edition 2022.1.4
访问链接:http://124.71.152.247:8081/index.html
测试技术: 主要手工进行单元测试和自动化测试
测试人员: 本人

(2)测试用例编写

  功能测试:

个人博客论坛系统测试报告_第1张图片

         非功能测试点:

个人博客论坛系统测试报告_第2张图片

 (3)部分功能测试

对注册页面进行的测试

场景1:输入用户名存在,密码与确认密码一致,点击注册

预期结果:提示用户已经存在

实际结果:提示用户已经存在,与预期结果一致。

个人博客论坛系统测试报告_第3张图片场景2:输入用户名不存在,密码与却密码一致,点击注册

预期结果:注册成功,跳转回登录界面

实际结果:注册成功,跳转回登录界面,与预期结果一致。

对登录页面进行的测试

场景1:输入用户名存在,密码与确认密码一致,点击登录

预期结果:登录成功,跳转到首页博客列表页面

实际结果:与预期结果一致。 个人博客论坛系统测试报告_第4张图片

场景2:输入用户名存在,密码与确认密码不一致,点击登录

预期结果:登录失败,给出错误提示

实际结果:登录失败,给出错误提示。

个人博客论坛系统测试报告_第5张图片 ......

对首页进行的测试

场景1:未登录状态下,点击首页

预期结果:跳转回登录界面

实际结果:跳转回登录界面,与预期结果一致。

场景2:登录状态下,点击“首页”

预期结果:导航栏显示所有的版块名,下方显示所有帖子列表,右上方显示登录用户信息。

实际结果:与预期结果一致。

个人博客论坛系统测试报告_第6张图片

场景3:登录状态下,点击导航栏处的版块名“C++”

预期结果:下方显示C++名称,该版块下的帖子数量,版块下的所有帖子列表,右上方显示登录用户信息。

实际结果:与预期结果一致。

个人博客论坛系统测试报告_第7张图片

场景4:登录状态下,在搜索框输入关键字“数据库”搜索

预期结果:下方显示帖子正文中所有存在“数据库”这三个字的帖子;

实际结果:刷新回到首页界面,与预期不符。不支持搜索功能。

场景5:登录状态下,点击“月亮”按钮

预期结果:进入夜间模式的切换

实际结果:进入夜间模式的切换,与预期相符。

场景6:登录状态下,点击“发布帖子”按钮

预期结果:进入博客编辑页面,版块名默认选择Java

实际结果:与预期相符。

个人博客论坛系统测试报告_第8张图片

......

对编辑页面进行的测试

场景1:未登录状态下,进入编辑页面

预期结果:跳转回登录界面

实际结果:跳转回登录界面,与预期结果一致。

场景2:登录状态下,不输入帖子标题,输入帖子内容,点击发布

预期结果:给出提示:请输入帖子标题

实际结果:与预期相符。

个人博客论坛系统测试报告_第9张图片

场景3:登录状态下,输入帖子标题,不输入帖子内容,点击发布

预期结果:给出提示:请输入帖子内容

实际结果:与预期相符。

场景4:登录状态下,输入帖子标题,输入帖子内容,点击发布

预期结果:编辑成功,跳转回首页,最上方显示刚发布的帖子信息

实际结果:与预期相符。

...... 

对帖子详情页面进行的测试

场景1:未登录状态下,点击首页下的任意一条帖子内容

预期结果:跳转回登录界面

实际结果:跳转回登录界面,与预期结果一致。

场景2:登录状态下,点击首页下的一条帖子内容“西安”

预期结果:跳转到该帖子详情页面

实际结果:与预期相符。

场景3:登录状态下,点击首页下的一条帖子内容“西安”(帖子作者“小狐狸”,当前登录作者“小星星”)

预期结果:跳转到该帖子详情页面,最上方显示帖子信息,左侧显示帖子作者信息,下方显示该帖子的内容,下方只显示点赞按钮。

实际结果:与预期相符。

个人博客论坛系统测试报告_第10张图片

场景4:登录状态下,下方点赞按钮

预期结果:上方显示的点赞数加1

实际结果:与预期相符。

场景5:登录状态下,点击首页下的一条帖子内容“123”(帖子作者“小星星”,当前登录作者“小星星”)

预期结果:跳转到该帖子详情页面,最上方显示帖子信息,左侧显示帖子作者信息,下方显示该帖子的内容,下方显示点赞按钮,删除按钮、编辑按钮。

实际结果:与预期相符。

个人博客论坛系统测试报告_第11张图片

场景6:登录状态下,点击首页下的一条帖子内容“123”,观察访问数变化

预期结果:跳转到该帖子详情页面,最上方显示帖子信息中的访问数+1

实际结果:与预期相符。

场景7:登录状态下,点击发私信按钮,不输入文本内容,点击“发送”

预期结果:给出警告提示:请输入要发送的内容

实际结果:与预期相符。

场景8:登录状态下,点击发私信按钮,输入文本内容,点击“发送”

预期结果:给出成功提示,发送成功

实际结果:与预期相符。

个人博客论坛系统测试报告_第12张图片

 

场景9:登录状态下,在下方的回复框中不输入文本内容,点击“回复”

预期结果:给出警告提示,请输入回复内容

实际结果:与预期相符。

个人博客论坛系统测试报告_第13张图片

场景10:登录状态下,在下方的回复框中输入文本内容,点击“回复”

预期结果:给出成功提示,同时下方显示回复内容。

实际结果:与预期相符。

个人博客论坛系统测试报告_第14张图片

...... 

对个人中心页面进行的测试

场景1:未登录状态下,点击首页下的任意一条帖子内容

预期结果:跳转回登录界面

实际结果:跳转回登录界面,与预期结果一致。

场景2:登录状态下,点击“我的帖子”

预期结果:下方显示该登录用户的所有帖子信息

实际结果:与预期相符。

个人博客论坛系统测试报告_第15张图片

个人博客论坛系统测试报告_第16张图片

场景3:登录状态下,点击“个人中心”

预期结果:下方显示该登录用户的所有信息

实际结果:与预期相符。

个人博客论坛系统测试报告_第17张图片

场景4:登录状态下,“修改头像”

预期结果:打开 电脑,上传本地图片并更新头像。

实际结果:打开电脑,上传本地图片,但是没有反应。与预期不符。(不支持修改头像)

场景5:登录状态下,“修改昵称”

预期结果:输入修改后的昵称,并刷新成功

实际结果:与预期一致。

场景5:登录状态下,“修改密码”:原密码错误,新密码和确认密码一致,点击修改密码

预期结果:给出警告提示:原密码有误。

实际结果:输出后端具体代码信息,与预期不一致。

个人博客论坛系统测试报告_第18张图片

场景6:登录状态下,“修改密码”:原密码正确,新密码和确认密码不一致,点击修改密码

预期结果:给出警告提示:两次输入的密码不一致。

实际结果:与预期一致。

个人博客论坛系统测试报告_第19张图片

场景7:登录状态下,“修改密码”:原密码正确,新密码和确认密码一致,点击修改密码

预期结果:跳转回登录界面,要求重新登录

实际结果:与预期一致。

 ......

这里只给出部分测试,其他功能测试就不一一展示了。

2、自动化测试

注册页面测试

验证注册成功的情况

场景1:注册用户名在数据库不存在,昵称,两次密码一致,注册成功,跳转回登录界面。

/**
     * 场景1:不存在的用户名,昵称,两次密码一致
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource(value = "apple,apple,123,123")
    void Register(String username, String nickname,String password1,String password2) throws InterruptedException, IOException {
        // 打开注册页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        //点击注册按钮
        webDriver.findElement(By.cssSelector("body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入昵称
        webDriver.findElement(By.cssSelector("#nickname")).sendKeys(nickname);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password1);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 确认密码
        webDriver.findElement(By.cssSelector("#passwordRepeat")).sendKeys(password2);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //点击复选框
        webDriver.findElement(By.cssSelector("#policy")).click();
        // 点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(1000); // 显示等待
        // 注册成功之后,判断是否会跳转回登录界面
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        // 进行截图,看当前是否跳转到了登录界面
        webDriver.manage().timeouts().implicitlyWait(300, TimeUnit.MINUTES);
        Assertions.assertEquals(expect, actual);
        System.out.println("注册成功");
        // 进行截图,看当前是否跳转到了登录界面
        // 程序执行的速度和页面渲染的速度
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "RegisterTest.png";
        FileUtils.copyFile(srcFile, new File(fileName));
        Thread.sleep(1000); // 显示等待
        //因为我们要测试多个账号,所有在一个账号检测完了后,还需要回退到登录界面
        webDriver.navigate().back();
    }

个人博客论坛系统测试报告_第20张图片

验证注册失败的情况

场景2:注册用户名在数据库存在,昵称,两次密码一致,注册失败,获取警告框信息。

代码同上。测试结果

个人博客论坛系统测试报告_第21张图片

登录界面测试

登录成功测试

场景1:测试用户名正确,密码正确,登录成功

/**
     * 场景1:用户名和密码都正确
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void Login1(String username, String password) throws InterruptedException, IOException {
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        Thread.sleep(1000); // 显示等待,等待弹窗出现
        // 上述步骤只是说明输入了账号和密码,但还不知道点击提交后是否会跳转到博客列表页
        String expect = "http://124.71.152.247:8081/index.html";
        String actual = webDriver.getCurrentUrl();//
//        // 进行截图,看当前是否跳转到了登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual); // 查看当前的url是否在博客详情页面
        // 进行截图,看当前是否跳转到了登录界面
        // 程序执行的速度和页面渲染的速度
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "loginTest.png";
        FileUtils.copyFile(srcFile, new File(fileName));
        Thread.sleep(1000); // 显示等待,等待弹窗出现
        //因为我们要测试多个账号,所有在一个账号检测完了后,还需要回退到登录界面
        webDriver.navigate().back();
    }

个人博客论坛系统测试报告_第22张图片

登录失败测试

场景2:测试用户名正确,密码错误,登录失败

@Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry1, 123")
    void Login2(String username, String password) throws InterruptedException, IOException {
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        Thread.sleep(1000);
        String msg = webDriver.findElement(By.cssSelector("body > div.jq-toast-wrap.bottom-right > div")).getText();
        System.out.println(msg);
    }

显示博客列表测试

未登录状态下测试

场景1:未登录状态下进入博客列表页,直接跳转回登录界面。测试通过。

/**
     * 场景1:未登录状态下,进入博客列表页,是否跳转回登录页面
     */
    @Order(1)
    @Test
    void BlogList1() throws InterruptedException, IOException {
        //1-不登录,直接打开博客显示列表页
        webDriver.get("http://124.71.152.247:8081/index.html");
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        //判断是否跳转到登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);
        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "BlogListFailed.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

未登录,直接跳转回登录界面

个人博客论坛系统测试报告_第23张图片

登录状态下测试

场景2:登录后进入博客列表页,查看“首页”元素是否存在,查看是否含有“发布帖子”按钮。

 /**
     * 场景2:登录状态下,进入博客列表页,是否正确显示帖子相应的控件信息
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void BlogList2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        //2-查看页面的文本内容显示是否正确
        String expect1 = "首页";
        System.out.println();
        String actual1 = webDriver.findElement(By.cssSelector("#nav_board_index > a > span.nav-link-title")).getText();
        Assertions.assertEquals(expect1, actual1); // 断言

        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "BlogListSuccess.png";
        FileUtils.copyFile(srcFile, new File(fileName));

        //3-查看是否有发布帖子按钮,并点击
        webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post")).click();
Thread.sleep(1000);
        //查看是否跳转到博客编辑页面
        String expectUrl = "http://124.71.152.247:8081/index.html";
        String actualUrl = webDriver.getCurrentUrl();
        Assertions.assertEquals(expectUrl, actualUrl); // 断言
        System.out.println("跳转到边界帖子页面");

    }

个人博客论坛系统测试报告_第24张图片

 发布帖子测试

未登录状态下测试

场景1:未登录状态下发布帖子,直接跳转回登录界面。

 /**
     * 场景1:未登录状态下,是否跳转回登录页面
     */
    @Order(1)
    @Test
    void WriteBlog1() throws InterruptedException, IOException {
        //1-不登录,直接打开博客编辑页
        webDriver.get("http://124.71.152.247:8081/index.html");
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        //判断是否跳转到登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);
        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "WriteBlogFailed.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

登录后测试

场景2:登录后,输入帖子标题,不输入帖子内容,点击发布按钮,给出提示信息。

/**
     * 场景2:登录状态下
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 321")
    void WriteBlog2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        //场景2:输入标题,内容为空,点击发布帖子按钮,获取警告信息
        //2-点击 发布帖子按钮#article_post_submit
        webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post")).click();
        //场景1:输入标题
        webDriver.findElement(By.cssSelector("#article_post_title")).sendKeys("标题");
        Thread.sleep(1000);
        //不输入内容
        //点击提交按钮
        webDriver.findElement(By.cssSelector("#article_post_submit")).click();
        //获取警告框信息
        System.out.println(webDriver.findElement(By.cssSelector("body > div.jq-toast-wrap.bottom-right > div")).getText());

        // 截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "WriteBlogFailed.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

个人博客论坛系统测试报告_第25张图片

帖子详情页测试

未登录状态下

场景1:未登录状态下,进入帖子详情页,直接跳转回登录界面。

/**
     * 场景1:未登录状态下,进入博客详情页,是否跳转回登录页面
     */
    @Order(1)
    @Test
    void BlogDetail1() throws InterruptedException, IOException {
        //1-不登录,直接打开博客详情页
        webDriver.get("http://124.71.152.247:8081/index.html");
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        //判断是否跳转到登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);
        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "BlogListFailed.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

登录状态下

/**
     * 场景2:登录状态下,进入博客详情页,是否正确显示对应帖子的信息
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void BlogList2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(5000);

//        2-场景1:点击帖子内容"西安",博客作者与登录作者不一致,只显示点赞按钮
        webDriver.findElement(By.cssSelector("#artical-items-body > div:nth-child(3) > div > div.col > div.text-truncate > a > strong")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.MINUTES);
        //是否跳转到 帖子详情页
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/index.html";
        String actual = webDriver.getCurrentUrl();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);
        //帖子详情页是否含有 帖子 标题
        System.out.println(webDriver.findElement(By.cssSelector("#details_article_content_title")).getText());
        Thread.sleep(5000);
        //帖子内容
        System.out.println(webDriver.findElement(By.cssSelector("#h1-u897Fu5B89u5927u5510u4E0Du591Cu57CE")).getText());
        Thread.sleep(1000);
        //帖子作者
        System.out.println(webDriver.findElement(By.cssSelector("#article_details_author_name")).getText());
        Thread.sleep(1000);
        //点赞按钮
        webDriver.findElement(By.cssSelector("#details_btn_like_count")).click();
        Thread.sleep(1000);
//        截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "BlogDetailSuccess1.png";
        FileUtils.copyFile(srcFile, new File(fileName));


        //2-场景2:点击帖子内容"测试",博客作者与登录作者一致,显示点赞按钮、编辑按钮,删除按钮
//        webDriver.findElement(By.cssSelector("#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong")).click();
//        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.MINUTES);
//        //是否跳转到 帖子详情页
//        //获取当前的url地址
//        String expect2 = "http://124.71.152.247:8081/index.html";
//        String actual2 = webDriver.getCurrentUrl();
//        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//        Assertions.assertEquals(expect2, actual2);
//        //帖子详情页是否含有 帖子 标题
//        System.out.println(webDriver.findElement(By.cssSelector("#details_article_content_title")).getText());
//        Thread.sleep(1000);
//        //帖子内容
//        System.out.println(webDriver.findElement(By.cssSelector("#details_article_content > p")).getText());
//        Thread.sleep(1000);
//        //帖子作者
//        System.out.println(webDriver.findElement(By.cssSelector("#article_details_author_name")).getText());
//        Thread.sleep(1000);
//        //点赞按钮
//        webDriver.findElement(By.cssSelector("#details_btn_like_count")).click();
//        //编辑按钮
//        webDriver.findElement(By.cssSelector("#details_artile_edit"));
//        //删除按钮
//        webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-body > div > div > div:nth-child(1) > div.col-9.card.card-lg > div.card-footer.bg-transparent.mt-auto.justify-content-end > div > div:nth-child(3) > div > a"));
//        Thread.sleep(1000);
//        System.out.println("测试成功2");
//
//        //截图
//        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
//        String fileName = "BlogDetailSuccess2.png";
//        FileUtils.copyFile(srcFile, new File(fileName));
    }

场景1:登录后,登录用户与帖子作者不一致,获取帖子标题、帖子内容、帖子作者、点赞按钮。

个人博客论坛系统测试报告_第26张图片

个人博客论坛系统测试报告_第27张图片

 场景2:登录后,登录用户与帖子作者一致,获取帖子标题、帖子内容、帖子作者、点赞按钮、编辑按钮、删除按钮。

个人博客论坛系统测试报告_第28张图片

个人博客论坛系统测试报告_第29张图片

删除帖子测试

登录状态下测试

场景:登录后,进入帖子详情页,点击删除按钮,删除帖子成功,成功跳转回帖子列表页面。

 /**
     * 场景2:登录状态下,进入博客详情页,是否正确显示对应帖子的信息,点击删除按钮并删除
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void BlogList2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 点击提交
        webDriver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(5000);


        //2-场景2:点击帖子内容"测试",博客作者与登录作者一致,显示点赞按钮、编辑按钮,删除按钮
        webDriver.findElement(By.cssSelector("#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.MINUTES);
        //是否跳转到 帖子详情页
        //获取当前的url地址
        String expect2 = "http://124.71.152.247:8081/index.html";
        String actual2 = webDriver.getCurrentUrl();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect2, actual2);
        
        //删除按钮
        webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-body > div > div > div:nth-child(1) > div.col-9.card.card-lg > div.card-footer.bg-transparent.mt-auto.justify-content-end > div > div:nth-child(3) > div > a")).click();
        Thread.sleep(1000);
        //判断是否跳转回博客列表页面
        //是否跳转到 帖子详情页
        //获取当前的url地址
        String expect1 = "http://124.71.152.247:8081/index.html";
        String actual1 = webDriver.getCurrentUrl();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect1, actual1);
        System.out.println("帖子删除成功");

        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "BlogDeleteSuccess1.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

个人博客论坛系统测试报告_第30张图片

个人博客论坛系统测试报告_第31张图片

个人中心显示

未登录测试

未登录状态下,进入博客列表页,点击我的帖子(都走不到这一步),跳转回登录页面。

登录状态下测试

场景:登录状态下,进入博客列表页,点击我的帖子,跳转到个人中心页面,显示用户昵称等信息。

/**
     * 场景2:登录状态下,进入博客列表页,点击我的帖子,跳转到个人中心页面
     */
    @Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void BlogList2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        //2-点击我的帖子
        webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();
        Thread.sleep(1000);
        webDriver.findElement(By.cssSelector("#index_user_profile")).click();
        Thread.sleep(1000);
        //是否有用户昵称
        webDriver.findElement(By.cssSelector("#profile_nickname"));

        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "CenterInfoSuccess.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

个人博客论坛系统测试报告_第32张图片

个人博客论坛系统测试报告_第33张图片

显示个人信息并修改

未登录测试

场景1:未登录状态下,进入博客列表页,点击用户头像下的个人中心(都走不到这一步),跳转回登录页面。

登录显示个人信息测试

场景2:登录后点击用户头像下的个人中心,输入新昵称并修改,获取新昵称观察是否显示成功。

场景3:登录后点击用户头像下的个人中心,输入新密码并修改,其中两次密码一致,输入原密码也正确,观察是否跳转回登录界面。

@Order(2)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void BlogList2(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        //2-点击我的帖子
        webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();
        Thread.sleep(1000);
        webDriver.findElement(By.cssSelector("#index_user_settings")).click();
        Thread.sleep(1000);
        //是否有用户昵称
        webDriver.findElement(By.cssSelector("#settings_nickname"));
        //是否有“昵称”这两个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(4)"));
        //是否有“邮箱地址”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(7)"));
        //是否有“电话号码”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(10)"));
        //是否有“修改密码”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(13)"));

        //是否有“提交修改”按钮#settings_input_passwordRepeat
        webDriver.findElement(By.cssSelector("#settings_submit_password"));
        Thread.sleep(1000);
        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "CenterInfoListSuccess.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

个人博客论坛系统测试报告_第34张图片

个人博客论坛系统测试报告_第35张图片

 登录后修改昵称测试

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class CenterInfoListTest extends InitAndEnd {
    /**
     * 场景1:用户名和密码都正确
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource(value = "cherry, 123")
    void Login1(String username, String password) throws InterruptedException, IOException {
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);
    }
    /**
     * 场景2:登录状态下,进入博客列表页,点击个人中心,跳转到个人中心页面
     */
    @Order(2)
    @Test
    void BlogList2() throws InterruptedException, IOException {
        //2-点击我的帖子
        webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();
        Thread.sleep(1000);
        webDriver.findElement(By.cssSelector("#index_user_settings")).click();
        Thread.sleep(1000);
        //是否有用户昵称
        webDriver.findElement(By.cssSelector("#settings_nickname"));
        //是否有“昵称”这两个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(4)"));
        //是否有“邮箱地址”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(7)"));
        //是否有“电话号码”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(10)"));
        //是否有“修改密码”这几个字
        webDriver.findElement(By.cssSelector(" #bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > h3:nth-child(13)"));

        //是否有“提交修改”按钮#settings_input_passwordRepeat
        webDriver.findElement(By.cssSelector("#settings_submit_password"));
        Thread.sleep(1000);
        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "CenterInfoListSuccess1.png";
        FileUtils.copyFile(srcFile, new File(fileName));

        //3-修改昵称
        //清除昵称的文本内容
        webDriver.findElement(By.cssSelector("#setting_input_nickname")).clear();
        //输入要修改的内容
        webDriver.findElement(By.cssSelector("#setting_input_nickname")).sendKeys("newCherry");
        //点击修改按钮
        webDriver.findElement(By.cssSelector("#setting_submit_nickname")).click();
        Thread.sleep(1000);
        //再次获取昵称,判断是不是修改后的昵称名
        String actualNickName = webDriver.findElement(By.cssSelector("#settings_nickname")).getText();
        Thread.sleep(1000);
        String exceptNickName = "newCherry";
        Assertions.assertEquals(actualNickName, exceptNickName); // 断言
        System.out.println("昵称修改成功!");

        //截图
        File srcFile1 =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName1 = "CenterInfoListSuccess2.png";
        FileUtils.copyFile(srcFile1, new File(fileName1));
    }
}

个人博客论坛系统测试报告_第36张图片

个人博客论坛系统测试报告_第37张图片

 登录后修改密码测试

//4-修改密码:原密码123正确,两次新密码321也一致
        //输入原密码
        webDriver.findElement(By.cssSelector("#settings_input_oldPassword")).sendKeys("123");
        //输入新密码
        webDriver.findElement(By.cssSelector("#settings_input_newPassword")).sendKeys("321");
        //输入确认密码
        webDriver.findElement(By.cssSelector("#settings_input_passwordRepeat")).sendKeys("321");
        //点击 提交修改 按钮
        webDriver.findElement(By.cssSelector("#settings_submit_password")).click();
        Thread.sleep(1000);
        //判断是否返回登录界面
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        //判断是否跳转到登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);
        //截图
        File srcFile2 =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName2 = "CenterInfoListSuccess3.png";
        FileUtils.copyFile(srcFile2, new File(fileName2));

退出测试

场景:登录后,点击用户头像下的退出按钮,跳转回登录界面,退出成功。

 @Order(1)
    @ParameterizedTest
    @CsvSource(value = "cherry, 321")
    void LoginOut1(String username, String password) throws InterruptedException, IOException {
        //1-登录
        // 打开登录页面
        webDriver.get("http://124.71.152.247:8081/sign-in.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 输入密码
        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.MINUTES);

        //2-点击我的帖子
        webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();
        Thread.sleep(1000);
        //点击退出按钮
        webDriver.findElement(By.cssSelector("#index_user_logout")).click();
        Thread.sleep(1000);
        //获取当前的url地址
        String expect = "http://124.71.152.247:8081/sign-in.html";
        String actual = webDriver.getCurrentUrl();
        //判断是否跳转到登录界面
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(expect, actual);

        //截图
        File srcFile =  ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        String fileName = "LoginOutSuccess.png";
        FileUtils.copyFile(srcFile, new File(fileName));
    }

个人博客论坛系统测试报告_第38张图片

3、性能测试

对登录界面进行性能测试。

VUG录制脚本 

Action()
{

	web_url("sign-in.html", 
		"URL=http://124.71.152.247:8081/sign-in.html", 
		"Resource=0", 
		"Referer=", 
		"Snapshot=t1.inf", 
		"Mode=HTML", 
		EXTRARES, 
		"Url=/sign-in.html", ENDITEM, 
		LAST);

	web_add_cookie("__huid=119NsjOYxU6mdbuaWxJs2RsDkAbqvUbWoATer/xQupFzE=; DOMAIN=cloud.browser.360.cn");

	lr_think_time(7);

	web_custom_request("sea", 
		"URL=http://cloud.browser.360.cn/hp/sea", 
		"Method=POST", 
		"Resource=0", 
		"Referer=", 
		"Snapshot=t2.inf", 
		"Mode=HTML", 
		"EncType=text/plain", 
		"Body=WQF5sG2A3G87Di1j/9lVU6tGpUxjbi8h9dOSKi0nx0bBqI3NhNjo%2BhJjBEgGG7vJpmWkPaE8H7VriNz9f/uQIcxcAQMslbR5BrNQFX%2BaLkMlu51TJYzYI03Ix9kMz7AGv5atKy3kF9YF86MaiowJ%2B88BdH2zke9LfjkSSOnDIB9pCrQEMhm%2BWy2gk8ziS7Izk7GF/IvqUyc5GvTM4PFYu3hjejRzs4fV", 
		LAST);

	web_custom_request("safe_update", 
		"URL=http://vconf.f.360.cn/safe_update", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/octet-stream", 
		"Referer=", 
		"Snapshot=t3.inf", 
		"Mode=HTML", 
		"BodyBinary=\\x0E\\x06$!\\x01\\x08$\\xB8j\\xC4\\x00\\x00\\x00\\x00\\xF8\\xD7\\xFB\\xE5\\xFD\\x9A/\\xC2&\\x90\\x94$N\\x85R\\x1Br$2>b\\xB8\\x84\\xE5\\xE6\\xF8\\x18\\xF2\\xC1,\\x88\\xFC\t\\xF9\\x84\\xB1Ls)q\n\\x05\\x8Bw\\x8B,\\x066\\xE1\\xE50\\x11\\xB9\\xAF\\xD5!\\x18\\x14\\x8C,\\x86I_\\x1C\\xE81\\xFAE\\xB8L\\xD0\\x95\\x03\\x8E\\xCB\\xB9}\\xFCi,\\x18F\\xAD\\xF4\r\\x82'IqH\\xFD\\xF8\\x0CIe\\x84\\x1B\\xF8\\x00\\x9C\\x0Be]"
		"#\\xD0f\\x82\\xA6\\xE2c\\x7F\\xCC\\xC9.\\xE2\\x03\\xDB\\xBF\\xF5\\xBF3Mfu\\xF2\\xF2Hz\\x1B\\x02M\\xB7;\\xC9U\\xF9\\xED\\x90\\x06\\xB7\\x19\\xA1\\x96\\x98S\\xCF\\xB2\\x00LO\"\\xDD\\xD4S\\x11Zp\\xB1\\x9B\\x7F\\xDA\\x9C\\x03|\\x9B\\xCB\\xE9\\x96-T.3\\xF4\\xF8\\xE7O2DK\\x00\\xA0J\\xC5\\x06\\x9Cb \\xC8\\xA8\\xDF\\xBB3\\xA5\\x82\\x902\\x82\\xF4\\xB7nH\\x90\\xCAN<\\x07\\xC0\\x074l>4=\\x12\\x8D\\x8E9\\xDB}\\xA7\\xDA\\x05e\\x085V^#~\\x03%\\x07\\xD0\\xD4N\\x9C\\x98b\\x93g\\x84z\\xE2"
		"[x\\xB3E\\x10\\xDA\\x86w3fpk:\\x0E?B?_\\xF9\\xBB\\x8D(@\\xE9\\x1D\\x02D\\xFB\\xEC\\xFE\\xE8\\xA88\\xB6-\\xBA$6\\x8D\\x00\\x04\\xBC\\x06\\xFFN", 
		EXTRARES, 
		"Url=http://t.wg.360-api.cn/api/helpgame?app=hotrank", "Referer=", ENDITEM, 
		"Url=http://t.wg.360-api.cn/ap/tips/browse?cver=&mid=9584dcf1d21227deae8dfc79c880b3cc", "Referer=", ENDITEM, 
		"Url=http://t.wg.360-api.cn/ap/tips/guess?sence=browse_ai&mid=9584dcf1d21227deae8dfc79c880b3cc&cver=9.1.2.1018&gver=", "Referer=", ENDITEM, 
		"Url=http://cseupdate.360safe.com/formal/360chrome.cab?ver=13.5.2044.0&mid=9584dcf1d21227deae8dfc79c880b3cc&guid=9584dcf1d21227deae8dfc79c880b3cc&pid=360CE", "Referer=", ENDITEM, 
		LAST);

	web_add_cookie("__huid=11jHmC5E3q3/A2xfpl7ar/4QDK+68TzjQe82izYITuvsI=; DOMAIN=browser.360.cn");

	web_custom_request("crx_game_2.html", 
		"URL=http://browser.360.cn/se/config/crx_game_2.html", 
		"Method=GET", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t4.inf", 
		"Mode=HTML", 
		LAST);

	web_add_cookie("__huid=11jHmC5E3q3/A2xfpl7ar/4QDK+68TzjQe82izYITuvsI=; DOMAIN=cloud.browser.360.cn");

	web_submit_data("info", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t5.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=459029", ENDITEM, 
		"Name=sitedata", "Value=6f1751515d170703091e5156591a1b6d", ENDITEM, 
		LAST);

	web_submit_data("info_2", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t6.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=224189", ENDITEM, 
		"Name=sitedata", "Value=691005030c1705031a000d0b1c0000060201020a051e4b50555c195856175a46595d1a64", ENDITEM, 
		LAST);

	web_submit_data("info_3", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t7.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=112784", ENDITEM, 
		"Name=sitedata", "Value=6a1303000a1a03051c050b071f0006040205010903184f5153655d424a471e136f", ENDITEM, 
		LAST);

	web_submit_data("info_4", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t8.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=774065", ENDITEM, 
		"Name=sitedata", "Value=6c150507041b05031a020506190600030c04070f041f415055635b454446156a", ENDITEM, 
		LAST);

	web_submit_data("info_5", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t9.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=587854", ENDITEM, 
		"Name=sitedata", "Value=6e1a5051415c405a195b5a591a5355425d555b5f070d05011765", ENDITEM, 
		LAST);

	web_submit_data("info_6", 
		"Action=http://cloud.browser.360.cn/site/info", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/plain", 
		"Referer=", 
		"Snapshot=t10.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=rn", "Value=314153", ENDITEM, 
		"Name=sitedata", "Value=6813585e56525f595b4241090b010c001a77565c5b076a7f5c565d5f7c5d116c", ENDITEM, 
		EXTRARES, 
		"Url=http://t.wg.360-api.cn/ap/bar/pull?mid=9584dcf1d21227deae8dfc79c880b3cc&cver=", "Referer=", ENDITEM, 
		LAST);

	lr_start_transaction("1_login");

	web_add_cookie("__huid=11jHmC5E3q3/A2xfpl7ar/4QDK+68TzjQe82izYITuvsI=; DOMAIN=upext.chrome.360.cn");

	lr_think_time(8);

	web_url("intf.php", 
		"URL=http://upext.chrome.360.cn/intf.php?method=ExtUpdate.query&os=win&arch=x86&os_arch=x86_64&nacl_arch=x86-64&prod=chromiumcrx&prodchannel=stable&prodversion=86.0.4240.198&lang=zh-CN&acceptformat=crx2,crx3&cse=13.5.2044.0&x=id%3Dcfbkpilajlmedibkjkhcckpkpphhhklm%26v%3D1.3.1%26installsource%3Dnotfromwebstore%26installedby%3Dinternal%26uc", 
		"Resource=0", 
		"RecContentType=text/xml", 
		"Referer=", 
		"Snapshot=t11.inf", 
		"Mode=HTML", 
		LAST);

	lr_think_time(8);

	web_submit_data("login", 
		"Action=http://124.71.152.247:8081/user/login", 
		"Method=POST", 
		"RecContentType=application/json", 
		"Referer=http://124.71.152.247:8081/sign-in.html", 
		"Snapshot=t12.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=username", "Value=apple", ENDITEM, 
		"Name=password", "Value=123", ENDITEM, 
		LAST);

	web_url("index.html", 
		"URL=http://124.71.152.247:8081/index.html", 
		"Resource=0", 
		"Referer=http://124.71.152.247:8081/sign-in.html", 
		"Snapshot=t13.inf", 
		"Mode=HTML", 
		EXTRARES, 
		"Url=/user/info", ENDITEM, 
		"Url=/board/topList", ENDITEM, 
		"Url=/message/getUnreadCount", ENDITEM, 
		"Url=/message/getAll", ENDITEM, 
		"Url=/article/getAllByBoardId", ENDITEM, 
		LAST);

	web_url("article_list.html", 
		"URL=http://124.71.152.247:8081/article_list.html", 
		"Resource=0", 
		"Referer=http://124.71.152.247:8081/index.html", 
		"Snapshot=t14.inf", 
		"Mode=HTML", 
		LAST);

	lr_end_transaction("1_login",LR_AUTO);

	return 0;
}

个人博客论坛系统测试报告_第39张图片

个人博客论坛系统测试报告_第40张图片

 脚本录制通过

设置10个虚拟用户数量,防止电脑崩溃。 

个人博客论坛系统测试报告_第41张图片

使用Controller 

(1)创建性能测试场景

一次初始化一个用户,每次间隔15s初始化一个虚拟用户;

个人博客论坛系统测试报告_第42张图片

设置虚拟用户数量10个,每隔10S启动一个用户;

 个人博客论坛系统测试报告_第43张图片

运行5分钟;

 个人博客论坛系统测试报告_第44张图片

退出所有用户,每隔10s退出一个用户。

 个人博客论坛系统测试报告_第45张图片

 (2)点击运行,启动场景个人博客论坛系统测试报告_第46张图片

运行过程截图

个人博客论坛系统测试报告_第47张图片

结束截图  

个人博客论坛系统测试报告_第48张图片

 生成测试报告

个人博客论坛系统测试报告_第49张图片

  • 虚拟用户数为10:测试中使用了10个虚拟用户。
  • 点击率为2928:在一定时间内发生的点击次数。测试中出现了2928次点击。
  • 吞吐量为112738:系统在单位时间内处理的请求数量,测试期间处理了112738个请求。
  • 标准差为23.316:系统不够稳定,后续应进一步优化系统以降低标准差,提高系统的可靠性和稳定性。

 点击率:刚开始启动,点击率较少,后面慢慢开始增大。个人博客论坛系统测试报告_第50张图片

吞吐量:点击数越多,要处理的数量就越多,和上图的趋势相似。

个人博客论坛系统测试报告_第51张图片


个人博客论坛系统测试报告_第52张图片

你可能感兴趣的:(测试学习,java,tomcat,maven,spring)