博客系统测试报告

一、测试概述

本次测试对象为 Web 博客系统,系统主要包含登录、显示个人信息、发布博客、显示博客内容等核心功能。本次测试通过手工测试、Postman 接口测试、JMeter 性能测试以及 Web + Python + Selenium 自动化测试,对系统功能正确性、接口可靠性、性能表现和核心业务流程稳定性进行验证。

二、测试范围

|------|-------------------------|-------------------------|
| 测试模块 | 主要测试内容 | 测试方式 |
| 用户模块 | 登录、退出、显示个人信息 | 手工、Postman、Jmeter、自动化测试 |
| 文章模块 | 文章列表、发布文章,查看文章详情 | 手工,Postman、Jmeter、自动化测试 |
| 接口测试 | 状态码,响应数据、参数校验 | Postman |
| 性能测试 | 登录,个人信息,博客列表,博客详情页,发布博客 | Jmeter |

三、测试环境

|-------|------------------------------------------------------------|
| 项目 | 配置 |
| 操作系统 | Windows11 |
| 浏览器 | Google Chrome 156.0.8078.48 |
| 测试地址 | 博客登陆页 |
| 后端环境 | Pythpn3.11 |
| 手工测试 | Chrome、浏览器开发者工具 |
| 接口测试 | Postman |
| 性能测试 | Jmeter5.5 |
| 自动化测试 | Python3.11、Selenium |
| 测试时间 | 2026.9-10 |
| 测试人员 | |

四、测试方法

1.设计总体测试用例

用例编号 模块 测试场景 手工 Postman JMeter Selenium 优先级
LOGIN-001 登录 使用正确账号和密码登录 是 是 是 是 P0
LOGIN-002 登录 使用错误密码登录 是 是 否 是 P1
LOGIN-003 登录 使用不存在的账号登录 是 是 否 否 P1
LOGIN-004 登录 用户名或密码为空 是 是 否 否 P1
LOGIN-005 登录 登录成功后退出或结束登录状态 是 是 否 否 P1
LIST-001 博客列表 打开并查看博客列表 是 是 是 是 P0
LIST-002 博客列表 博客列表为空 是 是 否 否 P1
LIST-003 博客列表 列表中的博客信息正确 是 是 否 是 P0
DETAIL-001 博客详情 从列表打开博客详情 是 否 否 是 P0
DETAIL-002 博客详情 详情页内容与列表所选博客一致 是 否 否 是 P0
DETAIL-003 博客详情 访问不存在的博客详情 是 是 否 否 P1
PUBLISH-001 发布博客 登录后发布正常博客 是 是 是 是 P0
PUBLISH-002 发布博客 标题为空时提交 是 是 否 否 P1
PUBLISH-003 发布博客 正文为空时提交 是 是 否 否 P1
PUBLISH-004 发布博客 标题或正文超过长度限制 是 是 否 否 P1
PUBLISH-005 发布博客 发布后从列表和详情查看新博客 是 否 否 是 P0
AUTH-001 登录状态 未登录时尝试发布博客 是 是 否 是 P0
DATA-001 数据一致性 页面显示与接口返回数据一致 是 是 否 可选 P1

2.手工测试

