自动化测试和性能测试面试题精选

news2024/9/28 5:33:01

自动化测试相关

包含 Selenium、Appium 和接口测试。

1. 自动化代码中,用到了哪些设计模式?
  • 单例模式
  • 工厂模式
  • PO模式
  • 数据驱动模式
2. 什么是断言?
  • 检查一个条件,如果它为真,就不做任何事,用例通过。如果它为假,则会抛出 AssertError 并且包含错误信息。
3. UI 自动化测试中,如何做集群?
  • Selenium Grid,分布式执行用例
  • Appium 使用 STF 管理多设备
  • Docker+K8S 管理集群
4. 怎么对含有验证码的功能进行自动化测试?
  • 万能验证码
  • 测试环境屏蔽验证
  • 其他操作不推荐
5. 如何优化和提高 Selenium 脚本的执行速度?
  • 尽量使用 by_css_selector() 方法
  • by_css_selector() 方法的执行速度比 by_id() 方法的更快,因为源码中 by_id() 方法会被自动转成 by_css_selector() 方法处理;
  • 使用等待时,尽量使用显示等待,少用 sleep(),尽量不用隐式等待;
  • 尽量减少不必要的操作:可以直接访问页面的,不要通过点击操作访问;
  • 并发执行测试用例:同时执行多条测试用例,降低用例间的耦合;
  • 有些页面加载时间长,可以中断加载;
6. 接口测试能发现哪些问题?
  • 可以发现很多在页面上操作发现不了的 bug;
  • 检查系统的异常处理能力;
  • 检查系统的安全性、稳定性;
  • 前端随便变,接口测好了,后端不用变;
  • 可以测试并发情况,一个账号,同时(大于 2 个请求)对最后一个商品下单,或不同账号,对最后一个商品下单;
  • 可以修改请求参数,突破前端页面输入限制(如金额);
7. Selenium 中隐藏元素如何定位?
  • 如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了(这个很多面试官也搞不清楚);
  • 元素的属性隐藏和显示,主要是 type=“hidden” 和 style=“display: none;” 属性来控制的,接下来在元素属性里面让它隐藏,隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,很多初学者傻傻分不清楚),操作元素是 click,clear,send_keys 这些方法;
  • JS 操作隐藏元素;
8. 如何判断一个页面上元素是否存在?
  • 方法一:用 try…except…
  • 方法二:用 elements 定义一组元素方法,判断元素是否存在,存在返回 True,不存返回 False
  • 方法三:结合 WebDriverWait 和 expected_conditions 判断(推荐)
9. 如何提高脚本的稳定性?
  • 不要右键复制 xpath(十万八千里那种路径,肯定不稳定),自己写相对路径,多用 id 为节点查找;
  • 定位没问题,第二个影响因素那就是等待了,sleep 等待尽量少用(影响执行时间);
  • 定位元素方法重新封装,结合 WebDriverWait 和 expected_conditions 判断元素方法,自己封装一套定位元素方法;
10. 如何定位动态元素?
  • 动态元素有 2 种情况,一个是属性动态,比如 id 是动态的,定位时候,那就不要用 id 定位就是了;
  • 还有一种情况动态的,那就是这个元素一会在页面上方,一会在下方,飘忽不定的动态元素,定位方法也是一样,按 f12,根据元素属性定位(元素的 tag、name的步伐属性是不会变的,动的只是 class 属性和 styles 属性);
11. 如何通过子元素定位父元素
  • 使用element.parent方法
12. 平常遇到过哪些问题? ?如何解决的
  • 可以把平常遇到的元素定位的一些坑说下,然后说下为什么没定位到,比如动态 id、有 iframe、没加等待等因素;
13. 一个元素明明定位到了,点击无效(也没报错),如果解决?
  • 使用 JS 点击,Selenium 有时候点击元素是会失效;
14. 测试的数据你放在哪?
  • 对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如 ini);
  • 对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成;
  • 对于一个接口有多组测试的参数,可以参数化,数据放 YAML,Text,JSON,Excel 都可以;
  • 对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理;
  • 对于邮箱配置的一些参数,可以用 ini 配置文件;
  • 对于全部是独立的接口项目,可以用数据驱动方式,用 excel/csv 管理测试的接口数据;
  • 对于少量的静态数据,比如一个接口的测试数据,也就 2-3 组,可以写到 py脚本的开头,十年八年都不会变更的;
15. 什么是数据驱动,如何参数化?
  • 参数化的思想是代码用例写好了后,不需要改代码,只需维护测试数据就可以了,并且根据不同的测试数据生成多个用例;
