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

个人博客系统——测试报告

一 、项目介绍

     

本项目对“个人博客系统”进行功能、兼容性测试,并编写selenium自动化测试脚本对其进行自动化测试。测试的核心内容包括对用户登录页,博客列表页,博客详情页,博客编辑页,博客发布页进行测试。

二、测试

(1)功能测试

  • 测试环境:Windows 10
  • Chrome版本: 136.0.7091.2 (正式版本)  (64 位)
  • 测试方式:手动测试

1.  用户登录页面

测试步骤:

     1.输入正确的用户名和密码,点击提交

     2.输入错误的用户名/密码,点击提交

     3. 用户名/密码为空,点击提交

期望结果:

     1.成功登录,进入博客首页

     2.登录失败,弹窗显示“密码错误”

     3.登录失败,弹窗显示“账号或密码不能为空”

实际结果:

     1.与期望结果一致,测试通过

     2.与期望结果一致,测试通过

     3.与期望结果一致,测试通过

测试案例展示:

    测试步骤2:输入错误的用户名/密码,点击提交

2.  博客列表页

测试步骤:

       进入博客列表页后,查看博客列表是否加载成功,以及博客发布时间是否正确,标题、文章内容是否正确显示

期望结果:博客列表加载成功,博客发布时间,标题、文章内容正确显示

实际结果:与期望结果一致,测试通过

3.  博客详情页

测试步骤:

       打开某博客详情页,查看博客标题、时间、内容等信息是否正确显示

期望结果:博客标题、时间、内容等信息正确显示

实际结果:与期望结果一致,测试通过

4.  博客发布页

测试步骤:

       1.标题、内容不为空,点击发布文章

       2.标题/内容为空,点击发布文章

期望结果:

       1.成功发布博客

       2.博客发布失败,弹窗警告

实际结果:

       1.与期望结果一致,测试通过

       2.与期望结果一致,测试通过

测试案例展示 

       测试步骤2:标题/内容为空,点击发布文章

5.  博客编辑页

测试步骤:

       在博客详情页中点击“编辑”,进入博客编辑页,修改博客标题/内容,点击“更新文章

期望结果:博客成功修改

实际结果:与期望结果一致,测试通过

6.  删除文章

测试步骤:

       1.进入博客详情页,点击”删除“按钮,弹窗“确定删除?”,点击”确定”

       2. 进入博客详情页,点击”删除“按钮,弹窗“确定删除?”,点击”取消”

期望结果:

       1.跳转博客首页,博客不存在,删除博客成功

       2.博客保留

实际结果:

       1.与期望结果一致,测试通过

       2.与期望结果一致,测试通过

(2)兼容性测试

测试博客系统页面在不同浏览器上能否正常显示:

Chrome浏览器:

Edge浏览器:

 测试结果:博客系统页面在两个浏览器上各个页面均正常显示

(3)自动化测试

1.新建公共包和测试包

commom用来编写公共属性,tests用来编写各个页面的测试用例

]

Utils.py:

1.生成一个公用浏览器驱动对象,减少文件多次创建浏览器对象的消耗

2.提供公共函数

images:

1.用于存放不同日期生成的截图

Tests:

1.每个页面编写一个测试类,测试类中编写不同的测试用例

2.创建公共脚本Utils.py

  • 创建公用浏览器驱动对象
  • 创建公用屏幕截图方法
#创建一个驱动对象,避免频繁创建驱动
from selenium import webdriver
import datetime
import os.path
import sysclass Driver:driver=""def __init__(self):#这里可以添加浏览器参数options=webdriver.ChromeOptions()path = "C:\\Users\\Hasee\\Downloads\\chromedriver-win64\\chromedriver.exe"self.driver = webdriver.Chrome(executable_path=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('../images/'+dirname+'/'+filename)BlogDriver=Driver()

3.博客登录页自动化测试

  • 测试用例

          1.测试成功登录(loginSucTest)

          2.测试登录失败(loginFailTest)

from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
import timeclass BlogLogin:driver=""url=""def __init__(self):self.url="http://8.137.19.140:9090/blog_login.html"self.driver=BlogDriver.driverself.driver.get(self.url)#封装“清空 登录输入框内容”函数def InputClear(self):self.driver.find_element(By.CSS_SELECTOR,"#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()def loginSucTest(self):time.sleep(2)self.InputClear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("lisi")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 > img" )BlogDriver.getScreenShot()self.driver.back()time.sleep(2)#错误的用户名/密码#用户名/密码为空def loginFailTest(self):#(1).错误的用户名,正确的密码self.InputClear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("list")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)expect="用户不存在"alert=self.driver.switch_to.alertalert_text=alert.textprint(alert_text)assert expect==alert_texttime.sleep(2)alert.accept()#(2).正确的用户名,错误的密码self.InputClear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("lisi")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)expect = "密码错误"alert = self.driver.switch_to.alertalert_text = alert.textprint(alert_text)assert expect == alert_texttime.sleep(2)alert.accept()