用例编号 测试场景 前置条件 测试步骤 预期结果 实际结果
MAN-LOGIN-001 正常登录 测试账号有效 打开登录页,输入正确用户名和密码并提交 登录成功,进入预期页面,登录状态显示正确 登录成功,进入预期页面,登录状态显示正确
MAN-LOGIN-002 错误密码登录 测试账号有效 输入正确用户名和错误密码并提交 登录失败,显示合理提示,不进入登录状态 登录失败,系统显示密码不正确
MAN-LOGIN-003 不存在的账号登录 登录页可访问 输入不存在的用户名和任意密码并提交 登录失败,不进入登录状态 登录失败,系统显示用户不存在
MAN-LOGIN-004 登录字段为空 登录页可访问 分别测试用户名为空、密码为空、两项均为空 阻止提交或提示必填,不出现异常 系统提示参数校验失败
MAN-LOGIN-005 登录输入边界 登录页可访问 输入超长用户名、超长密码、前后空格和特殊字符 系统按规则校验,页面稳定,提示合理 系统提示参数校验失败
MAN-LOGIN-006 退出或登录状态结束 用户已登录 点击退出;若无退出功能,则清除登录状态或重新打开浏览器验证 登录状态失效,不能继续使用需要登录的功能 系统提示用户退出,并跳转到登录页
MAN-LIST-001 查看博客列表 系统中存在博客 登录或访问首页,打开博客列表 列表正常显示,没有加载错误 列表正常显示,没有加载错误
MAN-LIST-002 空博客列表 测试环境无博客数据 打开博客列表 显示合理的空状态,不出现空白异常或错误信息 系统显示博客列表为空
MAN-LIST-003 博客列表信息 列表中存在博客 检查页面实际展示的标题、作者、发布时间或摘要 展示内容与对应博客数据一致 展示内容与对应博客数据一致
MAN-DETAIL-001 打开博客详情 列表中存在博客 点击一篇博客的标题或详情入口 打开所选博客详情页 成功打开所选博客详情页
MAN-DETAIL-002 检查详情内容 已打开博客详情页 对照测试数据检查标题、作者、时间和正文 详情内容完整,且属于所选博客 文章详情内容完整,且属于所选博客
MAN-DETAIL-003 不存在的博客详情 可直接访问详情 URL 输入或访问不存在的博客地址 显示不存在或错误提示,不显示其他博客内容,不出现服务异常 不显示任何内容
MAN-PUBLISH-001 发布正常博客 用户已登录 进入发布页面,输入有效标题和正文并提交 发布成功,显示合理反馈 系统弹窗显示博客发表成功
MAN-PUBLISH-002 验证发布结果 已成功发布博客 返回博客列表并打开新博客详情 新博客在列表中可见,详情内容与提交内容一致 新博客在列表中可见,详情内容与提交内容一致
MAN-PUBLISH-003 标题为空 用户已登录 留空标题,填写正文并提交 阻止发布或提示标题必填,不产生无效博客 系统提示参数校验失败
MAN-PUBLISH-004 正文为空 用户已登录 填写标题,留空正文并提交 阻止发布或提示正文必填,不产生无效博客 系统提示参数校验失败
MAN-PUBLISH-005 标题和正文均为空 用户已登录 不填写内容直接提交 阻止发布,提示信息明确 系统提示参数校验失败
MAN-PUBLISH-006 发布内容边界 用户已登录 测试最短、最大长度、超长内容、纯空格和特殊字符 按系统规则接受或拒绝;页面无异常,失败时内容不被错误提交 系统提示标题不能超过100个字符
MAN-PUBLISH-007 发布内容格式 用户已登录 在正文输入换行、标点和 HTML 标签等内容,提交后查看详情 内容按系统设计正确保存和展示,不发生页面异常 内容按系统设计正确保存和展示,不发生页面异常
MAN-AUTH-001 未登录尝试发布 用户未登录 直接访问发布页面或尝试提交发布请求 按系统设计跳转登录页或拒绝操作,不创建博客 系统提示用户未登录, 即将跳转到登录页

3.Postman接口测试

