多测师讲解RF自动化测试实现流程_高级讲师肖sir


1.环境搭建过程?­­整套环境需要哪些工具包,以及工具包的作用?
因为我搭建的RF框架是基于Python的,所以肯定要先安装Python,python安装完之后,开始安装自动化测试框架rf3.0—在dos安装完成后,再安装wxpython作为GUI的图形化工具,这个工具是用来实现我们程序的输入、输出代码的图形化,方便观察管理。他的主要作用就是来运行ride的,一般双击默认安装即可,之后还需要 安装ride我们在RIDE上进行测试用例设计和编写测试脚本,并执行自动化测试为了方便以后我们的使用可以创建ride的快捷方式--由于selenium2library关键字库安装需要使用第三方库setuptools中的easy_install和pip在线安装,所以, 需要安装setuptools库并升级pip,然后用pip在线安装selenium2library关键字 库。安装完成后启动ride导入selenium2library库通过打开一个网页来测试下是否搭建成功。

2.RF框架的原理?常见的功能?
rf是一个关键字驱动的自动化测试工具;主要框架分为三层,第一层数据层,数据层就是编写的测试脚本,这些脚本需要安装rf的编写用例的原则来编写,第二层就是rf层,它负责接收数据层的数据,同时在第三方库中调用数据层用到的关键字,(其实第三方库中的关键字就是python语言中的函数或者类中的方法),所以rf框架的最底层就是执行python语言,调用关键字其实就是制定python语言。
RF是一款功能丰富并且扩展性强的开源自动化测试框架,主要用于轮次较多的回归测试。
框架通过关键字的组合形成测试逻辑,最终通过各个底层测试库与被测系统交互,完成测试工作。RF框架为APP、Web、接口、数据库测试等提供了标准的底层关键字API,测试人员只需在这些关键字的基础上开发自定义脚本,即可满足自身测试的要求。

3你们公司的自动化流程是如何展开的?
首先我们对自动化的需求进行评审,对测试的场景进行选择,还有测试工具的选择,之后根据评审后的需求文档在RF­ride里进行用例的编写,执行测试用例,对用例结果进行分析,最后做出总结报告。
1、自动化需求的评审
2、自动化场景的选择
3、自动化工具的选择
4、自动化脚本的实现
5、自动化脚本的执行
6、自动化脚本的分析

自动化总结报告

4什么项目适合做自动化?
项目周期长、需求稳定、前期版本稳定、在回归测试实现自动化、测试人员必须具备自动化测试的能力、项目进度压力不大、自动化脚本可重复使用,有自动化需求

5.常见的定位方式?详细了解每一种定位方式?
常见的定位方式有4种,包括id、name、css、xpath这四种。
A、当页面元素有id属性时,id就相当于爸爸,基本上都是唯一的,所以我首选的是用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。

B、xpath或css很强悍,基本是可以解决90%的问题,一般有少数元素不好定位时,我基本上会选择xpath定位。
C、当这四种定位方式都试过之后还是不行之后,就要仔细检查了,另外如果是弹框定位的话,要注意查看是否为iframe弹框

6.常见的关键字?和自己创建的关键字?
有的;我编写了2个关键字,自动生成邮箱,自动生成验证码一个是用于自动生成手机号;一个是用于自动生成密码,主要是用来测试不同手机号不同密码是否能注册成功;不同手机号相同密码是否能注册成功,已注册的用户是否能再次注册;以及注册用户量是否能超过一定为范围。登录中用户同时在线量可以达到多少。

7.你们公司的自动化用例如何进行维护的?
定时执行跑用例从封装的角度作答问题(参数化)

8.编写用例中遇到过哪些定位问题?简单的描述一下整个过程?­­依托自己的项目
印象最深的是在测登录的时候,因为做出借项目的时候涉及到第三方资金存管,刚开始登录成功的时候会跳出弹框,所以在写用例的时候设计了自动点击取消,当我要测试资金管理模块,注册了银行存管账户并绑定了银行卡,所以在我再去测试资金模块的时候一直在报错,登录之后就无法执行下一步,后来经过仔细排查后发现这个问题,把那个点击取消的步骤删除后就可以正常执行了。
登录后会跳出风险提示框,一直无法定位那个我已知悉,用了xpath等等,后来是找的上上级去定位成功的。
有的时候网络不好,页面跳转的慢,以及页面跳转需要时间,无法定位到元素,所以用了sleep 休眠
没有最大化窗口,定位不到被遮挡的元素5)iframe框 再进行点击


