测试面试题,自动化测试与性能测试篇(附答案)

news2024/9/22 7:40:15

本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的、网络搜集(完善)、工作日常讨论等,分为以下十个部分,供大家参考。如有错误的地方,欢迎指正。有更多的面试题或面试中遇到的坑,也欢迎补充分享。希望大家都能找到满意的工作,共勉之!~

  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” 和 属性来控制的,接下来在元素属性里面让它隐藏,隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,很多初学者傻傻分不清楚),操作元素是 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。
从性能测试分析度量的度角来看,主要可以从如下几个大的维度来收集考察性能指标:
系统性能指标、资源性能指标、稳定性指标

  1. 如果一个需求没有明确的性能指标,要如何开始进行性能测试?
    先输出业务数据,如 pv、pu、时间段等,计算出大概的值,然后不断加压测到峰值

  2. 介绍 JMeter 聚合报告包括哪些内容?
    请求名、线程数、响应时间(50 95 99 最小 最大)错误率、吞吐量

  3. 如果有一个页面特别卡顿,设想一下可能的原因?
    后台:接口返回数据慢,查询性能等各种问题
    前端:使用 Chrome 工具调试,判断 JS 执行久或是其他问题

  4. 说一说项目中的实际测试内容
    根据自己项目中的经验实话实说,有没有经验很容易露馅。

  5. 介绍一下 JMeter 进行性能测试的过程
    结合自己的项目经验聊。大家也可以自行搜索。

  6. 介绍一下 JMeter 和 LoadRunner 的区别
    详细的不展开了,最重要的是相对来说 LoadRunner 的笨重、昂贵、闭源,理念和生态都落后,而 JMeter 是开源、可定制化开发,功能强大易用,并且在互联网大厂都已经有非常成熟的落地方案(主流的互联网公司基本都在使用 JMeter+ELK+Grafana+Influxdb 这套架构),可以说是进 BAT 大厂必备技能。还不会 JMeter 的同学建议抓紧补起来。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

直播电商如何实现精细化运营,破除流量互卷的困境?

在当今电商行业的激烈竞争中,流量的获取与维持已成为品牌和商家关注的焦点。然而,随着市场逐渐饱和,流量成本不断攀升,传统的流量获取方式已不再可持续,精细化运营才是电商企业脱颖而出的关键。 本文将深入探讨电商行…

聚类算法k-means(手撕和调用skl)

定义 K均值聚类(k-means clustering)算法是一种常用的、基于原型的聚类算法,简单、直观、高效。其步骤为: 第一步:根据事先已知的聚类数,随机选择若干样本作为聚类中心,计算每个样本与每个聚类…

大数据及人工智能产品应该如何测试?

当今社会,人工智能的发展非常快,自从2016年AlphaGo战胜了世界围棋冠军李世石之后,人工智能的发展,特别是以深度学习为代表的人工智能的发展到了一个高速发展的阶段。 现在人工智能的发展已经渗透到了我们生活的方方面面&#xff…

如何对 PDF 进行密码保护

保护机密文件非常关键。对 PDF 进行密码保护的策略是在未经授权的访问时增加一层安全保护。在处理高度机密的文档或个人数据时,使用密码保护它们是一个好主意。 也就是说,如果您担心如何在笔记本电脑和台式机上使用密码保护 PDF, 以及您是否…

深入浅出通信原理 | 单位冲激响应和时域卷积定理

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、单位冲激响应 1、离…

rpm安装出现警告: 密钥 ID f4a80eb5: NOKEY的解决办法

当我们使用rpm安装时有时会出现警告:/mnt/Packages/ethtool-4.8-9.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 这是因为各个软件之间总会存在一些依赖关系,所以才会发出警告,这时候我们只需要在后面加上"–…

C++面向对象高级开发A

一、概述 目标:培养正规、大气的编程习惯;学习面向对象设计 Object Based(基于对象):以良好的方式编写Cclass class without pointer members【示例:Complex类】class with pointer members【示例&#xff…

挂个人-CSDN Java优秀内容博主rundreamsFly抄袭