16. 其他接口都需要登录接口的信息,怎么去让这个登录的接口只在其他接口调用一次?
  • 使用单例模式
  • 使用自定义缓存机制
  • 使用测试框架中的 setup 机制
  • pytest 中 fixture 机制
17. 接口产生的垃圾数据如何清理?
  • 造数据和数据清理,需用 python 连数据库了,做增删改查的操作测试用例前置操作,setUp 做数据准备后置操作,tearDown 做数据清理
18. 怎么用接口案例去覆盖业务逻辑?
  • 考虑不同的业务场景,一个接口走过的流程是什么样的,流程的逻辑是什么样的,什么样的参数会有什么样的结果,多场景覆盖;

性能篇

1. 性能测试指标包括哪些
  • 最大并发用户数,HPS(点击率)、事务响应时间、每秒事务数、每秒点击量、吞吐量、CPU 使用率、物理内存使用、网络流量使用等。
  • 前端需主要关注的点是:
    • 响应时间:用户从客户端发出请求,并得到响应,以及展示出来的整个过程的时间。
    • 加载速度:通俗的理解为页面内容显示的快慢。 流量:所消耗的网络流量。
  • 后端需主要关注的是:
    • 响应时间:接口从请求到响应、返回的时间。
    • 并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。
    • 内存占用:也就是内存开销。
    • 吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间。
    • 错误率:失败的事务数/事务总数。
    • 资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。
    • 从性能测试分析度量的度角来看,主要可以从如下几个大的维度来收集考察性能指标:
    • 系统性能指标、资源性能指标、稳定性指标
2. 如果一个需求没有明确的性能指标,要如何开始进行性能测试?
  • 先输出业务数据,如 pv、pu、时间段等,计算出大概的值,然后不断加压测到峰值
3. 介绍 JMeter 聚合报告包括哪些内容?
  • 请求名、线程数、响应时间(50 95 99 最小 最大)错误率、吞吐量
4. 如果有一个页面特别卡顿,设想一下可能的原因?
  • 后台:接口返回数据慢,查询性能等各种问题
  • 前端:使用 Chrome 工具调试,判断 JS 执行久或是其他问题
  • 网络问题
5. 说一说项目中的实际测试内容
  • 根据自己项目中的经验实话实说,有没有经验很容易露馅。
6. 介绍一下 JMeter 进行性能测试的过程
  • 结合自己的项目经验聊。大家也可以自行搜索。
7. 介绍一下 JMeter 和 LoadRunner 的区别
  • 详细的不展开了,最重要的是相对来说 LoadRunner 的笨重、昂贵、闭源,理念和生态都落后,而 JMeter 是开源、可定制化开发,功能强大易用,并且在互联网大厂都已经有非常成熟的落地方案(主流的互联网公司基本都在使用 JMeter+ELK+Grafana+Influxdb 这套架构),可以说是进 BAT 大厂必备技能。还不会 JMeter 的同学建议抓紧补起来。

 正在做测试的朋友可以进来交流,群里给大家整理了大量学习资料和面试题项目简历等等....

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8年资深测试总结,自动化测试成功实施,你不知道的都在这...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 什么项目&#xf…

python:并发编程(二十七)

