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

个人博客系统_测试报告

一.项目的测试背景

 1.    系统定位与核心价值:简单博客系统以满足用户基础内容创作、发布与浏览需求为核心,支持文章编辑、分类管理、用户登录等基础功能,是面向个人或小型团队的轻量级内容管理工具,需确保功能稳定、操作流畅以保障基础使用体验。

    2.    测试必要性:随着用户对线上内容管理的便捷性要求提升,系统需规避功能异常(如文章发布失败、登录异常)、数据错误(如内容丢失、分类混乱)、易用性差(如操作流程复杂)等问题;同时,作为用户直接交互的产品,需通过测试验证系统在常规使用场景下的稳定性,避免因潜在缺陷影响用户留存与使用信任。

    3.    测试目标导向:通过测试明确系统是否符合需求规格说明书要求,确保核心功能100%可用、数据存储安全无丢失、界面操作逻辑清晰,为后续系统上线或迭代优化提供可靠依据,保障用户在基础博客使用场景(如写文、看文、管理内容)中的顺畅体验。

二.手动对项目功能进行Web的基本功能测试

2.1 设计测试用例

  设计设计测试用例一般从6个方面进行设计:

         功能测试,界面测试,性能测试,易用性测试,安全测试,兼容性测试等6个方面进行设计测试,博客系统是一个web网址,我们主要对核心功能进行测试

2.2设计个人博客系统测试用例思维导图如下:

基于个人博客系统的页面进行功能测试设计:

登录简介:因为账号和密码都已存储在数据库中,只要在对应的输入框输入正确的账号和密码,就能跳转到博客列表页啦。

(a)登录界面展示:

2.3登录界面测试:

2.3.1正常登录

        在对应的输入框输入正确的 账号和正确密码(账号:zhangsan      密码:123456)

        预期效果:跳转到 博客列表页

        实际效果展示:

2.3.2异常登录

①异常登录:输入正常的账号和错误的密码:(账号:zhangsan密码:12345)

        预期效果:跳出弹框提示 密码错误

        实际效果展示:

②异常登录:输入错误账号和正确密码(账号:zhang密码:123456)

        预期效果:跳出弹框提示 用户不存在

        实际效果展示:

③异常登录:输入错误账号和错误密码(账号:zhang密码:12345)

        预期效果:跳出弹框提示 用户不存在

        实际效果展示:

④ 异常登录:不输入账号、输入正确密码(账号:      密码:123456)

        预期效果:跳出弹框提示 账号或密码不能为空

        实际效果展示:

(剩下的失败登录测试 用例就不一一展示了)

⑤ 异常登录:不输入账号、输入错误密码(账号:      密码:123)

        预期效果:跳出弹框提示 账号或密码不能为空

        实际效果:符合预期

⑥异常登录:输入正确账号、不输入密码(账号:zhangsan 密码:  )

        预期效果:跳出弹框提示 账号或密码不能为空

        实际效果:符合预期

⑦ 异常登录:输入错误账号、不输入密码(账号:li      密码:123)

        预期效果:跳出弹框提示 用户不存在

        实际效果:符合预期

⑧异常登录:不输入账号和不输入密码,直接登录(账号:abc      密码:123)

        预期效果:跳出弹框提示 用户不存在

        实际效果:符合预期

2.4博客列表页面测试(登录后跳转到此页面)

列表简介:登录成功后,会跳转到博客列表页面,可以看到当前登录的用户头像、昵称和发布文章数量还有分类,列表区可以看到已发布博客文章信息(包括标题、时间、博客内容)等信息

列表页展示:

2.5博客详情页面测试(点击 "查看全文>>"  按钮即可进入 )

详情页简介:博客详情页里面有当前登录用户的昵称,和发布文章的数量和分类的数量,

权限(读、编辑、修改、删除):如果是当前用户写的文章,进入详情页后可看到标题、日期时间、博文内容、编辑按钮、删除按钮。如果是其他用户写的文章,进入后只能

博客详情页面

