2023软件测试面试题来,接口、Web、app面试题都有

面试的准备跟笔试的准备是不一样的,笔试的准备的话,可以去刷题,面试的话,专业的面试官一般首先都会根据你简历上写的内容去提问,都问完之后,最后可能再会问一下简历之外的,或者简历上写的比较模糊的内容。为什么会问简历之外的内容呢?可能想考察一下你的知识面。

接下来让我们一起看一下今天一位小伙伴在粉丝群分享的一些面试题:

一、你是怎么做自动化测试的。项目组几个人,分工怎么负责,分支代码怎么合并

提示:

1、可以围绕你是怎么进行自动化工具/脚本的选型进行阐述

2、针对自动化测试用例的设计思路进行说明

3、针对自动化测试的执行流程,触发场景等进行说明(最好要体现持续集成,然后与持续部署打通)

4、说明你们项目组目前自动化的实现程度,都运用在了哪些环境上

5、介绍一下组员之间的分工,代码分支的管理,这里的代码分支肯定不止一个,具体可参考开发的代码分支管理的模式

二、说说docker常用命令

1、先说一下之前自己在工作中接触docker这个主要用来干什么

2、介绍在工作中常用到的一些命令,比如与环境部署相关会用到docker pull/ build / exec/ rm /rmi /logs 等 ,按照自己所了解的进行介绍,要注意要知道每个命令在工作中哪些场景会用到,不要光死记硬背命令。

三、k8s的pods有几种状态,分别是什么

具体的状态百度即可,需了解k8s是什么,简历上不写这个的一般不会被问到。那几个状态的话,简单了解就行。公司没用这一套进行环境管理的可以不用关注这个。

四、用过ES和Mongo么,查询语法是什么,他们和mysql的区别。

在存储上,mongodb和es是document格式的存储,mysql是行格式的,因此mongo和es并不需要显式定义字段,而mysql需要。

在架构上,es天然就是分布式的,这个可以很容易的横向扩容,而mongo和mysql不行。

五、说说mysql左连接查询和右连接查询的区别

左连接,以左表为参照,显示所有数据;

右连接,以右表为参照显示所有数据;

六、说说你们的数据流向是什么。

这个要根据具体的项目去分析,没有标准答案。

可以介绍你们项目的源数据是从哪里来的,要经过什么处理,然后最终输入写入到哪里,后续还会不会再传给其他环节使用 , 不是所有项目都会去问这种面试题,但是跟数据相关的部门或者测试经验,一般会被问到

七、说说怎么测试kafka的性能和稳定性的。如果数据流断了,你们有什么补救措施。

Kafka系统提供了测试工具kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh,通过该工具可以对生产者性能和消费者性能进行测试

八、懂Linux命令么。说说awk和sed的区别。

sed的核心是正则,awk的核心是格式化.

sed读取一行,以行作为单位,进行处理。

awk读取一行,切割成字段,以字段为单位,进行细节处理。

九、你们项目中selenium用什么元素定位方法最多,css和xpath区别。PO模式你们怎么做的

1、应该是xpath或者css用的多一些,像什么id和name之类的应该用得少,现在前端页面都是用框架开发的 ,一般元素没有id,或者id都是动态的,每次都会随机变化

2、2个定位方式的区别的话,可以从表达式的简洁程度、在不同浏览器的响应速度、易用性上面去考虑

3、PO模式的话,这里需要介绍PO模式的思路,介绍你是怎么管理页面元素,为什么要这么管理,以及怎么去执行用例和生成报告等

十、接口自动化如何做断言

1、首先描述要断言的内容:响应时间、状态码、响应值等

2、其实结合你选用的框架进行描述,具体是怎么去断言的,是否会涉及到查数据库断言等

十一、我看你用过fiddler是吧,怎么用的?如何过滤你不想看到的请求

1、fiddler有个Filters可以配置只抓取哪些接口/不抓取哪些接口等

2、可以介绍自己在工作中在哪些场景下会需要用到fiddler,结合具体的案例以及对应的fiddler功能去进行讲解,不要就简单的一句用来抓包,要讲清楚为什么要抓包。  比如常见的功能有抓包、弱网、拦截/篡改响应结果,具体的使用场景在我之前的文章中有写到。

