6.1面试题汇总

1、性能测试关注哪些指标?

性能测试主要关注被测服务部署的系统的资源(CPU,内存),

程序的响应时间,最大,最小,平均,99,95,90

吞吐量,

并发用户数

tps

qps

DB的iops,就是针对数据库的读写

如果是io密集型,关注内存是否有泄漏的情况

2、性能测试你是怎么做的?

1.首先梳理出性能测试的目标,(目标值可以参考之前的数据也可以和主管领导开会讨论决定)

2.准备测试场景和测试数据

3.工具的引入,我们工作当中一般使用的性能测试工具有jmeter或Locust

4.编写测试计划,包含人员安排,时间安排

5.开始执行测试脚本,收集数据

6.针对收集的数据重点关注被测系统的资源(CPU,内存),服务器的响应时间,吞吐量,并发用户数,TPS,QPS,DB的iops等指标

7.分析数据,达到目标则编写测试报告,测试不通过则让开发继续优化,测试继续测试

3、性能测试通过或者不通过判断的依据是什么?

在测试过程中需要通过观察一些目标,根据收集到的目标数据结果来判断是否满足要求,例如目标响应时间是5秒,实际响应时间是7秒,那么就是不通过

主要包含:系统的资源(CPU,内存),服务器的响应时间,吞吐量,并发用户数,DB的iops等指标


4、性能测试常用的工具有哪些,请具体说其中的一个是怎么使用的?

jmeter、locust、loundrunner
以jmeter为例:

1.打开jmeter,首先添加一个测试计划,再添加一个线程组,要模拟多少个用户就在线程数填对应的值,在时间处填写测试需要的时间

2.在线程组下添加一个HTTP请求,填写我们需要测试的地址

3.添加监听器下的查看结果树、响应时间图,聚合报告、汇总报告来检测我们测试的结果数据

4.还可以下载一个serveagent,结合perfman插件,就可以监听到系统的资源(CPU和内存、磁盘、网络等)

5.再添加一个后端监听器,执行jmeter,通过influxDB收集数据,展示到grafana平台上

5、稳定性测试你是怎么做的?

稳定性测试:被测系统在资源饱和的状态下,看系统是否依然能够很好的处理业务逻辑。

例如以西安一码通为例:

当被测系统资源达到饱和的状态后持续不间断的请求n个小时,看结果是否是我们期望的结果,查看系统的处理业务的能力,如果仍然能够出现健康码的结果,那说明系统的稳定性良好。

使用的工具是locust,先打开locust,输入测试模拟的数据,每秒并发用户数,和被测试的地址,点击start开始,只要不点击stop停止,测试就会一直继续,然后查看系统的各项性能指标,看响应时间,cpu和内存


6、你怎么理解响应时间?

响应时间就是⼀次操作完成的时间,客户端向服务端发送请求,服务端返回到客户端的响应数据时间,
响应时间=⽹络时间+应⽤程序的处理时间

7、负载测试与压力测试的区别?

负载测试:在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限。

压力测试:是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut超时,OOM内存泄漏,它一般用于测试系统稳定性。

8、你的优势和劣势是什么?

优势:沟通能力好,进入一个新的公司能够很快的和同事熟悉起来

劣势:我太认真了,开发同学觉得我太计较bug


9、你怎么看你之前的公司和领导?

首先,我之前的公司和同事领导相处的都很愉快,工作也很开心,

其次我也很感谢这位领导,他给了我很多成长的机会让自己能够快速成长;教会了我好的工作方法与方式;是一位合格的领导、给了每位下属清晰的定位并指导规划


10、你对最近一家公司有什么期待?

希望能在新的公司很快融入团队,做好我的本职工作,承担更多的责任,当然在这个过程当中,我的能力可能不是很足,我会利用下班时间让我承担责任的能力变得更大,期待在这里我能够有技术上的进步,能够学习到更多的东西。


11、怎么样可以设计出合理的测试用例?

1.首先需要熟悉本次迭代的产品需求,和产品业务逻辑,

2.和开发多沟通产品的前后端交互和用户使用逻辑

3.编写测试用例的时候需要考虑产品的正常逻辑和异常逻辑,包含了兼容性测试,性能测试,稳定性测试

4.编写完成后,评审测试用例,让别人看还有哪些测试场景考虑不周全

12、提交BUG需要注意哪些?

1、BUG标题一定要通俗易懂,表达出问题的核心,

2、BUG操作步骤要清晰明了,步骤要非常详细

3、提交BUG最好有问题的截图或视频来说明错误所在

4、提交BUG最好有错误的详细日志信息(主要针对的是后台服务)

