首页 > 其他分享 >【测试】博客系统测试报告

【测试】博客系统测试报告

时间:2024-09-22 18:48:26浏览次数:3  
标签:测试报告 self driver 博客 element 测试用例 测试

本次测试项目是本人基于其他同学所实现的博客系统展开的,在这篇文章中,我会祥述所以出现的测试问题,同时对测试进行全面的阐述。

项目概述

  • 项目背景

        博客对于 IT 技术人员而言,堪称必备的“日常利器”。它能够让技术人员详实记录在工作与学习进程中遭遇的各种技术难题,从而见证自身的成长轨迹。与此同时,还能显著增强其创造能力、写作水平以及思维的活跃度。

        这款博客系统能够便捷地实现登陆操作,清晰展示博客列表,精准呈现内容详情,并且支持创作博客等内容。凭借这些操作,足以满足技术人员的工作需求。

  • 项目目标
  1. 确保博客系统的登陆功能在各种场景下(如不同用户名和密码组合、网络状况)都能准确验证用户身份,登陆成功率达到99.99%
  2. 验证博客列表能够准确、快速地展示博客信息,加载时间不超过3秒,且排序和筛选功能正常无误。
  3. 保障博客详情页面能够完整、清晰地呈现博客内容,包括文字、图片、视频等元素。
  4. 确认博客编写功能操作便捷、流畅,各种编辑工具正常工作,保存博客的成功率达到100%
  5. 通过简单的性能测试,测试其响应时间。
  6. 对博客系统进行兼容性测试以及易用性测试。
  7. 编写自动化脚本,方便后续测试。
  • 项目功能
  1. 登陆界面:实现登陆功能,保障用户账号安全。
  2. 博客列表:清晰展示博客头像、作者、文章数量、文章标题、文章时间等信息。
  3. 博客详情:完整呈现博客内容、包括文字、图片、视频等功能。
  4. 博客编辑:配备丰富的编辑工具,支持排版、插入图片、markdown模式编写等操作

职责描述

1.深入理解博客系统的业务需求和功能特性,制定详细且全面的测试计划。

2.运用XMind梳理博客系统的需求,构建清晰的测试思维导图,制定详细全面的测试计划和策略。

3.使用Selenium编写自动化测试脚本,对博客系统的部分功能进行自动化测试,提高测试效率。

4.使用Postman工具针对后端接口进行了接口手工测试执行。

5.使用JMeter设计和执行性能测试。

测试人员

本次测试的人员仅为博主一人。

测试时间 

 [2024/8/20]——[2024/8/28]

测试过程中的工具介绍

  •  XMind:XMind是一款流行的思维导图软件,可以用于思维整理、项目规划、会议记录、知识管理、写作大纲、头脑风暴、学习笔记等,以便提高工作和学习的效率,增强创造力和记忆力。
  • jmeter:JMeter 是一款开源的性能测试工具,主要用于对 Web 应用程序和服务进行性能测试和负载测试。
  • selenium:Selenium 是一个用于 Web 应用程序自动化测试的强大工具。
  • postman:Postman 是一款直观易用、功能强大,支持多种 HTTP 请求方法、环境配置、测试脚本编写和集合管理,适用于 API 开发与测试的工具。

登陆界面

编写测试用例

bug查询

功能测试共有20条测试用例

bug1主页按钮
bug1级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版

问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、点击右上角页面按钮

预期结果弹出登陆对话框
实际结果在未登陆状态下,点击主页按钮后,会短暂出现主页内容,随即自动退出
bug2写博客按钮
bug2级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、点击右上角写博客按钮

预期结果弹出登陆对话框
实际结果在未登陆状态下,点击主页按钮后,会进入编辑页面

界面测试共有95条测试用例 

bug3按钮
bug3级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、点击提交按钮

预期结果按钮变换为另外一种颜色
实际结果按钮颜色不变

 

bug4窗口化界面
bug4级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、窗口化界面设置大小

预期结果窗口正常变换大小
实际结果窗口变换时候出现卡顿

 性能测试共有9条测试用例

兼容性测试共有17条测试用例

安全测试共有3条测试用例 

易用性测试共有7条测试用例 