预期效果①:显示有用户信息,博客标题、发布时间和内容,编辑和删除按钮

预期效果②:显示有用户信息,博客标题、发布时间和内容,无编辑按钮和删除按钮

 2.5.1更新页测试(点击“编辑”按钮后进入)

简介:点击输入框后 可对内容进行编辑(删除、插入),然后点击发布,链接中的blogId不变

实际效果展示:

 2.5.2删除博客测试(点击 查看全文>> 进入可删除的页面)

简介:在博客列表页点击任意一篇发布的文章 “查看全文>>” 按钮,就可以进去到该篇博客的详情页,然后点击博客详情页里面的“删除”按钮,详情页中就会跳出弹框并显示 “确定删除?”

预期效果:点击确定之后,跳转到列表页,并且博文会在列表中删除(不再显示)

2.6博客编辑页测试


编辑页简介:在博客列表页右上角点击”写博客“,即可进入博客编辑页面,此时可以进行新博客的写入操作。

用户登录状态下会跳转到博客列表,点击右上角写博客,就会跳转到博客编辑页面。

未登录状态下也可进入包边机页面,但无法发布文章,然后退回登录界面。

预期效果:博客编辑页面有(输入博客标题框,文本工具区,博客内容输入区,“发布文章”按钮)

实际效果展示:

2.6.1发布博客测试

注意!仅输入标题 或 内容都无法发布。

仅输入标题的预期效果展示(无法发布):

输入标题和内容之后,点击发布文章,跳到列表页,在列表页显示此博文

输入内容和标题后的预期效果展示:

发布成功之后主页列表中会显示标题、发布时间、发布的内容

2.7退出博客测试

简介:点击右上角的 “注销”按钮,即可退出。

预期效果:点击“注销”之后,退回登录界面,左上角的“回退”按钮变成灰色(无法点击)

Bug:点击“注销”按钮退出后,通过回退按钮,能够再次回到刚退出的用户的列表页

2.8个人博客系统功能测试总结

        对个人博客系统开展了一系列测试,涵盖登录界面(正常登录与多种异常登录场景,如账号密码输入错误、不输入等情况)、博客列表页面、博客详情页面(含更新页、删除博客操作)以及博客编辑页(发布博客)等功能模块的测试。
        在测试过程中,发现了一处 bug:点击“注销”按钮退出后,通过回退按钮,能够再次回到刚退出的用户对应的博客列表页。

三.使用Selenium进行Web自动化测试

3.1新建项目(Python)

打开PyCharm,点击New Project

↓圈出来的就是你的项目名了

再点击左上角file —>setting  的设置,下载webdriver-manage

选好之后点击Install Packge按钮

selenium同样用此方法↑下载

3.2Selenium(Python):简介与配置

一、简介

        Selenium是一款开源的Web自动化测试工具,支持模拟浏览器的点击、输入、跳转等人工操作,可用于自动化测试、数据爬取等场景;在Python中使用时,需配合对应浏览器的驱动(如ChromeDriver)实现功能。

二、环境配置步骤

    1.    安装Python:确保本地已安装Python(推荐3.7及以上版本),可通过“python --version”命令验证是否安装成功,看到版本就是安装成功了。

    2.    安装Selenium库:打开命令行,执行“pip install selenium”,完成库的安装

(也可使用上面的方法,在Pycharm中的设置进行下载)。

    3.    下载浏览器驱动:

    ① 先确认本地浏览器版本(如Chrome浏览器:设置→关于Chrome,查看版本号)。

    ②下载对应版本的驱动(Chrome驱动:ChromeDriver官网)。

    4.    配置驱动环境:   ①方法1(临时):在代码中指定驱动路径,如“webdriver.Chrome(executable_path="驱动文件路径")”。

↓创建好项目,再创建文件(.py文件),即可测试是否配置好驱动环境

记得在代码上面引入webdriver

from selenium import webdriver

    ②方法2(永久):将驱动文件放入Python安装目录的“Scripts”文件夹下,或添加驱动路径到系统环境变量“Path”中,后续代码无需指定路径。

    5.    验证配置:运行以下测试代码,若能打开Chrome浏览器并访问百度,说明配置成功。
