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)

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


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

相关推荐
HackTorjan31 分钟前
AI驱动的制品库高效管理:智能分类、自动化追踪与全生命周期优化
linux·人工智能·分类·自动化
微刻时光1 小时前
影刀RPA:For循环与ForEach循环深度解析与实战指南
人工智能·python·低代码·自动化·rpa·影刀实战
代码漫谈3 小时前
RabbitMQ 解析:核心价值、环境搭建与应用
分布式·消息队列·rabbitmq
薛定谔的猫3693 小时前
深度解析 MCP (Model Context Protocol):重塑 AI Agent 的生态连接
自动化·llm·ai agent·技术架构·mcp·model context protocol
志栋智能3 小时前
超自动化巡检的核心价值:效率、质量与洞察
运维·服务器·网络·人工智能·自动化
金玉满堂@bj3 小时前
Playwright 对比 Selenium 总结
自动化
Agent产品评测局4 小时前
混合云架构适配:企业级智能体灵活部署完整方案与最佳实践 | 2026企业自动化选型硬核指南
运维·人工智能·ai·chatgpt·架构·自动化
爱编程的陶老师4 小时前
K8s是什么?——第一集:从“搬箱子”到“自动化仓库”的革命
容器·kubernetes·自动化
张3235 小时前
角色与内容集合:自动化配置的标准化复用机制
运维·自动化·ansible