• 博客之站项目测试报告


    项目介绍

    项目描述:博客之站基于SpringBoot、SpringMVC、Mybatis、Redis等开发的前后端分离个人博客网站
    项目功能:未登录用户能邮箱注册、查询账号、修改密码、查看博客,已登录用户能上传头像和博客增删改查等
    项目特点:1.安全验证方面,使用拦截器和验证码进行登录校验、对用户密码进行加盐加密处理
                      2.用户体验方面,使用分页算法进行文章管理、对响应数据进行统一返回和统一异常处理
                      3.缓存管理方面,将文章信息、用户会话信息缓存在Redis,提供更可靠的缓存服务
    访问地址http://8.138.106.205:8083/login.html
    源码地址https://gitee.com/liaoyu111/liaoyuwang/tree/master/mayun/javaeemax/myblog1_ssm

    功能测试

    1:测试环境

    操作系统:Linux
    项目运行环境:Tomcat8.0、JDK1.8、MySQL5.7、Redis3.2.12
    浏览器:Chorme、Edge
    自动化脚本环境:IIntelliJ IDEA Community Edition 2022.1.4
    访问链接http://8.138.106.205:8083/login.html
    测试内容: 功能测试、自动化测试、性能测试
    测试人员: while(true)energy++;

    2:测试用例编写

    进行测试用例设计需要用到前面学习的设计测试用例方法

    2.1注册功能

    在这里插入图片描述
    如果测试需求是要涵盖各种输入情况的组合;需要使用正交表法进行组合设计。

    2.2修改密码功能

    在这里插入图片描述

    2.3查询用户名功能

    在这里插入图片描述

    2.4登录功能

    在这里插入图片描述
    一键登录体验功能:
    在这里插入图片描述

    2.5上传头像功能

    在这里插入图片描述

    2.6增删查改功能

    在这里插入图片描述

    2.7各页面超链接

    在这里插入图片描述

    2.8分页功能

    在这里插入图片描述

    2.9流程测试

    在这里插入图片描述

    兼容性测试

    在这里插入图片描述

    执行测试用例:

    1.不同型号浏览器

    在这里插入图片描述

    2.多开兼容情况

    测试结果:不符合预期;未同步显示
    在这里插入图片描述

    3.手机浏览器和微信打开

    符合预期;功能能正常使用;样式显示不兼容

    在这里插入图片描述

    4.弱网兼容情况

    在这里插入图片描述在这里插入图片描述
    测试结果:文章增删改查功能正常;效率会相对低下

    性能测试

    测试需求:使用loadrunner针对登录功能进行简单的性能测试。

    VUG脚本录制:脚本代码如下

    
    Action()
    {
    	web_add_cookie("__gid=163927082.426124051.1675752843330.1691198028644.36; DOMAIN=cloud.browser.360.cn");
    
    	web_add_cookie("__huid=11QlzD0PuYIl3lGb2tKKo6bifDRQapO1Qx8/9cbakwitA=; DOMAIN=browser.360.cn");
    	web_add_cookie("__guid=86555407.1501631019656299800.1702790766713.4797; DOMAIN=browser.360.cn");
    	web_add_cookie("sensorsdata2015jssdkcross="
    		"%7B%22distinct_id%22%3A%2218c763d21b820c-071948b0fcd6ea-77283e4e-2073600-18c763d21b914c%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E5%90%88%E9%87%91%E5%BC%B9%E5%A4%B4%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fwww.so.com%2Fs%3Fq%3D%E5%90%88%E9%87%91%E5%BC%B9%E5%A4%B4%26src%3Dsrp%26ssid%3D%26fr%3D360chrome_newtab_isearch%26sp%3Da95%26cp%3D0a2a540026%26"
    		"psid%3D36e54203ecda7b82a3804cccd8bb7ae4%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMThjNzYzZDIxYjgyMGMtMDcxOTQ4YjBmY2Q2ZWEtNzcyODNlNGUtMjA3MzYwMC0xOGM3NjNkMjFiOTE0YyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%2218c763d21b820c-071948b0fcd6ea-77283e4e-2073600-18c763d21b914c%22%7D; DOMAIN=browser.360.cn");
    
    	web_add_cookie("Qs_lvt_499567=1702790767; DOMAIN=browser.360.cn");
    
    	web_add_cookie("Qs_pv_499567=4292589718217642000; DOMAIN=browser.360.cn");
    
    	lr_think_time(6);
    	lr_think_time(11);
    //   lr_log_message("插入集合点");
    //   lr_rendezvous("rendezous1");
       lr_log_message("事务开始");
       lr_start_transaction("login");
    	web_submit_data("loginzhangsan", 
    		"Action=http://8.138.106.205:8083/user/loginzhangsan", 
    		"Method=POST", 
    		"RecContentType=application/json", 
    		"Referer=http://8.138.106.205:8083/login.html", 
    		"Snapshot=t14.inf", 
    		"Mode=HTML", 
    		ITEMDATA, 
    		"Name=username", "Value=zhangsan", ENDITEM, 
    		"Name=password", "Value=12345678", ENDITEM, 
    		"Name=code_input", "Value=12345", ENDITEM, 
    		LAST);
    	lr_end_transaction("login", LR_AUTO);
    	lr_log_message("事务结束");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    运行结果:
    在这里插入图片描述

    Controller并发场景设计:
    1.自定义场景;设置15个虚拟用户
    在这里插入图片描述
    2.设置用户数运行状态
    在这里插入图片描述

    3.运行结果
    在这里插入图片描述

    Analysis生成测试报告:
    在这里插入图片描述

    点击率:在一定时间内发生的点击次数。刚启动比较少;慢慢增大。
    在这里插入图片描述

    吞吐量:统在单位时间内处理的请求数量;在系统的承受范围内点击越多;单位时间处理的数量越多;和上图趋势相似

    在这里插入图片描述
    总结:在并发量较低的情况;平均2秒进行一个用户登录的操作;系统的处理响应能力和各方面性能都是比较高效和稳定。

    升级自动化测试

    自动化测试;我们需要一个特殊的测试账号;这个账号就无视验证码的验证;不然流程很难顺畅的执行。所以我们创建一个用户名:Test 密码:12345678;在代码层面对这个账号放行。

    设计思路
    1:针对登录核心流程设计测试用例(手工测试:核心流程可能测试起来非常久;出问题修完还得手工重测)
    2:将手工测试用例转换成自动化测试用例。登录流程:打开浏览器、输入测试账号和密码、点击登录、验证是否跳转到列表页(对比URL是否一样&&用户名信息是不是Test)
    3:代码结构;使用测试套件;BeforeAll:创建驱动 AfterAll:退出浏览器

    登录功能自动化脚本实现
    1:创建WebDriver对象;通过这个对象控制浏览器
    在这里插入图片描述

    2:参数化设置
    在这里插入图片描述

    3:脚本代码实现

    package myBlog;
    
    import org.junit.jupiter.api.*;
    import org.junit.jupiter.params.ParameterizedTest;
    import org.junit.jupiter.params.provider.CsvFileSource;
    import org.openqa.selenium.By;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    public class BlogCases extends InitAndEnd {
        @ParameterizedTest
        @CsvFileSource(resources ="LoginSuccess.csv")
        void LoginSuccess(String username, String password, String blog_list_url) throws InterruptedException {
            // 打开博客登录页面
            //webDriver.get("http://localhost:8083/myblog_list.html");
            webDriver.get("http://8.138.106.205:8083/login.html");
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            // 输入账号Test
            webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            //输入密码12345678
            webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            // 点击提交按钮
            webDriver.findElement(By.cssSelector("#submit")).click();
            Thread.sleep(1000);
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            //跳转到个人博客列表页;获取到当前页面url
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
             String cur_url    = webDriver.getCurrentUrl();
            // 如果url=http://localhost:8083/myblog_list.html,测试通过,否则测试不通过
            System.out.println(blog_list_url);
            System.out.println(cur_url);
            Assertions.assertEquals(blog_list_url, cur_url);
            // 展示用户信息的用户名是Test测试通过,否则测试不通过
            webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            String cur_Test = webDriver.findElement(By.xpath("//*[@id=\"author2\"]")).getText();
            System.out.println(cur_Test);
            System.out.println(username);
            Assertions.assertEquals(username, cur_Test);
    
        }
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    测试结果:url、用户名与预期结果一致
    在这里插入图片描述

    Bug总结

    这得运用我们前面学习的知识;如何描述一个Bug?
    软件测试基础
    bug1:
    1:版本;v5.0版本
    2:环境;Microsoft Edge、Google Chrome
    3:操作步骤;在Microsoft Edge和Google Chrome同时登录zhangsan账号;在Google Chrome进行文章添加
    4:执行结果;Microsoft Edge需要手动刷新才能显示添加文章结果
    5:预期结果;Microsoft Edge能同步显示添加文章结果
    6:bug优先级;次要

  • 相关阅读:
    超越 Transformer开启高效开放语言模型的新篇章
    react-native 打包报错 android-gradle-plugin-requires-java-11
    mysql的redo和undo-log
    EF Core: 使用AsNoTracking减少内存调用 / 实体跟踪的技巧
    Spring综述
    21天学会C++:Day10----类的默认成员函数
    认识border
    notepad++用于编写c#语言默认语言为.cs格式
    怎么把heic改成jpg?方法大全在这里
    Linux:zip包的压缩与解压
  • 原文地址:https://blog.csdn.net/m0_64254651/article/details/132651109