十二、你负责的项目中在测试周期中,如何做到最好的控制风险或者预估即将可能发生的风险

制定好测试计划、要注意及时跟进进展,还要注意内部和外部可能存在的风险点,尤其是依赖外部系统对接的,万一出现延期后要有备选方案。

十三、做过性能测试么?说说如何开展性能测试的

了解性能需求,确定性能指标

搭建性能测试环境、准备数据、压测脚本

调试脚本、执行压测脚本、监控

出报告、调优、回归验证等

十四、为什么要在一个团队中开展软件测试工作?

因为没有经过测试的软件很难在发布之前知道该软件的质量,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

十五、你认为做好测试用例设计工作的关键是什么?

1、需求和设计文档的理解程度,对系统的熟悉程度

2、用较少的用例覆盖尽可能多的需求,从用户角度出发,颗粒度大小要均匀,测试场景方法,能够被其他测试人员执行

3、测试用例的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略。最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时,不断地提高自身能力

十六、现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

1、检查系统是否有中毒的特征;

2、检查软件/硬件的配置是否符合软件的推荐标准;

3、确认当前的系统是否是独立,即没有对外提供什么消耗 CPU 资源的服务;

4、如果是 C/S 或者 B/S 结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;

5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对 CPU/内存的访问情况。

十七、和用户共同在uat测试 ,有哪些需要注意的地方?

用户验收测试不通过的话,就可能影响到钱、以及公司的形象,以及作为测试人员的你在领导心中的印象等。

实际上用户现场测试更趋于是一种演示。在不欺骗用户的前提下,我们向用户展示我们软件的优点,最后让“上帝”满意并欣然掏出“银子”才是我们的目标。

因此用户测试要注意下面的事项:

(1)用户现场测试不可能测试全部功能,因此要测试核心功能。这需要提前做好准备,这些核心功能一定要预先经过测试,证明没有问题才可以和用户共同进行测试。测试核心模块的目的是建立用户对软件的信心。当然如果这些模块如果问题较多,不应该进行演示。

(2)如果某些模块确实有问题,我们可以演示其它重要的业务功能模块,必要时要向用户做成合理的解释。争得时间后,及时修改缺陷来弥补。

(3)永远不能欺骗用户,蒙混过关。道理很简单,因为软件是要给用户用的,问题早晚会暴露出来,除非你可以马上修改。和用户进行测试还要注意各种交流技巧,还要为后面的合作打好基础。 

十八、接口测试用例怎么设计?

我的理解,这个其实就是在问接口测试用例的测试点

1、从功能的角度,考虑正常场景和异常场景

2、考虑业务规则的边界以及输入/输出参数的边界,覆盖所有必选参数,组合所有可选参数,以及参数的不同数据类型等

3、考虑接口的幂等性(重复提交),并发测试、事务、分布式、环境异常以及大数据量等场景

4、查看接口的性能

5、考虑接口的安全性相关的内容,是否存在sql注入之类等安全漏洞,敏感信息是否加密返回/不返回

十九、什么是系统瓶颈?

参考答案:瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现。严格的从技术角度讲,所有的系统都会有瓶颈,因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。

因此我们测试系统瓶颈主要是实现下面两个目的:

1、发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。

2、发现潜在的瓶颈并解决,保证系统的长期稳定性。

主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。 

二十、列举几个python2和python3区别?

1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')

Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'

2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存

3、python2中使用ascii编码,python3中使用utf-8编码

4、python2中unicode表示字符串序列,str表示字节序列

     python3中str表示字符串序列,byte表示字节序列

5、python2中为正常显示中文,引入coding声明,python3中不需要

6、python2中是raw_input()函数,python3中是input()函数

二十一、当面试官告知你你所用的语言和他们公司不一致的时候怎么办?

我相信有很多的小伙伴经常会遇到,自己面试的公司用的语言跟自己所学的不一致,比如你用的是java,应聘的公司用的是python,那这个时候怎么办呢,站起身来转头就走吗?

1、你可以告诉面试官,语言不是关键,很多框架设计的思想都是相通的,而且要表明自己的态度:只要公司愿意给机会,自己愿意尝试去学习新的语言。事实上,像那些高级开发,在公司根本就不会局限于语言,如果公司有机会,或者项目需要,要用到其他语言的时候,他们有这个能力能在短时间内快速上手。