用例编号 接口场景 请求条件 检查内容 预期结果 实际结果
API-LOGIN-001 正常登录 正确用户名和密码 状态码、响应结构、登录凭据或用户信息 登录成功,返回有效登录状态 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": { "id": 1, "token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlck5hbWUiOiJ6aGFuZ3NhbiIsImlhdCI6MTc5Mzc3OTk3OSwiZXhwIjoxNzk0Mzg0Nzc5fQ.Xq4ujIjQMaBKIrZiWxIpntI_WJXMxbLxSBaWrYfLg1Q" } } 确认:成功获取到Token,未返回密码等敏感信息
API-LOGIN-002 错误密码 正确用户名、错误密码 状态码、错误信息、是否返回有效凭据 登录失败,不返回有效登录状态 http状态码:200 返回数据: { "code": -1, "errMsg": "密码不正确", "data": null } 确认:无Token返回,提示密码不正确
API-LOGIN-003 不存在的用户名 不存在的用户名和密码 状态码、响应信息 登录失败,响应符合接口约定 http状态码:200 返回数据: { "code": -1, "errMsg": "用户不存在", "data": null } 确认:无Token返回,提示用户不存在
API-LOGIN-004 缺少登录参数 缺少用户名或密码 参数校验、错误响应结构 返回参数错误,不出现服务器异常 http状态码:400 返回数据: { "code": -1, "errMsg": "参数不合法:密码不能为空", "data": null } 确认:无Token返回,提示参数不合法,用户名/密码不能为空
API-LOGIN-005 非法登录参数 错误类型、超长字段或特殊字符 输入校验、错误响应 请求被合理处理,不出现服务器异常 http状态码:400 返回数据: { "code": -1, "errMsg": "参数不合法:用户名长度不能超过20", "data": null } 确认:无Token返回,提示参数不合法,用户名长度不能超过20
API-LIST-001 查询博客列表 正常请求 状态码、列表结构、博客字段 返回成功,列表结构和字段符合接口约定 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": [ { "id": 6917, "title": "qqq", "content": "##在这qqq里写下一篇博客", "userId": 2, "updateTime": "2026-11-04 16:01" }, { "id": 6916, "title": "111", "content": "111\n222\n555\n&&& \n 7@#$%^&", "userId": 2, "updateTime": "2026-11-04 15:59" }, .......... 确认:成功获取到博客列表,正确返回博客id,标题,内容,时间
API-LIST-002 查询空列表 使用无数据环境或测试数据 空列表响应结构 返回空列表或系统约定的空状态,不报错 待执行
API-DETAIL-001 查询正常博客详情 使用存在的博客 ID 状态码、标题、正文等字段 返回对应博客详情 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": { "id": 6917, "title": "qqq", "content": "##在这qqq里写下一篇博客", "userId": 2, "updateTime": "2026-11-04 16:01" } } 确认:成功获取到博客详情
API-DETAIL-002 查询不存在的博客 使用不存在的博客 ID 状态码、错误信息 返回未找到或业务错误,不泄露其他数据 http状态码:200 返回数据: { "code": -1, "errMsg": "Method parameter 'blogId': Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; For input string: \"9999999999999999\"", "data": null } 确认:无博客返回,显示博客id错误
API-DETAIL-003 非法博客 ID 使用空值、负数或非数字 ID 参数处理、响应状态 请求被拒绝或返回合理错误,不出现服务器异常 http状态码:200 返回数据:(负数)(这可能算是一个bug) { "code": 200, "errMsg": null, "data": null } 返回数据:(空值) { "code": -1, "errMsg": "参数不合法", "data": null } 返回数据:(非数字Id) { "code": -1, "errMsg": "Method parameter 'blogId': Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; For input string: \"asg\"", "data": null } 确认:无博客返回,提示后端要求blogId参数必须是数字
API-PUBLISH-001 正常发布博客 有效登录状态、有效标题和正文 状态码、返回数据、创建结果 发布成功,可通过列表或详情接口查询到新博客 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": true } 确认:成功发布博客
API-PUBLISH-002 未登录发布博客 不携带登录凭据 鉴权状态码、数据是否创建 请求被拒绝,不创建博客 http状态码:401 Unauthorized 验证确认:接口成功拦截了未登录的发布请求,未执行博客发布逻辑
API-PUBLISH-003 标题为空 有效登录状态、标题为空 参数校验、数据是否创建 返回参数错误,不创建博客 http状态码:400 Bad Request 返回数据: { "code": -1, "errMsg": "参数不合法:博客标题不能为空", "data": null } 确认:后端成功拦截非法参数,报错提示清晰。未出现服务器内部异常
API-PUBLISH-004 正文为空 有效登录状态、正文为空 参数校验、数据是否创建 返回参数错误,不创建博客 http状态码:400 Bad Request 返回数据: { "code": -1, "errMsg": "参数不合法:博客内容不能为空", "data": null } 确认:后端成功拦截非法参数,报错提示清晰。未出现服务器内部异常
API-PUBLISH-005 发布超长内容 有效登录状态、超长标题或正文 长度校验和响应信息 按系统限制拒绝或处理,不出现异常 http状态码:400 Bad Request 返回数据: { "code": -1, "errMsg": "参数不合法:标题长度不能超过100个字符", "data": null } 确认:后端成功拦截非法参数,报错提示清晰。未出现服务器内部异常
API-PUBLISH-006 发布特殊内容 有效登录状态、正文包含特殊字符或 HTML 内容 数据保存和返回内容 内容按系统规则保存和呈现 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": true } 确认:内容按系统规则保存和呈现
API-DATA-001 发布后查询数据 先调用发布接口,再调用列表或详情接口 创建结果和查询结果 查询到的数据与提交内容一致 http状态码:200 返回数据: { "code": 200, "errMsg": null, "data": { "id": 6931, "title": "测试特殊字符", "content": "这是一段正常文字😀,包含特殊符号 !@#¥%......&*。还有 HTML 标签:<b>加粗</b>,以及一段危险脚本:<script>alert('xss')</script>,最后是一个 SQL 注入尝试:' OR 1=1 -- ", "userId": 1, "updateTime": "2026-11-04 17:29" } } 确认:查询接口返回的title为"测试特殊字符",content与提交的内容完全一致,id成功生成
API-RESP-001 接口响应时间 登录、列表、详情、发布接口 Postman 显示的响应时间 记录响应时间,并与项目约定阈值比较 登录接口实际响应时间:39ms 列表页接口实际响应时间:14.06s 博客详情页接口实际响应时间:38ms 发布接口实际响应时间:46ms

