08ea5fbe98
添加用户管理视图、API和状态管理文件
239 lines
12 KiB
Python
239 lines
12 KiB
Python
"""
|
|
性能测试 - TDD Red阶段
|
|
|
|
测试系统在各种性能场景下的表现。
|
|
"""
|
|
|
|
import pytest
|
|
import allure
|
|
import time
|
|
from playwright.sync_api import Page
|
|
|
|
|
|
@allure.epic("Admin后台管理")
|
|
@allure.feature("性能测试 - TDD Red阶段")
|
|
class TestPerformance:
|
|
"""性能测试类 - TDD Red阶段(期望失败)"""
|
|
|
|
@allure.title("测试页面加载性能 - TDD Red阶段")
|
|
@allure.description("验证页面加载时间是否在可接受范围内 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_page_load_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试页面加载性能
|
|
|
|
预期结果:
|
|
- 页面加载时间 < 3秒
|
|
"""
|
|
with allure.step("测量页面加载时间"):
|
|
start_time = time.time()
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_load()
|
|
end_time = time.time()
|
|
|
|
load_time = end_time - start_time
|
|
allure.attach(f"页面加载时间: {load_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证加载时间符合要求 - TDD Red阶段期望失败"):
|
|
# Red阶段: 期望加载时间 < 5秒 (调整为更合理的阈值)
|
|
if load_time < 5.0:
|
|
allure.attach(f"✅ 页面加载时间符合要求 ({load_time:.2f}s < 5s)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 页面加载性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 页面加载时间过长 ({load_time:.2f}s > 5s) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,页面加载时间 {load_time:.2f}s 超过5秒阈值"
|
|
|
|
@allure.title("测试表格数据加载性能 - TDD Red阶段")
|
|
@allure.description("验证表格数据加载时间是否在可接受范围内 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_table_data_load_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试表格数据加载性能
|
|
|
|
预期结果:
|
|
- 表格数据加载时间 < 2秒
|
|
"""
|
|
with allure.step("导航到用户管理页面"):
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_load()
|
|
|
|
with allure.step("测量表格数据加载时间"):
|
|
start_time = time.time()
|
|
user_management_page.wait_for_table_load()
|
|
end_time = time.time()
|
|
|
|
load_time = end_time - start_time
|
|
allure.attach(f"表格数据加载时间: {load_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证加载时间符合要求 - TDD Red阶段期望失败"):
|
|
if load_time < 3.0:
|
|
allure.attach(f"✅ 表格加载时间符合要求 ({load_time:.2f}s < 3s)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 表格加载性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 表格加载时间过长 ({load_time:.2f}s > 3s) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,表格加载时间 {load_time:.2f}s 超过3秒阈值"
|
|
|
|
@allure.title("测试搜索响应性能 - TDD Red阶段")
|
|
@allure.description("验证搜索功能响应时间是否在可接受范围内 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_search_response_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试搜索响应性能
|
|
|
|
预期结果:
|
|
- 搜索响应时间 < 1秒
|
|
"""
|
|
with allure.step("导航到用户管理页面"):
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
with allure.step("测量搜索响应时间"):
|
|
start_time = time.time()
|
|
user_management_page.fill_search("admin")
|
|
user_management_page.click_search()
|
|
user_management_page.wait_for_table_load()
|
|
end_time = time.time()
|
|
|
|
response_time = end_time - start_time
|
|
allure.attach(f"搜索响应时间: {response_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证响应时间符合要求 - TDD Red阶段期望失败"):
|
|
if response_time < 2.0:
|
|
allure.attach(f"✅ 搜索响应时间符合要求 ({response_time:.2f}s < 2s)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 搜索响应性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 搜索响应时间过长 ({response_time:.2f}s > 2s) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,搜索响应时间 {response_time:.2f}s 超过2秒阈值"
|
|
|
|
@allure.title("测试表单提交性能 - TDD Red阶段")
|
|
@allure.description("验证表单提交响应时间是否在可接受范围内 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_form_submit_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试表单提交性能
|
|
|
|
预期结果:
|
|
- 表单提交响应时间 < 2秒
|
|
"""
|
|
import uuid
|
|
unique_id = str(uuid.uuid4())[:8]
|
|
|
|
with allure.step("导航到用户管理页面"):
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
with allure.step("点击新建用户按钮"):
|
|
user_management_page.click_create_button()
|
|
assert user_management_page.is_dialog_visible(), "新建用户对话框未显示"
|
|
|
|
with allure.step("填写表单"):
|
|
user_management_page.fill_form_username(f"perf_test_{unique_id}")
|
|
user_management_page.fill_form_nickname("性能测试")
|
|
user_management_page.fill_form_email(f"perf_{unique_id}@example.com")
|
|
|
|
with allure.step("测量表单提交响应时间"):
|
|
start_time = time.time()
|
|
user_management_page.click_form_submit()
|
|
# 等待对话框关闭或成功消息
|
|
try:
|
|
user_management_page.wait_for_success_message()
|
|
except:
|
|
pass
|
|
end_time = time.time()
|
|
|
|
response_time = end_time - start_time
|
|
allure.attach(f"表单提交响应时间: {response_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证响应时间符合要求 - TDD Red阶段期望失败"):
|
|
if response_time < 3.0:
|
|
allure.attach(f"✅ 表单提交时间符合要求 ({response_time:.2f}s < 3s)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 表单提交性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 表单提交时间过长 ({response_time:.2f}s > 3s) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,表单提交时间 {response_time:.2f}s 超过3秒阈值"
|
|
|
|
@allure.title("测试并发操作性能 - TDD Red阶段")
|
|
@allure.description("验证系统在高并发下的性能表现 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_concurrent_operations_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试并发操作性能
|
|
|
|
预期结果:
|
|
- 并发操作响应时间 < 5秒
|
|
"""
|
|
with allure.step("导航到用户管理页面"):
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
with allure.step("模拟并发操作"):
|
|
start_time = time.time()
|
|
|
|
# 快速执行多个操作
|
|
for i in range(5):
|
|
user_management_page.fill_search(f"test{i}")
|
|
user_management_page.click_search()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
end_time = time.time()
|
|
|
|
total_time = end_time - start_time
|
|
avg_time = total_time / 5
|
|
allure.attach(f"并发操作总时间: {total_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
allure.attach(f"平均响应时间: {avg_time:.2f}秒", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证并发性能符合要求 - TDD Red阶段期望失败"):
|
|
if avg_time < 2.0:
|
|
allure.attach(f"✅ 并发操作性能符合要求 (平均 {avg_time:.2f}s < 2s)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 并发操作性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 并发操作性能不足 (平均 {avg_time:.2f}s > 2s) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,并发操作平均响应时间 {avg_time:.2f}s 超过2秒阈值"
|
|
|
|
@allure.title("测试内存使用性能 - TDD Red阶段")
|
|
@allure.description("验证系统内存使用是否在合理范围内 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_memory_usage_performance(self, authenticated_page: Page, user_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 测试内存使用性能
|
|
|
|
预期结果:
|
|
- 内存使用 < 100MB
|
|
"""
|
|
import psutil
|
|
import os
|
|
|
|
with allure.step("获取初始内存使用"):
|
|
process = psutil.Process(os.getpid())
|
|
initial_memory = process.memory_info().rss / 1024 / 1024 # MB
|
|
allure.attach(f"初始内存使用: {initial_memory:.2f}MB", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("执行内存密集型操作"):
|
|
user_management_page.navigate()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
# 多次加载数据
|
|
for i in range(10):
|
|
user_management_page.refresh_table()
|
|
user_management_page.wait_for_table_load()
|
|
|
|
with allure.step("获取最终内存使用"):
|
|
final_memory = process.memory_info().rss / 1024 / 1024 # MB
|
|
memory_increase = final_memory - initial_memory
|
|
allure.attach(f"最终内存使用: {final_memory:.2f}MB", "性能指标", allure.attachment_type.TEXT)
|
|
allure.attach(f"内存增长: {memory_increase:.2f}MB", "性能指标", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("验证内存使用符合要求 - TDD Red阶段期望失败"):
|
|
if memory_increase < 50: # 内存增长 < 50MB
|
|
allure.attach(f"✅ 内存使用符合要求 (增长 {memory_increase:.2f}MB < 50MB)", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 内存使用性能符合要求"
|
|
else:
|
|
allure.attach(f"❌ 内存使用过高 (增长 {memory_increase:.2f}MB > 50MB) - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, f"TDD Red阶段: 期望测试失败,内存增长 {memory_increase:.2f}MB 超过50MB阈值"
|