当前位置: 首页 > news >正文

博客系统测试报告

目录

  • 一.博客相关测试用例
    • 1.1.博客系统功能背景
    • 1.2.博客系统思维导图
  • 二,博客界面测试分析
    • 2.1登录界面测试
  • 三、博客功能测试
    • 3.1.登陆测试
    • 3.2.主页测试
  • 四、博客自动化测试脚本
    • 4.1.配置驱动
    • 4.2.创建浏览器对象
    • 4.3.登陆测试
      • 4.3.1登陆成功测试(LoginSucTest)
      • 4.3.2登陆失败测试(LoginFalTest)
    • 4.4主页测试
      • 4.4.1写博客
      • 4.4.2主页内容编辑(ListEdiTest)
      • 4.4.3主页内容删除
    • 4.5运行代码
    • 五、BUG分析

一.博客相关测试用例

1.1.博客系统功能背景

博客系统通常具备用户注册、登录、文章发布、编辑、管理、评论互动等功能,同时还提供了丰富的模板和插件,让用户可以根据自己的喜好和需求来定制博客的外观和功能。这些软件的出现,大大降低了博客创建的门槛,使得更多人能够轻松地拥有自己的博客空间。

1.2.博客系统思维导图

为了能够在众多软件中脱颖而出,并且能让用户用的安心以此来获得用户的青睐,从而推动公司的发展,因此一款好的软件一定离不开测试人员通过大量的测试案例来对软件进行BUG分析,对于一款软件简单来说可分为六方面的测试:界面测试、功能测试、安全测试、易用性测试、兼容性测试、性能测试

  • 思维导图

测试案例思维导图
而本章主要对功能测试及界面进行分析

二,博客界面测试分析

2.1登录界面测试

在这里插入图片描述
登录界面的登陆框、用户名、密码、提交等内容与我们编写的思维导图基本一致,符合预期效果,并且提交按钮用绿色框格包围使得用户能更加轻松登录博客。

三、博客功能测试

3.1.登陆测试

  1. 输入错误用户名

在这里插入图片描述

  1. 输入正确用户名和错误密码

在这里插入图片描述

  1. 输入错误用户名正确密码

在这里插入图片描述

  1. 输入正确密码

在这里插入图片描述

  1. 输入正确用户名及正确密码

在这里插入图片描述
通过多次测试用例的输入可以直观发现,密码或用户名为空时会弹出账号或密码不能为空的字样弹窗,而输入错误用户名或错误密码则分别显示用户不存在密码错误等字样弹窗,只有在输入正确用户名和正确密码时才能进入博客主页。

3.2.主页测试

  1. 点击查看全文

在这里插入图片描述

  1. 成功跳转曾经所发表的博客文章,再次点击编辑按钮

在这里插入图片描述

  1. 成功跳转博客编辑页面

在这里插入图片描述

  1. 点击更新文章

在这里插入图片描述

  1. 成功更新

在这里插入图片描述

  1. 点击删除

在这里插入图片描述

  1. 跳出弹窗

在这里插入图片描述

  1. 成功删除

在这里插入图片描述

  1. 点击注销
    在这里插入图片描述
  2. 账号退出且登陆信息清除
    在这里插入图片描述
    人为只能测试极其有限的功能,因此测试人员还需编写测试脚本,通过将大量测试用例交给机器来完善软件功能。

四、博客自动化测试脚本

4.1.配置驱动

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
WebDriverManager 是一个开源的 Java 库,用于自动管理 Selenium WebDriver 所需的驱动程序(如 ChromeDriver、GeckoDriver、EdgeDriver 等)。它可以自动下载、设置和维护这些驱动程序,从而简化了 Selenium 测试的配置过程

在pycharm软件的设置中观察是否安装这两个软件包,如果没有可能无法正常驱动打开本地浏览器
在这里插入图片描述

4.2.创建浏览器对象

由于多个功能测试都需要驱动浏览器,因此将其封装成一个类,减少驱动次数造成不必要的浪费,新建一个common文件夹,在untils.py下创建浏览器对象
在这里插入图片描述

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
chrome_path = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
driver_path = 'E:\\python_project\\chromedriver-win64\\chromedriver.exe'#创建浏览器对象
class Driver:driver=""def __init__(self):options = webdriver.ChromeOptions()options.binary_location = chrome_path  # 指定本地 Chrome 浏览器路径self.driver = webdriver.Chrome(service=Service(executable_path=driver_path), options=options)#截屏功能def getScreenShot(self):dirname = datetime.datetime.now().strftime('%Y-%m-%d')if not os.path.exists("../images/" + dirname):os.mkdir("../images/" + dirname)filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')+".png"self.driver.save_screenshot(f'../images/{dirname}/' +filename)#实例化Driver
BlogDriver = Driver() 

4.3.登陆测试

url用于获取博客系统网址,get用于进入博客网址

import time
from datetime import datetimefrom 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.driverself.driver.get(self.url)

4.3.1登陆成功测试(LoginSucTest)

  1. find_element()函数通过By.CSS_SELECTOR(选择器查找)分别找出用户名及密码输入框元素。

  2. send_keys()分别输入用户名及密码。

  3. 找出提交按钮元素并用click()函数模拟鼠标点击。

  4. time.sleep(2)强制等待2秒,(脚本运行速度过快可能导致还未出现弹窗便进行下一步操作导致)。

  5. back()返回上一步操作(登陆页面)。

    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()time.sleep(2)self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")self.driver.back()

没有等待的报错
在这里插入图片描述

