测试开发面经(牛客)

1.你了解快手测试开发的岗位职责吗?那你大概说下快手的测试开发岗位主要工作内容有哪些?

1
2
3
4
1.产品的测试嘛。设计测试用例和计划,保证产品的可靠性
可能开发在写代码中没有考虑到的一些问题
需要测试来测试出来
2.通过测试用例反馈给产品和团队,提出改进意见,推送问题解决

为什么想转到测试开发

1
2
3
4
5
6
7
8
第一:从我的职业规划来说
开发和测试开发都是我可以接受的职位
然后
我有过一些开发的经历,
在功能测试和性能测试方面有过一定的了解
了解开发的知识,可以定位bug和修改bug
我觉得能够胜任测试开发这份工作
接触过一些不同类型的Bug

测试的一般流程

1
2
3
4
5
6
7
8
9
我觉得和开发的流程差不多吧
1.在评审的时候做需求分析,去了解文档和功能的细节,明确业务需求和目标嘛
2.针对目标去做测试计划:测试的范围,目标啊,搭建测试环境啊这些
和测试样例的设定
比如说:功能性测试啊。性能测试啊。安全测试啊这些
3.执行测试,发现缺陷就记录反馈给开发人员,并且进行复测
4.在测试执行完毕后,我们会撰写测试报告,
包括测试覆盖率、执行结果、缺陷情况、系统的稳定性和质量等。
5.测试结束后的交付

测试方法和使用场景

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 功能测试:概述:验证软件的每个功能是否按预期工作。
场景:在产品开发的各个阶段,对所有功能模块进行测试,如登录、注册等基本功能。
12. 异常测试:概述:模拟意外情况或错误输入,检查系统的异常处理机制。
场景:对于输入字段、文件上传等,验证异常数据是否能安全处理。
2. 性能测试:概述:检查系统的性能表现,包括响应时间、吞吐量等。
场景:对需高并发处理的系统进行测试,如银行、交易所、社交平台等,以确保系统在高负载下的性能和稳定性。
7. 兼容性测试:概述:测试软件在不同硬件、操作系统、浏览器等环境中的表现。
场景:跨平台应用或网站上线前,验证是否兼容主流浏览器和设备。
4. 压力测试:概述:超出系统设计的负荷进行测试,观察系统崩溃点。
场景:银行系统、医疗系统等关键应用,确保在超出预期负载下系统能稳定降级而不崩溃。
8. 安全性测试:概述:验证系统的安全性,防止数据泄露、未授权访问等。
场景:电商、金融等涉及敏感信息的系统,需防范SQL注入、XSS等常见攻击。

1.功能,边界,安全,性能,异常,兼容性

测试用例包含的内容

1
2
3
4
5
6
1.测试的标识编号
2.测试用例的描述
3.测试数据
4.测试步骤
5.预期结果
6.实际结果

2.讲下你实习的测试工作有哪些?

1
2
3
4
5
6
7
8
9
10
作为开发,在开发的时候,会测一下自己写的功能是不是实现了
然后在提交代码的时候,针对我们的需求文档要求做一下测试
比如
1.对于编辑类需求,如无特殊说明,每次交互响应时间要求<2秒。
2.对于日常检索类需求,如无特殊说明,检索响应时间要求<5秒。
3.对于统计分析类需求,如无特殊说明,统计表与图形成的响应时间要求<10秒。
4.对于每项业务功能需求,如无特殊说明,均要求能够并发400用户,并要求目标系统能够承受所有功能并发400用户的压力。

他系统其实要求的并发量有400
使用jMteter去测一下,对我后端接口进行访问模拟并发小于2s即可

3.以一个你觉得印象比较深刻的需求来讲一下从需求评审到整个上线的过程。

1
2
3
4
5
6
我们做的统计分析模块,产品经理会做一个需求文档
包括所需要展示的统计数据,图标类型,数据权限等
然后评审,团队开发给出修改意见,去讨论能不能做
然后照着修改过后的文档做
完成之后交给产品经理测试功能等
上线我不知道了

4.测试过程中印象比较深刻的bug?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
其实我自己在实习的过程中遇到的小问题比较多
可能刚开始对项目不是很熟悉
印象比较深刻的反倒是我的组长和所长检查代码检查出来的
1.第一个就是流程审批这个模块
我做完这个模块后,开始测试了功能没有问题
就去提交到了测试环境
然后组长测试的额时候
发现卡在流程节点无法推进