from selenium import webdriver
# 打开Chrome浏览器
driver = webdriver.Chrome(service=Service(executable_path= '浏览器的存放路径'),options = options)
# 访问百度
driver.get("https://www.baidu.com")
# 关闭浏览器(可选)
# driver.quit()

3.3 参照测试用例,编写自动化脚本(Python)

测试页面介绍:博客登录页、 博客列表页、 博客详情页、 博客编辑页、 博客更新页

根据前面的测试用例一步步进行测试(这里主要是做功能测试部分)。

首先,↓创建一个Utile.py文件,主要作用是封装和管理 Selenium WebDriver 相关的功能,用于 Web 自动化测试。这样,每次运行,一个浏览器只需驱动一次,然后可以访问很多不同的链接

上面创建好了怎么使用呢?

①创建一个登录页BlogLogin.py (测试其他页也是这样的流程)

②导入相关刚刚的Utile文件(注意路径)

③调用Utile中BlogDriver的属性driver(见上一张图)

1、测试登录界面

①正常登录:输入正确账号和密码     账号:zhangsan 密码:123456

②异常登录:(再在登录界面继续写失败案例的方法)

在Pthon 中try -except用于处理异常,这样就可不断的进行自动化测试失败案例

    def LoginFailTest(self):print("--------------------失败登录1-------------------")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(0.5)#如果不加的话,没等弹窗加载出来就已经执行完处理弹框这部分的代码了#弹框未完全加载或前端渲染有延迟,就会因“没找到弹框”报错try:alert = self.driver.switch_to.alertprint("Alert 内容:", alert.text)# 断言弹窗文本是否符合预期(比如“密码错误”)assert alert.text == "密码错误"alert.accept()  # 关闭弹窗except Exception as e:print("处理 alert 失败:", e)print("--------------------失败登录2-------------------")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(0.5)try:alert = self.driver.switch_to.alertprint("Alert 内容:", alert.text)# 断言弹窗文本是否符合预期(比如“密码错误”)assert alert.text == "用户不存在"alert.accept()  # 关闭弹窗except Exception as e:print("处理 alert 失败:", e)

写好测试方法之后 ,再创建一个RunTest.py,主要用于运行博客系统相关功能的自动化测试

if __name__ == "__main__":是Python中的固定语法

运行的时候只需要运行RunTest文件即可,就可以将多个页面连起来测试

 ③页面打开方式 :(根据自己的测试用例)这里手动进行测试

(登录之前)其他元素检查:“主页”、“写博客”

    def LoginBefor(self):print("\n其他交互控件(LoginBefor)-------------------\n")#--------------------只输入标题-----------------------------# 点击 “主页”   (未登录)点击主页无法跳转self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(226) > a").click()time.sleep(0.5)# 点击写博客self.driver.find_element(By.XPATH, "/html/body/div[1]/a[2]").click()time.sleep(3)# 判断有没有点进写博客(编辑页)txt = self.driver.find_element(By.CSS_SELECTOR, "#h2--dddds- > a").text#如果获取到的文本框中文本等于 在这里写下一篇博客,说明已经进入编辑页assert txt == "在这里写下一篇博客"print(txt)#获取文本框(这里是标题框)publish = self.driver.find_element(By.CSS_SELECTOR, "#title")#在文本框输入内容publish.send_keys("input:发布一篇博客(没登录)") #输入标题内容# 获取文本框中的内容(这里是标题框)txt2 = publish.get_attribute('value')print(txt2)time.sleep(1)# 点击发布博客 (没登录状态下)self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(1)
2、测试列表页

(创建列表页方法如上),以下是登录后的界面

(自动化测试)分三部分测试:用户信息区,列表,导航栏

用户信息区:检查相关元素是否存在