4.3.2登陆失败测试(LoginFalTest)

  1. 输入用户名及密码操作和登陆成功测试相同,不同的是如何判断登陆失败,一般登陆失败会出现提示弹窗,然而弹窗元素无法定位,必须通过switch_to.alert切换弹窗模式并通过accept()关闭弹窗
  2. 判断登陆失败只需在脚本关闭弹窗后搜索是否登陆界面信息,如通过text()函数获取登陆字样元素文本信息,并通过assert断言是否存在,如不存在则会报错

在这里插入图片描述

    def LoginFalTest(self):#用户名正确密码错误self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(2)#等待弹窗#切换弹窗模式alert=self.driver.switch_to.alert#关闭弹窗alert.accept()#获取登陆文本信息text=self.driver.find_element(By.CSS_SELECTOR,"body > div.container-login > div > h3").text#断言是否还处于登录界面assert text=="登陆"#清除用户名及密码信息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("zhang")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(2)  # 等待弹窗# 切换弹窗模式alert = self.driver.switch_to.alert# 关闭弹窗alert.accept()# 获取登陆文本信息text = self.driver.find_element(By.CSS_SELECTOR, "body > div.container-login > div > h3").text# 断言是否还处于登录界面assert text == "登陆"# 清除用户名及密码信息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("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(2)  # 等待弹窗# 切换弹窗模式alert = self.driver.switch_to.alert# 关闭弹窗alert.accept()# 获取登陆文本信息text = self.driver.find_element(By.CSS_SELECTOR, "body > div.container-login > div > h3").text# 断言是否还处于登录界面assert text == "登陆"self.driver.quit()

4.4主页测试

4.4.1写博客

  1. 点击主页写博客按钮
  2. 输入标题,点击发布
  3. 断言是否发布成功
    def ListTest(self):self.driver.implicitly_wait(5)#点击写博客按钮self.driver.find_element(By.CSS_SELECTOR,"body > div.nav > a:nth-child(5)").click()time.sleep(2)#填写标题self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys('博客主页测试')#点击发布self.driver.find_element(By.CSS_SELECTOR,"#submit").click()text=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(60) > div.title").textBlogDriver.getScreenShot()#断言标题是否发布成功assert text=="博客主页测试"

4.4.2主页内容编辑(ListEdiTest)

  1. 选择任意一篇博客内容,点击查看全文,可以对已经发布的博客进行编辑
  2. 找出编辑按钮元素并点击
  3. 更新博客内容并点击发布后,可以通过获取我们更新的博客标题.text,通过断言判断是否更新成功

在这里插入图片描述

 def ListEdiTest(self):self.driver.implicitly_wait(2)time.sleep(2)#强制等待页面渲染#任选一篇博客self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > a").click()#点击编辑按钮self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(1)").click()time.sleep(2)#强制等待页面渲染#清空原有博客标题self.driver.find_element(By.CSS_SELECTOR,"#title").clear()#更新博客self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys('博客测试')#点击提交self.driver.find_element(By.CSS_SELECTOR,"#submit").click()text=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.title").texttime.sleep(1)#添加截图BlogDriver.getScreenShot()#断言是否更新成功assert text=='博客测试'

4.4.3主页内容删除

  1. 任选一篇博客内容保存标题
  2. 点击查看全文,查找删除元素并点击
  3. 切换弹窗模式,确定删除博客内容
  4. 断言前后标题是否相同,删除成功
    def ListDelTest(self):self.driver.implicitly_wait(2)#删除前截屏BlogDriver.getScreenShot()#删除前标题text1 = self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.title").text#点击查看全文self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > a").click()#点击删除self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(2)").click()#切换弹窗模式alert=self.driver.switch_to.alertalert.accept()#删除后标题text2=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.title").text#断言是否删除assert not text1==text2#删除后截屏BlogDriver.getScreenShot()

4.5运行代码

from common.utils import BlogDriver
from test import BlogLogin
from test import BlogList
if __name__ == "__main__":# 登陆失败BlogLogin.BlogLogin().LoginFalTest()#成功登陆BlogLogin.BlogLogin().LoginSucTest()#写博客BlogList.BlogList().ListTest()#编辑博客BlogList.BlogList().ListDelTest()#删除博客BlogList.BlogList().ListDelTest()#退出BlogDriver.driver.quit()

五、BUG分析

  1. 虽然用特殊符合隐藏用户密码保证了用户信息安全,但缺少显示密码可见功能,当用户设置的密码比较繁琐时,并不利于用户正确输入密码。
  2. 在写博客并发表后,博客内容更新是从下往上更新不便查找更新内容。
  3. 少数博客发表后出现不可编辑及删除功能。
  4. 缺少注册按钮。

http://www.mrgr.cn/news/93066.html

相关文章:

  • USB2.0学习(1)
  • DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)
  • 【Mac】2025-MacOS系统下常用的开发环境配置
  • 嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库
  • Linux 的at定时任务
  • golang的io
  • Arcgis中添加脚本工具箱
  • MATLAB CVX 能处理的目标函数数量级极限是多少?
  • 在kali linux中kafka的配置和使用
  • Linux 上将 FineReport 设置为 Systemd 服务(图文操作)
  • Windows 使用 Docker + WSL2 部署 Ollama(AMD 显卡推理)搭建手册‌
  • Metal学习笔记十:光照基础
  • Qt信号和槽
  • 自然语言处理基础
  • MySQL中的行级锁
  • LINUX网络基础 - 网络编程套接字,UDP与TCP
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.2.2线程池配置与写入限流
  • vocal~怎么没人告诉我?大数据技术组件(更新中......)
  • Vue 3 中 unref 的作用与 Vue Router currentRoute 的知识
  • 物理竞赛中的线性代数