共计 3300 个字符,预计需要花费 9 分钟才能阅读完成。
本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群。
本系列文章总结演绎了一些软件测试工程师常见的面试题,次要来源于集体面试遇到的、网络收集(欠缺)、工作日常探讨等,分为以下十个局部,供大家参考。如有谬误的中央,欢送斧正。有更多的面试题或面试中遇到的坑,也欢送补充分享。心愿大家都能找到称心的工作,共勉之!~
软件测试工程师面试题
- 测试常见问题与流程篇
- 测试工具篇
- 计算机网络常识与数据库篇
- Linux 与 Python 编程技能篇
- 自动化测试与性能测试篇
- 软素质篇(10 大灵魂拷问)与反诘面试官篇
自动化测试相干
蕴含 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 的同学倡议放松补起来。
更多内容,咱们在后续文章分享。
收费支付:接口测试 + 性能测试 + 自动化测试 + 测试开发 + 测试用例 + 简历模板 + 测试文档
正文完