列表:检查相关元素是否存在,点击“查看全文>>”按钮进入详情页测试

    def LoginAfter(self):print("这里是列表页-------------↓")# 检查详情页的整性print("检查元素完整性")#检查用户名self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")#检查GItHab链接是否存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > a")#检查文章self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > div:nth-child(4) > span:nth-child(1)")#检查分类self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")print("检查完用户信息区----------↑列表页")# 点击查看全文self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(2) > a").click()#如果这里找不到的话,有可能是点击到了别的用户写的,你没有编辑的权限,也就是没有编辑按钮time.sleep(2)
3、测试详情页

(包括编辑、删除)

继上面 def LoginAfter(self):的代码,(↓已进入详情页)

# 点击详情页里的编辑self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(1)").click()print("执行到这")#出错时 , 可用于标记执行到哪里,便于找出问题#延时time.sleep(0.5)#获取到标题框submit = self.driver.find_element(By.CSS_SELECTOR, "#title")#清空submit.clear()#输入内容submit.send_keys("检-----------------查")#点击更新文章self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 获取列表页的标题element1 = self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(2) > div.title").text#检查是否更新成功assert element1 == "检-----------------查"#再点击查看全文print("再点击 查看全文")self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(2) > a").click()#获取blog_idcurrent_url = self.driver.current_urlblog_id = current_url.split("blogId=")[1].split("&")[0]print(blog_id)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")print("检查完标题时间")
#↓这里经常获取不到详情页中的内容,原因:
#详情页里面的有点问题 它用了富文本组件的css 可能是这个原因导致的self.driver.find_element(By.CSS_SELECTOR, "#detail > p")print("检查完内容!!!!!")#点击删除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.dismiss()#取消# 再点击删除self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(2)").click()alert.accept()#确定# 检查内容是否删除成功  此时已经在列表页element2 = self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(4) > div.title").textif element2 != "检-----------------查":print("删除成功!")

详情页Bug:详情页里面的有点问题 ,自动化脚本获取不到文章内容,它用了富文本组件的css 可能是这个原因导致的

4、测试编辑页

简单说明:登录之后点击“主页”,进入编辑页,发布博客,以下测试脚本也是写在

def LoginAfter(self):

        # 回退到主页self.driver.back()#点击主页(虽然已经在主页,再点击确认时候有其他异常)self.driver.find_element(By.CSS_SELECTOR, "body > div.nav > a:nth-child(4)")# 点击写博客self.driver.find_element(By.CSS_SELECTOR, "body > div.nav > a:nth-child(5)").click()# 清空标题框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()  # 点击发布文章newtext = self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(3) > div.title").text# 断言 确保是否已发布到列表assert newtext == "发布新文章"print("文章发布成功")

5、测试退出登录

说明:点击“注销”后 跳转到登录页,再测试是否能通过回退按钮返回列表页

        #点击“注销”  退出登录self.driver.find_element(By.CSS_SELECTOR, "body > div.nav > a:nth-child(6)")#退出后,点击”回退“按钮,  测试退出之后是否还能进入用户界面self.driver.back()#再获取用户名backtext = self.driver.find_element(By.CSS_SELECTOR, "body > div.container >             div.left > div > h3").textprint(backtext)#获取到就说明还能进入assert backtext == "zhangsan"print("有Bug! 还能进入列表页!")

在成功登录和失败登录的自动化测试中,主要需要注意以下几点:

 ①元素定位准确性:确保通过 CSS 选择器等方式准确定位到用户名输入框、密码输入框和登录按钮等元素,避免因元素定位错误导致测试失败。

 ②输入内容的正确性:成功登录时,要输入正确的用户名和密码;失败登录时,输入错误的密码等不符合要求的内容,以模拟真实的失败场景。

 ③页面加载与延迟问题:由于页面加载或前端渲染可能存在延迟,在点击登录按钮后,要适当添加等待时间(如 time.sleep),确保弹窗等后续元素能正常加载,避免因“没找到弹窗”等原因报错。

清理操作:登录前要清空用户名和密码输入框中原有的内容,保证每次测试都是在初始状态下进行。

