多测师讲解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你们公司的自动化流程是如何展开的?
首先我们对自动化的需求进行评审,对测试的场景进行选择,还有测试工具的选择,之后根据评审后的需求文档在RFride里进行用例的编写,执行测试用例,对用例结果进行分析,最后做出总结报告。
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的更多相关文章
- 多测师讲解自动化_rf框架搭建_高级讲师肖sir
robot framework:自动化测试框架(简称RF框架) Python3.7 RIDE(可视化界面). Wxpython pip(在线下载) . setuptools(在线安装) . 第三方 ...
- 多测师讲解selenium--常用关键字归纳-_高级讲师肖sir
常见的定位方式: 1.通过id定位 id=kw 2.通过name定位 name=wd 3.通过xpath相对路径定位:xpath=//*[@id="kw"] 4.通过两个属性值定位 ...
- 多测师讲解selenium _enter弹框_高级讲师肖sir
enter # from selenium import webdriver# from time import sleep# drvier=webdriver.Chrome()# url='file ...
- 多测师讲解selenium_alert弹框定位_高级讲师肖sir
from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url=r'F:\dcs\DCS课程安排\se ...
- 多测师讲解自动化selenium___定位元素002___高级讲师肖sir
高级自动化测试python+selenium教程手册 --高级讲师肖sir(Harm) 第 2 章8种定位方法 总结: selenium 的 webdriver 提供了八种基本的元素定位方法,前面六种 ...
- 多测师讲解unittest介绍及自动化测试实现流程_高级讲师肖sir
unittest框架介绍 unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类.test suit类.texttest runner类.textte ...
- 多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir
RF连接数据库:1.Connect To Database(连接数据库)2.Table Must Exist(表必须存在)3.Check If Exists In Database(查询某条件是否存在 ...
- 多测师讲解自动化测试 _RF关键字001_(上)_高级讲师肖sir
讲解案例1: Open Browser http://www.baidu.com gc #打开浏览器 Maximize Browser Window #窗口最大化 sleep 2 #线程等待2秒 In ...
- 多测师讲解自动化--rf断言(下)--_高级讲师肖sir
1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...
随机推荐
- C014:不用算术分割显示逆序三位数
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int handred,ten,ge; do{ pri ...
- jenkins通过API触发构建任务
添加一个可变参数 配置token 参数用 ${参数名称} 引用 外部调用url地址:ip:port/view/视图名称/job/任务名称/buildWithParameters?token=test& ...
- jzoj 3567. 【GDKOI2014】石油储备计划
Problem Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. Data Constraint 对于20%的数据 ...
- spring5源码 -- IOC容器设计理念和核心注解的作用
一. spring源码整体脉络介绍及源码编译 二. Spring IOC的源码深入学习 2.1 ioc容器的加载过程(重要) 2.2 bean的生命周期源码深度剖析 2.3 循环依赖总结讲解 2.4 ...
- python代码开发规范
https://github.com/libo-sober/LearnPython/tree/master/day18 为什么要有模块? 拿来主义,提高开发效率. 便于管理维护. 什么是脚本呢? 脚本 ...
- [LeetCode] 22. 括号生成(回溯/DP)
题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()( ...
- [LeetCode]438. 找到字符串中所有字母异位词、76. 最小覆盖子串(滑动窗口解决子串问题系列)
题目438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 说明: 字母异位词指字母相同,但排列不同的字符 ...
- [HDOJ1232]畅通工程(并查集)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1232 题目描述 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表, ...
- Spring boot +Thymeleaf 搭建springweb
对接天猫精灵的时候需要有网关服务器方提供几个页面,服务器已经有了,spring boot的 纯后台的,就加了Thymeleaf jar包添加几个页面跳转 maven配置 <!-- 引入thy ...
- 3.GoolgeProtoBuffer序列化反序列化