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

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

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

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

相关推荐
明明跟你说过1 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
惜.己14 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
互联网杂货铺18 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
懒笑翻1 天前
Python 使用 Selenuim进行自动化点击入门,谷歌驱动,以百度为例
运维·selenium·自动化
go_to_hacker1 天前
容器安全检测和渗透测试工具
测试工具·安全
惜.己1 天前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节
半桶水专家1 天前
tcpdump抓取流量包详解
网络·测试工具·tcpdump
小流年 °1 天前
抓包工具Wireshark
网络·测试工具·wireshark
qq_433716951 天前
Selenium+Pytest自动化测试框架 ------ 禅道实战
自动化测试·软件测试·selenium·单元测试·pytest·接口测试·压力测试