异常处理:对于可能出现的异常情况(如弹窗未正常出现等),要使用异常处理机制(如 try - except),以便及时捕获和处理异常,保证测试流程的稳定性。

个人博客系统自动化测试总结

一、测试总体概况

本次针对个人博客系统开展自动化测试,覆盖了博客列表获取、详情页浏览、博客添加、用户注销等核心功能模块。通过自动化测试脚本的执行,主要验证系统功能的稳定性,总体上系统核心功能表现正常,未出现严重阻塞性问题。

二、测试成果

    1.    功能覆盖与执行情况
自动化测试脚本成功覆盖了预设的核心业务流程,包括从博客列表的加载、单篇博客详情的访问,到用户创建新博客的操作流程,执行过程中大部分功能点的自动化验证逻辑有效,能够准确识别功能是否正常运行。

    2.    关键指标表现
脚本执行的成功率较高,除已发现的Bug外,其余功能的自动化断言均通过,说明系统在常规业务场景下具备较好的稳定性。

三、问题Bug分析

    1.    详情页内容获取失败
推测因富文本组件的CSS设计,导致自动化测试脚本对内容框组件的识别和操作不稳定,详情页内容文本框时而可获取、时而不可获取,进而使博客内容输入自动化用例无法完全执行,需针对富文本组件的可测试性优化CSS或调整自动化定位策略。调整脚本的元素定位和内容提取逻辑。

    2.    注销后回退仍可进入主页的权限漏洞
用户注销后,通过浏览器回退按钮仍能进入系统主页,这是典型的权限控制漏洞。正常逻辑下,用户注销后应失去系统访问权限,回退操作不应绕过权限校验。需从后端会话管理、前端路由守卫等层面修复,确保权限校验的全面性。

四、改进建议

    1.    针对内容框和详情页的自动化测试阻塞问题,建议与前端团队协作,梳理组件的渲染逻辑和DOM结构,采用更精准的元素定位策略(如结合seletor属性)。

    2.    对于注销回退的权限漏洞,需后端强化会话失效后的校验逻辑,前端在路由跳转时增加权限拦截,确保用户信息安全。

五、结论

本次自动化测试验证了个人博客系统核心功能的基本可用性,虽存在部分可测试性问题和权限漏洞,但整体系统功能未受严重影响。通过对上述Bug的修复和测试方案的优化,可进一步提升系统的质量和自动化测试的有效性。

四.对博客系统进行性能测试

个人博客系统性能测试报告

1、测试概述

1. 测试目的

验证个人博客系统在多用户并发场景下的性能表现,涵盖登录博客列表获取、用户信息查看、博客详情浏览及博客添加等核心功能,确保系统在预期用户规模下的稳定性与响应效率。

2. 测试范围

①本次测试覆盖个人博客系统以下核心功能接口:

①登录页(用户身份认证接口)

②列表页(博客列表获取接口)

③用户信息页(用户信息查询接口)

④详情页(博客详情获取接口)

⑤添加博客(博客编辑提交接口)

2、测试工具说明

1. JMeter

JMeter 是开源的性能测试工具,用于模拟多用户并发请求并生成 性能报告。

使用场景:本次测试中用于创建jp@gc - Stepping Thread Group模拟阶梯式用户并发,配置 HTTP 请求采样器模拟登录、列表查询、信息查看等用户操作,通过各类监听器(聚合报告、Active Threads Over Time 等)收集性能数据。

2. Postman

Postman 是 API 接口测试工具,支持接口功能验证与请求调试。

使用场景:性能测试前,用于单个接口的功能验证(如登录接口的账号密码校验、添加博客接口的参数格式验证),确保接口功能正常后再开展 JMeter 性能测试。

使用步骤:

    1.    新建请求,设置请求方法(GET/POST 等)、URL、请求头、请求体(如登录接口的账号密码 JSON 体)。

    2.    发送请求,验证响应状态码、响应体(如登录成功返回 Token、博客列表返回正确数据结构)。

    3.    调试通过后,将请求参数同步至 JMeter 对应的 HTTP 采样器中。