2、平时的话,python和java不管你学的是哪一个,建议对另一个都要有一些简单的了解,可以多跟同行交流一下,看一下在方案设计上是否有可取之处,互相融合。
 

二十二、你认为做好测试计划工作的关键是什么?

在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划,保证有效的实施软件测试;

1. 要有明确的测试目标,对被测对象有清晰的认知和了解

2.坚持“5W”规则,明确内容与过程“5W”规则指的是“What (做什么)”、 “Why(为什么做)”、 “When(何时做)”、 “Where(在哪里)”、“How(如何做)”。利用 “5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。

3.采用评审和更新机制,保证测试计划满足实际需求

二十三、如何减少测试人员跳槽带来的影响?

作为测试管理者,只有从日常工作中开始做起,才能最大限度的减少损失。建议我们从以下两个方面做起:

1、加强部门内员工之间的互相学习,互相学习是建立学习型组织的基本要求,是知识互相转移的过程。在此基础上,可以把个人拥有的技术以知识的形式沉积下来,也就完成了隐性知识到显性知识的转化。

2、通常情况下,企业能为员工提供足够大的发展空间时,如果不是待遇特别低,员工都不会主动离开企业。因此我们要想留住员工,管理者就应该把员工的个人 成长和企业的发展联系起来,为员工设定合理发展规划并付诸实现。不过这项要求做起来比较,要有比较好的企业文化为依托。

二十四、为什么离职?

这个问题其实没什么标准答案,可以考虑以下几点:

1、地理位置原因,比如公司搬迁、自己在当前城市其他区购房之类,想找个近一点的

2、结合自己的职业规划,想找一个更好的平台

注意点:

不要在面试的时候去抱怨之前的公司、说上司的坏话

二十五、简单sql查询,单表分组聚合怎么使用?

这种问题属于sql的基本用法,具体操作不在这里描述,回答问题要注意的点:

先介绍分组和聚合会用到哪些关键字,然后要结合具体的按钮去讲一下你在工作中有没有用过这些用法 ,用来做什么处理

二十六、口述99乘法表的编写

既然是口述,我觉得肯定只要给出思路就行。说句实话,要我一次性写出来 不能调试,我估计我可能还写不出来,打印这个有几个关键的点:双重循环的控制以及什么时候跳出循环,以及换行。

给大家分享一个网上查到的比较装逼的写法:

print('\n'.join([' '.join([f"{j}x{i}={i*j}" for j in range(1, i + 1)]) for i in range(1, 10)]))

二十七、自动化测试了解多少,工作中都怎么用的?

1、可以先介绍一下你所了解到的自动化的类型,比如UI、接口、运维自动化等

2、挑选一种你最熟悉的自动化的类型,进行详细的介绍。

比如介绍通过某款工具是实现自动化,或者介绍通过自己写脚本的方式去实现自动化,不管用哪种方式,都离不开用例的设计与存储,日志和报告的查看,持续集成等相关操作 ,整体的流程结合起来一起介绍一下。

二十八、中间件测试了解多少,怎么去测试的中间件?

面试既然问到这个问题,那肯定是你的简历上哪里体现了跟这块相关的内容,比如redis、es、kfaka之类的。

说实话,这块我也接触的比较少,如果我被问到了,我会按以下的思路去介绍:

1、比如介绍缓存和redis,先告诉面试官缓存是怎么设计的,你怎么通过手工/自动的方式去修改里面的数据,从而验证缓存是否生效等

2、像kfaka这种,也是类似,可以验证模拟手动往里面推送数据,验证一些从页面不方便模拟的场景。

至于其他的一些比较专业的中间件的测试点,大家可以根据自己的简历,在网上查找对应的测试点去进行了解,要注意不要脱离了项目的业务。

二十九、抽奖用例设计:一等奖一个,二等奖两个,三等奖三个,其他都是谢谢,如何测试,用例如何设计?

这种就看自己临场发挥了,我觉得这个地方在测试前,要确认本次抽奖券的总发行张数,然后再做测试设计。

1、要关注对应奖项是否超过规定的数量

2、抽奖结果的枚举值是否都是在一二三等奖与谢谢 中间,不存在其他的文案之类的。

3、比如目前还未出现中奖者的时候,并且只剩下6张券的时候,验证是否每张都是必中奖等