检查发现
我们在自定义审批人策略的时候
是从当前人所在的部门去获取项目经理
然后组长是超级管理员身份登录,这个super没有部门
我第一反应是去数据库给这个super加一个部门
然后组长说:但其实这个解决不太好
因为可能还会有其他没有部门的角色
让我使用回退机制
如果当前用户没有部门信息
可以回退到一个预定义的备选策略
比如:超级管理员

这个也是一点收获吧
有时候自己解决问题的过程确实太粗暴简单了
没有考虑到自己解决了问题还会带来其他的问题
这个也是我需要学习进步的地方

还有就是:做智能评估点开发功能
被所长发现性能不好

做Excel导入导出
被组长发现性能不好

实习项目中做的测试

Excel导入导出校验的测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1.对Excel导入导出校验,那边做的测试
主要还是以功能测试为主,这边的话,测试内容比较多,
然后也测出一些bug去解决
比如说,我做导入导出检验功能后首先会进行
1.功能测试:我会给一些正确的数据,验证系统能否正确的导入数据
2.校验测试:因为我在开发代码逻辑是有做校验的
比如说:导入的项目人员在人员表中存不存在啊
手机号格式是否满足正则匹配啊
重复项目不能重复导入啊这些
这里报错的话我会用try-catch捕获异常返回前端错误的类型
3.边界测试:
导入空文件,
3.性能测试:开始的话,因为项目这块只有几千条数据,
响应还是比较快的
但是我在做人员导出那块,就会出现响应比较慢
然后我分析就是,如果涉及到大数据量的导出的话
有可能会造成内存溢出,或者无响应的情况
数据量太大会导致
这个我后续也是做了一些优化

针对上述问题,其实也看到过有现成的一些解决方案
放弃使用Apache的api,使用阿里的easyExcel这种
但是其实我作为实习生并没有这种权限去新加依赖
后面就是用的分批分页的方法
比如说一次只查询5000条数据,5000条批量写入到excel以后,
清空当前List,释放内存
避免内存溢出的情况
(分批分页查询db数据到内存,比如一次查询5000条,分20次分批查询出来每次加载指定大小的数据到内存,
比如每次5000条,5000条批量写入到excel以后,清空当前List,
释放内存分多个sheet写入,每个sheet比如放20w,100百万数据放到5个sheet
每次从数据库批量读取指定大小的数据写入到excel,比如每次5000条)

但其实我们是有限流机制的,不允许频繁的调用这个导入导出方法
限流机制这块不是我做的
但是我了解
前端的话,每分钟只能调用一次这个方法
后端令牌桶算法:用一个“桶”来存储一定数量的令牌,
每个请求需要消耗一个令牌才能通过,当令牌不足时阻止请求。

对activity流程审批模块的测试样例设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1.功能性测试:流程是否正常流转?是否正常通知给节点人员?
驳回是否生效?审批人能否动态调整
2,异常:审批人缺失情况下,能否提示?流程是否重复提交?
审批途中系统故障,恢复后是否流程继续?
是否只有当前人能提交审批?
3.性能的测试:
设置几十几百个流程节点,测试在多节点的流转性能
每个流程节点的响应时间,
多线程下的并发审批是否出问题?
5.安全权限测试:不同权限的用户是否符合预期?
是否能在审批中篡改敏感信息等

1.还是流程这里,我在做流程审批的时候,遇到过两个bug
第一个是退回审批不成功,第二个是流程卡在节点无法推进
然后我也是打断电去调试代码找错误
发现,退回审批不成功是我在画流程图的时候
应该从网关出的路由
画在了节点上
第二个找到是

我们在自定义审批人策略的时候
是从当前人所在的部门去获取项目经理
然后我用的是超级管理员身份登录,这个super没有部门
所以就出现问题
解决方法是,在数据库中给super创建一个部门

5.讲一下你实习中做过的性能测试和自动化测试。

1
2
性能测试:jemeter去压力测试,看看接口的响应速度能不能达到并发
自动化测试:好像用Selenium可以做,但是我没做过

自动化测试

1
2
3
4
5
6
7
8
9
10
自动化测试这块,其实在实习和自己开发中,接触的不是很多
大多数都是自己手动测试和一些性能测试
Java中的单元测试框架junit
jemeter去做性能和压力测试

我知道好像selenium可以去做web端的自动化测试
去模拟一些用户的行为(点击,链接等)

然后如果有实际需要的化,我也愿意去深入学习和掌握自动化测试相关技术栈
提高效率

性能测试和压力测试的区别

1
2
3
4
5
6
7
8
9
10
11
以我的项目需求书来说
要求400个并发量下<1s的查询性能嘛
性能测试就是
我去开启400个线程去访问接口
得到平均相应时间,比如说500ms
达到了我项目需求的性能,就可