13、编写测试用例需要注意哪些?

1.每个测试用例都得有标题

2.测试步骤清晰明了

3.每个测试用例都得有预期结果

 

14、你怎么理解测试风险?

测试风险在工作中无处不在,我举几个例子

1.预期下班转测,结果没有转测,我需要把风险反馈给我的主管领导,因为我不具备决策权

2.本来预期今晚上线,但是有严重的bug,叫上相关人员的人评审,看因为这个bug能否上线

 

15、如果明天上线,但是产品存在严重BUG,此时你会?

1.把问题及时汇报给自己的领导,说清楚产品存在的问题

2.然后和主管领导及相关人员讨论评审项目能不能上线

 

16、查询范围使用的关键字是?

between and,包含开始和结尾

举例:查询学生成绩在60-80,包含60和80

17、排序函数,聚合函数怎么理解,举例说明

排序函数order by:是对结果信息进行排序,默认是由低到高进行排序,

聚合函数group by:当我们查询某一个表中某个字段的数据的条数,把相同结果进行聚合后作为结果显示出来

举例:

1.创建一个表格,表名为salaries,里面包含员工姓名,员工薪资,性别

creat table salaries(name varchar(5),salary float,sex varchar(3))

2.往表格里插入内容:

insert into salaries values(zhangsan,1000,boy),(lisi,2000,boy),(wanger,2500,girl),(cuihua,3000,girl);

select * from salaries order by salary 就是对员工的薪资默认由低到高进行排序

select sex,count(1)  from employees group by sex 就是对性别进行聚合,分别查看男性和女性有多少人

18、怎么理解内连接和外连接,关键字是什么?

内连接inner join:查询关联字段共同拥有的数据

举例说明:

创建一个表,里面包含学生id,学生姓名,学生年龄

create table students(id int,name varchar(5),age int);

创建第二个表,里面包含学生id,学生毕业学校,学生薪资

caeate table work(id int,school varchar(10),salary float);

内连接,查询出学生id,学生姓名,学生薪资:select students.id,students.name,work.salary from students inner join work on students.id=work.id

 

外连接分为左连接和右连接,left join/right join

左连接:获取左表所有的内容和右表某些字段的内容

右连接:获取右表所有的内容和左表某些字段的内容

 

19、怎么排查内存泄露问题?思路是什么?

内存泄漏是out of memory ,简称OOM

例如我在上次文件过程当中内存泄露了,首先找服务的log日志文件,这时使用tail-f查看实时日志,找到Out of memory关键字,提交给开发

20、你是怎么做API测试的,请详细说明

做API测试的工具有postman,jmeter

以postman工具为例

(1)梳理可以做自动化测试的模块;

(2)然后找领导看一下考虑的场景是否合理;

(3)找开发或者接口文档获取到请求地址,请求方法,请求头,请求参数

(4)以postman为例,添加一个请求add request,填写上请求地址,请求方法,在headers里填写请求头,在body里请求参数,在tests中写断言

(5)将所有测试用例添加到collections集合中,点击run collection

(6)结合newman生成测试报告

 

性能测试:


1、响应时间你是怎么理解的?

响应时间就是⼀次操作完成的时间,客户端向服务端发送请求,服务端返回到客户端的响应数据时间,
响应时间=⽹络时间+应⽤程序的处理时间


2、怎么区分负载测试和压力测试

负载测试:在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限。

压力测试:是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut超时,OOM内存泄漏,它一般用于测试系统稳定性。

3、你是怎么做稳定性测试的?

稳定性测试:被测系统在资源饱和的状态下,是否依然能够很好的处理系统的业务逻辑。

使用的工具是locust

例如以西安一码通为例:

当被测系统资源达到饱和的状态后持续不间断的请求n个小时,看结果是否是我们期望的结果,查看系统的处理业务的能力,如果仍然能够出现健康码的结果,那说明系统的稳定性良好。


4、常用的性能测试工具有哪些?

有jmeter java语言开源,互联网公司广泛使用;
locust 蝗虫,基于python语言,协程设计,使用它做稳定性测试;
loadrunner HP公司,工业级的工具 ,收费


5、说出JMeter测试工具中聚合报告中有哪些结果信息

最大值,最小值,平均值,中位数,99%,95%,90%,异常,吞吐量


6、在JMeter中,如果需要监控服务器的CPU和内存的资源,你具体是怎么做的

在jmeter中监控服务器的资源,我使用的是serveragent结合perfmon插件的方式,将serveragent安装在被测服务器上,启动serveragent,在监听器中选择perfmon插件,添加cpu、内存、磁盘、网络,在jmeter的线程组中设置线程属性,来运行线程组监控。


