发布新日志

  • Selenium1和Selenium2的工作原理

    2017-09-21 14:13:31

    Selenium先后经历了2个版本,Selenium 1.0和Selenium 2.0.
    一、Selenium 1.0的原理
    selenium 1.0 包括以下两部分:selenium server、 Client Libraries组成
    1. selenium server
    selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。
    2. client Libraries
    编写测试用例时控制selenium server的库
    ----------------------------------------------------
    下面图介绍了testcase的执行过程:
    解释如下:
    (1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
    为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。
    (2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。
    (3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。
    (4).Selenium Core接收到指令后,执行操作。
    (5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
    由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。
    (6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。
    (7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。

    二、Selenium 2的工作原理
    Selenium 2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
    webdriver是按照server–client的经典设计模式设计的: 

    1、server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应; 

    2、client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

    简单介绍一下webdriver的工作原理:

    1、启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
    2、客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
    3、Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
    注:

    the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。

    WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。

    例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432

  • 我的软件测试经历

    2017-09-21 13:17:34

       截止到今天,我已经是测试行业入行11年多的老人了,不敢想象自己竟然在一个行业干这么久,也许会把测试工作作为一生的职业。这11年见证了测试行业一点点壮大,测试行业的多样化。
       去年看到51testing的调查报告,从事软件测试超过8年以上的比例非常少了,估计都耐不住寂寞,纷纷转行了。
       我本科学的通信工程,刚毕业那阵到了一家通信公司做通信督导工作,主要负责通信基站的开通、网优等工作。长期在广东的各个市跑,短短半年,几乎整个广东省都跑遍了。由于受不了长期漂泊和出差的痛苦和无助。于是裸辞了。
       第二年过完年就来到北京找工作,通信行业,不是huawei、中兴、大唐这些大的研发公司就是联通、移动、电信、网通这些国有企业,其他就是一些和这些公司合作的第三类公司。作为一个没有开发经验的刚必要的人员而言,前2类企业实在不好进,第三类公司也不想进。所以就有了转行的念头。经过一帆调查,IT行业内部转容易些,同时考虑到门槛,选择了软件测试行业。入这个行业也是51testing的宣传力度。但是各大网址都在宣扬,软件测试缺口30万,高薪就业。现在想想如果当时入职架构或者设计行业会怎么样?。摸爬滚打10几年应该有另一番天地。
       这个行业先后经历了四家公司:
       第一家:国有转行IT企业,央行背景;
       第二家:老牌世界500强外企;
       第三家:国有转行IT企业,科技背景,服务银行;
       第四家:上市公司控股背景的私人企业;
       每个企业都有自己的特点,测试也有自己的风格。不过软件测试的规范性是越来越高。国内私人企业灵活性比外企要大的多,说白的就是不太制度化。国内的国有企业或者大企业由于不差钱,发展的不弱于国外企业。
       从技术层面,在这些企业,先后经历了手工测试、形能测试、第三方测试、test leader、测试项目经理、测试培训、自动化测试、资深测试等各个角色。在各个角色转变过程中逐步找到自己的定位和喜好。最后还是走技术路线,现在感慨BAT公司测试行业发展的速度,也感慨之前的一些遗憾,不知道自己还会在测试行业坚持多久,随着年龄的增长,有事回觉的力不从心,希望且行且珍惜吧。
      国内的技术跟国外比还是有很多差距,举个例子吧。国内从事软件测试超过8年以上的占比非常小,而国外年龄40以上在做测试甚至是基层测试的人比比皆是。这是一个长期沉淀的结果,也是国情和价值观决定的。简单理解:国内测试技术是上升期逐步往稳定期转变,而国外已经是稳定期晚期了。前几天在51testing做过一个调查,还有非常多的企业只有手工测试。看看《微软的测试之道》、《google的测试之道》,发现还是有很大的差距。
       抽个中午时间感概下,不喜勿喷!
       

Open Toolbar