4.Jmeter性能测试

用例编号 测试场景 前置条件 负载配置 测试步骤 预期结果
JM-001 登录接口并发测试 登录接口可用,准备有效测试账号 20 个用户;Ramp-up 20 秒;持续 60 秒 配置登录请求和成功断言;设置线程组参数;运行并记录指标 有效账号登录成功,响应内容正确;响应时间和错误率满足约定目标
JM-002 博客列表并发测试 系统中存在博客;若接口需要登录,已配置登录凭据 50 个用户;Ramp-up 30 秒;持续 120 秒 配置列表请求和响应断言;运行测试,检查返回数据并记录指标 列表正常返回,数据结构正确,无业务异常;性能指标满足约定目标
JM-003 博客详情并发测试 准备多个有效博客 ID;若接口需要登录,已配置登录凭据 50 个用户;Ramp-up 30 秒;持续 120 秒 参数化博客 ID;配置详情请求和断言;运行并记录指标 返回对应博客详情,标题和正文等关键字段正确;性能指标满足约定目标
JM-004 发布博客并发测试 用户可正常登录;使用专用测试数据,标题具有唯一标识 5 个用户;Ramp-up 10 秒;持续 60 秒 配置登录及发布请求;生成唯一标题;添加发布成功断言;运行后抽查新博客 发布成功,内容保存正确;不存在请求失败却错误创建数据等异常;性能指标满足约定目标
JM-005 核心业务组合测试 准备有效账号和博客数据 30 个用户;Ramp-up 30 秒;持续 180 秒 每个用户首次登录后,循环执行查看列表、打开详情;分别统计接口指标 业务流程正常,登录状态有效,列表和详情返回正确;各接口性能指标满足约定目标

5.Web UI自动化测试

测试目的

为了提高博客系统回归测试的效率,减少重复的人工操作,本项目使用 Python 和 Selenium WebDriver 编写 Web UI 自动化测试脚本,对博客系统的核心功能进行验证。

