个人博客系统测试(selenium)

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

博主主页:Yan. yan.

C语言专栏

数据结构专栏

力扣牛客经典题目专栏

C++专栏

软件测试

文章目录

一、项目背景

  • 项目概要

    本项目是一个全功能的个人博客系统,旨在提供一个用户友好、功能全面的平台,允许用户注册、登录、浏览博客、查看详细内容、发表评论以及发布和管理个人博文。项目的核心功能包括博客列表、博客详情页、用户登录注册、个人中心和发布博客功能。

  • 测试报告目的

    测试报告的主要目的是验证博客系统的功能完整性、性能和安全性。通过对每个核心功能的综合测试,确保系统能够在真实环境中稳定运行,并满足用户的预期需求。此外,报告还旨在识别潜在的问题和缺陷,为后续的开发和改进提供指导。

  • 测试总体执行情况

    主要针对常见功能进行测试例如:博客登录页面,博客列表页面,博客详情页,博客编辑页...

二、测试环境

软件:Google Chrome

测试工具:自动化测试工具Selenium

操作系统:Windows 11

浏览器版本:Google Chrome版本 129.0.6668.59(正式版本) (64 位)

三、手工测试用例

博客登录页

个人博客列表页

博客详情页

博客编辑页

四、编写测试用例

五、自动化测试selenium

  • 创建浏览器对象
cpp 复制代码
#创建一个浏览器对象
import datetime
import os.path
import sys
import time

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)
        self.driver.implicitly_wait(2)
    def getScreeeShot(self):
        # 创建屏幕截图
        if not os.path.exists("../images"):
            os.mkdir("../images")
        time.sleep(2)
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        #判断dirname文件夹是否存在,若不存在则创建文件夹
        if not os.path.exists("../images/" + dirname):
            os.mkdir("../images/" + dirname)
        time.sleep(2)
        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()
  • 测试博客登录页面
cpp 复制代码
import time
from selenium.webdriver.common.by import By
from common.utils import BlogDriver
#测试博客登录页面

class BolgLogin:
    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()
        time.sleep(3)
        #能够找到昵称说明成功了
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")

        # 添加一个屏幕截图
        #BlogDriver.getScreeeShot()

        #返回登录页面
        self.driver.back()

    #异常登录测试
    def LoginFailTest(self):
        # 若连续多次send_keys会出现关键词拼接, 而不是替换,要先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("zhangsan")
        #错误密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(3)

        # 添加一个屏幕截图
        BlogDriver.getScreeeShot()

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

login = BolgLogin()
login.LoginSucTest()
login.LoginFailTest()
  • 博客首页测试用例
cpp 复制代码
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")

list = BlogList()
list.ListTestByLogin()
  • 博客详情页
cpp 复制代码
from selenium.webdriver.common.by import By

from common.utils import BlogDriver


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

    #登录状态下博客详情页测试

    def DeailTestByLogin(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, "#detail > p")
  • 博客编辑页面
cpp 复制代码
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, "#editor > div.editormd-toolbar > div > ul > li:nth-child(21) > a > i").clear()
        #直接点击发布按钮来发布博客
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
  1. 创建浏览器对象

    创建测试化对象,负责初始化浏览器,以及相应的屏幕截图。

  2. 测试博客登录页面

    登录博客,读取用户名、密码和预期的博客列表URL。

    打开博客登录页面并输入账号密码。

    点击提交按钮,验证是否成功跳转到博客列表页。

    检查页面上是否显示了正确的用户名。

  3. 博客首页测试用例

    打开博客列表页面

    检查标题,内容,按钮等是否存在

    点击博客列表中的"查看全文"按钮,验证当前URL、页面标题和博客标题是否符合预期。

  4. 博客详情页

    查看已发布的文章,是否与预期相符

    读取标题、时间、内容等是否符合预期

  5. 博客编辑页面

    检查博客编写是否存在问题

    检查标题、按钮、编辑区(博客编辑区域不好找,默认情况下为空,可以暂时不考率)

这个测试流程涵盖了博客系统的主要功能,包括登录、列表展示、详情查看、写博客、信息校验。每个测试用例都设计有明确的预期结果,并通过断言来验证这些预期是否得到满足。

相关推荐
美团测试工程师4 小时前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
小白学大数据5 小时前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
weixin_419349795 小时前
selenium 报错 invalid argument: invalid locator
selenium·测试工具
程序猿000001号5 小时前
Selenium 深度解析:自动化浏览器操作的利器
selenium·测试工具·自动化
Blankspace学14 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
低调之人15 小时前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
测试老哥17 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
大霞上仙1 天前
selenium 在已打开浏览器上继续调试
python·selenium·测试工具
互联网杂货铺1 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
大霞上仙1 天前
postman读取文件执行
测试工具·postman