• 13
  • 13
分享

一切的开始

某天,发生着我们每个测试工程师都可能遇到的场景:

项目经理老王:小明,现在大家都在搞测试自动化,我们也用自动化的手段提高效率吧。

测试猿小明:好的。

测试猿小明:经理,我研究了下,结论是这样的:

  1. 自动化测试分为UI自动化和接口自动化。前者从UI发起,可以模拟用户在web上点击从而测试功能;后者从接口发起,能从接口层面确保接口功能。

  2. 一般来说,UI变化大,接口变动小,大部分的UI自动化都是保障基本功能,接口自动化保障服务提供能力。所以,一般不建议使用UI自动化测试各种异常场景,原因不是不能测,而是维护工作量太大。

  3. 最后,项目经理权衡各种利弊,决定使用UI先做基本功能的自动化,用来做回归测试和线上基本功能保障。

自动化框架的选择

测试猿小明查看了大量资料,最终选择了Robot Framework+Selenium2Library的组合,原因如下:

  1. 小明只懂入门级python语言,而RFS对编程语言的要求基本为0。

  2. RFS环境搭建好后,测试结果汇总,测试报告,测试log都是直接生成的网页版,方便进行结果分析和分发。

  3. 公司制作的网页没有使用比较难以定位的插件。

测试环境的搭建

测试环境的搭建有2个方法:

  1. (推荐方法)安装也能了解自己使用了什么工具和插件,安装链接:https://blog.csdn.net/ywyxb/article/details/64126927

完全安装好环境后,就可以在CMD窗口运行ride.py来启动ride编辑器了,启动后的主界面如下,我们先不看别的,右键点击project,创建个New Directory:

2.jpg

给文件夹起个名字,并且(推荐)使用默认的txt文件进行编辑:

3.png

右键选择你的文件夹,创建一个测试套件:

4.jpg

给测试套件起个名字,其它均使用默认值即可:

5.png

6.jpg

导入Selenium2Library包

点击Library,导入Selenium2Library的包,引入后套件内均可使用其关键字:

7.jpg

引入成功后,可以按F5来查看引入类库包含的关键字:

8.jpg

9.jpg

关键字是什么?

Q:什么是关键字?

A:关键字是RF自动化的根本,可以理解为可以直接使用的封装好的函数。

10.jpg

创建测试用例

右键点击我们创建好的测试套件,创建一条测试用例:

11.jpg

12.jpg

好了,前面都是准备工作,我们现在可以正式开始写自动化用例了:

Q:UI自动化用例第一步应该干什么?

A:当然是打开浏览器了。

在ride中按F5,打开Search Keywords的界面,搜索下open,很快能找到这个:

13.jpg

14.jpg

15.jpg

16.jpg

如果按照以上步骤,我们应该打开了一个谷歌浏览器,并打开了百度网站,那么如何让百度搜索我们想要的信息呢?

在RFS里,我们要操作的对象主要是一个个元素(Element),只要我们能通过一定的方式找到这些元素就可以。

RFS支持很多种对元素的定位方法,在这里,我根据经验推荐几种定位方法:

CSS:定位最为灵活,速度最快,学习好后能了解很多web相关知识,缺点是需要专门的学习,推荐使用。

jquery:作为css定位的补充使用。

Xpath:语法灵活,有不少插件可以直接找出xpath路径(虽然不是最合适路径),很多初学者喜欢使用,缺点是执行效率不高。

我们打开谷歌浏览器,并打开百度首页,按F12打开浏览器开发者工具:

17.jpg

18.jpg

19.jpg

我们来继续完善我们的第一条测试用例:

20.jpg

测试总要有个成功或者失败的条件,我们发现搜索后总会有这个:

21.jpg

我们可以根据搜索后出现的文本信息来判断是否搜索成功:

22.jpg

执行下,看看我们目前写的是否有问题,结果真的报错了:

23.jpg

把刚才的地址改成url的方式,就可以正常跑了:

24.jpg

但是还有个问题,我们跑完后,虽然测试用pass了,但是自动化打开的浏览器并没有关闭,由于关闭浏览器是每次全部测试用例测试完成后必须的动作,我们需要把关闭浏览器这个动作加到测试套件中

在测试套件的设置中增加teardown(完成后操作),用来在全部测试用例完成后关闭浏览器:

25.jpg

同理,我们其实也不是在每条用例中都要打开浏览器,所以也可以把打开浏览器并设置分辨率并最大化的操作放到测试套件的setup中去。

那么,问题来了,我们的setup只能放一个关键字,如何在一个关键字中完成这么多操作呢?

在这里,用户关键字出场了(掌声)

26.jpg

27.jpg

增加了关键字后,我们发现增加了个keywords的域,里面包含创建的关键字:

28.jpg

剪切(因为以后用不上了)上面关于打开浏览器的那三行代码,放到我们创建的关键字下面:

29.jpg

