5年测试老鸟,Web自动化重点总结梳理,看这篇就够了...


前言

1、什么样的项目适合引入UI自动化测试?UI自动化的业务场景覆盖和用例条数覆盖情况,UI自动化用例条数情况

1)什么样的项目适合引入UI自动化测试

① 迭代版本周期比较长
② 需求变更不频繁
③ 页面控件稳定
④ 项目周期长

2)UI自动化的业务场景覆盖和用例条数覆盖情况

面试官:你们之前做UI自动化,是只考虑正常场景吗?还是正常和异常场景都会考虑?
==》我们之前做UI自动化只写正常场景的用例

业务场景覆盖情况:
A、可以覆盖到的场景占50-70%
==》1)信贷:用户信息采集、录入实名信息、审批、签约;2)电商:商品列表、商品下单、加入购物车、完成支付,申请售后、查看商品详情

B、不能覆盖到的场景占30%
==》滑动拼图、图像识别、人脸识别、点击会跳转到第三方平台的、跨平台的

用例条数覆盖情况:
ui自动化用例是根据功能测试用例转化来的
==》把功能测试用例通过Python代码的方式来编写

500条功能测试用例:
==》转换为UI自动化测试用例,转换率5-10%
==》25-50条*12个月=1年写300-600条用例
==》300多条
==》那你这300多条用例要运行多长时间?
==》1个多小时

【面试题】你们做UI自动化的收益怎么样?收益大吗?

答:我们之前做UI自动化测试还是有收益的,可以在一定程度上帮助我们做回归测试,节省一定的时间,提高我们的工作效率

【面试题】你们做UI自动化的目的是什么?

答:UI自动化对于老版本发布的功能可以用自动化的方式去进行回归测试,节约测试时间和成本

【面试题】那你觉得功能测试、接口测试、UI自动化测试、接口自动化测试的区别?

功能测试:又称为黑盒测试,通过手工对前端页面以及实现的功能进行测试,功能测试大部分只对前端页面做了校验

接口测试:又称为灰盒测试,集成测试,会关注前后端的交互逻辑的校验,可以检查后端是否有做校验,以及接口测试也能去覆盖一些直接从页面上没有办法操作的场景

UI自动化测试:对于老版本发布的功能可以用自动化的方式去进行回归测试

接口自动化测试:接口测试会一个一个的去测它的正常和异常场景,我们之前接口测试一个一个接口去测效率比较慢,我们才采用接口自动化对之前发布的老版本的功能的接口进行自动化回归测试

2、做UI自动化的时候图形验证码怎么处理?

1)我们之前是用的万能验证码8888
2)首先通过截图,把验证码相关的区域截取出来,通过OCR进行识别,把识别到的数据赋值给到一个变量,然后在进行输入就可以了

3、selenium工具里面的元素定位有哪些?

元素定位方式:id、name、class、xpath、css、tag_name、link_text、partial_link_text,JavaScript等等

【面试题】你最喜欢什么元素定位方法?

答:我一般有id就使用id,没有id就使用name,class,或者一些其他css的属性,如果这些都没有我会用xpath相对路径来进行定位(xpath的相对路径的处理速度要比绝对路径的处理速度快很多)

Xpath的相对路径写法://*[@id="kw"]
Xpath的绝对路径写法:/html/body/div/div/div/input/p/.........

4、UI自动化的等待方式有哪些?它们的区别是什么?

1)强制等待(线程等待)
==》sleep(5) 一定要等待5秒才能继续

2)隐式等待
==》implicitly_wait(5) 是作用于全局的,需要等待整个页面元素加载完成;比如在第1秒的时候加载完成则直接往下继续,如果超过5秒还没有加载完成则会报错并且抛出异常信息

3)显式等待
==》webdriverwait(driver,5,0.5) 是作用于局部的,等待页面某个特定的元素加载完成;比如在第1秒的时候加载完成则直接往下继续,并且会每隔0.5秒去页面刷新寻找元素,如果超过5秒还没有加载完成则会报错并且抛出异常信息

