Squish做远程测试时,先要弄清楚一件事:脚本不是直接去控制远程电脑上的程序,而是通过squishrunner连接远程机器上的squishserver,再由squishserver去启动或控制AUT。Squish文档里也说明,squishrunner会通过TCP/IP和squishserver通信,再间接和被测应用交互。Squish远程测试怎么连接Squish远程测试连接超时怎么处理,重点就是把主控机、远程机、端口、白名单和AUT配置这几层关系理顺。
一、Squish远程测试怎么连接
远程测试一般可以理解成:你的Squish IDE或squishrunner在一台机器上,AUT和squishserver在另一台机器上。远程机上必须先安装对应版本的Squish组件,并启动squishserver,否则主控端没有地方连接。
1、在远程机器启动squishserver
进入远程机器的Squish安装目录,启动squishserver。默认情况下,squishserver监听TCP 4322端口;也可以通过--port参数指定其他端口。Squish文档还提到,squishserver默认可以监听机器上的网络接口,但如果要让其他主机连接,还需要在配置文件里允许对应IP。
比较常见的命令类似:squishserver--port 4322。如果连接排查比较多,可以加--verbose,或者配合--logfile把日志写出来,后面看超时原因会方便一些。
2、配置允许连接的主控机IP
远程机不是启动了squishserver就一定能连上。按Squish说明,允许远程主机连接时,需要在squishserverrc里配置ALLOWED_HOSTS,比如写主控机IP,或者在测试网段内用通配符。Windows下常见位置是C:squishserverrc,类Unix系统常见位置是/etc/squishserverrc;如果文件不存在,需要手动创建。
这里不要随手写太宽的范围。内部测试环境可以写测试机所在网段,但生产网络或共享网络里,最好只放指定主控机IP,避免不必要的连接风险。
3、在Squish IDE里添加远程服务器
回到主控机,进入【Preferences】→【Squish】→【Servers】,选择【Add】→【Remote Server】,填写远程机器IP和端口。Squish文档中也提到,添加远程服务器时就是指定hostname和port,后续录制、回放可以使用这个服务器。
如果不用IDE,而是命令行执行,可以在squishrunner里加--host和--port。默认情况下,squishrunner会连接本机127.0.0.1和4322端口;当squishserver在其他机器上时,就要明确写远程IP和端口。
二、Squish远程测试连接超时怎么处理
连接超时不要一上来就重装Squish。它大多出在网络、端口、白名单、服务状态或AUT启动这几类问题上,按顺序排查会更快。
1、先确认远程squishserver是否真的在运行
远程机上先看squishserver进程是否存在,端口是否在监听。很多连接超时,其实就是服务没起来、端口写错,或者上一次异常退出后没有重新启动。主控机和远程机端口必须一致,远程机用的是4322,主控机就不能写成4323。
如果远程机开了多个Squish版本,也要确认你启动的是当前项目对应版本的squishserver。版本混用有时不会马上暴露,但录制、对象识别或启动AUT时容易出现奇怪问题。
2、检查防火墙、网段和ALLOWED_HOSTS
主控机能ping通远程机,不代表Squish端口就能访问。防火墙可能只放行了ICMP,没有放行4322端口;公司网络里还可能有安全策略拦截跨网段访问。此时需要确认远程机防火墙是否放行squishserver端口,主控机IP是否写进ALLOWED_HOSTS。
如果是临时测试,可以先在同一网段内连接验证;确认工具链没问题后,再处理跨网段、VPN、跳板机或安全策略。不要同时改太多地方,否则很难判断到底是哪一步修好的。
3、区分“服务器连接超时”和“AUT启动超时”
有时日志里看起来像远程连接失败,其实squishserver已经连上了,是AUT启动太慢或启动路径不对。Squish的suite.conf中有responseTimeout配置,用于控制Squish组件之间网络通信等待超时;另外AUT自身还有启动超时相关设置,不能混在一起看。
如果是连接squishserver阶段就超时,重点查IP、端口、防火墙、白名单;如果已经连上,但启动AUT超时,就重点查远程机上的AUT路径、工作目录、环境变量、权限、许可证和图形界面会话。
三、远程测试还要注意哪些细节
Squish远程测试比本机测试多了一层网络和远程运行环境,所以脚本本身没改,也可能因为远程环境不同而失败。尤其是桌面自动化、VNC、嵌入式设备或多机并发测试,更要提前把环境固定下来。
1、确认AUT是在远程机上配置的
远程执行时,AUT不是从主控机路径启动,而是由远程squishserver在远程机器上启动。所以AUT路径、依赖库、配置文件、工作目录都要在远程机上存在。路径写成本机目录,IDE里看着没问题,一到远程机就会启动失败。
如果是附加到已运行AUT,还需要通过startaut启动可附加应用,并在squishserver设置里注册Attachable AUT;注册名称和脚本里attachToApplication()使用的名称要一致,端口也要和startaut--port保持一致。
2、远程显示和会话状态要保持稳定
如果测试的是GUI程序,远程机必须有可用的桌面会话。远程桌面断开、屏幕锁定、分辨率变化、VNC会话关闭,都可能导致控件不可见、截图异常或对象状态不对。Squish本身支持通过VNC等方式测试远程显示,但显示环境还是要尽量固定。
3、用日志把问题分层定位
连接超时时,可以让squishserver加--verbose或--logfile,主控端执行时也可以使用squishrunner--debugLog输出更多调试信息。Squish文档里说明,--debugLog可以输出应用启动、hook、preload、wrapper等相关日志,对排查启动和连接问题有帮助。
总结
整体来看,Squish远程测试怎么连接Squish远程测试连接超时怎么处理,关键不是只记一个IP和端口,而是看完整链路:主控机能不能访问远程端口,远程squishserver是否允许主控机连接,AUT是否能在远程机正确启动,图形会话是否稳定。按这几层查下来,连接超时一般都能定位到具体原因。