Selenium自行整理【二十九】

第 05 章自动化测试模型

               ● 在介绍自动化测试模型之前,我们试着来解释自动化测试库、框架和工具之间的区别。

               ● 库的英文单词叫 Library,库是将代码集合成的一个产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库也叫函数库。所以从这个角度来看,我们在第四章是介绍的 WebDriver 就属于库的范畴,因为它提供了一组操作 Web 页面的类与方法,所以,我们可以称它为 Web 自动化测试库。

              ● 框架的英文单词叫 Framework,框架则是为解决一个或一类问题而开发的产品,用户一般只需要使用框架提供的类或函数,即可实现全部功能。所以从这个角度来理解 unittest 就框架,它主要用于实现测试用例的组织和执行,以及测试结果的生成。因为它的主要任务就是帮助我们完成测试工作,所以我们通常把它叫做单元测试框架。

              ● 工具的英文单词叫 Tools,在笔者看来工具与框架所做的事情类似,只是工具会有更高的抽象,屏蔽了底层的代码,一般会提供单独的操作界面供用户操作。例如,Selenium IDE 和 QTP 就是自动化测试工具。

              ● 回到自动化测试模型的概念上,笔者认为自动化测试模型可以看做是自动化测试框架与工具设计的思想。随着自动化测试技术的发展,演化以下几种模型:【线性测试】、【模块化驱动测试】、【数据驱动测试】、【关键字驱动测试】

 

5.1、自动化测试模型介绍

5.1.1、线性测试

          通过录制、编写对应用程序的操作步骤产生相应的线性脚本,每个测试脚本相对独立,且不产生其它的依赖与调用,这也是早期自动化测试的一种形式:它们其实就是单纯地来模拟用户完整的操作场景。在本书第 4章所编写的测试脚本就属于线性测试,如下图所示

            这种模型的优势就是每一个脚本都是完整且独立的。所以,任何一个测试用例脚本拿出来都可以单独执行。当然,缺点也相当明显,测试用例的开发与维护成本很高:

           ● 开发成本很高,测试用例之间可能会存在重复的操作,不得不为每一个用例去录制或编写这些重复的操作。例如每个用例中重复的用户登录和退出操作等。

          ● 维护成本很高,正是因为测试用例之间存着重复的操作,当这些重复的操作发生改变时,就需要逐一的对它们进行修改。例如登录输入框的定位发生了改变,就需要对每一个包含登录的用例进行调整。

 

5.1.2、模块化驱动测试

        正是由于线性测试的缺陷非常明显,因此早期的自动化测试专家就考虑用新的自动化测模型来代替线性测试。做法也很简单,借鉴了编程语言中模块化的思想,把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块操作时则被调用,这样就最大程度上消除了重复,从而提高测试用例的可维护性。

          如上图所示,(需要说明的是,早期的自动化测试以工具为主,非上图的代码形式。)模块化的结构就很好的解决线性结构的两个问题:

        ●  提高了开发效率,不用重复的编写相同的操作脚本。假如,已经写好一个登录模块,后续在测试用例在需要登录的地方调用即可。

       ●  简化了维护的复杂性,假如登录按钮的定位发生了变化,那么只需修改登录模块的脚本即可,对于所有调用登录模块的测试脚本来说不需要做任何修改。

 

5.1.3、数据驱动测试

         虽然模块化驱动测试很好地解决了脚本的重复问题,但是,自化测脚本在开发的过程中还是发现了诸多不便。例如,现在我要测试不同用户的登录,首先用的是“张三”的用户名登录;下一个测试用例要换成“李四”的用户名登录。在这种情况下,还是需要重复的编写登录脚本,因为虽然登录的步骤相同,但是登录所用的测试数据不同。

        于是,数据驱动测试的概念就为解决这类问题而被提出。从它的本意来解释,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。这听上去的确是个高大上的概念,而在早期的商业自动化工具中,也的确把这一概念作为一个卖点。对于数据驱动所需要的测试数据,也是通过工具内置的 Datapool 管理。

        如下图所示,数据驱动说的直白点就是数据的参数化,因为输入数据的不同从而引起输出结果的不同。

       不管我们读取的是定义的数组、字典,或者是外部文件(excel、csv、txt、xml 等)都可以看作是数据驱动。它的目的就是实现数据与脚本的分离。

         这样做的好处理同样显而易见,它进一步增强了脚本的复用性。同样以登录为例,首先是重新设计登录模块,使可以接收不同的数据,把接收到的数据作为登录操作的一部分。这样就可以很好的适应了相同操作不同数据的情况。当指定登录用户是“张三”时,那么登录之后的结果就是“欢迎张三”;指定登录用户是“李四”,登录结果就显示“欢迎李四”。这就是数据驱动所希望达到的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值