bug用户名输入框未提示
bug级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

预期结果用户名输入框中显示提示信息
实际结果用户名输入框中未显示提示信息
bug登陆输入框未提示
bug级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

预期结果登陆输入框中显示提示信息
实际结果登陆输入框中未显示提示信息

网络测试共有3条测试用例

博客列表

编写测试用例  

bug查询

功能测试共有4条测试用例 

bug主页按钮
bug级别一般
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、输入账号密码

4、点击主页按钮

预期结果刷新主页
实际结果在长时间登陆详情界面的情况下,会退出列表

界面测试共有69条测试用例

bug文章汇总
bug级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、窗口化界面设置大小

预期结果文章汇总个数应该与文章具体数量相等
实际结果文章汇总个数不与文章数量相同

 性能测试共有9条测试用例

兼容性测试共有17条测试用例 

安全测试共有3条测试用例 

易用性测试共有3条测试用例 

bug行间距
bug级别次要
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、登陆

预期结果行间距问题
实际结果行间距过小

博客详情

编写测试用例 

 

bug查询 

 功能测试共有5条测试用例

bug退回主页
bug级别严重
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、登陆

4、随机点击一篇文章

预期结果退回到博客编辑页面
实际结果

在点击退回主页的时候,会出现俩种情况:

1.直接退出到登陆页面

2.显示白屏(即未退出博客详情页,也未进行博客列表页)

bug删除文章
bug级别一般
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、登陆

4、随机点击一篇文章

预期结果删除文章后,退出博客详情页
实际结果删除文章后,文章虽然删除,但是依旧停留在博客详情页

界面测试共有52条测试用例

bug删除按钮与编辑按钮
bug级别严重
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、登陆

4、随机点击一篇文章

预期结果每一篇文章都会存在删除按钮以及编辑按钮
实际结果部分文字中不会出现删除按钮和编辑按钮

性能测试共有9条测试用例

兼容性测试共有17条测试用例

安全测试共有1条测试用例

易用性测试共有3条测试用例

网络测试共有3条测试用例

博客编辑

编写测试用例 

功能测试共有10调测试用例

bug发布博客
bug级别严重
版本⾕歌浏览器版本 123.0.6312.123(正式版本) (64 位)
运行环境Windows家庭版
问题出现的步骤

1、打开谷歌浏览器,输⼊⽹址

2、等待⾸页页⾯渲染完成

3、登陆

4、编辑博客

预期结果发布文章后同步到列表页面
实际结果发布的文章无法同步到列表页面

界面测试共有3条测试用例

性能测试共有9条测试用例

 

兼容性测试共有17条测试用例

易用性测试共有1条测试用例

网络测试共有3条测试用例

接口测试

这里需要借助接口测试工具:postman

自动化测试

这里建议大家编写完所有的测试用例以及手动测试一遍之后进行自动化测试。

  • 设计自动化测试用例

  • 参考测试用例,创建自动化测试项目,编写自动化测试脚本

common包

  1. Utils.py 生成测试文件中需要用到的配置内容
import datetime
import os.path
import sys

from requests import options
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


# 创建一个浏览器对象
class Driver:
    driver = ""
    def __init__(self):
        options = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()),options = options)
    def getScreeShot(self):
        # 创建屏幕截图
        # 图片文件名称:2024-01-01-123456.png
        # 图片路径:../images/2024-01-01/2024-01-01-123456.png
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        # 判断dirname文件夹是否已经存在,若不存在则创建创建文件夹
        if os.path.exists("../images/" + dirname):#../images/2024-05-08
            os.mkdir("../images/" + dirname)
        # 2024 - 01 - 01 - 123456.png
        filename = sys.getframe().f_back.fcode.co_name + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"
        self.driver.save_screenshot("../images/" + dirname + "/" + filename)
BlogDriver = Driver()

tests包

1.BlogLoginTest.py 博客登陆页面相关测试用例

import time

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
# 测试博客登陆页面