9.你们公司用例是如何维护?­­封装
我们是用封装的方法对用例进行维护的,因为方便后期调用并维护,就像我之前做UI测试,做客户个人中心时会涉及到多次登录或打开网页的操作,我们知道封装的话一般分为三层,即元素层、流程层和案 例层,我首先是对关键字进行提取到元素层,关键字的提取的话可以运用selenium2library库或者自己创建关键字进行提取,然后到流程层进行编写,最 后运用到案例层,极大得节省了时间,并在后期调用时也不会对之前的案例产生影响。

10.你怎么保证你用例的执行准确性­­断言
我之前主要是运用断言来保证用例的执行准确性,我一般会找到我所写用例独有的元素进行断言,比如说登录,登录成功后,页面元素should contain账户页面,我一般是用get title获取title信息,所以是页面元素should contain title进行断言,这样保证我是有登录成功的。

11.结合项目讲解自动化?
注意细节:1)流程上:从开始到数据库结束
整个流程中场景不要过于单一
关键字的个数尽量多一点,少点重复
整个流程讲解时带上关键字使用上的比较
整个流程不要太顺,尽量带上一些问题的分享
自动化讲解民贷天下
我之前有做过一个自动化的项目,名字叫做民贷天下,在这个项目里我负责的是我要出借和我要借款的模块,在对需求进行评审,以及对测试的场景的工具进行选择后,我根据评审后的需求文档在RF-ride里进行用例的编写,先导入Selenium2Library关键字库,然后以及自己的定义的关键字库(随机生成手机号、随机生成验证码、随机生成金额,随机生成邮箱), 为了方便后期的维护和调用,我会先对关键词进行定义和封装,对一些关键字进行提取,等关键字提取完成后,在流程层进行整个用例流程的编写,像是在测试个人中心登录环节时, 用open browser 打开民贷天下网页,然后通过maximize browser window对浏览器进行最大化处理,避免出现页面中元素定位后无法点击报错的现象,确保用例执行的准确性,click link 点击登录,进入到登录界面,随后会跳出一个登录弹框,因为有时候用例执行太快,而网页加载太慢会导致报错,所以我一般都会用sleep等待2秒,确保页面加载完成后再执行下一步。账号和密码都是文本输入框,可以用input text输入账号和密码,用ID进行定位,这时候我会把账号和密码设为变量,方便后续的账号和密码的测试(编写的关键字:一个是用于自动生成手机号;一个是用于自动生成密码,主要是用来测试不同手机号不同密码是否能注册成功;不同手机号相同密码是否能注册成功,已注册的用户是否能再次注册;以及注册用

户量是否能超过一定为范围。登录中用户同时在线量可以达到多少),click button 点击登录,一般这个时候我会用断言保证案例层执行时候的准确性,page should contain text。
登录后会跳出风险提示框,开始一直无法定位那个”我已知悉”,用了id,css,xpath相对路径,后来是找的上上级才定位成功的,如果不点那个我已知悉,就无法进行任何界面的操作。因为风险提示有倒计时的阅读时间,所以我也选择休眠十秒,防止定位不到元素。 接下来的话是测试我要出借这个模块出借的流程,测试点是低于起投额是否可以出借,因为之前已经对登录流程进行了封装,所以我直接调用就可以了,因为出借有几个模块,优选项目、自投乐和转让专区,先点击我要出借,用xpath去定位就可以,然后点击自投乐项目, 一直报错,显示元素没有被找到,后来发现那是一个iframe框,所以我先用select frame进入弹框,用xpath点击自投乐,用Unselect Frame 退出iframe框,选择要出借的项目,用click element定位后点击立即出借,随后跳转到出借界面,然后休眠5秒,然后同时我会用select window并get Άtle信息进行窗口间的切换,不然鼠标停留在上一个页面,无法执行下一步操作,之后是用input text,用id定位输入金额,为了避免频繁输入金额,所以在之前的时候就在pycharm里用类的方法定义了自动填写金额的关键字,这边直接调用就行了,click button点击立即出借,之后input password输入支付密码,click element点击确定出借, 这时候会出来一个alert的确定弹框,choose ok on next confirmation和confirm action 进行点击确定,然后用alter should bepresent进行再次确定。起投额是500元,我输入一个低于起投额的金额,输入金额的框是文本输入框,直接用input text 499,click buΔon点击立即出借,最后get text 断言一下page should contain “出借金额不能小于500”。(可写关键字为:输入不同的金额)在整个流程中所涉及到的数据库表,用Connect To Database连接数据库,查看出借项目产品信息有‘loan_product_informaΆon_table’(出借产品信息表)、客户注册时有‘loan_customer_informaΆon_table’(出借客户信息表)、查看收益时
有‘loan_yield_staΆsΆcs_table’(出借资金收益表),查看完之后用Disconnect From Database退出数据库。

原文地址:https://www.cnblogs.com/xiaolehua/p/13799523.html