5、脚本如何维护?有没有碰到什么bug?

1)脚本如何维护?

① 我都是用框架分层来进行维护,像元素定位我使用了PO设计模式来进行维护
② 在回归测试阶段,我会结合Jenkins定去运行UI自动化用例,进行维护

2)有没有碰到什么bug?

① 我们做ui自动化主要是为了回归测试,bug一般在集成测试节点的时候都被修复了
② 面试官:你就一个bug都没有遇到吗?
==》bug还是有的,
A、主要就是之前有些页面开发把标签和样式改动了,就会出现元素定位不到的bug。
B、还有就是有的页面加了一些浮框把之前的元素给挡住了也定位不到之类的bug。
C、我的谷歌浏览器自动升级了,导致和chromedriver版本匹配不上,浏览器直接打不开了

6、做自动化遇到了什么问题?怎么解决?

1)有的时候动态元素定位不到
==》我会采用xpath相对路径自己写xpath语法来进行定位

2)有的时候自动化脚本执行速度较慢
==》我会尽量少用xpath绝对路径,因为xpath绝对路径执行速度很慢,并且我会少用sleep方法,涉及到一些if elif条件判断时,尽量把可能发生的条件放在前面写,这样可以减少程序判断的次数,提高效率

3)弹框内有按钮点击不到
==》弹框里面有设置滚动条,首先进入弹框里面,将滚动条滑动到最底部才可以点击确定或者取消按钮

4)有的时候元素没有加载出来
==》我会通过设置隐性等待和显性等待来解决

5)有的时候还会碰到iframe框
==》我会通过driver.switch_to.frame先进入到iframe框里面,再去定位到里面的元素

6)有的时候还会有alert弹框
==》我会先点击确认弹框活取消弹框之后再定位其他的元素

7、什么叫po设计模式?po设计模式的作用

discuz_project.zip ==》Python+selenium+unittest+po设计模式+ini+htmltestrunner

cms_auto_ui_test_end.rar ==》Python+selenium+pytest+po设计模式+yaml+allure

po设计模式(重要)

==》page object页面对象设计模式解释:所有当前页面的控件和元素都为类或者对象的属性

po设计模式优势如下:
1)让元素定位,流程,案例进行了分离
2)前端代码关于元素定位有改动可以随时进行处理,修改非常方便
3)让代码间的耦合性降低、防止代码写死
4)降低代码的维护成本
5)代码的复用性高
6)采用标准的page object页面对象设计模式,符合现在主流ui自动化框架的标准搭配

8、用selenium+unittest/pytest单元测试框架是怎么做ui自动化测试的?

我们之前这个UI自动化框架大致分了6-7层,首先
第1层的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些用户名密码等等

第2层是utils工具类层,这个里面主要封装了一些读取Excel表格,发邮件和读取配置文件的工具类

第3层是一个public基类,这个里面主要封装了元素定位的方法比如把id,name,class,xpath,css等等都封装在一个类方法里面了,还把一些send_keys和隐式等待都进行了二次的封装

第4层就是testcase用例层了,这个里面主要就是定义一个类然后继承unittest.TestCase这个类,通过unittest单元测试框架来管理用例,然后编写用例也用到了PO设计模式,就是把我们的元素定位和流程层,代码层进行了分离,最后用例写完再通过self.assertEquals进行一个断言

第5层就是run运行层,会把所有的用例放在suite套件里面,然后调用run方法运行套件

第6层就是通过HTMLtestrunner/Allure模块生成测试报告,然后再通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的ui自动化用例,大致的一个框架结构就是这样的。

最新最全花1W买的Python+Selenium全栈Web自动化测试

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最动人的风景,往往藏在最险峻的山巅。当你觉得力竭时,请记住:每一次坚持都在重塑更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!

你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值