class BlogLogin:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_login.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)
    # 成功登陆的测试用例
    def LoginSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 能够找到博客首页用户的昵称,说明登陆成功,否则登陆失败
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")

        # time.sleep(3)
        # self.driver.quit()

    # 异常登陆的测试用例1:错误的账号和错误的密码
    def LoginFailTest1(self):
        # 返回到登陆页面
        self.driver.back()
        # 需要clear清空输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("wangwu")
        # 错误的密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 检查是否登陆失败
        actual = self.driver.find_element(By.CSS_SELECTOR,"body").text()
        # 断言检查一下是否符合预期
        assert actual == "用户名或密码错误!"

    # 异常登陆的测试用例1:错误的账号和正确的密码
    def LoginFailTest2(self):
        # 返回到登陆页面
        self.driver.back()
        # 需要clear清空输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("wangwu")
        # 错误的密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 检查是否登陆失败
        actual = self.driver.find_element(By.CSS_SELECTOR, "body").text()
        # 断言检查一下是否符合预期
        assert actual == "用户名或密码错误!"

        # 异常登陆的测试用例1:正确的账号和错误的密码
    def LoginFailTest3(self):
            # 返回到登陆页面
            self.driver.back()
            # 需要clear清空输入框
            self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
            self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
            self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("张三")
            # 错误的密码
            self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
            self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
            # 检查是否登陆失败
            actual = self.driver.find_element(By.CSS_SELECTOR, "body").text()
            # 添加屏幕截图
            BlogDriver.getScreeShot()
            # 断言检查一下是否符合预期
            assert actual == "用户名或密码错误!"


login = BlogLogin()
login.LoginSucTest()
login.LoginFailTest1()
login.LoginFailTest2()
login.LoginFailTest3()

2.BlogListTest.py 博客首页相关测试用例

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
# 博客首页测试用例
class BlogList:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_list.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)
    # 测试首页(登陆情况下)
    def ListTestByLogin(self):
        # 测试博客标题是否存在
        self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > div.title")
        # 测试博客内容是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.desc")
        # 测试按钮是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > a")

        # 个人信息-检查昵称是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")
        # 添加屏幕截图
        BlogDriver.getScreeShot()


list = BlogList()
list.ListTestByLogin()

3.BlogDetailTest.py 博客详情页相关测试用例

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver

# 测试博客详情页
class BlogBetail:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_detail.html?blogId=3996"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)

    # 登陆状态下
    def DetailTestByLogin(self):
        # 检查标题
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.title")
        # 检查时间
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.date")
        # 检查内容
        self.driver.find_element(By.CSS_SELECTOR, "#h2-u5728u8FD9u91CCu5199u4E0Bu4E00u7BC7u535Au5BA2")
        # 屏幕截图
        BlogDriver.getScreeShot()

4.BlogEditTest.py 博客编辑页面相关测试用例

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver

# 博客编辑页面
class BlogEdit:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_edit.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)

    # 正确发布博客(登陆状态下)
    def EditSucTestByLogin(self):
        self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试创建")
        # 博客系统编辑区存在默认,可以不作处理

        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        actual = self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title").text
        assert actual == "自动化测试创建"

  • images
  1. 存放图片文件

根据每一天的日期进行分类,当天运行的自动化图片放在当天的文件

images:

        2024-01-01

                2024-01-01-123456.png

                2024-01-01-123457.png

                2024-01-01-123458.png

        2024-01-02

                2024-01-02-123456.png

                2024-01-02-123457.png

                2024-01-02-123458.png

这里面每一个页面都需要创建浏览器对象,请求url访问对应的页面进入到对应页面之后,才可以执行一系列的测试用例。

测试结论

        本次测试对博客系统进行了较为全面的测试,包括功能测试、界面测试、性能测试、兼容性测试、安全测试等,测试覆盖了系统的主要功能模块和关键流程。

        在本次测试中,总计设计了392个测试用例,但是由于时间原因,仅对部分核心方面进行了测试,其中有29个测试用例实现了自动化,这大大提高了测试效率。

        在本次测试过程总,共发现了14个bug,其中2个严重bug,3个一般bug,9个次要bug。这些bug涵盖了功能、界面、易用性等多个方面,反应出系统在某些环节仍然需要优化和改进的地方。

