• 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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在一位推特用户关于比尔·盖茨参与OpenAI以及对AI总体看好的推文下,埃隆·马斯克回复称还记得与盖茨的早期会面。马斯克表示,盖茨当时对AI的理解有限,现在依然如此。  在上周发表的一篇博客文章中,盖茨谈到了人工智能将如何改变劳动力、医疗保健和教育。  盖茨写道,2016年以来一直在与OpenAI团队会面,最近的一次会面是在去年9月。目前尚不清楚盖茨以何种身份参与的会面(盖茨在2000年辞去微软首席执行官一职,于2020年离开了微软董事会)。  2015年,马斯克等几位硅谷大牛承诺向OpenAI投资10亿美元,他也是OpenAI的创始人之一。  鉴于特斯拉也需要大量AI技术研究,马斯克出于...
            0 0 998
            分享
          •   本文描述单元测试的概念,以及Test Harness建立的方法和简单的单元测试过程。  1 单元测试  单元测试,简单来说就是在Simulink模型中只测试一小部分单元的功能。关于单元测试的概念网上有很多资料了,这里不再赘述。博主从实际工作经验的角度来谈谈单元测试的价值。  1.1 场景举例  举个简单的例子,某个工程师需要设计一个逻辑,当毫米波雷达跟踪的目标的置信度大于等于90时,认为该目标是有效目标。于是该工程师设计模型如下:  工程师不小心把判断条件写成大于号,而不是大于等于号。这就导致了置信度为90的目标全部被视为Invalid,从而影响了后面一大片的算法丢失了重要的输入信息。如果...
            0 0 902
            分享
          • 相信很多小伙伴想要自学性能测试,但网上的资料查阅出来的都比较干燥,对实际的性能测试经验并没有什么提升,本文从测试前的准备带你了解如何成为一名性能测试工程师。在开始性能测试前,我们需要跟项目组确认的几点内容:性能测试环境与生产环境服务器资源差异,并做差异分析,如测试环境的服务器资源与生产环境的服务器资源差距较大,需反馈给项目组,不然测出来的结果没有太大的参考意义;开始测试前,确认日志级别,日志级别需要与生产保持一致。如生产的日志是Info级别,则在测试环境的日志也应该是Info级别;确认数据库铺底数据(采用的方式为:让运维取生产上的每日成交量的数据库数据量),如数据库都是空表在测试查询交易的时候...
            0 0 1529
            分享
          • 在日常工作的摸索中,我将如何做好app的测试简单归结为如下内容。(1)功能测试每项开发的新功能都需要进行测试。app测试中功能测试是一个重要方面。测试人员应该要进行手动测试和后期的自动化测试维护。刚开始测试时,测试员必须把app当做"黑盒"一样进行手动测试,看看提供的功能是否正确并如设计的一样正常运作。除了经典软件测试,像点击按钮、提交订单看看会发生什么,测试员还必须执行更多功能的app测试。除了整个手动测试过程,测试自动化对移动app也很重要。每个代码变化或新功能都可能影响现存功能及它们的状态。通常手动回归测试时间不够,所以测试员不得不找一个工具去进行自动化回归测试。现在...
            0 0 1652
            分享
          •   其实我随便看到就投的额,看到薪资挺高的。感觉40K太假,30K很虚,所以你懂的,中级哦。  笔试  就是所谓的心理测试题,大疆的特色。  一面  约了下午面试,随便找个地方,远程视频,他们都是两个人+一个HR。  几乎没有问什么技术问题,就问了几个:  1.自我介绍  2.有个bug你怎么跟开发说,他说没有办法解怎么办?  答:我说首先参照指标或者竞品,如果不满足指标一定要解决,如果比竞品差太多也一定要解决,如果差别不大,就CCB,给项目经理或者领导决策咯。  3.你怎么测需求,如果保证需求是正确的。  4.性能怎么测试,流畅度和响应速度怎么测试?  5.为什么离职?  答:我想换个行业,...
            0 0 2220
            分享
      • 51testing软件测试圈微信