三十、app访问一个网页一直在加载可能原因是什么,怎么排查这个访问慢的问题?

1、检查手机网络,是否有丢包等情况

2、用手机访问其他网站,确认是否网络问题

3、找不同账号、在同一网络情况下用不同的设备去访问同一网站,排查是否是设备兼容性/账号权限等问题导致

4、抓包看下是否有报错、app本身是否有报错日志记录等

5、检查手机网路是否配置了代理、配了什么拦截响应结果之类的操作

三十一、服务间的数据同步怎么做的,数据同步的准确性怎么保障的?

这种应该是根据简历上项目的相关经验问的,我介绍下我接触过的:

通过数据库的cdc以及同步工具,比如binlog,然后将数据丢到kfaka消费

至于怎么保障数据准确性,这个属于开发层面的事情,做一些监控之类的,然后根据自己项目的具体方案去查一些资料介绍 ,另外,进行数据准确性的测试,按照同步的规则,对源数据和目标数据进行核对。至于怎么核对,可以是人工,也可能是脚本,看具体的场景。

三十二、比如MySQL同步数据到hive怎么做的?

一般的数据同步都是通过监听变化,采集 清洗入库,相关流程百度上就有,这个对于测试而言,一般的不需要了解 ,除非你的项目正好用到了这样的技术架构,那面试官可能是想了解一下这个流程,同时也检验一下你在项目中测试的深度,对业务的熟悉程度。这种一般在大数据测试、数据分析&核对的相关工作中出现的会多一些。

三十三、都用python做了哪些辅助测试工作,如何实现的?

python作为一门脚本语言,有其自己的优势,除了做自动化之外,平常可以写一些辅助脚本,提升测试效率,这个具体做什么事情,大家根据自己的编程水平与工作经验去回答就行。比如:

1、用python+requests调用接口,对返回结果进行加工处理,按指定格式得到自己需要的批量数据。

2、开发一些小工具平台,将一些常用的造数据/改数据的脚本集成上去,方便公司内部其他测试人员使用,尤其是那种业务比较复杂的系统,下游经常需要依赖上游造数据的。

3、写一些简单的接口调用脚本,定时触发检查线上服务或数据是否有问题

三十四、接口测试的接口依赖怎么处理的?

将依赖接口的返回结果存储起来,供其他接口使用,比如最常见的登录后获取到token 存起来,给其他接口使用。

三十五、简述TCP请求连接的过程;

三次握手四次挥手之类的,百度一下就有答案。

三十六、性能问题如何定位的,从哪些方面去定位的?

看日志和监控,检查数据库、服务器资源等相关状态

三十七、安全测试都会测试哪些内容,都是怎么测试的?

被问到这种问题的,肯定是简历上写了会安全测试,要么就是写了会用一些类似appscan,burpsuit之类的工具。首先要了解常见的安全漏洞有哪些,比如sql注入、跨站脚本攻击、权限越权、敏感信息泄露等,然后针对工具出来的问题要知道怎么通过手动的方式去模拟复现问题,以及如何去回归验证。想一些sql注入,xss ,测试人员在做功能测试的时候,是可以做一些简单的手工测试的。

三十八、你们怎么搭建的测试环境,对一些中间件的配置是否了解,可以简单的说一下?

可以介绍一下公司项目的技术架构,部署包的格式以及流程,顺带介绍一下各个环境的管理等。 那些拿个php电商网站联系的,环境搭建建议就不要写到简历上去了。我之前写过一篇网上找了个开源项目搭建的部分教程,能把那个搭建出来的话还可以考虑写一下。(格式比如jar包、war包、压缩包,部署方式比如 java -jar ,通过tomcat、docker、iis等方式部署)

三十九、当前薪资是多少,期望薪资是多少?

谈到薪资,基本上也就到了面试的最终环节了,这个就按照自己的相关信息去回答就行。一般跳槽的涨幅可能在10~30%左右,超过这个范围,你要能在面试的时候体现出你的优势。

为什么要使用PO模式?

PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,分别为:基础封装层

BasePage,PO页面对象层,TestCase测试用例层。

