以前经常自己琢磨着写测试框架,结果在真正投入使用后总发现有很多弊端,要么是难于维护,要么是不能适合大众化,还可能发生这样那个的BUG,由于短期投入产出不成正比,最后都作罢。
自动化还是需要团队的力量,仅靠个人力量很难实现大规模的自动化,覆盖面比较窄,很难看到成效。所以点点点还要继续这是功能测试的宿命,但是自动化也还要继续……因为我不想自己和自己的团队永远停留在点点点。
Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端web、android、ios、api的自动化测试通吃。还有它是开源滴。以上已基本包含我选择的原因,还但是重点说一下。
python编写
作为没有开发经验的测试什么语言比较上手,显然python是个不错的选择。易于上手,代码简洁,无需编译,封富的库资源简直是想干什么就干什么,而且Linux下面也能畅玩直接替一些繁琐的shell。
开源
我们没钱,我们就是喜欢开源,虽然我们暂时没能开源组织贡献什么,但用他们开源的软件也算是对他们的一点支持吧。在些也感谢他们!
支持类型的客户端
如今天大半边天已经属于移动互联网,很显然只支持传统web测试的工具已经不能满足我们需要,RF同时支持android、ios的功能测试,当然也能进行http,webservice等类型的api测试。
良好的可扩展性
RF本身就有丰富的测试库资源,如selenium2library、RequestsLibrary、databaselibrary等,然后它也能支持自定义测试库,RF提供多种方式定制测试库,你也可以佣有自己的关键字库了。(有点像Jmeter自定义插件)
关键字驱动
关键字驱动和数据驱动一直以来测试界都为怎么解释和区别他们各持已见。我也不想为解释他们花过多时间,因为它们都遵循了软件测试的输入输出,但在这里我要说的是关于二者测试设计。请看下面两图
图1为数据驱动,读取测试数据,编写测试步骤,判断预期结果,中间的操作步骤可以是一个面向过程操作,只要确保步骤实现没有错误,在业务没有变化的情况下,要需要重点放在对测试数据的构建和维护上,而不是直接维护脚本,可以利用同样的过程对不同的数据输入进行测试。
但是一但业务发生变化,整个step步骤将面降大面积的修改,本来就种面向过程的代码实现代码量可能就偏大,此时对维护造成级大困难。
图二中我们可以看出还是数据驱动,但发生了什么变化了,数据分为了局部数据和全局数据,每个步骤有自己的私有数据当然也可以没有(有点像公全局变量和私有变量),所有的控制由关键字来完成。在维护上我们可以控制全局变量来控制一批CASE的测试结果,同时可以控制单个CASE的输入数据。
另外在过程的维护上我们只需要维护执行这些控制步骤的关键字(对象),而不是大量的代码语句。
仔细看来者更像一个是面向过程的软件开发和面向对象的软件开发,面向对象也是建立在面向过程的基础之上的,这是IT进步的产特。就像爹生儿,儿子更优秀,没有太多必要讨论谁是谁,都是一家人。