压力测试就是说
我去测试平均相应>1s的
用户有多少个
看看系统的极限在哪儿里

6.你们性能测试的时候通过哪些指标来判断已经达到瓶颈的?

1
接口的响应时间,并发的用户数量,CPU的占用情况等

7.登录态信息token

自动化接口测试是在平台写的?那有时候一些接口需要登录态,你们是怎么解决的?

(比如一个接口如果你没有登录态的信息,那他就会显示你没登陆,有遇到过吗?)

1
2
3
4
5
6
7
8
9
就是在使用jemeter的时候,在http请求的下的tokens去设置文件名称
文件里是已有用户的token
因为他这个框架登录请求是JWT令牌,

以为移动公司的用户大概要3W多人,我们不需要那么多token
我们查询数据库前400的用户
然后随机uuid生成token,写入到txt文档中
后面只需要把这个文件放在jmeter的登录状态头中
这样在请求的过程中,就会自动携带请求头了

异常测试会想到哪儿些?

1
2
3
4
5
6
7
8
9
10
异常测试:我在开发中主要用到的还是功能方面的异常测试
1,输入异常:边界值:最大最小值,空值,超出范围的值
特殊字符:sql注入字符,转义字符等
不匹配的数据类型:
不匹配的文件类型:
去看看有没有相应的异常提示
其他异常我想到的有
2.接口的异常:网络异常,数据库异常,服务器异常
或者说不同设备的兼容性异常这些
这些不是很常见的异常吧

测试理论:白盒测试,黑盒测试

1
2
3
4
5
6
7
8
白盒测试:测试人员了解程序的内部结构,并且根据代码的实现,来设计测试用例

黑盒测试:测试人员对程序的内部逻辑和实现没有了解,主要关注系统的功能需求和输出结果。
白盒测试多用于单元测试、集成测试,黑盒测试多用于系统测试、验收测试

其实根据我来说,我在测试过程中,基本上测的都是我实现的功能
根据我实现的代码来设计测试用例
比如说:Excel导入导出这块

黑盒测试的等价类划分

1
2
3
4
等价类划分是黑盒测试中常用的一种测试设计技术
用于减少测试用例的数量,同时确保覆盖所有可能的输入场景。
它的基本思想是将所有可能的输入值划分为若干个等价类,
以便从每个类中选择一个或几个代表性的测试用例进行测试。

因果图法

1
2
3
4
5
6
7
8
9
10
11
12
13
因果图法是一种黑盒测试设计技术,用于系统地识别输入条件与输出结果之间的关系,
以设计测试用例。它通过将输入条件(因)和输出结果(果)可视化,
帮助测试人员理解不同输入条件如何影响系统行为,并有效生成测试用例。
示例
假设我们要测试一个简化的登录系统
因果图示例
输入条件:
A:用户名有效
B:密码正确
C:用户未锁定
输出结果:
X:登录成功
Y:登录失败

8.对一个杯子设计测试用例。(功能性、易用性、安全性、外观、压力测试、项目说明/使用手册)

1
2
3
4
5
6
7
8
9
10
1.功能性:
测试描述:测试杯子是否能容纳规定的最大容量
预期结果:杯子在加满水后无溢出现象
执行步骤:1.向杯子注入水,直到置顶水量
2.观察是否溢出
2. 易用性测试用例
3. 安全性测试用例
4. 外观测试用例
5. 压力测试用例
6. 项目说明/使用手册

12.查每个班级最高成绩sql

1
2
3
4
5
6
7
SELECT 
class_id,
MAX(score) AS highest_score
FROM
students_scores
GROUP BY
class_id;

13.T型用户访问量,在中间的数据量级很慢,什么原因

1
2
3
数据库性能问题,测试的时候,压力测试去排查
CPU的问题,高并发导致服务器CPU占用过高的话,升级CPU
排查是否使用缓存提高性能等

以登录为例,要如何测试登录功能是否正常?

包括交付质量、高可用

1
2
3
4
5
6
从设计测试样例的一般性原则来说,可以从一下几个方面入手
1.功能性的测试:正确登录,错误用户名,错误密码,空值登录,账号锁定登录..
2.边界测试:使用特殊字符,额外程长度
3.安全测试:sql注入,暴力破解?等
4.性能测试:高并发,响应时间,回复时间
5.兼容性测试:不同浏览器,不同设备,手机,网页等

下单为例子,哪儿些测试

1
1.功能,边界,安全,性能,异常,兼容性