Page Object是一种程序设计模式,将面向过程转变为面向对象(页面对象),将测试对象(按钮、输入框、标题等)及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。这样,在Selenium测试页面中可以通过调用页面类来获取页面元素,从而巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试页面文件类中页面的属性即可。可以使代码复用,降低维护成本,提高程序可读性和编写效率。

POM解决的问题:

以页面为单位,集中管理元素对象和方法。当页面元素或流程变动时只需要修改相关页面方法即可,不需要修改相应脚本,后期维护方便 。

PO模式是一种设计思想,在实际编码的时候可以有若干种实现方式。实际上,也建议大家根据自己项目的情况来动态的编码。具体来说,常见的PO模式有:

1)三层:对象库层+case层+page层

2)四层:对象库层+case层+page层+公共类

四十、接口测试用例的编写要点有哪些?

考点:

接口测试用例设计

参考答案:

1)必填字段:请求参数必填项、可选项

2)合法性:输入输出合法、非法参数

3)边界:请求参数边界值等

4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理

5)响应数据校验:断言、数据提取传递到下一级接口… 

6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况

7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点

8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)

四十一、接口测试中的加密参数如何处理

考点:

是否熟悉加解密方式

是否具备处理加密参数的能力

是否实际应用过

参考答案:

首先了解参数的加解密方式,常见的有md5、aes、rsa等等,如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中

使用。

四十二、同步和异步区别?

同步和异步是一种通讯方式

同步:执行一个操作时,需要等待其处理完成,然后再进行下一个操作

异步:执行一个操作时,不需要等待返回,就可以进行下一个操作

举例:

下单接口中,需要调用库存接口做库存判断,所以必须等待库存接口返回数据才能进行下一步操作,这是同步; 

文件的下载方式,我之前就经常遇到需求说让开发改成异步下载。避免下载比较慢会导致超时,并且影响用户体验。

四十三、简单介绍一下自动化项目整体框架的结构

自动化测试框架涵盖基础方法封装、自定义异常封装、工具类封装、元素管理封装、Page Object模式封装、日志封装、数据管理封装、失败重试封装、浏览器/手机适配封装、数据库操作封装、测试用例管理封装、测试报告等等。

四十四、简述Jmeter工具如何做接口之间的关联?

接口关联指的就是一个接口要使用另一个接口的返回值作为参数,这种我们在jmeter中叫做关联。

关联的实现方式有多种:

1、使用正则表达式提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用

2、使用json提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用

3、使用beanshell后置处理器,解析响应结果存储在变量中,然后下一个接口使用变量进行引用

跨线程组关联则需要将关联字段设置为全局属性

四十五、你们公司业务中,自动化和手工分别占比多少?分别用来做什么业务?

首先各公司自动化和手工的占比取决于对自动化测试的投入,这个问题的回答建议做好数据,比如我们的项目共有20个模块,功能测试用例总计1000,从其中分析出要实现的自动化用例300条,那么自动化的占比就出来了。

那么哪些测试用例会被用来做自动化:

稳定模块的用例、功能优先级高的用例、重要主流程的用例等。

手工测试一般用来做新功能测试业务,自动化一般用来做旧的功能用来回归业务。

四十六、如何保证UI自动化测试的稳定性?

自动化测试稳定性主要表现在两个方面:一个是元素定位的问题,一个是用例之间的依赖问题。

元素定位问题可以采用智能等待的方式尽可能的避免,另外,优化xpath定位的写法等。

用例依赖可以解耦用例之间的关系,让每条用例都从一个共同的页面开始执行,比如首页,这就需要在测试框架中采用后置处理的方式使每条用例执行完成后都回到首页

四十七、cookie和session的区别?

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份

区别:

1、数据存放位置不同:

cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全程度不同:

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、性能使用程度不同:

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据存储大小不同:

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储于服务端,浏览器对其没有限制。

四十八、自动化测试中用例依赖的数据如何构造?

不管是接口自动化还是ui自动化都会存在自动化case依赖数据如何构造的问题,可以从三个方面去考虑:

第一个是在测试前采用接口去构造需要的数据;

第二个是使用初始化sql去初始化数据,但是如果说表结构复杂的话,sql编写也是比较大的工作量;

第三个方式是提前准备好一套数据,并且将该数据对应的数据库进行备份,在之后每次执行测试前先备份当前数据库数据,再导入之前的测试数据,再执行测试,测试执行完后再恢复原有的数据。