7、说下你理解的性能测试流程

1.首先梳理出性能测试的目标,(目标值可以参考之前的数据也可以和主管领导开会讨论决定)

2.准备测试场景和测试数据

3.工具的引入,我们工作当中一般使用的性能测试工具有jmeter或Locust

4.编写测试计划,包含人员安排,时间安排

5.开始执行测试脚本,收集数据

6.针对收集的数据重点关注被测系统的资源(CPU,内存),服务器的响应时间,吞吐量,并发用户数,DB的iops等指标

7.分析数据,达到目标则编写测试报告,测试不通过则让开发继续优化,测试继续测试


8、性能测试结果如果不满足预期的目标,你会怎么办?

不满足预期的目标,例如响应时间超过预期,我会整理好收集到的测试数据,寻找开发,说明问题,等开发优化后,继续测试,直到符合预期目标。


9、性能测试中性能的目标你是怎么定,说出具体的依据

1.根据以往的历史数据作为参考

2.和主管领导同事开会讨论决定


10、在性能测试之前,简述下需要有哪些测试准备工作?

1.梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但得和大家一起沟通决定)

2.在目标清楚的基础上,梳理出测试场景和准备测试数据

3.准备测试的资源(人力和机器资源)


11、性能测试过程中,开发说需要添加服务器性能测试才能继续,此时你会?

我认为添加服务器不合理,除非给生产环境也做相同的配置,因为性能测试的测试环境要和生产环境保持一致,模拟用户的使用情况,否则不具备测试参考的意义。


12、性能测试重要的指标有哪些?

性能测试主要关注被测服务部署的系统的资源(CPU,内存),

程序的响应时间,最大,最小,平均,99,95,90

吞吐量:系统处理事务的速度,执行效率

并发用户数:同一时间发送请求的数量

响应时间:网络传输时间和程序处理时间总和

tps:每秒处理的事务数

qps:每秒处理的查询数

DB的iops,就是针对数据库的读写

如果是io密集型,关注内存是否有泄漏的情况


13、说出线程属性中线程数与Ramp-time时间之间的关系?

线程数/每秒并发数=Ramp up 时间

线程数就是模拟多少个用户向服务端发送请求,Ramp-time指的是多长时间内完成请求,例如线程数为1000,Ramp-time是5秒,那么就是5秒之内向服务端发送1000个请求,也就是每秒发送200个请求。

 

14、如果总请求数是100,每秒并发5个线程数,此时线程属性怎么设置?

线程数设为100,时间设为20s,循环1


15、性能测试环境与生产环境需要一致吗?为什么?

需要一致,


16、详细描述下你之前是怎么做性能测试,最好非常具体,从开始到结束

和开发确定本次迭代是否需要做性能测试
首先梳理性能测试目标、测试场景、测试要用的数据、机器和人力
确定和准备性能测试的工具
编写性能测试的计划,包括测试的时间周期和负责人
编写测试用例
执行测试脚本 整理性能测试需要的数据
分许数据 是否满足性能测试的目标


17、如果内存泄露,你是怎么排查的?

如果说上传文件的时候内存泄漏了,重复同样的步骤,并且实时查看日志tail -f ,把步骤和错误信息发给开发

18、如果请求响应时间长,你是怎么排查的?

 在聚合报告、Charles抓包工具、network中可以看到具体的响应时间,截图给开发

19、性能测试结果不满足,此时你会怎么做?

如果不满足预期的目标,我会整理好收集到的测试数据,寻找开发,说明问题,等开发优化后,继续测试,直到符合预期目标。

20、稳定性测试你是怎么做的?你怎么判断一个服务稳定还是不稳定?

 我是使用locust做的,

是在系统资源饱和的情况下,持续不断的向被测对象发送请求。
通过返回结果200ok,以及不会出现请求超时来验证被测系统的业务逻辑和服务稳定性。

经验相关

1.是否接触过电商类项目?如果接触过,请简述下什么是主订单和子订单


没接触,结合经验说一下淘宝,京东下单流程,


2.是否能接受开发环境和测试环境是同一个,为什么?

开发环境和测试环境应该分离开,如果一致会混乱,测试和开发的版本不同。
开发环境是程序员专门使用的服务器的配置比较随意,为了方便调试,打开了错误报告
而测试环境应该是和生产环境的配置保持一致的,会打开错误日志,关闭错误报告
测试阶段里面所添加的数据和信息,不会出现在真实环境中,上线前是需要数据清 洗的。

 