我们切换到表格界面看看刚才完成的用户关键字:

30.jpg

实际上,我们是封装了这三个动作,使用一个关键字就可以调用

我们把刚才写的用户关键字设置到测试套件的Setup中,这样每次套件中的用例执行的时候,会先执行这个setup里的关键字(多条连续跑只执行一次):

31.jpg

我们可以在测试套件中再写一条用例,在用例开始的时候使用go to关键字来完成打开淘宝页面的动作,从而开始操作淘宝的搜索功能:

32.jpg

选择多条的执行顺序是:测试套件setup---测试用例hello world---测试用例taobao---测试套件teardown:

33.jpg

基本的操作就是这些。

入门后需要多看Selenium2Library的关键字,有时候你想实现某个功能,搞了半天发现原来人家早都有了。

入门后还要多练习元素的定位,这个是基础,没有熟练的定位,就没有更高的工作效率。


作者:山豆根行者

原文链接:https://blog.csdn.net/qq_27534003/article/details/87437195


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   最近一个学生也可以说是朋友,他遇到了一个让他困扰的职场难题,背景如下:  1)他们公司准备搞安全测试了,现在有人员培训的计划,所以全组有学习安全测试课程的安排。  2)他自己目前专职性能测试1年了,现在他领导有意想把他往安全测试的方向发展,但是他自己内心是排斥安全测试的,但是又不好拒绝领导的好意。  3)自己不想去安全,不是因为不感兴趣,而是因为目前阶段自己觉得性能还没完全摸清楚,现在又进入另外一个陌生的领域,心里没底。  4)且公司内部目前打算培养3个人做安全测试,他从性能部门转过去从零开始学习安全测试。  5)自己也不清楚安全测试的发展情况,非常头疼。目前就只想好好把性能搞好。  6)...
            0 1 532
            分享
          • 需求分析:整体流程图:需求提取 -> 需求分析 -> 需求评审 -> 更新后的测试需求跟踪xmind分析流程:1. 需求提取:分析依据(包括:需求矩阵、产品交互图、需求说明书)获取需求的纬度客户价值可以为客户带来哪些价值?可以解决哪些问题?根据以上问题定位功能是否合理UI功能 - 展示功能模块关联-历史模块新功能模块关联考虑是否关联?耦合部分是否需要支持?客户使用场景-部署方式网络特性客户使用服务器常见外设性能参数-性能要求网卡最低速率硬件支持输出(提取最原始的测试需求)2. 需求分析:分析依据(五维分析)用户场景功能是否和场景强关联网络拓扑能否满足客户需求和竞争对手比较差异...
            14 14 3036
            分享
          • 在我们的测试工作中,除了需要不断的学习新知识外,还有一个可能常常被我们忽视的工作,那就是反思。反思的重要性不言而喻,可以帮助我们总结过往的经验教训,可以帮助我们重新复盘过去工作中的得失,可以让我们通过曾经犯下的错误找到未来需要规避的问题,可以通过积累的经验获取后续工作中更高效的方法。那么问题来了,做测试的我们,该反思什么呢?在我们团队的日常工作中,每隔一段时间我们就会组织召开一次学习总结会。在这个会上,我们会去回顾过去一段时间工作中大家遇到的问题、学到的新知识、沉淀的经验和方法。在这个过程中,大家互相交流,互相碰撞,互相提问,互相弥补。通过这样的讨论学习,每个人都能感受到这些碰撞出的火花带来的...
            0 1 1890
            分享
          • 预览和发布API文档下面介绍Postman中如何预览和发布API文档。简要概述步骤Collection鼠标移动到某个Collection,点击三个点PublishDocsPublish得到PublicURL别人打开这个PublicURL,即可查看API文档详细解释具体操作预览API文档点击分组右边的大于号>如果只是预览,比如后台开发员自己查看API文档的话,可以选择:Viewinweb等价于点击PublishDocs去发布:ViewinWeb后,有Publish的选项(见后面的截图)ViewinWeb后,会打开预览页面:比如:奶牛云https://documenter.getpostma...
            12 12 4073
            分享
          • 一、什么是测试自动化框架自动化测试框架就是用于测试自动化的框架。具体来说,它提供了自动化测试用例编写、自动化测试用例执行、自动化测试报告生成等基础功能。我们只需要基于这个框架,完成和业务高度相关的测试用例设计和实现即可。另外,框架会为我们处理好复杂度与扩展性的问题,我们无需为此操心。测试自动化框架是在创建和设计测试用例时使用的一组最佳实践或准则。测试准则集可以包括编码标准,对象存储库,测试数据处理方法,有关外部存储访问的信息等。这些准则并非强制,但是在自动化脚本过程中,它们提高了测试的效率并产生了有益的结果。二、使用测试自动化框架的好处1、更全的测试范围2、降低脚本维护成本3、节省人力成本4、...
            7 7 641
            分享
      • 51testing软件测试圈微信