可参考之前写的文章:如何构造测试数据?

四十九、接口测试时碰到接口重定向如何去测试?

首先接口测试方式不同则处理方式不同,如果用的jmeter则无需特殊处理,jmeter默认会自动处理重定向接口,自动发起对重定向的接口地址的访问并返回结果;如果是采用代码框架的方式则有可能需要特殊处理,拿到第一个接口响应header中的location字段对应的接口地址,发起对该地址的请求。

感兴趣的朋友可以自己用以下的网址访问去测试一下各种方式发请求是否有区别:https://www.360buy.com,浏览器访问这个网址会自动跳转到京东首页。用python代码发请求的话,默认allow_redirects=True,会自动重定向,可以手动传Flase进去,然后看一下响应结果。可能其他框架有的没有做这种处理,测试的时候要注意一下。

 

五十、接口依赖第三方接口,但是第三方接口却有问题怎么办?

一般会采用mock来解决这个问题。但是要分场景去看是否要开发的支持,如果是客户端直接调用第三方接口的,这种测试人员自己mock就行。如果是开发人员自己包装了一个接口,然后再自己的接口里面再去调用第三方接口的,这种就需要开发的配合才行,将自己公司的接口调用指向mock出来的接口服务。

五十一、web自动化中有哪些场景需要特殊处理?

1. iframe元素,当要操作的元素在iframe中是需要先将driver切换至该iframe才能操作,切换方式有四种,通过id、name、索引、iframe元素对象,并且在多iframe切换时还需要进行各种转换

2. 新窗口打开,当要操作的元素在一个新窗口打开的页面上时,就需要先将driver切换至新窗口上才能进行操作

3. 时间控件,通常时间控件只能选择无法输入,那么可以采用js的方式修改时间控件的只读属性然后再进行输入,或者用js直接修改时间控件的readonly 属性。参考代码:

document.getElementById("xxx").removeAttribute("readonly")

4. 元素不在当前视野需要滚动才会出现,可以采用js的方式滚动,但是有时候界面中有多个滚动条js就会无效,则需要先将光标置入到滚动条区域然后模拟键盘的上下左右键来操作.

五十二、自我介绍

    介绍你叫xxx,从哪个学校毕业,目前从事测试行业工作xx年,先后就职于某某公司,主要接触过xxx、xxxx的测试(这里可以说是web端、app端、小程序或者H5、客户端等)。

五十三、你们公司的测试工作流程

    这里主要想了解一下之前公司的工作流程,从介绍的过程中也可以了解到求职者对公司流程的了解深度。

    这个流程包含很多的细节,需要结合公司具体的实际情况去回答,要描述到的点可以包括:需求的管理、提测的流程、上线的流程、源码的管理方式等。这里也建议测试人员多关注一下开发的代码分支是怎么管理的,有时候能直接从流程上去发现和避免一些问题的发生。

五十四、接口测试怎么做的

    流程方面可以按照平常怎么测功能的这个流程去描述,比如分析需求提取测试点,制定测试计划,编写接口测试用例,执行用例生成测试报告,接口测试持续集成定时触发构建,并结合测试环境更新后自动触发等。

    接下来介绍接口测试用例的一些常见的考虑事项,可参考:接口测试用例测试点 。然后再介绍一下自己所选用的技术,比如用了什么开源框架去做接口测试,或者自己编码写的框架是怎么样去设计的,都可以简单介绍一下。

五十五、印象中的bug

    这个是经常被问到的一个问题,按照自己的实际情况回答即可。分享一个我之前回答过的:那些让我印象深刻的bug

五十六、如果给到特别多的需求,只有你自己做,你要怎么安排,如果每个产品经理都说非常着急呢

    这种情况在工作中也会经常遇到,一个人可能手上同时有很多待测试的需求,这种可以考虑自己排优先级,或者提供用例让其他小伙伴帮你测一部分,自己在辛苦一下加加班完成,如果经常出现这种情况,那就要考虑分工是否合理,是否需要新加人员投入,或者针对重要项目/模块进行人员备份,平常多组织需求串讲,让大家都了解一下相关需求,这样在紧急时刻也能帮上忙。

    另外,要注意的就是,事情特别多的时候,自己要把待办事项列出来,避免到时候因为自己的疏忽忙着忙着把其他工作给忘记了。比如可以在钉钉上记一个待办事项。

