马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
43. 长途分布式测试实现详解
一、长途测试环境设置
1.1 长途WebDriver服务界说
- # 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 浏览器能力设置
- # 从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 函数式测试套件
- 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 面向对象测试套件
- 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 函数式测试实行
- main_func(test_suit_func)
复制代码
- 功能:实行函数式测试套件
- 内部流程:
- 为每个任务组创建异步任务
- 毗连对应WebDriver服务
- 应用浏览器设置
- 顺序实行组内测试函数
- 关闭浏览器毗连
3.2 面向对象测试实行
- # main_cls(test_suit_cls) # 本例中注释掉
复制代码
- 实行方式:取消注释即可运行
- 特点:
- 自动检测并实行测试类中的test_*方法
- 支持在不同节点实行相同测试类
四、分布式实行流程
4.1 测试任务分发
- 主控制机
- ├── 任务组1 → Chrome服务1 (localhost:5143)
- ├── 任务组2 → Chrome服务2 (localhost:5143) 不同配置
- └── 任务组3 → Edge服务 (localhost:9438)
复制代码 4.2 实际实行时序
- 时间 | 任务组1 (Chrome服务1) | 任务组2 (Chrome服务2) | 任务组3 (Edge服务)
- -----|---------------------------|---------------------------|-------------------
- 0s | 启动浏览器(headless) | 启动浏览器(全屏) | 启动浏览器(隐私模式)
- 1s | 执行test_login() | 执行test_search() | 执行test_search()
- 3s | 验证登录成功 | 验证搜索结果 | 验证搜索错误提示
- 5s | 关闭浏览器 | 关闭浏览器 | 关闭浏览器
复制代码 五、长途节点设置示例
5.1 启动Chrome节点服务
- # 在机器1 (IP:192.168.1.101) 上启动
- chromedriver --port=5143
- # 在机器2 (IP:192.168.1.102) 上启动
- chromedriver --port=5143
复制代码 5.2 启动Edge节点服务
- # 在机器3 (IP:192.168.1.103) 上启动
- msedgedriver --port=9438
复制代码 5.3 测试套件设置
- 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使用组1localhost:5143Chrome320MB12%组2localhost:5143Chrome350MB15%组3localhost:9438Edge380MB14% 6.2 时间效率对比
实行方式任务数串行耗时并行耗时效率提拔函数测试345秒20秒125% 七、完整代码
- 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)
- # main_cls(test_suit_cls)
复制代码 这种分布式测试架构通过将测试任务分发到不同服务节点,明显进步了测试实行效率,特别适当大型项目的快速验证需求。
「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路!
|