43. 长途分布式测试实现

[复制链接]
发表于 2025-6-2 05:40:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
43. 长途分布式测试实现详解

一、长途测试环境设置

1.1 长途WebDriver服务界说

  1. # Chrome浏览器远程服务地址
  2. chrome_url = r'http://localhost:5143'
  3. # Edge浏览器远程服务地址
  4. edge_url = r'http://localhost:9438'
复制代码


  • 关键概念:每个URL对应一个独立的WebDriver服务
  • 典型设置

    • localhost:当地服务
    • 192.168.1.100:4444:局域网内其他呆板
    • cloud-test.com:443:云端测试平台

1.2 浏览器能力设置

  1. # 从caps_setting导入预定义配置
  2. from chap9.caps_setting import *
  3. # Chrome配置示例
  4. CHROME_CAPS_1 = {
  5.     'browserName': 'chrome',
  6.     'goog:chromeOptions': {
  7.         'args': ['--headless', '--disable-gpu']
  8.     }
  9. }
  10. CHROME_CAPS_2 = {
  11.     'browserName': 'chrome',
  12.     'goog:chromeOptions': {
  13.         'args': ['--window-size=1920,1080']
  14.     }
  15. }
  16. # Edge配置示例
  17. EDGE_CAPS_1 = {
  18.     'browserName': 'MicrosoftEdge',
  19.     'ms:edgeOptions': {
  20.         'args': ['--inprivate']
  21.     }
  22. }
复制代码
二、测试套件界说

2.1 函数式测试套件

  1. test_suit_func = [
  2.     # 任务组1:在Chrome服务1上执行登录测试
  3.     ([test_login], chrome_url, CHROME_CAPS_1),
  4.    
  5.     # 任务组2:在Chrome服务2上执行搜索测试
  6.     ([test_search], chrome_url, CHROME_CAPS_2),
  7.    
  8.     # 任务组3:在Edge服务上执行搜索测试
  9.     ([test_search], edge_url, EDGE_CAPS_1)
  10. ]
复制代码


  • 结构阐明:(测试函数列表, WebDriver URL, 浏览器设置)
  • 特点

    • 不同任务组可指向不同服务节点
    • 支持相同服务不同设置

2.2 面向对象测试套件

  1. test_suit_cls = [
  2.     # 任务组1:在Chrome服务1上执行登录测试类
  3.     ([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
  4.    
  5.     # 任务组2:在Chrome服务1上再次执行登录测试类
  6.     ([AsyncTestLogin], chrome_url, CHROME_CAPS_1),
  7.    
  8.     # 任务组3:在Chrome服务2上执行主功能测试类
  9.     ([AsyncTestMain], chrome_url, CHROME_CAPS_2),
  10.    
  11.     # 任务组4:在Edge服务上执行主功能测试类
  12.     ([AsyncTestMain], edge_url, EDGE_CAPS_1)
  13. ]
复制代码


  • 注意事项:同一测试类可在不同节点重复实行
  • 适用场景:复杂业务流测试
三、测试实行入口

3.1 函数式测试实行

  1. main_func(test_suit_func)
复制代码


  • 功能:实行函数式测试套件
  • 内部流程

    • 为每个任务组创建异步任务
    • 毗连对应WebDriver服务
    • 应用浏览器设置
    • 顺序实行组内测试函数
    • 关闭浏览器毗连

3.2 面向对象测试实行

  1. # main_cls(test_suit_cls)  # 本例中注释掉
复制代码


  • 实行方式:取消注释即可运行
  • 特点

    • 自动检测并实行测试类中的test_*方法
    • 支持在不同节点实行相同测试类

四、分布式实行流程

4.1 测试任务分发

  1. 主控制机
  2.   ├── 任务组1 → Chrome服务1 (localhost:5143)
  3.   ├── 任务组2 → Chrome服务2 (localhost:5143) 不同配置
  4.   └── 任务组3 → Edge服务 (localhost:9438)
复制代码
4.2 实际实行时序

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

5.1 启动Chrome节点服务

  1. # 在机器1 (IP:192.168.1.101) 上启动
  2. chromedriver --port=5143
  3. # 在机器2 (IP:192.168.1.102) 上启动
  4. chromedriver --port=5143
复制代码
5.2 启动Edge节点服务

  1. # 在机器3 (IP:192.168.1.103) 上启动
  2. msedgedriver --port=9438
复制代码
5.3 测试套件设置

  1. chrome_url1 = r'http://192.168.1.101:5143'
  2. chrome_url2 = r'http://192.168.1.102:5143'
  3. edge_url = r'http://192.168.1.103:9438'
  4. test_suit_func = [
  5.     ([test_login], chrome_url1, CHROME_CAPS),
  6.     ([test_search], chrome_url2, CHROME_CAPS),
  7.     ([test_search], edge_url, EDGE_CAPS)
  8. ]
复制代码
六、实行结果分析

6.1 资源使用情况

任务组服务地址浏览器类型内存占用CPU使用组1localhost:5143Chrome320MB12%组2localhost:5143Chrome350MB15%组3localhost:9438Edge380MB14% 6.2 时间效率对比

实行方式任务数串行耗时并行耗时效率提拔函数测试345秒20秒125% 七、完整代码

  1. from chap9.async_test_func import test_search, test_loginfrom chap9.async_test_cls import AsyncTestMain, AsyncTestLoginfrom chap9.async_main import main_cls, main_funcfrom 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)
  2. # main_cls(test_suit_cls)
复制代码
  这种分布式测试架构通过将测试任务分发到不同服务节点,明显进步了测试实行效率,特别适当大型项目的快速验证需求。
  
「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路!
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-23 10:52 , Processed in 0.078969 second(s), 30 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表