python自动化测试面试题(二)(持续更新)
1、自动化测试用例是用来监控的,再次目的下,我们就把自动化测试用例设置成定时执行的,每30分钟执行一次,在jenkins上创建一个定时任务即可2、必须回归的用例。有些测试用例,在产品任何变动上线之前都需要回归测试3、不需要经常执行的测试用例,我们没有必要一直回归执行,毕竟是有时间消耗的,有些时候非必要的业务不需要经常回归4、不需要经常执行的测试用例就需要人工执行,在jenkins创建一个任务,需要
这里写目录标题
- 21、selenium原理(最新)
- 22、你的自动化用例的执行策略是什么?(重要)
- 23、Selenium有哪几种定位方式?用的最多的是哪种?
- 24、UI自动化能发现多少Bug
- 25、你们一般对什么case会进行自动化,自动化一般在哪个阶段进行
- 26、你觉得自动化测试最大的缺陷是什么?
- 27、明明自己定位的元素是对的,执行自动化测试脚本时却报错,这时你有几种方法解决此问题?请写出你的解决方法(最新)
- 28、简单说出如何用自动化测试脚本实现遍历复选框点击功能(要求全部勾上)。
- 29、 自动化测试用例如何编写?(重要)
- 30、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?(重要)
- 31、如果一个元素无法定位,你一般会考虑哪些方面的原因?(最新)
- 32、怎么验证元素是enable/disabled/checked状态?
- 33、自动化测试的时候是不是需要连接数据库做数据校验?
- 34、举例一下说明一下你遇到过那些异常
- 35、如何设计高质量自动化脚本(最新)
- 36、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?(最新)
- 37、webdriver可以用来做接口测试吗?
- 38、在python中进行数据驱动测试
- 39、pytest 和 unittest 的区别?
- 40、find_element() 和 find_elements() 有什么区别?
接上一篇博文:https://blog.csdn.net/YZL40514131/article/details/125940126
21、selenium原理(最新)
22、你的自动化用例的执行策略是什么?(重要)
1、自动化测试用例是用来监控的,再次目的下,我们就把自动化测试用例设置成定时执行的,每30分钟执行一次,在jenkins上创建一个定时任务即可
2、必须回归的用例。有些测试用例,在产品任何变动上线之前都需要回归测试
3、不需要经常执行的测试用例,我们没有必要一直回归执行,毕竟是有时间消耗的,有些时候非必要的业务不需要经常回归
4、不需要经常执行的测试用例就需要人工执行,在jenkins创建一个任务,需要执行的时候人工构建
23、Selenium有哪几种定位方式?用的最多的是哪种?
tag_name:通过标签名称,找出来的元素太多了
name:用户输入input,不出意外总会有name属性
class_name
id:
1、同一个页面当中,某个id只能用一次,
2、如果元素有id,会优先使用id定位,
3、不好的消息,不是所有的元素都有id
link_text:连接的文本,只能用来定位连接
partial_link_text
css_selector
xpath:用的最多,具体的用法在博文https://blog.csdn.net/YZL40514131/article/details/123858970
24、UI自动化能发现多少Bug
UI自动化的目的不是为了发现多少Bug,主要是为了减轻重复的基础操作和线上监控的作用
25、你们一般对什么case会进行自动化,自动化一般在哪个阶段进行
a、按照用户逻辑,从登录平台到操作一个完整的流程再到最后关闭浏览器这一套实现自动化,其中包括好多正向用例,
b、比较繁琐的操作,需要手工多次点点的对于这部分用例,也实现自动化测试
c、核心业务整个流程
a、项目后期进行回归测试、
b、其他项目上线会影响到该项目时,做回归测试
c、运维对数据库进行迁移时,做全量的回归测试
d、主要是主流程中比较容易实现的进行自动化,一般在集成阶段进行该版本的自动化监控,平常的话会一直跑线上监控的
26、你觉得自动化测试最大的缺陷是什么?
页面变化大,维护成本高
27、明明自己定位的元素是对的,执行自动化测试脚本时却报错,这时你有几种方法解决此问题?请写出你的解决方法(最新)
28、简单说出如何用自动化测试脚本实现遍历复选框点击功能(要求全部勾上)。
xPathRadio = driver.find_element_by_xpath('//input[@type="radio"]')
# radiobox复选框对象我们必须使用find_elements方法去定位多个元素(复选框就是多元素)
radioboxes = driver.find_elements_by_xpath(xPathRadio)
# 使用循环遍历的方式,逐个点击这些定位到的元素
for radiobox in radioboxes:
radiobox.click()
29、 自动化测试用例如何编写?(重要)
a.用例是自动化测试工程师自己设计的,一般刚开始已基本业务流程为主(登录–完成一个业务–退出)
b.从系统测试用例中进行筛选或由业务工程师提供
30、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?(重要)
a、引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
b、测试环境和线上环境监控
c、运维对数据库的迁移
31、如果一个元素无法定位,你一般会考虑哪些方面的原因?(最新)
32、怎么验证元素是enable/disabled/checked状态?
定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。
33、自动化测试的时候是不是需要连接数据库做数据校验?
UI自动化不需要
接口测试会需要
34、举例一下说明一下你遇到过那些异常
ElementNotSelectableException
:元素不能选择异常
ElementNotVisibleException
:元素不可见异常
NoSuchAttributeException
:没有这样属性异常
NoSuchElementException
:没有该元素异常
NoSuchFrameException
:没有该frame异常
TimeoutException
: 超时异常
Element not visible at this point
:在当前点元素不可见
35、如何设计高质量自动化脚本(最新)
1、业务逻辑和测试逻辑分离。
2、业务中定义的方法和公共方法分离
3、测试数据和测试逻辑分离
4、元素表达式和页面方法分离
5、对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
7、测试用例设计中,减少测试用例之间的耦合度。
36、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?(最新)
1、避免使用强制等待,使用隐形等待和显性等待
2、尽量使用独立的测试账号
3、用例与用例之间不要依赖,减少用例的耦合性
4、用例失败重试机制
5、不要选择太复杂的测试用例,按照用户的操作,从登录系统到完成一些业务流程
6、批量执行测试用例
7、持续集成,通过定时构建,任务触发构建,项目代码修改触发,防止由于人为操作带来非bug
8、通过持续集成自动化脚本执行完成后,自动发送测试报告、钉钉信息给相关负责人,使其第一时间了解自动化测试结果。
9、代码中多加try…except捕获异常,处理异常,保证框架的稳定性。
10、使用独立的测试环境,避免他人修改环境配置
37、webdriver可以用来做接口测试吗?
不可以,webdriver是专门做web的UI自动化参数
38、在python中进行数据驱动测试
在unittest中,没有自带的数据驱动,我们得借助第三方库ddt来实现,首先,我们得在python运行环境中安装ddt,用下列命令安装
pip install ddt
另外一个测试框架pytest,它自带数据驱动实现,是通过 @pytest.mark.parametrize(argnames,argvalues)
来实现参数化的。
也可以根据自己需求用python实现数据的读取和驱动。
39、pytest 和 unittest 的区别?
1、pytest有自动收集用例的的功能
2、pytest有上千种插件,自己的插件系统
3、pytest有失败重新运行的功能
4、pytest有非常灵活的测试夹具、fixture、setUp、tearDown
5、pytest和unittest是完全兼容的
40、find_element() 和 find_elements() 有什么区别?
find_element() :获取单个元素
el_list=driver.find_element_by_xpath(‘//div[@class=“name-box”]/a’)
find_elements() :获取一组元素
el_list=driver.find_elements_by_xpath(‘//div[@class=“name-box”]/a’)
例如:
from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://qidian.com/rank/')
#获取一组元素
el_list=driver.find_elements_by_xpath('//div[@class="name-box"]/a')
print(len(el_list))
#遍历列表
for el in el_list:
print(el.text)
执行结果
捕星之执宰星河
7号基地
陈医生,别怂!
请公子斩妖
开局就较真,对面被我吓到报警!
做媒这一块,我谁都不服
曾经,我想做个好人
大明:我,调教木匠皇帝
身为超人弟弟的我却成了祖国人
灵境行者
明克街13号
这游戏也太真实了
不科学御兽
家父汉高祖
深空彼岸
择日飞升
我的属性修行人生
我已不做大佬好多年
择日飞升
夜的命名术
陈医生,别怂!
我的属性修行人生
我在修仙界长生不死
开局就较真,对面被我吓到报警!
宇宙职业选手
深空彼岸
什么叫六边形打野啊
夜的命名术
家父汉高祖
择日飞升
明克街13号
这游戏也太真实了
道诡异仙
大乘期才有逆袭系统
我的属性修行人生
不科学御兽
从洪荒逃到武侠
美漫:我的战锤模拟器
曹操穿越武大郎
捉诡二十年,我进入了惊悚游戏
什么叫Carry型上单啊
代价逆转:我在大周斩仙
从体术开始纵横诸天
从欢乐颂开始的影视人生
这个武者太危险
更多推荐
所有评论(0)