标签:测试报告,self,driver,博客,element,测试用例,测试
From: https://blog.csdn.net/dab112/article/details/142262557

相关文章

  • 【笔记】材料分析测试:晶体学
    晶体与晶体结构CrystalandCrystalStructure1.晶体主要特征固态物质可以分为晶态和非晶态两大类,分别称为晶体和非晶体。晶体和非晶体在微观结构上的区别在于是否具有长程有序。晶体(长程有序)非晶(短程有序)准晶:介于晶体和非晶体之间。准晶体具有与晶体相似的长程有序的......
  • Mockito提升单元测试覆盖率
    简单实战  1、准备工作从gitee下载一个例子工程,下面会在这个工程下补充测试用例      选择的是Ruoyi的后台代码,gitclone之后,添加几个依赖,因为习惯用@RunWith(MockitoJUnitRunner.class)的方式,就添加了下面的两个依赖  第一个Mockito是这篇文章......
  • 有服务器后怎么测试自己的写的代码
    后端程序员,如果想要测试自己写的代码肯定是需要一个工具的,这边我推荐的是广受好评的测试工具:ApiFox这款测试工具不仅美观功能还非常的强大,今天保姆级教学,如果有自己服务器的情况下该怎么去安装测试!!!该篇文章是有了服务器后的教学,如果需要服务器,可以看我下面链接的文章,阿里......
  • 软件测试笔记1
    能独立针对web项目实施功能测试一、测试介绍什么是软件测试?使用技术手段验证软件是否满足需求测试主流技能1、功能测试2、自动化测试3、接口测试4、性能测试主流方向建议: 1、功能测试+接口测试 2、自动化测试+接口 3、功能+性能二、测试常用分类分类......
  • 帝国CMS如何安装不要内置测试数据?
    如果你在安装帝国CMS或类似的CMS系统时不想包含内置的测试数据,可以在安装过程中的“配置数据库”步骤去掉“内置初始数据”的选项。以下是详细的步骤:安装不带内置测试数据的步骤开始安装访问帝国CMS的安装脚本URL,通常形如http://yourdomain.com/install。遵循安装向导......
  • 如何使用 Bittly 进行基于串口的自动化测试
    串口通信是一种常见的通信方式,广泛用于嵌入式设备、传感器及其他硬件设备的数据交互与控制。通过串口通信,我们能够实时监控设备状态、发送指令并接收反馈。在自动化测试场景中,Bittly提供了一套灵活高效的工具,能够快速创建和管理自动化测试任务,简化复杂的测试流程。同时,Bitt......
  • 测试类 测试 java
    1importcom.alibaba.fastjson.JSON;2importcom.alibaba.fastjson.JSONObject;3importcom.lgq.ai.YouProjectApplication;4importcom.lgq.ai.service.XxxService;5importorg.junit.Test;6importorg.junit.runner.RunWith;7importorg.springframewor......
  • 软件测试笔记|web自动化测试|Web 自动化测试中,闭环有哪些?闭环的目的是什么?
    在Web自动化测试中,常见的闭环有以下几种:一、业务流程闭环例如,对于一个电商网站的购物流程,可以包括以下闭环:1.用户登录->商品搜索->添加商品到购物车->结算->支付->订单确认。2.用户注册->完善个人信息->浏览商品->下单->查看订单状态。二、数据操作......
  • 软件测试笔记|web自动化测试|自动化测试中,模块封装有哪些?封装的目的是什么?
    在自动化测试中,常见的模块封装有以下几种:一、页面元素定位封装将页面上的各种元素定位方式(如通过ID、Name、XPath、CSS选择器等)进行封装,形成统一的元素定位方法。例如,可以创建一个函数,传入定位方式和定位表达式,返回定位到的元素对象。二、操作封装1.把对页面元素的常见......
  • 软件测试笔记|web自动化测试|Selenium 提供了哪些断言?
    Selenium主要通过与测试框架(如TestNG、JUnit等)结合使用来实现断言,本身并没有内置断言方法。以下是一些常用的结合测试框架实现的断言:一、TestNG框架中的断言:1.assertEquals(expected,actual):比较两个值是否相等。例如:importorg.testng.Assert;publicclassTestSel......