本次自动化测试主要用于:

  1. 验证博客系统核心业务流程是否能够正常执行。
  2. 检查系统页面元素是否正确加载。
  3. 验证登录成功和登录失败场景。
  4. 验证博客发布后的页面跳转和数据展示。
  5. 提高回归测试效率,降低人工测试成本。

测试工具与环境

项目 内容
编程语言 Python
自动化测试框架 Selenium WebDriver
浏览器 Chrome
浏览器驱动 ChromeDriver
测试对象 博客系统 Web 页面
测试地址 http://47.108.157.13:8090
元素定位方式 CSS Selector
等待方式 显式等待、固定等待
测试执行方式 Python 脚本顺序执行
测试结果辅助 页面截图、断言、控制台输出

自动化测试框架结构

本项目按照页面功能对测试代码进行划分,主要包括登录页面、博客列表页面、博客详情页面和博客编辑页面。

文件或模块 主要职责
BlogLogin.py 执行登录成功和登录失败测试
BlogList.py 验证博客列表页面元素是否正常显示
BlogDetail.py 验证博客详情页面的标题、时间和正文区域
BlogEdit.py 验证博客发布流程及发布后的页面跳转
RunTest.py 统一组织和执行所有自动化测试用例
common.Utils.BlogDriver 提供浏览器驱动和截图功能

测试脚本通过 BlogDriver.driver 共享浏览器实例。RunTest.py 负责按照既定顺序执行测试,并使用 try...finally 结构确保测试结束后关闭浏览器。

自动化测试流程

自动化测试的整体执行流程如下:

  1. 打开博客登录页面。
  2. 输入错误密码,验证登录失败提示。
  3. 输入正确用户名和密码,验证登录成功。
  4. 进入博客列表页面,检查博客标题、摘要、链接和用户昵称。
  5. 进入博客详情页面,检查博客标题、发布时间和正文区域。
  6. 进入博客编辑页面,填写博客标题和正文。
  7. 点击发布按钮,处理发布成功提示。
  8. 验证页面是否跳转到博客列表页面。
  9. 检查发布后的博客标题是否正确显示。
  10. 测试结束后关闭浏览器。

自动化测试执行顺序如下:

复制代码
登录失败测试
    ↓
登录成功测试
    ↓
博客列表测试
    ↓
博客详情测试
    ↓
博客发布测试
    ↓
关闭浏览器

自动化测试用例

用例编号 测试功能 测试步骤 预期结果
UI-AUTO-001 登录失败 输入正确用户名和错误密码,点击登录 系统弹出"密码不正确"提示,登录失败
UI-AUTO-002 登录成功 输入正确用户名和密码,点击登录 成功进入博客系统,并显示用户昵称
UI-AUTO-003 博客列表展示 打开博客列表页面 页面显示博客标题、博客摘要、详情入口和用户昵称
UI-AUTO-004 博客详情展示 打开指定博客详情页面 页面显示博客标题、发布时间和正文区域
UI-AUTO-005 发布博客 输入博客标题和正文,点击发布 出现发布成功提示,并跳转到博客列表页面
UI-AUTO-006 发布结果验证 在博客列表页面查找刚发布的博客标题 页面显示与输入内容一致的博客标题

关键实现说明

1. 页面元素定位

测试脚本主要使用 CSS Selector 定位页面元素。例如:

复制代码
self.driver.find_element(By.CSS_SELECTOR, "#username")
self.driver.find_element(By.CSS_SELECTOR, "#password")
self.driver.find_element(By.CSS_SELECTOR, "#submit")

其中,#username 用于定位用户名输入框,#password 用于定位密码输入框,#submit 用于定位登录或发布按钮。

对于博客列表和详情页面,脚本通过 CSS Selector 定位标题、正文、时间和用户昵称等元素,从而判断页面内容是否正常加载。

2. 显式等待

对于页面加载、按钮显示和浏览器弹窗等动态内容,脚本使用 Selenium 的显式等待机制。例如:

复制代码
wait.until(
    EC.visibility_of_element_located(
        (By.CSS_SELECTOR, "#title")
    )
)

