VS 2017远程测试失败求助:已装TestAgent/Controller且防火墙关闭
VS 2017远程测试连接被拒绝的问题排查与解决
我之前也碰到过类似的情况——同样的TestAgent/Controller环境,VS2015跑远程测试完全正常,VS2017却报No connection could be made because the target machine actively refused it,而且控制器日志只到排队测试就没下文。结合你的场景,咱们来一步步分析解决:
先明确你的基础环境:
- 已部署TestAgent 2017 + TestController 2017,所有设备防火墙已关闭
- 测试代码非常简单:
public void TestMethod1() { Assert.IsFalse(false); } - 核心差异:VS2015执行正常,VS2017失败
核心原因推测
既然VS2015能正常工作,说明网络、组件安装的基础没问题,问题大概率出在VS2017与2017版测试组件之间的兼容性配置差异——毕竟VS2017在远程测试的通信机制、权限要求上和2015有不少细节区别。
具体排查步骤
1. 确认TestAgent 2017的服务状态与身份
这是最容易忽略的点:
- 远程登录TestAgent机器,打开「服务」管理器,找到Visual Studio Test Agent 2017服务,确保它处于「运行」状态
- 右键服务→「属性」→「登录」选项卡,确认登录身份是
Local System(默认配置),如果之前改过账号,改回Local System试试——有些自定义账号可能缺少跨机器通信的权限 - 重启TestAgent服务,再回到VS2017重试测试
2. 检查VS2017的测试配置是否正确
对比VS2015的配置,确保VS2017没搞错控制器地址:
- 在VS2017里,点击「测试」菜单→「测试设置」→「选择测试设置文件」,确认用的是和VS2015相同的测试设置文件
- 右键测试设置文件→「编辑」,切换到「控制器」选项卡:
- 确认控制器的名称/IP地址完全正确
- 勾选「启用远程执行」选项
- 另外,检查VS2017的安装组件:打开VS安装器,确保已勾选测试核心功能和负载测试组件(哪怕你不用负载测试,部分远程测试依赖这个组件)——默认安装可能会漏掉这些
3. 验证TestController与TestAgent的端口配置
虽然防火墙关了,但VS2017可能用了和2015不同的端口,或者端口配置不一致:
- 在TestController机器上,打开配置文件:
C:\Program Files (x86)\Microsoft Visual Studio 2017\TestController\QTCcontroller.exe.config - 查找类似
<add key="ControllerServicePort" value="6901"/>的配置项,记下端口号(默认是6901) - 到TestAgent机器上,打开
C:\Program Files (x86)\Microsoft Visual Studio 2017\TestAgent\QTAgent.exe.config,确认里面的Controller端口和上面的一致 - 用
netstat -ano命令在两台机器上检查这个端口是否被其他程序占用,或者TestController是否在监听该端口
4. 统一VS2017与测试组件的版本
哪怕都是2017版本,小版本差异也可能导致兼容性问题:
- 打开VS2017,点击「帮助」→「检查更新」,把VS更到最新版本
- 同时更新TestAgent和TestController到对应版本的最新补丁——微软经常会修复这类远程通信的小bug
5. 确认TestController的用户权限
VS2017对权限的要求可能更严格:
- 在TestController机器上,打开「Visual Studio Test Controller 2017」管理工具
- 切换到「用户」选项卡,确认你运行VS2017的账号(或者VS所在机器的登录账号)已经被添加到「测试控制器用户」列表,并且拥有「启动测试运行」的权限
- 对比VS2015用的账号,确保权限完全一致
为什么VS2015没问题?
VS2015和VS2017的远程测试通信逻辑有不少细节调整:比如VS2017默认启用了TLS1.2协议,而VS2015可能用的是旧的SSL协议;或者TestAgent 2017的默认服务配置和2015版不同,导致VS2017无法建立连接。这些差异在基础环境没问题的情况下,就会出现“同环境不同VS版本表现不同”的情况。
内容的提问来源于stack exchange,提问作者Boogier
相关产品推荐
相关产品推荐