为什么要JMeter和Postman结合使用?

可以这么理解:Postman是“质检员”,先确保接口“能用”;JMeter是“考官”,用于模拟多用户高并发下,验证接口在大量请求下的响应时间、吞吐量等性能指标是否达标。二者结合能完整覆盖“功能验证→性能度量”的测试链路。

3、测试执行步骤

1. 测试准备

①Postman 接口调试:对登录页、列表页、用户信息页、详情页、添加博客接口逐一进行功能验证,确认接口请求参数、响应格式、业务逻辑均正常。

②JMeter 测试计划:

        创建jp@gc - Stepping Thread Group,配置线程调度参数(如初始等待时间、用户递增步长、持续时间等)。

        添加HTTP 信息头管理器(配置 Content-Type、Token 等)、HTTP 请求默认值(配置系统基础 URL),然后填好相应信息。

           通过CSV 数据文件设置对登录账号、博客内容等进行参数化准备。

           为每个业务功能(登录、列表查询等)创建对应的 HTTP 采样器,并通过事务控制器分组管理。

HTTP请求默认值

①HTTP信息头管理器

②通用的用户定义的变量

③CSV 账号密码

④登录HTTP

⑥列表HTTP

⑦用户信息HTTP

⑧详情页HTTP

↓添加博客这里,显示请求成功了,却提示“内部错误...”

经jmeter请求到的响应头信息和网页中的响应头信息对比,发现  JMeter 中“添加博客”请求的 HTTP 信息头配置与网页端不一致。

        网页端的请求头中 Content-Type 是 application/json,而 JMeter 中该请求的 Content-Type 是 text/plain,这种数据类型不匹配会导致服务端无法正确解析请求体,本质是 JMeter 里“添加博客”的 HTTP 信息头管理器未正确配置 Content-Type: application/json 所致。

↓添加信息头管理器之前,Content-Type是text类型

↓添加信息头管理器之后,Content-Type是变成application/json,与网页端一致


如何判断application/json正确还是 text/plain正确?
可通过postman验证,改变Content-Type的值测试是否能请求成功↓

2. 测试执行

    1.    启动 JMeter 测试计划,jp@gc - Stepping Thread Group按照配置的阶梯压测线程组逐步增加并发用户数。

    2.    实时监控

jp@gc - Active Threads Over Time(并发用户趋势)、

jp@gc - Response Times Over Time(响应时间趋势)、

jp@gc - Transactions per Second(吞吐量趋势)等监听器,记录测试过程中的关键性能表现。

关于jmeter插件的下载安装→:性能测试三:jmeter进阶之图形插件 - 向前走。 - 博客园

3. 测试结果收集

从 JMeter 聚合报告中提取各接口的关键性能指标,包括样本数、平均响应时间、90% 百分位响应时间、错误率、吞吐量等。

执行之后查看结果树:展示的采样器结果(含线程、时间等元信息)、请求数据、响应数据(响应头、响应体),用于调试和分析每个HTTP请求的执行详情。

4、测试结果分析

进入你要存放测试报告的目录,输入cmd进入控制台


生成测试报告命令:Jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
-n  无图形化运行
-t   被运行的脚本
-l   将运行信息写入日志文件,后缀为jtl的日志文件
-e  生成测试报告
-o  指定报告输出目录

例:jmeter -n -t 博客系统性能测试.jmx -l Test-Report.jtl -e -o ./test-report/.

1. 性能指标汇总(形成测试报告)链接:

file:///D:/item/C++%E3%80%81C/soft_test/software_testing---------python/%E5%8D%9A%E5%AE%A2%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/test-report/index.html

2. 分析结论

根据上图的测试数据,分析结论如下:

登录HTTP、用户信息HTTP、添加博客接口的平均响应时间和错误率均处于合理范围,系统在这些场景下性能表现稳定;列表HTTP和详情页HTTP平均响应时间较高,需进一步排查接口逻辑、数据查询等环节的优化空间。

详细的结果分析请看测试报告

5、问题与建议

