测试开发面试题

简述自动化测试的三大等待

  • 强制等待。直接使用time.sleep()方法让程序暂停指定的时间。优点是实现简单,缺点是不够灵活,可能会导致不必要的等待时间浪费。
  • 隐式等待。设置一个固定的等待时间,在这个时间内不断尝试去查找元素,如果能找到,则继续执;如果找不到,则抛出异常。在浏览器对象的整个生命周期起作用,优点是能够适应页面加载速度,缺点就是隐式等待会对整个webDriver期间全局生效,意味着不需要等待的场景下,也会有潜在的延迟,无形中延长了整体测试执行时间。一般都是使用driver.implicitly_wait()实现
  • 显式等待。他是触发式等待策略,能够支持测试脚本中某个特定条件变成真之后再继续执行。使用的是webDriverWait类

你对 selenium 二次封装的关键字,是怎么封装的?以等待元素的关键字举例,设计了哪些参数?

主要就是对一些繁琐的操作抽象成简单易懂的函数或方法。

以等待元素的关键字举例,需要设计:

  • 元素定位方式、定位表达式。根据id还是xpath等
  • 超时时间。如果超过超市时间还没有满足条件,则抛出异常
  • 轮训时长。设置多久检查一次是否满足条件。
  • 异常处理。能够自定义超市或条件不符合的处理例如,比如打印错误日志,截图等。

做WebUI自动化遇到过那些问题,如何解决的?

元素定位不稳定。使用XPATH可以减少这种情况

元素异步加载问题。等待元素加载即可

上述都是一些常规的问题,在我实际工作中,使用UI自动化测试过实时渲染的表格,这种表格前端使用的是Canvas,也就是对图形进行实时渲染,这种情况下F12抓取DOM树只能抓到这个canvas这个标签,测试这种情况,我当时使用的是图像对比。

(如果继续问图像对比是如何实现的,则)可以继续说,使用PIL库进行比较。先截取当前页面,和预设的图片去做比对,可以使用工具去标注不同的像素区域。

如果你做接口测试,接口返回成功,但实际数据库没有相应数据,可能存在什么问题?如何定位?

  • 最开始,我会考虑是否数据库链接错了,那数据库肯定是没有相应数据的
  • 如果数据库正确的,简单的考虑就是网络不好,没有加载出来,多刷新一下等下,也会尝试直接使用sql语句去查询;复杂一点的考虑,可能就是后端的代码问题,也许还没提交事务,就先返回了响应,那肯定也是没有数据的
  • 最后还会找后端开发协助排查,尝试复现,或者到服务器上面翻日志

性能测试了解吗?(应该就是说会关注那些性能指标)

你是如何设计测试方案吗?是如何测试的?

安全测试了解吗?

Webdriver的原理(应该是和WebUI相关的)

相关推荐
KangkangLoveNLP1 小时前
手动实现一个迷你Llama:使用SentencePiece实现自己的tokenizer
人工智能·深度学习·学习·算法·transformer·llama
浪淘沙jkp2 小时前
大模型学习二:DeepSeek R1+蒸馏模型组本地部署与调用
学习·deepseek
m0_613607012 小时前
数据集(Dataset)和数据加载器(DataLoader)-pytroch学习3
学习
序属秋秋秋2 小时前
算法基础_基础算法【位运算 + 离散化 + 区间合并】
c语言·c++·学习·算法·蓝桥杯
虾球xz4 小时前
游戏引擎学习第198天
学习·游戏引擎
网络安全指导员4 小时前
如何在JMeter中配置断言,将非200状态码视为测试成功
网络·学习·jmeter·安全·web安全·架构
浪淘沙jkp5 小时前
大模型学习四:‌DeepSeek Janus-Pro 多模态理解和生成模型 本地部署指南(折腾版)
python·学习·deepseek
Kx…………5 小时前
Uni-app入门到精通:uni-app的基础组件
前端·css·学习·uni-app·html
~樱小路~5 小时前
网络:华为数通HCIA学习:IP路由基础
网络·学习·华为
吴梓穆5 小时前
UE5学习笔记 FPS游戏制作42 按钮添加回调函数
笔记·学习·ue5