谈谈我是如何提高Selenium Grid的稳定性的

     我们公司使用Selenium Grid已经有两年的时间,今年中开始由我们来维护我们公司的Selenium Grid。这个Grid规模挺大的,有七八十台机器,有全球各地的用户在上面运行Web的自动化测试。用户数量众多,Test Case也很多。然而Selenium Grid并没有那么给力,有时候会莫名其妙的Down掉。一开始我们每天重启一次服务,相对稳定。然而后来连一天里面都会出现这种情况。

    为了解决这个问题,我痛下决心,开始漫长的调试之旅。网上相关的资料几乎没有,我也摸索了很长时间,下面记录下来跟大家分享一下。

    首先,建立压力测试的环境,请参考http://shijunjuan.iteye.com/admin/blogs/1997768

    然后,建立Selenium Grid的调试环境,请参考http://shijunjuan.iteye.com/admin/blogs/1997764 以调试方式启动GridLauncher

    因为之前已经阅读过Selenium Grid的代码,对它的代码有一定的了解,所以没有进行更多的调试,直接开始压力测试。启动jvisualvm来监视Hub的内存和线程情况。

     重现问题后,Hub hang了,在Eclipse里面Suspend 线程进行调试,查看Stack,看看卡在哪里了。也可以通过jvisualvm的ThreadDump,来查看线程卡在哪里。我看到大多数线程都停在了某一步,所以可以知道这一步出问题了。

     经过这样的分析,然后再网上查阅相关的知识。Selenium Hub用了Jetty Server作为Web服务器,所以有一些问题都跟Jetty和httpclient的使用有关。

    查出问题之后,我做了相应的fix,然后重新测试以验证fix的正确性。

    作为开源项目,我需要提交我的fix,这样在新的版本中才能有正确的修改,这样也可以回馈Selenium社区。所以我提交了我修改,发了四个Bug, 期待等Francois回来会修改这几个问题。

                                       i.              https://code.google.com/p/selenium/issues/detail?id=6770&thanks=6770&ts=1388044086

                                     ii.              https://code.google.com/p/selenium/issues/detail?id=6771&thanks=6771&ts=1388044233

                                    iii.              https://code.google.com/p/selenium/issues/detail?id=6772&thanks=6772&ts=1388044312

                                    iv.              https://code.google.com/p/selenium/issues/detail?id=6773&thanks=6773&ts=1388044400

 

我的分享故事结束了,如果大家在用开源软件时,发现问题,也可以进行调试,修改,提交,积极参与开源软件的开发和改进。

猜你喜欢

转载自shijunjuan.iteye.com/blog/1997790