修改时间了 - 该书审核已经通过fxl - test001 - 游戏竞技小说 - 30读书

修改时间了

自动化测试现在越来越趋向于平台化,平台化是致力于协同工作,提高效率,让更多人参与自动化的一个过程,在我看来,平台化中,有一个更为关键点,就是关键字驱动,只有把自动化测试的代码转换成为大家更容易懂的自然语言,才能让更多不懂代码的人加入进去,才能达到平台化的目的。今天我们就来谈谈自动化测试中关键字驱动的原理及实现方式。

先来看一个例子,老师对着同学们说了一句:去把桌子从a地点搬到b地点。当老师发出这个命令后,发现没有人动,因为没有明确的对象,不知道这个命令是对谁发出的,于是老师再说了一句:张三,去把桌子从a地点搬到b地点。这时候,有了明确的对象--张三,有了命令的主体--搬桌子从a到b。所以这句”张三,去把桌子从a地点搬到b地点”中就有两个关键字:张三、把桌子从a地点搬到b地点。当这两个关键字缺少任何一个,这件事就不可能完成。所以,我们可以把这个场景理解为关键字驱动,假如我们把上面这句话转换为代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

public*assmovedesk{

privatepersonzhangsan;

publicvoid*tzhangsan(personzhangsan){

this.zhangsan=zhangsan;

}

publicvoidmovedeskfroma2b(){

zhangsan*tthecommandfromteacher();

zhangsan*ndthedeskata();

zhangsan.movedesktob();

zhangsan*tifyteacherhadfinished();

}

publicstaticvoidmain(string[]args){

movedeskmd=newmovedesk();

md*tzhangsan("张三");

md.movedeskfroma2b();

}

}

上面的代码当然是伪代码,但从中可以看出,其为了达到一个目的,流程都是一样的,那两个关键字在main方法中体现为:张三对应md*tzhangsan("张三"),”把桌子从a地点搬到b地点”对应md.movedeskfroma2b()。由此我们可以这样理解一下:每一个关键字对应一个具体的方法。所以,总结一下关键字驱动的实现特点:

1.每一个关键字对应的方法(以下称为关键方法)必须能够随时被调用,这就像老师对张三发出的命令张三必须去执行一样。在java里面为了达到这个关键方法随时能被调用,其类对象必须事先就被new好,所以要有一个对象池,这个对象池就像一个班级,有很多个学生可以供老师发出命令并去执行。

2.关键字必须与关键方法进行关联,就像老师让张三搬桌子,而张三跑去买了一包烟,这就不对了,所以,必须要有一个关键字与关键方法的映射表。

3.得有一个关键字的解析方式,比如上面那条命令中,我们要能够得出张三、把桌子从a地点搬到b地点这两个关键字,要是不能得出关键字,关键方法就会少执行,就如上面的伪代码中,如果去掉md*tzhangsan("张三")这一句,显然就会报空指针异常了。

4.上面这三条具备后,就是执行了,老师发出的命令,张三要能够执行,当然,要是张三是个刺头就另说了。java代码能够交给jvm去执行,但转换成为关键字后,jvm就不认识这些关键字了,所以,我们也必须要有一个健壮的执行引擎,让“张三,去把桌子从a地点搬到b地点”这一句话能够被执行成功。

综上所述,只要我们把上面的四条通过代码来实现,一个简单的关键字框架雏形就出来了,接下来我们一条条的实现。

1.对象池:

1

2

字体大小
主题切换