事件起因 今天点开自己的CSDN博客,发现给我推了一篇文章抄袭我自己昨天18点发的文章。 就是这篇,一字不差,博主昵称是:rundreamsFly,账号是rundreams。 抄袭者文章 发布于2024-8-26 19:37:41秒,比我发布…

C语言穿墙迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <Windows.h> void printmaze…

Axure团队协作功能详解:从创建到管理的全流程

Axure RP 支持团队协作&#xff0c;通过创建团队项目&#xff0c;多个团队成员可以同时在同一个项目上进行编辑和管理。以下是使用 Axure 进行团队协作的详细步骤&#xff1a; Axure 使用地址 1. 创建团队项目 打开 Axure RP&#xff0c;并在菜单栏中选择 “Team” > “Cr…

【6678专题】-点亮LED灯(寄存器方式)

本章需要参考的资料为 《General Purpose Input Output (GPIO) User Guide.pdf》&#xff0c;具体在创龙资料文件夹目录下D:\JYTL\12DSP_FPGA\08_文档\创龙\TL6678ZH-EVM_V1.5\TL6678ZH-EVM_V1.5\6-开发参考资料\数据手册\核心板元器件\DSP\Technical Reference Manual 《Multi…

CentOS 安装 NVIDIA 相关软件包时出现依赖问题

CentOS 安装 NVIDIA 相关软件包时出现依赖问题 1 CentOS 安装 NVIDIA 相关软件包时报错如下2 解决方法 1 CentOS 安装 NVIDIA 相关软件包时报错如下 Error: Package: 3:kmod-nvidia-latest-dkms-550.90.07-1.el7.x86_64 (cuda-rhel7-x86_64)Requires: dkms Error: Package: 3:…

嵌入式中详解STM32启动文件

本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。 启动文件使用的ARM汇编指令汇总 Stack——栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=Stack_Mem SPACE Stack_Size__initial_sp 开辟…

EEG揭秘:视觉线索如何操控我们的运动表现

摘要 在脑电图(EEG)或皮层脑电图(ECoG)实验中&#xff0c;视觉线索常用于时间同步&#xff0c;但可能会无意中诱发神经活动和认知加工&#xff0c;从而使任务解码变得更具挑战性。为了解决这一问题&#xff0c;本研究引入了四种新的视觉线索(淡出(Fade)、旋转(Rotation)、参考…

使用插件i18n实现国际化多语言

1、安装 npm install vue-i18nnext --save 或者 yarn add vue-i18nnext --save 2、配置 新建目录及文件夹 - src - locales - lang - zh.js // 中文&#xff0c; - en.js // 英语&#xff0c; - ar.js // 法语&#xff0c; - jp.js // 日语&#xff0c; - fr…

上万人苦心研究数年的数据,备份怎么做才保险?-Infortrend

业界领先的应用研究机构&#xff0c;拥有上万名员工。需要一套存储设备&#xff0c;能够长期保存大量备份数据。他们从事的研究项目周期&#xff0c;往往持续数月甚至数年&#xff0c;涉及大量的数据收集和分析。为了确保研究的连续性&#xff0c;并且保护关键数据&#xff0c;…

效率提升关键

在当今快节奏的工作环境中&#xff0c;效率软件成为了提升个人和团队生产力的重要工具。这些软件可以帮助人们更好地管理时间、优化工作流程以及增强团队协作。具体分析如下&#xff1a; 1 亿可达 ◦ 简介&#xff1a;亿可达作为一款自动化工具&#xff0c;亿可达被誉为国…

为什么要学习 CCRC-PIPP

背景&#xff1a; 在数字化时代背景下&#xff0c;数据已成为重要的生产要素和国家战略资源&#xff0c;个人信息的保护尤为关键。 保障公民的个人信息权益&#xff0c;促进其依法合理有效利用&#xff0c;是政府和企业推动数字经济健康发展的首要任务。 中国网络安全审查技…

TypeScript入门简介

TypeScript&#xff08;TS&#xff09;是JavaScript的超集&#xff0c;其可以编译出纯净、 简洁的JavaScript代码&#xff0c;并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3&#xff08;或更高版本&#xff09;的JavaScript引擎中。TypeScript提供最新的和…

【如何在MacOS升级ruby版本】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…