显式等待会在指定时间内持续检查目标元素是否满足条件。与固定等待相比,显式等待能够减少因页面加载速度不同导致的测试失败。

3. 登录失败验证

登录失败测试输入错误密码后,等待浏览器弹窗出现,读取弹窗文字并进行断言:

复制代码
actual = alert.text
assert actual == "密码不正确"
alert.accept()

该测试不仅检查弹窗是否出现,还验证弹窗内容是否符合预期。

4. 博客发布验证

博客发布测试首先输入标题和正文,然后点击发布按钮。发布后,脚本执行以下检查:

  • 是否出现发布成功提示;
  • 弹窗内容是否能够正常读取;
  • 是否跳转到博客列表页面;
  • 博客列表中是否出现预期标题。

通过以上检查,可以验证博客发布流程是否基本正常。

5. 测试截图

每个主要测试用例执行完成后调用截图方法:

复制代码
BlogDriver.getScreeShot()

截图可以作为测试结果的辅助证据,用于记录测试执行时的页面状态,也便于定位测试失败原因。

自动化测试结果

用例编号 测试功能 执行结果 实际结果 备注
UI-AUTO-001 登录失败 通过 输入错误密码后,弹窗提示为"密码不正确",与断言一致 已验证错误提示文字
UI-AUTO-002 登录成功 通过 提交有效账号后,成功定位登录页面中的用户昵称元素 已验证昵称元素存在,未校验具体昵称
UI-AUTO-003 博客列表展示 通过 成功定位博客标题、摘要、详情入口及用户昵称元素 已验证关键元素存在
UI-AUTO-004 博客详情展示 通过 成功定位博客标题、时间及正文区域 已验证关键元素存在
UI-AUTO-005 发布博客 通过 提交后出现提示弹窗,关闭弹窗后跳转至博客列表页 代码未断言弹窗的具体文字
UI-AUTO-006 发布结果验证 通过 列表中显示的博客标题与输入的"自动化测试创建"一致 已验证标题,未复查正文

自动化测试结果分析

本次自动化测试覆盖了博客系统的主要用户操作流程。测试结果表明,自动化脚本能够模拟用户完成登录、查看博客列表、查看博客详情和发布博客等操作,并能够通过元素定位、页面跳转、弹窗信息和文本断言对执行结果进行判断。

其中,登录失败用例通过检查错误弹窗内容验证系统的异常处理功能;登录成功用例通过检查登录后页面中的用户昵称验证登录状态;博客列表和详情用例通过检查关键页面元素验证页面加载情况;博客发布用例则进一步验证了输入、提交、弹窗提示、页面跳转和发布结果展示等流程。

但是,当前自动化测试仍存在一定局限:

  1. 部分测试只检查页面元素是否存在,没有进一步校验元素的具体文本内容。
  2. 登录成功测试使用了固定等待时间,可能受到网络或服务器响应速度影响。
  3. 部分 CSS Selector 层级较深,页面结构变化后可能导致定位失败。
  4. 博客标题采用固定内容,多次执行可能产生重复数据。
  5. 测试账号、密码和服务器地址直接写在代码中,环境切换不够方便。
  6. 当前测试用例之间存在登录状态依赖,部分用例不能完全独立运行。
  7. 博客正文发布后没有进一步进入详情页验证正文内容是否保存成功。

测试结果

六、测试结果填写设计

测试完成后再填写实际执行数量、通过率和性能指标。

1. 功能与接口测试汇总

测试类型 计划用例数 实际执行数 通过数 失败数 阻塞/跳过数 通过率
手工测试 20 20 19 1 0 95%
Postman 接口测试 18 18 17 0 1 94.4%
Selenium 自动化测试 6 6 6 0 0 100%

2. JMeter 性能测试结果

