43. 远程分布式测试实现

43. 远程分布式测试实现详解

一、远程测试环境配置

1.1 远程WebDriver服务定义

python 复制代码
# Chrome浏览器远程服务地址
chrome_url = r'http://localhost:5143'

# Edge浏览器远程服务地址
edge_url = r'http://localhost:9438'
  • 关键概念:每个URL对应一个独立的WebDriver服务
  • 典型配置
    • localhost:本地服务
    • 192.168.1.100:4444:局域网内其他机器
    • cloud-test.com:443:云端测试平台

1.2 浏览器能力配置

python 复制代码
# 从caps_setting导入预定义配置
from chap9.caps_setting import *

# Chrome配置示例
CHROME_CAPS_1 = {
    'browserName': 'chrome',
    'goog:chromeOptions': {
        'args': ['--headless', '--disable-gpu']
    }
}

CHROME_CAPS_2 = {
    'browserName': 'chrome',
    'goog:chromeOptions': {
        'args': ['--window-size=1920,1080']
    }
}

# Edge配置示例
EDGE_CAPS_1 = {
    'browserName': 'MicrosoftEdge',
    'ms:edgeOptions': {
        'args': ['--inprivate']
    }
}

二、测试套件定义

2.1 函数式测试套件

python 复制代码
test_suit_func = [
    # 任务组1:在Chrome服务1上执行登录测试
    ([test_login], chrome_url, CHROME_CAPS_1),
    
    # 任务组2:在Chrome服务2上执行搜索测试
    ([test_search], chrome_url, CHROME_CAPS_2),
    
    # 任务组3:在Edge服务上执行搜索测试
    ([test_search], edge_url, EDGE_CAPS_1)
]
  • 结构说明(测试函数列表, WebDriver URL, 浏览器配置)
  • 特点
    • 不同任务组可指向不同服务节点
    • 支持相同服务不同配置

2.2 面向对象测试套件

