• 0
  • 1
分享
  • 【软件测试基础】自动化测试框架设计核心理念——关键字驱动
  • 北极 2020-12-02 14:08:49 字数 1696 阅读 1370 收藏 1

前言

       很多人在接触自动化测试时,都会听到关键字驱动这样的一个概念,但是在研究时却有些不太清楚这种驱动模式的设计及实现到底该如何着手去做。

       关键字驱动,作为一种自动化测试框架的设计形式,在很早的时候就已经有提及过了。它的基本原理或者说构思就是将原本的自动化代码进行代码与数据的分离,再将分离出来的代码二次分离,形成所谓行为代码与测试代码,而后再经由数据内容驱动行为代码,生成测试代码。从而更加便捷地进行自动化测试代码的管理,以及提高自动化的复用性,让使用者更加容易理解和使用自动化(毕竟还是有很多很多测试人员对代码一窍不通。

       可能这个解释听起来有点复杂,那么我举个很简单的例子让大家了解一下关键字驱动的形式:

  • 我在吃饭。

  • 你在吃饭。

  • 他在吃饭。

       这一组内容可以看到,不论是谁,都在做着吃饭这样的一个行为,而其中重点的是角色,也就是所谓的“你我他”,那么我们可以将“吃饭”这个行为提取出来,作为一个公共的内容,这样就只需要提供一个角色数据,就可以实现任何一个人吃饭的这样一件事情了。而这个提取行为作为公共内容的过程,就是所谓的关键字封装,通过角色数据去驱动这样的一个行为,形成这一件事情,这就是所谓的“关键字驱动+数据驱动”的自动化测试设计模式了。

       那么在自动化测试中我们要实现关键字驱动的话,该如何去做呢?

       首先是环境的准备:

  1. Selenium+WebDriver常规组建的生成:(有关这部分可以参照我之前写的的Selenium环境搭建)

  • 在Pycharm中导入Selenium模块

0.png

  • 在Python安装根路径下添加driver文件

    1.png

 2. 如果想要结合数据驱动,则依据数据文件格式选择对应的组件安装:

  • Excel可以通过xlrd

  • yaml可以通过pyyaml,还有很多其他不一一例举了。

  3. 如果想要整个框架做的更加完善,可以添加很多其他的内容,比如说logging日志记录,Requests接口自动化,Appium/uiautomator2移动端UI自动化等等等等,这里依据个人喜好和需要进行添加即可。

       准备好环境后,就是重点的关键字封装提取,在这里以Selenium为例:

       先看基本的工程结构:

3.jpg

       定义一个最基本的关键字结构,创建一个包,专门用于管理各类关键字类对象,可以是WebUI,AppUI,接口的关键字对象。作为一个关键字库,用于存放和被调用。再定义一个包,专门用于调用关键字库的内容,实现自动化的执行,当然,也可以用其他形式,这里很多方法可以应用。

       接着再来看看关键字类如何实现:

4.jpg

       关键字类中,将常规的元素操作行为从Selenium对象中提取出来,然后进行二次封装,生成自己的关键字库,这个库可以理解为是工具库,当实际测试过程中需要应用到任何的方法时,直接通过实例化这个库,然后在库中进行调用即可。这个类中,在执行过程中是有可能会出现异常的,比如元素查找失败,超时等等,所以最好在关键字封装时,添加异常处理机制,避免在运行时出现异常而导致无法捕捉具体原因。

       关键字类的调试:

5.jpg

       因为没做数据驱动类,所以直接在Pycharm中编写测试代码中对已生成的关键字类进行调试,通过运行可以发现,整个过程已经可以正常实现,也就意味着,这个关键字对象库没有太大问题,而我们后续需要做的,就只是在这个对象库中不停添加需要的关键字即可。而结合到数据驱动,像是Excel、yaml等之后,也可以通过这些数据文件来驱动我们的对象库。

       SO.

       通过关键字驱动的实现,可以很好地将常规的自动化代码进行操作行为与测试代码的分离,生成复用性较高的自动化测试模式。而且结合到数据驱动,可以应用到多种不同类型的业务系统,来实现自动化测试工作。从而提升我们的工作效率以及个人的自动化测试能力。


作者:软件测试开发-虚竹

原文链接:https://blog.csdn.net/shuaigezhou10086/article/details/108626133

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • Dify 一词源自 Define + Modify,意指定义并持续改进你的 AI 应用。随着大型语言模型(LLM)不断涌现的各种能力,AI 应用的场景变得更加广阔。然而,对于大多数开发者而言,基于 GPT 等大型语言模型、Langchain 等技术框架开发 AI 应用仍然是一项门槛极高的任务。开发者必须花费大量时间学习各种晦涩的概念和技术研究,也无法进行 AI 应用的持续运营。是否有这样一个工具,开发者无需关注基础设施的底层原理,只需专注于将想象力转化为实际落地的 AI 应用并持续运营,可以将大型语言模型变成像云计算服务一样易于使用?基于这个问题,Dify.AI 诞生了。它是为你而做的(Do ...
            0 0 1707
            分享
          • 一、说明去年写了一篇“模糊测试(fuzzing)是什么”,在最后提到可以自己手动编写实现模糊测试工具,但一直没把可行的代码放上来。其实这不是光说不练没实现,而是在去年就着手编写了,并在前段时间发现参数未做防呆处理导致设备重启上收到了很好的效果,只是一是说代码涉及产品具体业务需要进行处理二是说对之前做到一半没做完的事时常缺乏兴趣回头继续做。二、模糊测试中的几个关键问题讨论2.1 如何标识模糊测试项标识模糊测试项有两大思路:一类是sqlmap的无标识思路,另一类是burpsuite的有标识思路。sqlmap无标识思路:自动分析数据中的参数,然后逐个参数进行测试;优点是使用方便,缺点是如果协议的结构...
            0 0 2719
            分享
          • 一四年我在YX公司带测试团队,一个用例评审的会议上,一不小心超常发挥,结果卡在了一个用例设计方法上,印象非常深刻,当时的业务场景是支付方式的选择和优惠方案。在后来的工作中,也曾几次遇到需要选择合理的设计方法来写用例,不过每次在网上都是搜索了半天,也找不到令人满意的答案。很多简单的问题被复杂化,然后给出的解题思路更是令人百思不得其解。网络资源下,任何一个问题都不缺答案,更多的时候缺的是个让人一目了然的答案。测试前准备作为一个测试人员,软件测试的流程首先是要非常熟悉的,何时何地都能脱口而出,避免一切翻车的可能。需要注意的是流程没有唯一答案,具体由项目决定。所以给出的只是一个还算通用的参考流程。总结...
            0 0 1037
            分享
          •   下坡路?  测试员干到30岁,好不容易从测试小白混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个测试员伤不起的年龄。明天,何去何从?  30岁现象  还有机会吗?  在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把。很明显嘛,权力过期作废,再不捞就要退休了,没有机会了。  在测试员的圈子里,也有一个30岁现象。当然,如果你有铁饭碗,比如以前在国企或政府机关,那你是无法理解底层劳动人民的感受的。同时也要恭喜你成为体制内的一员,可以一直干到退休无忧。不过现在随着制度改革,也是空想了。  30岁现象人人都明白,但要给出一个定义并不容易。  列举几个表现,也许...
            0 0 725
            分享
          • 一、Selenium2+python自动化36-判断元素存在1、捕获异常from selenium import webdriver import unittest class Test1(unittest.TestCase): #一、准备浏览器驱动、网站地址 #setUp在每个测试函数运行前运行,注意大小写;self不能省略 def setUp(self): self.driver=webdriver.Chrome() self.baseurl="https://www.baidu.com" #二、打开浏览器,发...
            13 15 4626
            分享
      • 51testing软件测试圈微信