- 1. 输入url后浏览器又什么变化?
- 2.gui自动化测试采用了哪些具体技术
- 3.selenium定位元素有哪些
- 4.gui自动化过程中元素操作碰到了哪些问题,如何解决的?
- 6. ui自动化的框架介绍一下
- 7.UI自动化是人工触发执行的,还是自动运行,多长时间执行一次
- 8.gui自动化什么时候介入,为什么要做gui的自动化测试
- 9.自动化测试用例是如何设计和准备的
- 10. 自动化脚本是怎么生成的?是录制的吗?
- 11. 口述一下你自动化测试项目中比较核心的一部分代码,具体用到什么方法
- 12. 自动化测试用例你们是怎么维护的
- 13. 自动化的报告你们是如何生成的,一什么样的方式进行展现的?
- 14. 自动化时验证码是如何解决的
- 15. selenium webdriver 误报
- 16. xpath 的了解
- 17. UI测试用例设计了多少?
- 18.用例执行多长时间,如何执行
- 19.Selenium webdriver的quit和close的区别
- 20. Selenium webdriver的工作原理
- 21.po模式介绍
1. 输入url后浏览器又什么变化?
1.首先在客户端浏览器中输入url地址
2.检查浏览器中是否存在此地址的缓存,有的话直接在界面显示,没有进行DNS域名解析,获取相应的IP地址
3.通过TCP三次握手建立连接
4.浏览器向服务器发送http请求,请求数据包
5.服务器将请求进行处理,形成数据库中增删改查的sql
6.服务器将sql发送到数据库
7.数据库处理sql,将结果返回给服务器
8 .服务器对结果进行处理,发送至浏览器
9.通过TCP四次挥手断开连接
10.浏览器对静态资源进行缓存(静态资源:无论访问多少次,得到结果都是一致css,js,图片,音视频等)
11.解析html,DOM树,document,css,js
12.ajax异步刷新(ajax异步刷新不需要重新加载整个页面,得到新的数据并且进行渲染)
2.gui自动化测试采用了哪些具体技术
:::info
- python做一个基本代码的编写
- 单例保证浏览器为一个
- po模式元素的集中管理
- ddt的设计思想,一个测试数据的多次执行
- selenium库对界面元素进行定位和操控
- pytest库进行测试用例的管理和调度
- allure进行报告的输出
- jenkins进行集成
- git脚本的自动管理
-
3.selenium定位元素有哪些
:::info
八大元素定位
- id定位
- name、 class name(多个class用.来标识)、tagname
- link text 、partial link text(链接中文本值得一部分)
- css selector,xpath
- find_elemen与find_elements的区别,返回多个和返回列表
平时用id,name的唯一,定位不到,使用xpath,层层定位 :::
4.gui自动化过程中元素操作碰到了哪些问题,如何解决的?
:::info
场景+解决
- 元素属性的属性限制,readonly,使用document移除
- 路径动态变化避免绝对路径,采用相应路径来定位,()
- 页面存在悬停,actionchain的方法进行点击和操作
- 元素在页面下方,未显示在当前窗口,使用window.scrollto(x,y)
- alert弹窗
- frame框架 需要进行切换
- 浏览器版本和驱动版本必须一致,否则闪退或者运行异常
- 匹配多个元素,使用elements进行下标
- 元素尚未加载,找不到元素,需要加载等待
- 要操作的页面控件出现在不同的浏览器窗口,需要进行window窗口切换处理
- 操作某个页面目标元素时,这个元素被其他的窗口或者元素遮挡,要对被遮挡的元素进行操作或者添加等待时间,使的目标元素可以被正常操作。在空白处进行点击
- 某些页面无法通过以上常规手段进行用户行为模拟,可以通过图像识别的技术结合坐标时间鼠标的模拟
- id属性的动态变化,借助其它属性操作
- 当前元素没有合适的属性进行识别,采用父子路径,兄弟路径进行元素识别(补充)
:::
6. ui自动化的框架介绍一下
:::info
- 分层 驱动层->行为组件层()->测试用例层()->测试执行层—>报告层
login+barcodeSearch+payment+logout 非会员的购买行为 login+barcodeSearch+memberCreditSearch+payment+logout 会员的购买行为 - 公共的封装: common 文件读取,DB读取操作 config:db信息,目录信息进行配置管理
- Pytest
- 数据文件 数据是如何组织并进入测试用例的
- 个人
- 自动定期执行,测试脚本设计完成后,调试没有问题后,推送到svn中进行脚本管理
- svn和jenkin进行配置设置,每隔两个小时执行一次
- ui用例有三四百个测试用例,大概执行一个小时和两个小时
-
8.gui自动化什么时候介入,为什么要做gui的自动化测试
:::info
为了回归测试时,解放人力,测试新功能是否对原有功能造成影响
- 下个版本的回归测试时接入
- 每做完功能测试后,抽取20%设计脚本,
不断迭代,工作量会不断增大,进行回归时,减少任务量, :::
9.自动化测试用例是如何设计和准备的
:::info
主要基于编写的测试用例,要求做自己的自动化测试脚本转化
- 重要基本的用例进行编写代码
利用pytest进行管理,添加相应的标记(测试方法,所属模块) :::
10. 自动化脚本是怎么生成的?是录制的吗?
:::info
latalongl工具的录制(不建议说)录制虽然简单,但是效率不高
python编写,F12界面元素抓取
ddt的模型
- 驱动层
- 单例,避免重复打开浏览器
- 定义类方法,类变量,如果有值直接返回,没值创建浏览器
- 单例,避免重复打开浏览器
- 业务层
- 类变量实现元素的集中管理单例,元组当时
- 测试层
- 对业务层的调用
- 测试执行层
- 对用例的调用
- 公共层
- 公共的方法
- 配置层
- ip等配置信息
- 行动层
- 驱动层
或者说kdt
通过pycharm本地编写,svn的操作
- jenkins做部署,自动化的执行
-
13. 自动化的报告你们是如何生成的,一什么样的方式进行展现的?
:::info
pytest+allure
- ptest自己中的模块或者全部执行
-
14. 自动化时验证码是如何解决的
:::info
开发人员做一个万能验证码,或者功能屏蔽
python的图像识别
相对路径(//),和绝对路径(从/)
- 属性的方式(//标签)
- 多属性(@属性=值 and @属性=值)
- 父节点(parent::),子节点(../..)
- 哥哥 弟弟
文本匹配的方式(text()= 值)(contains(text(),值)) :::
17. UI测试用例设计了多少?
:::info 注:UI自动化测试用例一般是在手工测试用例的基础上转化的,测试用例四个模块大概700条
1. 可以根据手工用例的数量,按照一定的比例进行计算自己相关项目的UI用例数量,比例不同公司会有-区别,20%-60%都行,150左右
2. 其中自己编写的测试用例大概有多少?”
3.半个小时-一个小时 :::18.用例执行多长时间,如何执行
:::info
UI自动化一般模拟用户操作,页面加载等也都需要一定的时间,所以执行速度并不快,一般300个用例执行时间以小时为单位计算,可以按照300左右用例/小时进行大致估算
- 自动化的测试用例是按照自动测试需要,人工触发执行还是周期性自动执行
- 一般生产环境和自动化的测试环境可以设置周期性自动执行(需要任务调度)
也可以测试人员在需要回归时,人工触发后脚本自动执行,不触发不执行的模式” :::
19.Selenium webdriver的quit和close的区别
:::info
quit是关闭整个浏览器,包括进程
-
20. Selenium webdriver的工作原理
:::info
客户端脚本如python,在执行时,会向驱动发送http请求
驱动作为http server,会接收并处理请求,对浏览器进行操控,然后返回结果给客户端 :::
21.po模式介绍
:::info
pagobject 页面对象模型,主要是为了减少代码重复,让代码可读性更强,更容易维护,
- 包括3层:对象层、操作层、业务层,对象层主要封装一些元素定位的方法,
- 操作层封装元素的特定操作,业务层把一个或多个操作组合具体的业务,实现具体的功能测试 :::