前言 本文将和大家一起探讨python并发编程的实际项目:Locust性能测试(篇一,共N篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并发…

分支定价算法求解VRPTW问题(代码非原创)

参考文献:微信公众号“程序猿声”关于分支定价求解VRPTW的代码 A tutorial on column generation and branch-and-price for vehicle routing problems 框架 对于VRPTW问题,先做线性松弛,调用列生成算法(一种解决大型线性规划问…

Docker网络之Network Namespace

Docker网络中相关的命令非常少,但需要掌握的底层原理却又非常多。 1.Network Namespace Docker网络底层原理是Linux的Network Namespace,所以说对于Linux Network Namespace的理解对Docker网络底层原理的理解就显得尤为重要了。 2.需求 通过手工的方式…

ICC2与INNOVUS命令对照表

ICC2与INNOVUS命令对照表 TargetICC2INNOVUS设置多CPU set_host_options -max_cores16 setMultiCpuUsage -localCpu 16 获得物体的属性 get_attribute

DSP,国产C2000横空出世,QX320F280049,替代TI 的 TMS320F280049,支持国产

一、特性参数 1、独立双核,32位CPU,单核主频400MHz 2、IEEE 754 单精度浮点单元 (FPU) 3、三角函数单元 (TMU) 4、1MB 的 FLASH (ECC保护) 5、1MB 的 SRAM (ECC保护&…

全网最全,Selenium自动化测试POM模式总结(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在UI自动化测试中…

Python+Selenium+Unittest 之selenium7--元素定位6-CSS定位1(定位所有、定位class、定位id、tag定位)

目录 一、CSS简介 二、 定位方式 三、实践操作 1、*(定位所有元素) 2、. (定位class属性) 3、#(定位id属性) 4、tag定位 一、CSS简介 CSS属于是一种计算机语言,主要是用来为结构化文档的外…

软件测试期末速成(背题家出列!)

文章目录 一、前言二、选择题(15 X 2)1、概述2、相关概念3、黑盒测试4、白盒测试5、单元测试6、集成测试7、系统测试8、自动化测试9、实用软件测试技术 三、判断题(10 X 1’)四、简答题(4 X 5)1、软件测试生…

一文学会Nginx做图片服务器

Nginx做图片服务器 前言: Nginx是一个高性能的HTTP和反向代理web服务器,以及负载均衡器。根据nginx是高性能的http服务器,因此可以用作图片服务器使用。 本案例是在docker安装nginx来操作的。 什么是Nginx? Nginx是一款高性能的Web服务器和反向代理服…

linux入门之浅谈shell及权限的概念

文章目录 目录 文章目录 一、shell命令以及运行原理 二、linux权限的概念 1.Linux权限管理 a.文件访问者的分类(人) b.文件类型和访问权限 1)文件类型 2)基本权限 3)文件权限值的表示方法 4)文件访问权限的相…

docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记

Oracle 19c测试环境快速搭建 安装 # 下载镜像 19.3.0.0.0 docker pull registry.cn-hangzhou.aliyuncs.com/laowu/oracle:19c # 创建文件 mkdir -p /mymount/oracle19c/oradata # 授权,不授权会导致后面安装失败 chmod 777 /mymount/oracle19c/oradatadocker run …

01背包思路解析+代码

01背包 题目链接:01背包 思路:题目要求是获取背包能装的最大重量。一个物品有体积和重量两个属性。而当我们判断一个物品是否要放进背包,第一取决于他的体积是否足以放进背包,第二取决于他的重量是否足以让我们取出已经放入的一部…

buuctf 你有没有好好看网课? 解析

打开文件得到两个压缩包,第一个压缩包flag2需要密码,第二个压缩包flag3打开后在备注可以获得提示 使用arc爆破,得到6位数字密码 解压压缩包得到一个视频和文档 文档内容包含6个数字,结合视频猜测是关键信息藏在这两个时间节点上 …

XSS注入——DOM型XSS

DOM型xss XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,这…

如何优化Nginx服务进程(详细教程)

目录 一、了解Nginx服务配置内容 ① 外框架 ② 内框架 ③ 三个主模块 二、Nginx服务进程 访问信息的组成 Web服务的监听配置 LNMP架构 三、Nginx优化 隐藏版本号 可以查询指定地址的服务信息 更改配置文件内容 检查语法错误 重启服务 再次查看版本号是否隐藏 自…

【qiankun】前端微服务踩坑记录-长期更新

目录 前言 1.Cannot GET /cooperation/board 场景: 分析 解决 2.Invalid options in vue.config.js:"css.requireModuleExtension" is not allowed 原因 解决 3.less版本升级导致除法写法未转换 原因 解决 4.主子应用样式隔离 场景 解决 5…

Java进阶必读书单及博客

java基础 Java核心技术 卷I:开发基础(原书第12版) Java核心技术 卷II:高级特性(原书第12版) JVM 《深入理解Java虚拟机(第3版)》 并发 《Java并发编程实战》 《Java并发编程的艺术》 数据库 《MySQL技术…

win下安装Nginx

安装Nginx 前言 本文演示win11下安装Nginx-1.24.0。本文旨在记录安装流程以及梳理安装配置过程中的一些容易出错的地方。 目录 文章目录 前言目录下载Nginx安装包配置环境变量配置Nginx设置报错日志路径设置Nginx的启动端口号 启动Nginx 下载Nginx安装包 前往Nginx官方下载…

FineReport学习1

聚合报表是指将多个子报表数据进行集中汇总、分析和呈现的报表,通常用于展示公司的整体数据情况。聚合报表可以帮助管理人员和决策者更全面、准确地了解公司在不同维度上的业务情况,便于对公司业务进行分析和决策。 决策报表则是指根据决策需求构建的针…