4.博客列表页自动化测试

  • 测试用例

          1.测试 博客列表页(loginSucTest)

import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogList:driver=""url=""def __init__(self):self.driver=BlogDriver.driverself.url="http://8.137.19.140:9090/blog_login.html"self.driver.get(self.url)def ListLogin(self):#进入博客主页self.driver.forward()time.sleep(2)#检查昵称是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")#检查“查看全文”键是否存在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.right > div:nth-child(1) > div.title")self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > div.date")BlogDriver.getScreenShot()

5.博客详情页自动化测试

  • 测试用例

          1.测试 当前用户的详情页(DetailTestSelf)

          2.测试 访问其他用户的详情页(DetailTestOther)

import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogDetail:driver=""url=""def __init__(self):self.driver=BlogDriver.driverself.url="http://8.137.19.140:9090/blog_detail.html?blogId=42491"self.driver.get(self.url)def DetailTestSelf(self):time.sleep(2)#检查文章标题是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.title")#检查文章内容框是否存在self.driver.find_element(By.CSS_SELECTOR,"#detail")#检查文章发布时间是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.date")time.sleep(2)BlogDriver.getScreenShot()#返回博客主页self.driver.back()def DetailTestOther(self):#访问其他用户的博客详情页self.driver.get("http://8.137.19.140:9090/blog_detail.html?blogId=42498")time.sleep(2)#检查是否为其他用户的文章text=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3").textprint(text)assert text=="zhangsan"# 检查文章标题是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.title")#检查文章内容框是否存在self.driver.find_element(By.CSS_SELECTOR,"#detail")#检查文章发布时间是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.date")#返回博客主页self.driver.back()

6.博客编辑页自动化测试

  • 测试用例

          1.测试 博客编辑页(EditTest)

import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogEdit:driver=""url=""def __init__(self):self.driver=BlogDriver.driverself.url="http://8.137.19.140:9090/blog_update.html?blogId=42491"self.driver.get(self.url)def EditTest(self):# 检查博客编辑页的“更新文章”键是否存在self.driver.find_element(By.CSS_SELECTOR,"#submit")#测试能否正确编辑发布文章(编辑标题)#博客系统中编辑区域是第三方插件,不能通过元素定位time.sleep(2)self.driver.find_element(By.CSS_SELECTOR,"#title").clear()time.sleep(2)self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("自动化测试")time.sleep(2)self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.desc")#返回到博客列表页BlogDriver.getScreenShot()

三、项目bug

 (1)用户登录页面

bug①: 

    bug出现的步骤:进入用户登录页面

    预期结果:没有”主页“和”写博客“按钮

    实际结果:页面右上角有”主页“和”写博客“按钮,属于冗余操作

(2)博客列表页

bug①: 

    bug出现的步骤:登录,进入博客列表页,点击左侧“文章”

    预期结果:点击“文章”可以查看用户的全部博客

    实际结果:“文章”为文本形式,不可点击

bug② 

    bug出现的步骤:登录,进入博客列表页

    预期结果:博客部分内容折叠,用户点击“展开”按钮后才能查看全部内容。

    实际结果:博客内容为全文显示,浏览博客列表时被大量内容淹没,影响用户体验

(3)博客详情页

bug①: 

    bug出现的步骤:点击“查看全文”进入博客详情页

    预期结果:博客详情页包含作者信息

    实际结果:博客详情页不包含作者信息,影响用户体验

(4)博客发布页

bug①: 

    bug出现的步骤:进入博客发布页,编辑内容,点击“发布文章”

    预期结果:发布博客后,文章数增加1

    实际结果:发布博客后,文章数没有变化

(5)博客编辑页

bug①:

    bug出现的步骤:编辑博客内容后,点击“更新文章”

    预期结果:编辑后博客修改时间改变

    实际结果:编辑后博客修改时间不变

四、测试总结

待完善


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

相关文章:

  • Python----计算机视觉处理(Opencv:道路检测之提取车道线)
  • 4.nRF52xx蓝牙学习(GPIOTE与外部中断)
  • Docker基础2
  • 【前端】Node.js一本通
  • 红宝书第二十九讲:详解编辑器和IDE:VS Code与WebStorm
  • 21 天 Python 计划:MySQL 库相关操作
  • 类与对象(中)(详解)
  • k8s1.24升级1.28
  • [刷题总结] 双指针 滑动窗口
  • 【内网安全】DHCP 饿死攻击和防护
  • Gerapy二次开发:用户管理专栏主页面开发
  • 【ARTS】【LeetCode-2873】有序三元组中的最大值!
  • CSS快速上手
  • 手撕LLM(二):从源码出发,探索LoRA加载、推理全流程
  • CentOS Linux升级内核kernel方法
  • rust 同时处理多个异步任务,并在一个任务完成退出
  • 毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六)
  • Nginx 生产配置文件
  • 数据分析-Excel-学习笔记Day1
  • TYUTJava阶段测试