五十七、让你测试搜索,你怎么测试

    用例设计的时候,除了保证正常的搜索功能,不同的查询条件组合测试,还得考虑搜索的关键字是否有什么权重因子之类的因素,比如搜索xxx的时候,一定要把某某某的结果放最前面,还有一些关键信息的匹配到,搜索的活跃度等,看下是否都要考虑进去。

五十八、fidder你只是用来抓包吗?除此之外呢,你说使用jmeter测试,为什么还需要使用到fidder

    首先,fiddler虽然是一款抓包工具,但是他的作用不仅仅只是抓包,比如弱网,mock等其他场景都可以派上用场。

    在没有接口文档的情况下,jmeter做接口测试的时候,就需要用抓包工具了查看接口请求了,或者用fiddler的一个插件,直接导出jmeter脚本。fiddler导出jmeter脚本

五十九、你平常用python是怎么做接口测试的

    可以先介绍一下自己框架的技术栈,比如用的python+requests发送请求,用xxx记录日志,用xxx生成报告,用xxx断言等。然后介绍一下用例是怎么管理的,比如存excel/yaml文件或者数据库,然后再介绍一下最终是怎样去运行脚本,执行的计划。

六十、你最近这个项目主要做什么模块

    这个结合自己负责的项目介绍即可。可以介绍自己负责哪些模块,然后在哪些模块有用到一些什么测试技术啥的。

六十一、app测试和web测试的区别

     可以从测试的方法、工具、兼容性、专项测试等差异去进行对比分析。

六十二、token cookie session 的区别

    要了解这3个的用途,以及差异。存储位置以及安全性等。

六十三、你们有评审吗

    如果有评审的话,可以介绍一下流程。

六十四、测试用例怎么编写的,你举个例子。postman,jmeter接口都是怎么交互的。

    可以说一下自己平常写用例的一些方法,并结合自己项目的案例进行说明。

六十五、你说比postman更喜欢使用jmeter,为什么?

    postman和jmeter的使用场景是不一样的

六十六、了解我们的产品吗?就我们产品的登录界面设计一下测试用例

    登录的用例设计网上大把,面试前的话 ,对公司的相关情况最好做一下简单了解。

六十七、你们版本迭代周期是多久

    介绍一下自己公司项目迭代周期,一般多久发一次版本。比如一周一次,或者两周一个版本。

六十八、你们项目组的成员,测试有多少,开发有多少,公司有多少人

    测试有30人,开发有xxx人,公司共有xxx人,部门有xxx人。

六十九、接口自动化你是上班的时候去做,还是下班的时候

    上班和下班时间段都可以做,这里更多的是想了解你是怎么去执行用例的,有没有做持续集成,定时的去执行用例。

    

七十、有什么想问我的吗

    可以问一下公司的测试团队规模,如果应聘上的话,今后主要从事的工作或者业务是什么,团队的氛围,晋升的空间等。

接口自动化面试题

七十一、接口自动化流程怎么做的,框架怎么搭建的?

流程:

    1、分析需求,确定测试范围

    2、搭建自动化测试环境、准备相关测试数据

    3、工具选型,搭建测试框架

    4、编写用例

    5、执行用例,生成测试报告

    6、持续集成

框架怎么搭建:
    如果是选择用现有框架的话,可以选择postman、jmeter、Robotframework等框架,也可以基于一些开源的框架平台上再去进行二次开发,比如httprunner等,觉得都用不习惯的话,可以考虑自己写代码封装新的框架。看这套面试题,求职者应该回答的是自己写代码的方式。

    自己框架搭建要考虑的问题:

    1、用例怎么存储,编写是否方便,易用性怎么样,学习成本高不高

    2、用例执行执行,日志,报告等如何查看

    3、断言如何设计,用例执行失败怎么处理等

    4、多人协作怎么管理代码等

七十二、你们公司没有通用的接口自动化框架吗?为什么还需要你们部门来搭建这套。

开源框架有开源框架的好处,但是也存在一些问题,有些数据处理起来没这么方便,易用性方面使用起来也不一定很方便,需要一定的学习成本。每个部门的业务场景不一样,开发平台/工具主要还是从成本以及解决某个实际问题的方便去考虑。