1.    针对列表HTTP和详情页HTTP响应时间较高的问题

     列表和详情页接口响应时间偏高,建议先检查数据库查询语句,为常用字段添加索引;同时设置分页功能,限定每页返回的数据条数,以此优化数据查询效率。

2.高并发场景预案

        针对列表和详情页接口,可提前规划限流策略,避免在极端高并发下系统崩溃,保障核心业务的可用性。

6、测试总结

        本次性能测试验证了个人博客系统核心功能在多用户并发场景下的性能表现,登录、列表查询等多数接口符合性能预期,但添加博客接口存在优化空间。后续可基于本次测试结果对系统进行针对性优化,并开展更高并发量级的性能测试以验证优化效果。


文章转载自:

http://UwjhiSIT.cbnjt.cn
http://cjrUqn3h.cbnjt.cn
http://eNZ3xaeo.cbnjt.cn
http://UwxsvTcr.cbnjt.cn
http://wRwh8ZiB.cbnjt.cn
http://N3xys1gK.cbnjt.cn
http://ZEiGV1O4.cbnjt.cn
http://29tSO5i5.cbnjt.cn
http://jiHNACWV.cbnjt.cn
http://Sr3uyKJe.cbnjt.cn
http://dFJzxMSz.cbnjt.cn
http://z77q3hsY.cbnjt.cn
http://WKcIn7BG.cbnjt.cn
http://5Y3HAzh6.cbnjt.cn
http://H69JJhT2.cbnjt.cn
http://dwcStIqh.cbnjt.cn
http://5HUlyAvY.cbnjt.cn
http://3zqtb0P8.cbnjt.cn
http://Qv4S6Qwc.cbnjt.cn
http://Ao9qL2EE.cbnjt.cn
http://qI2wxNKm.cbnjt.cn
http://clmIap2Y.cbnjt.cn
http://dkBxoNHx.cbnjt.cn
http://Tm42fcMA.cbnjt.cn
http://Py3CgPEP.cbnjt.cn
http://XGQTfGXA.cbnjt.cn
http://p9rVxawE.cbnjt.cn
http://QFkqTXII.cbnjt.cn
http://yvYDN2L6.cbnjt.cn
http://DL3DiUjR.cbnjt.cn
http://www.dtcms.com/a/372424.html

相关文章:

  • 第四项修炼:多元权衡——告别“单点最优”,在矛盾中编织和谐
  • Claude 4深度解析:AI编程新王者,双模型重塑行业标杆
  • 个人pytorch安装配置:cuda12.6 python3.13
  • 全栈经验之谈系列:(阶段一)架构思维与全局观
  • 【CMake】变量作用域3——目录作用域
  • 【系统分析师】第10章-关键技术:系统规划与分析(核心总结)
  • PINN驱动的高阶偏微分方程求解MATLAB代码
  • synchronized同步机制
  • 前端实现埋点的方式
  • 免费的GB28181平台,EasyNVR和EasyGBS应该怎么选?
  • ubuntu 24.10 忘记密码进入恢复模式重置密码
  • 缓存无处不在
  • 工具读取分析bmp文件
  • 多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
  • HTTP协议​​和​​API设计规范​​
  • 三种傍路设备配置实验
  • 踏脚迈入奇幻乐园
  • torch.dot()向量点乘,向量点乘计算方法, torch.dot如何计算的
  • Java 模块系统深度解析:从 Jigsaw 到现代模块化开发
  • 九联UNT403G/UN413G-内存大小区分参考指南
  • 基于HanLP的地址信息识别:识别出人名、地址和电话号码
  • 【java执行python】
  • 【数据结构】强化训练:从基础到入门到进阶(1)
  • 三.动态规划算法
  • Maya绑定:驱动关键帧动画案例,小球穿过自动门
  • Android影像基础--cameraAPI2核心流程
  • Ollama Python库的使用
  • 【数据结构入门】排序算法(3):了解快速排序
  • 运筹学——对偶问题的建模,以及它的基本性质
  • 【PyTorch】图像多分类