python 复制代码
test_suit_cls = [
    # 任务组1:在Chrome服务1上执行登录测试类
    ([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
    
    # 任务组2:在Chrome服务1上再次执行登录测试类
    ([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
    
    # 任务组3:在Chrome服务2上执行主功能测试类
    ([AsyncTestMain], chrome_url, CHROME_CAPS_2),
    
    # 任务组4:在Edge服务上执行主功能测试类
    ([AsyncTestMain], edge_url, EDGE_CAPS_1)
]
  • 注意事项:同一测试类可在不同节点重复执行
  • 适用场景:复杂业务流测试

三、测试执行入口

3.1 函数式测试执行

python 复制代码
main_func(test_suit_func)
  • 功能:执行函数式测试套件
  • 内部流程
    1. 为每个任务组创建异步任务
    2. 连接对应WebDriver服务
    3. 应用浏览器配置
    4. 顺序执行组内测试函数
    5. 关闭浏览器连接

3.2 面向对象测试执行

python 复制代码
# main_cls(test_suit_cls)  # 本例中注释掉
  • 执行方式:取消注释即可运行
  • 特点
    • 自动检测并执行测试类中的test_*方法
    • 支持在不同节点执行相同测试类

四、分布式执行流程

4.1 测试任务分发

plaintext 复制代码
主控制机
  ├── 任务组1 → Chrome服务1 (localhost:5143)
  ├── 任务组2 → Chrome服务2 (localhost:5143) 不同配置
  └── 任务组3 → Edge服务 (localhost:9438)

4.2 实际执行时序

plaintext 复制代码
时间 | 任务组1 (Chrome服务1)       | 任务组2 (Chrome服务2)       | 任务组3 (Edge服务)
-----|---------------------------|---------------------------|-------------------
 0s  | 启动浏览器(headless)        | 启动浏览器(全屏)            | 启动浏览器(隐私模式)
 1s  | 执行test_login()           | 执行test_search()          | 执行test_search()
 3s  | 验证登录成功                | 验证搜索结果               | 验证搜索错误提示
 5s  | 关闭浏览器                  | 关闭浏览器                 | 关闭浏览器

五、远程节点配置示例

5.1 启动Chrome节点服务

bash 复制代码
# 在机器1 (IP:192.168.1.101) 上启动
chromedriver --port=5143

# 在机器2 (IP:192.168.1.102) 上启动
chromedriver --port=5143

5.2 启动Edge节点服务

bash 复制代码
# 在机器3 (IP:192.168.1.103) 上启动
msedgedriver --port=9438

5.3 测试套件配置

python 复制代码
chrome_url1 = r'http://192.168.1.101:5143'
chrome_url2 = r'http://192.168.1.102:5143'
edge_url = r'http://192.168.1.103:9438'

test_suit_func = [
    ([test_login], chrome_url1, CHROME_CAPS),
    ([test_search], chrome_url2, CHROME_CAPS),
    ([test_search], edge_url, EDGE_CAPS)
]

六、执行效果分析

6.1 资源使用情况

任务组 服务地址 浏览器类型 内存占用 CPU使用
组1 localhost:5143 Chrome 320MB 12%
组2 localhost:5143 Chrome 350MB 15%
组3 localhost:9438 Edge 380MB 14%

6.2 时间效率对比

执行方式 任务数 串行耗时 并行耗时 效率提升
函数测试 3 45秒 20秒 125%

七、完整代码

python 复制代码
from chap9.async_test_func import test_search, test_login
from chap9.async_test_cls import AsyncTestMain, AsyncTestLogin
from chap9.async_main import main_cls, main_func
from chap9.caps_setting import *


chrome_url = r'http://localhost:5143'
edge_url = r'http://localhost:9438'


test_suit_func = [
    ([test_login, ], chrome_url, CHROME_CAPS_1),
    ([test_search, ], chrome_url, CHROME_CAPS_2),
    ([test_search, ], edge_url, EDGE_CAPS_1)
]

# 注意:测试类在整个代码运行过程中,测试类只会被创建一次,它在内存有唯一的地址
test_suit_cls = [
    ([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),
    ([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),
    ([AsyncTestMain, ], chrome_url, CHROME_CAPS_2),
    ([AsyncTestMain, ], edge_url, EDGE_CAPS_1)
]

main_func(test_suit_func)
# main_cls(test_suit_cls)

这种分布式测试架构通过将测试任务分发到不同服务节点,显著提高了测试执行效率,特别适合大型项目的快速验证需求。


「小贴士」 :点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀

相关推荐
emfuture2 小时前
工业自动化现场四大典型故障复盘:从环境适配到边缘智能的工程实践
运维·网络·自动化
keke.shengfengpolang2 小时前
自动化专业毕业能干什么?制造业、控制、软件、数据怎么选,2026版大实话
运维·自动化
XIAOYU6720133 小时前
自动化考什么证书对就业有帮助?大学生就业规划与证书路线全攻略
运维·自动化
霸道流氓气质3 小时前
Kiro 中配置 RabbitMQ MCP Server 指南
分布式·rabbitmq·ruby
国科安芯3 小时前
AS32S601型抗辐射MCU在分布式太空算力架构中的技术演进与应用前景
人工智能·分布式·单片机·嵌入式硬件·架构·边缘计算
Увидимся вчера3 小时前
绿盟堡垒机自动化任务—自动改密失败
linux·服务器·自动化
HackTwoHub4 小时前
解锁 AI 红队全新玩法!Claude-Red 攻防 Skill 库,内置 SQLi、XXE、文件上传等 Web 专项 Skill,一键导入快速落地渗透实战
前端·人工智能·web安全·网络安全·自动化·系统安全
不会C语言的菜鸟4 小时前
分布式数据一致性:从工程实践到理论基石
分布式
miaowu35716 小时前
AI智能体推动数字化转型:从流程自动化到决策辅助的完整路线图
大数据·人工智能·自动化