搭建web自动化测试“框架”(1)

各部件简介

Posted by MitnickEX on August 24, 2015

之前一直想搭建一个自动化测试框架,但是迷迷糊糊不求甚解。

现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的。

本篇文章先说说各部件都是干什么的。

各部件简介:###

jenkins:

提到jenkins就不能不提持续集成。jenkins是一个持续集成方面很好很成熟的开源软件,jenkins本身又是一个java的开源项目,提供了很多功能丰富的插件。

那到底持续集成是个什么东西?整这么多专业名词一点都不接地气。说说我的白话理解:

先看看持续和集成本身的意思:

持续:就是指日复一日,年复一年不断的做一件事儿。

集成:是指把一堆分离的东西弄到一块去。

那么回来再看看jenkins中的持续集成:

不间断的,自动的,把每天的新东西整合到一起。新东西包括源代码,机器环境、测试代码等等。让这些重复的、繁琐的并且有规律的工作交给机器去做。

说了半天,那么为什么要用到jenkins呢?jenkins最突出的一个功能就是可以关联代码版本库(svn、git等),当版本库有改动时(有人提交了代码,使代码库有变动)。会自动触发jenkins的构建,也就是会自动执行测试用例。当测试用例全部通过了,则表明本次改动没问题。如果测试失败了则表明改动后出了问题,需要查明原因并解决才能再次提交代码到版本库。

python:

我用python编写测试用例脚本。

其实写测试用例脚本可以用很多语言写,java,c#编译型语言也可以。但是python本身是一个很灵活的脚本语言,书写起来方便快捷。

与其他脚本语言,比如php、ruby、perl等等相比,python语法简洁,书写格式清晰,数据类型使用起来方便顺手,类库丰富,涉及范围涵盖绝大多数领域。

最简单的一点:python写起来很舒服。

selenium:

做web测试必然需要跟浏览器打交道。那么做web的自动化测试,怎样操作浏览器呢?这就需要使用selenium了。

selenium又是什么呢?selenium提供了很多类、方法等,使脚本可以通过其提供的方法,模拟真实用户操作浏览器。

selenium到现在为止大体经过了两个阶段,也算是两个版本。

在selenium1.0阶段,selenium是通过js操作页面上的全部动作,由于是通过调用js来操作的,所以有很大的局限性。

例如无法做出拖拽动作、对系统弹窗也没办法操作,因为js只能操作页面元素。

在selenium2.0阶段,selenium和webdriver整合到了一起。

有了webdriver,selenium从两方面有了改进,一方面selenium不再使用js操作浏览器了,而是通过不同浏览器厂商提供的大部分页面操作的接口来操作页面元素。 另一方面webdriver可以与系统底层交互,直接发送动作信号。例如按下什么键、鼠标移动到哪里等。可见selenium2.0比1.0强大很多。

这里简单说说webdriver:

webdriver我的理解:

他算是一个API,一个规范。

各种不同的浏览器厂商参照这份规范,给出selenium调用自家浏览器的接口。

然后各种编程语言也是参照这份规范,给出语言自身的、可以操作不同浏览器的类库。

例如我要用python写测试脚本,要通过python脚本,打开Firefox浏览器,进行一些列页面操作。

这个过程能得以实现,是因为:python有一个叫做selenium的外部类库,selenium类库里面又有针对不同浏览器而实现的不同的浏览器包。

这样我就可以通过导入selenium类库,再调用selenium类库里面的Firefox包来打开浏览器、填写表单、点击按钮了。

好了,第一阶段先到这里,随着一点点完善“框架”,博客也会不断更新。后续贴上一些图片加深理解。