用例编号 测试场景 用户数 样本数 平均响应时间(ms) P95(ms) 吞吐量(次/秒) 错误率 测试结论
JM-001 登录接口 20 5216 193 519 86.5/sec 0.00% 通过:各项指标正常,错误率0%
JM-002 博客列表 50 122 41512 162029 27.3/min 11.48% 不通过:响应时间过长,TPS极低,错误率过高
JM-003 博客详情 50 5714 447 780 47.5/sec 0.00% 通过:各项指标正常,错误率0%
JM-004 发布博客 5 3385 42 53 56.5/sec 0.00% 通过:各项指标正常,错误率0%
JM-005 核心业务组合 30 357 18164 30393 1.1/sec 21.57% 不通过:响应时间过长,TPS极低,错误率过高

3. 缺陷记录

编号 问题描述 影响 建议
BUG-001 缺少空白个人账户,未能充分验证新用户或无个人资料用户的页面展示 无法确认空白账户登录后,个人信息区域和博客列表等页面是否能正常显示,可能遗漏空数据场景下的展示或处理问题 创建专用空白测试账户,补充登录、个人信息展示及博客列表的测试用例
BUG-002 用户登录凭证存在有效期限制,测试执行过程中凭证可能过期 用户登录状态失效后,后续博客列表请求可能返回异常或无法获取数据,影响测试结果判断 在测试流程中增加凭证有效性检查;凭证失效时重新登录或刷新凭证;记录凭证失效时间及相关响应信息
BUG-003 公用小型系统在测试期间出现卡顿 系统响应变慢可能导致页面加载超时、请求失败或测试结果波动,影响自动化测试的稳定性,也可能影响其他使用者 控制并发量和测试时长,优先在低峰时段测试;与系统维护方确认测试窗口,并监控服务器资源和请求错误情况

4. 测试结论

本次测试覆盖登录、博客列表、博客详情和博客发布功能,使用手工测试、Postman 接口测试、JMeter 性能测试及 Selenium 自动化测试进行验证。功能及接口用例共计划执行 44 条,实际执行 44 条,其中通过 42 条、失败 1 条、阻塞或跳过 1 条,整体通过率为 95.5%。其中手工测试 20 条,通过 19 条、失败 1 条,通过率 95%;Postman 接口测试 18 条,通过 17 条、阻塞 1 条,通过率 94.4%;Selenium 自动化测试 6 条,全部通过,通过率 100%。

性能测试覆盖登录、博客列表、博客详情、发布博客和核心业务组合共 5 个场景。登录接口在 20 并发下 P95 响应时间为 519 ms ,错误率 0.00% ;博客详情在 50 并发下 P95 为 780 ms ,错误率 0.00% ;发布博客在 5 并发下 P95 为 53 ms ,错误率 0.00% ,均满足预期目标。博客列表在 50 并发下 P95 高达 162029 ms ,错误率 11.48% ;核心业务组合在 30 并发下 P95 为 30393 ms ,错误率 21.57%,两项均未达到性能目标,说明列表查询接口在高并发下存在明显性能瓶颈。

本轮共发现 3 个缺陷,其中严重缺陷 0 个,主要为空白账户场景覆盖不足、登录凭证有效期限制以及测试期间系统卡顿等问题,均已记录并给出改进建议。综合功能、接口、性能和自动化测试结果,核心业务流程功能正确、接口校验完善、自动化回归稳定,但博客列表接口在高并发场景下响应时间和错误率不达标,测试结论为 有条件通过:建议优先优化列表查询性能(如分页、缓存、索引优化),修复后再进行一轮性能回归验证。

相关推荐
Evand J31 分钟前
【MATLAB例程12】永磁同步电机基于增广无迹卡尔曼滤波的未知负载转矩在线观测
开发语言·matlab
时间的拾荒人2 小时前
CMake 实战指南:从基础语法到静态库/动态库制作与链接
开发语言·c++·面试
xyouyuweizhu2 小时前
Java InetAddress 详解:从 IP 地址表示到主机名解析
java·开发语言·python
布莱克60511 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
LabVIEW开发11 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
benchmark_cc12 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Zenova EdgeOS13 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是13 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
FRing0313 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2