如何保证请求是通过前台传过来的而不是直接通过地址传接口的?

1
2
3
jwt登陆认证,携带token
用jemeter
在单元测试中读取400位用户,生成token

13.对括号匹配算法的测试用例

image-2024100810070296214.日志升级?不懂

15.traceID,从生成到传递的全过程

1
2
3
在分布式系统中,Trace ID(追踪标识符) 是用于跟踪和关联一次完整请求在多个服务之间流转的唯一标识。
它在微服务架构、分布式系统的监控和故障排查中扮演着至关重要的角色。
本文将详细介绍 Trace ID 从生成到传递的全过程,包括其生成方式、传播机制以及在实际应用中的实现方法。

16.登录页面的测试用例怎么设计

1
2
设计登录注册页面的测试用例时,需要全面考虑各种输入情况、用户行为、边界条件和系统的安全性。
以下是一个详细的测试用例设计示例,包括功能测试、边界测试、安全测试等方面。

vi和vim都是经典的文本编辑器,vim是vi的增强版

1
现在基本上都是在图形化界面去做,基本上不用了

异常处理类,全局异常处理类

1
2
3
4
5
6
7
8
9
sqlException
ClassNotFountException
runtimeException
ArrayOutOfBoundException
NumberFormateException
除0错误

在springboot中定义全局异常处理类@ControllerAdvice
集中处理异常

得物测试没回答上来的

1
2
3
1.慢查询,除了和前端的通信,微服务接口的通信的测试相关?
RPC测试
2.消息队列相关,confirm确认机制

你有系统学习过测试吗?

1
2
3
4
5
6
虽然我没有系统地学习过测试理论课程,但在开发的过程中,
我接触并实践了一些测试相关的工作。例如,在项目中,
我会编写单元测试来验证代码的功能正确性,同时也参与过功能测试和接口测试,
确保系统的稳定性。通过这些实践,我对测试的重要性和基本方法有了一定的认识。
如果有机会,我希望进一步深入学习测试理论,
补充自己的短板,以更全面地支持开发和测试工作

7、说说95%响应时间
8、性能测试中jmeter怎么计算的95%响应时间。

1
2
3
它表示在所有请求中,95% 的请求响应时间都低于这个值,
仅有 5% 的请求响应时间超过该值。
收集响应时间,排序,找到95%的位置就行

等价类划分

1
2
3
4
5
这个应该算是一种测试方法吧
就是说:讲输入的测试数据去划分为若干个具有相同性质的类别
然后这些类别是等价的,以此来减少测试用例
比如说,我需要测试一个[1,9]的数字范围,
我只需要测试其中一个就可以了,没必要全部测试

编写测试用例,如何确保测试用例的质量

1
2
3
1.明确需求,根据需求文档确保测试用例覆盖所有的功能点,包括异常情况
2.设计规范:使用统一的模版,确保步骤明确、预期结果具体,便于执行和复现问题
3.

从浏览器访问远程一台电脑的图片有哪些方法实现?

1
2
3
1.链接在同一个WiFi下,用Windows共享文件夹
2.自己开发服务比较繁琐,使用上传到云服务器
阿里云这些对象存储服务,通过网址的方式去访问

测试需要的能力

1
2
3
4
1,快速理解产品和业务的能力,能够从用户的角度设计测试用例
2.发现问题发现bug的能力,不能等系统上线了让用户发现
3.沟通能力,发现问题与与开发,产品去沟通,解决问题
4.耐心吧,有的问题需要重复很多次,应该要保证测试覆盖全面,避免遗漏

职业规划:

1
2
3
4
5
6
7
8
9
我的职业规划更多还是在开发和测试开发这方面
因为自己的包括自己学习,实习经历都是在这方面
我也有在自己网站中积累和回顾自己的所学嘛
学习了这么多也不能说轻易放弃
当然我也不排除新技术的学习

长远来看,我希望我计划在工作中不断积累项目经验,
提升解决实际问题的能力,力争能独立负责部分模块或项目
并为团队贡献我的力量。

讯飞产品

1
2
3
4
5
有过了解,我认识中科大讯飞是做语音识别这块是行业的领先者
后来跟ai相关做了特别多的产品,星火大模型这些
然后其实一面的面试官也有介绍
他们是做智能汽车这块的,与很多车企合作
智能座舱,智能音效,智能交互这方面的测试开发

17,反问:业务中用到测试的地方有哪儿些?测试和开发占的比重多少?

2.您刚刚提到了自动化测试,咱们业务场景用到的自动化测试场景多吗?会用到哪儿些技术栈这些?

3.后续流程