个人博客系统测试(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. 博客编辑页面

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

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

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

相关推荐
niuniu_66621 小时前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
suimeng61 天前
ChromeDriver的常用方法
java·selenium
niuniu_6662 天前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒2 天前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
suimeng62 天前
基本元素定位(findElement方法)
java·selenium
mywpython2 天前
mac 最新的chrome版本配置selenium的方式
chrome·python·selenium·macos
软件测试曦曦2 天前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
freejackman2 天前
Selenium框架——Web自动化测试
python·selenium·测试
互联网杂货铺2 天前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee2 天前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存