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退出数据库。

多测师讲解RF自动化测试实现流程_高级讲师肖sir的更多相关文章

  1. 多测师讲解自动化_rf框架搭建_高级讲师肖sir

    robot framework:自动化测试框架(简称RF框架) Python3.7 RIDE(可视化界面).  Wxpython  pip(在线下载) . setuptools(在线安装) . 第三方 ...

  2. 多测师讲解selenium--常用关键字归纳-_高级讲师肖sir

    常见的定位方式: 1.通过id定位 id=kw 2.通过name定位 name=wd 3.通过xpath相对路径定位:xpath=//*[@id="kw"] 4.通过两个属性值定位 ...

  3. 多测师讲解selenium _enter弹框_高级讲师肖sir

    enter # from selenium import webdriver# from time import sleep# drvier=webdriver.Chrome()# url='file ...

  4. 多测师讲解selenium_alert弹框定位_高级讲师肖sir

    from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url=r'F:\dcs\DCS课程安排\se ...

  5. 多测师讲解自动化selenium___定位元素002___高级讲师肖sir

    高级自动化测试python+selenium教程手册 --高级讲师肖sir(Harm) 第 2 章8种定位方法 总结: selenium 的 webdriver 提供了八种基本的元素定位方法,前面六种 ...

  6. 多测师讲解unittest介绍及自动化测试实现流程_高级讲师肖sir

    unittest框架介绍 unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类.test suit类.texttest runner类.textte ...

  7. 多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir

    RF连接数据库:1.Connect To Database(连接数据库)2.Table Must Exist(表必须存在)3.Check If Exists In Database(查询某条件是否存在 ...

  8. 多测师讲解自动化测试 _RF关键字001_(上)_高级讲师肖sir

    讲解案例1: Open Browser http://www.baidu.com gc #打开浏览器 Maximize Browser Window #窗口最大化 sleep 2 #线程等待2秒 In ...

  9. 多测师讲解自动化--rf断言(下)--_高级讲师肖sir

    1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...

随机推荐

  1. JQuery生成图片列表

    <!DOCTYPE html> <html> <head> <title>生成图片列表</title> <style type=&qu ...

  2. tomcat-8.0.18 cluster 使用Redis共享Session 配置

    事实证明 这位作者提在https://jingyan.baidu.com/article/ac6a9a5e10415f2b653eace8.html 最底下的http://pan.baidu.com/ ...

  3. [Java数据结构]HashSet,LinkedHashSet,TreeeSet

    Java中Set表示一个不包括重复元素的集合,它有HashSet,LinkedHashSet,TreeeSet三种常用实现. HashSet是Set的最常用实现,它常被用来清除重复元素. 例程: Se ...

  4. leetcode刷题-55跳跃游戏

    题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 思路 贪心算法:记录每一个位置能够跳跃到的最远距离,如果 ...

  5. JavaScript函数及面向对象

    函数及面向对象 目录 函数及面向对象 1. 定义函数 1. 定义方式一 2. 定义方式二 2. 调用函数 1. 参数问题 2. arguments 3. rest 3. 变量的作用域 1 . var的 ...

  6. TP6.0 一对一模型关联 hasOne

    本文测试关联方法都采用预载入查询 $data = User::with('profile')->select(); halt($data->toArray()); 1. 创建数据表 -- ...

  7. [程序员代码面试指南]递归和动态规划-排成一条线的纸牌博弈问题(DP)

    题目 给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明.请返回最后获 ...

  8. JVM--堆是分配对象的唯一选择么?

    在<深入理解Java虚拟机>中关于Java堆内存有这样一段描述:随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配.标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐 ...

  9. kolla部署openstack多节点高可用并对接ceph后端存储(17)

    部署节点执行: 安装基础包和docker yum install python-devel libffi-devel gcc openssl-devel git python-pip -y 升级一下 ...

  10. Mybatis是如何将Mapper接口注册到Spring IoC的

    1. 前言 有时候我们需要自行定义一些注解来标记某些特定功能的类并将它们注入Spring IoC容器.比较有代表性的就是Mybatis的Mapper接口.假如有一个新的需求让你也实现类似的功能你该如何 ...