3.是否实现过自动化测试(接口和UI都可),如果实现过,请描述一下完成了一条怎样的用例,使用了什么语言和工具

实现过
ui自动化测试是使用python语言,selenium web测试框架和unittest单元测试框架,po设计模式来做的,最后整合htmltestrunner生产测试报告

接口自动化是使用requests库

4.在测试中了解开发架构对测试有什么样的帮助,简述2条

了解底层和上层之间的交互
为了设计偏底层的设计用例场景
为了和开发更好的沟通

5.您提出了一个认为会影响用户的bug,但其他人都认为不是bug,此时这个bug你会如何处理

1、先验证
2、如果不是需求文档中的,充分说明自己的理由、分析出可能造成的问题。

 

功能测试

1.以下页面上可以输入查询条件,保存后,有触发功能可以查询出相关数据,请说出测试这个查询功能所需要造的测试数据(和测试点有关)

等价类、边界值、排列组合
正常:模糊查询、默认查询、精确查询
异常:
查询内容类型
查询内容的长度
为空
空格
查询内容中带有特殊字符


2.简述下对回归测试的理解,以及回归测试时候需要考虑的因素

回归测试是在当前迭代中,测试之前已有的功能,确保本次迭代新增的内容没有影响到之前的功能。


接口测试

1.在接口测试中,需要参考哪些信息和文档做为接口预期结果


文档:开发的接口文档
信息:F12 NETWORK、Charles抓包工具
(协议状态码、业务状态码、响应数据中的具体字段)


2.是否使用过jmeter进行接口测试,用到过jmeter的哪些组件

使用过;首先通过接口文档获取数据
打开jmeter添加一个测试计划,添加一个线程组,再添加取样器中的http请求
配置元件中的http信息头管理器,http请求默认值,http cookie管理器,csv数据文件设置
后置处理器中的json提取器,正则表达式提取器
断言:json断言、响应断言
监听器中的察看结果树

性能测试

1.在性能测试之前,请根据顺序简述下需要有哪些测试准备工作?

梳理性能测试的目标,测试的场景、测试要用的数据、人力、机器资源,制定性能测试计划。


2.性能测试过程中,开发说需要添加服务器性能测试才能继续,此时你会?


我认为添加服务器不合理,除非给生产环境也做相同的配置,因为性能测试的测试环境要和生产环境保持一致,模拟用户的使用情况,否则不具备测试的意义。


3.日常使用什么工具进行性能测试,性能测试重要的指标有哪些?

jmeter测试工具,我以jmeter为例:

首先梳理性能测试的目标,测试场景和要用的数据、人力 机器资源,
准备好jmeter测试工具,
编写测试计划 包括时间安排和负责人
编写测试脚本,在线程组中设置线程属性
执行测试 并且收集数据(...)
分析数据 是否符合目标 编写测试报告
指标:响应时间 吞吐量 并发数 cpu 内存 iops tps qps rps

SQL相关

1、请说出下列SQL句子的含义

a) select id,payment from member group by member_id having sum(payment)>1
答:a)从会员表中查询 id和支付,通过id分组 过滤出支付总数大于1的

2.请写出删除和插入的SQL语句

删除:

1.单条删除:delete * from tablename where id=1;

2.全部删除:delete * from tablename;

3.大批量删除:truncate table tablename;
插入:

1.单条插入:insert into  tablename values();

2.多条插入:insert into tablename values(),

                   ();

3、having和where的区别

 having是过滤查询,一般和group by连用,例如查询一个班级里学生成绩重复数大于1的

select grade, count(grade) from chengji group by grade having count(1)>1;

where 一般用于单个信息查询,

select name grade from chengji where id=1;

 

补充:

1.你在测试工作中用到哪些工具?

管理缺陷的工具:TAPD

性能测试工具:jmeter,locust

接口测试工具:postman,jmeter

2. 什么是内存溢出?

通俗理解就是内存不够,运用程序需要的内存远远超出了你主机内安装的内存所承受的大小,就叫内存溢出

3.什么是内存泄露?

指由于疏忽或错误造成程序未能释放已经不再使用的内存,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果

4.产品上线发现bug了怎么办?

首先和开发初步评估bug的严重程度和产生原因,如果出现影响较大的功能性问题,并且暂时不好定位具体原因,版本回退到上个版本,然后在测试环境中进行复测,并定位问题原因;如果能快速定位问题原因,开发会做紧急修复,测试通过之后申请紧急上线,如果问题不是太严重通常会放在下个版本解决。

 

 

posted @ 2022-06-01 11:15  lm970418  阅读(112)  评论(0编辑  收藏  举报