七十三、接口自动化回归过程中有没有发现什么问题?取得了怎么样的效果和收益?

    比如有时候,开发改某个需求,改动了一些公共的代码之类的,就有可能影响到其他的接口,如果之前稳定的接口已经写好用例的话,这种情况下就能快速的验证出来改动是否有问题。

    效果和收益的话,可以说一下接口自动化做起来之后,之前手动回归的功能现在变成自动回归了,节省了多少人力/时间。

七十四、接口自动化搭建和落地过程中遇到什么问题?

    用例怎么存储更方便,怎么样设计才能使得编写用例的时候方便,有没有什么办法自动生成用例,用例之间的依赖和数据传递怎么做,用例是否要区分环境,有些用例如果只能在测试环境执行,线上不能执行的,如何区分。怎么样设计能够支持快速切换到其他不同的平台上面去。

七十五、最难的技术难点是什么?

   动态变量参数化、接口依赖及中间变量问题、异步接口结果验证问题、相应参数化及嵌套很多的验证问题、接口测试框架的稳定性问题、多接口场景问题、多线程并发、多项目以及不同人员并发操作的情况。

七十六、你们持续集成是怎么做的?

持续集成的话,一般都是跟部署结合一起一起使用,比如测试环境更新后,自动触发用例执行。另外,可以设置每晚定时自动构建。

七十七、还有哪些可以优化的点?

七十八、代码结构分层是怎么样的?

七十九、有了jmeter等开源的接口自动化平台,为什么还要代码来做自动化?

哈哈,这个也是我想问那些自己写代码做自动化的,以及现在的一些培训机构教的java或者python自动化的模式,为什么不选用开源的框架或平台。其实,大家都心知肚明,自己写脚本写框架,更能体现你的水平,能够拿到的薪资更高。

自己写代码,在一定程度上,可以省去对工具的学习成本,虽然说工具的使用不难,但是要把工具用好也不容易,并不是只有写代码才能体现出你的能力。而且,写代码之前,要先了解一下现有工具的一些功能,看下有没有必要自己写代码封装框架。

八十、你主要负责参与哪部分框架搭建,你们怎么合作共享代码的?

代码传递的话,一般都是通过git仓库去管理,然后再通过分支去管控,这个可以参考开发的代码分支管理。

八十一、数据驱动,关键字驱动怎么做的?

    数据驱动的话,有相应的包直接可以支持。关键字驱动的话,可以参考Robotframework框架,我所理解的关键字驱动,其实就是一种代码约定。

八十二、这套框架覆盖了开发多少代码量,怎么统计的?

    如果是统计代码覆盖率的话 ,一般都会用到相关的插件去进行统计,比如jacoco

八十三、总共多少测试用例,执行一次要多久,覆盖多少接口?

这个属于用例设计方面,主要考察你对项目的理解 ,对用例设计的把握,用例设计的覆盖度。

八十四、接口关联怎么处理的?

可以将依赖接口返回的数据存到一个项目级别的全局变量里面,然后在用例里面去识别某种特定格式的写法,按照变量去进行处理。

八十五、接口鉴权怎么做的?

    鉴权的话一般接口需要传token或者签名之类的,发送接口请求的时候才会校验通过。前几天看一位大佬分享的测开平台的设计,鉴权的话可以考虑绑定在接口域名级别,不用每个case都去单独处理一遍。

八十六、数据参数化,数据驱动,excel读取数据怎么做的?

    参数化的设计可以参考postman、jmeter的方式去进行处理。excel读取数据也有专门的库去进行操作,之前在网上看到别人写的一个读取excel的代码,不是一次性将数据都读取出来,而是使用yield关键字去进行处理。还有就是用例设计的时候,是考虑将数据放在一个页签,还是分不同的页签去处理,这个涉及到框架层面以后每加一个页签是否都需要改动代码。

八十七、数据库什么时候去校验的,哪些场景使用到了?

    进行接口断言或者是做一些初始化数据准备或者数据清理的时候,就有可能需要去操作数据库。

八十八、接口自动化数据传递方式及区别?

    这里我理解的应该是在考察发送请求的时候,数据放在params、data以及json参数中的区别。

春招必看已上岸,软件测试常问面试题【全网最详细,让你不再踩坑】

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值