最全一个资深测试工程师面试一来就问我这些题目_三十位真实乱口述,2024年最新5天拿到华为软件测试岗offer

本文详细介绍了测试工程师面试中常遇到的问题,涵盖数据库事务隔离级别、性能测试、JMeter使用、Git命令、APP Crash分析、Android与iOS测试差异、SQL注入、Cookie与Session区别、客户端性能测试等多个方面。强调了系统化学习的重要性,并提供了资源获取途径和面试技巧。文章还分享了面试中可能遇到的棘手问题以及如何应对。
摘要由CSDN通过智能技术生成

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。例如:用户A向用户B转账100元,对应SQL命令如下
update account set money=money+100 where name=’B’; (此时A通知B)
update account set money=money - 100 where name=’A’;
当只执行第一条SQL时,A通知B查看账户,B发现确实钱已到账(此时即发生了脏读),而之后无论第二条SQL是否执行,只要该事务不提交,则所有操作都将回滚,那么当B以后再次查看账户时就会发现钱其实并没有转。
2.不可重复读
不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了
3.虚读(幻读)
幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读
Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
Repeatable read (可重复读):可避免脏读、不可重复读的发生。
Read committed (读已提交):可避免脏读的发生。
Read uncommitted (读未提交):最低级别,任何情况都无法保证。
四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,级别越高,执行效率就越低。
主键,外键:
主键 :对表中数据进行唯一标识的数据列的组合;不能缺失;不能空值;
外键 :该列为另一表的主键
索引:
1.数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树
2.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
CREATE INDEX index_name ON table_name(username(length));
建立索引的缺陷:
1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT,UPDATE和DELETE。因为更新表时,mysql不仅要保存数据,还要保存一下索引文件
2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在要给大表上建了多种组合索引,索引文件会膨胀很宽
drop,delete与truncate的区别
drop直接删掉表 truncate删除表中数据,再插入时自增长id又从1开始 delete删除表中数据,可以加where字句
一般而言,drop > truncate > delete
连接种类,区别:
Inner join,left join,right join,full join
分库分表:
数据库引擎:myisam和innodb,前者比较适合大量select,事务不安全;后者支持外键,事务安全,适合大量update,insert

十二.Jmeter
1.性能测试几个概念
TPS:每秒钟request/事务 数量
并发数:系统同时处理的request/事务数
响应时间:一般取平均响应时间
下面几个概念可以看看
负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担(通俗讲我觉得就是到了拐点就停了,再往上指标也不会上涨)
压力测试(Stress Test):压力测试(又叫强度测试)也是一种性能测试,它在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。
(1)稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等;
(2)破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来
极限测试 Extreme testing:在过量用户下的负载测试 Hammer testing:连续执行所有能做的操作
像一般性能测试可能会发现数据库连接上的错误,代码的异常,也有可能是jmeter自身这个软件有性能瓶颈
Jmeter-plugins-manager(一个插件)
下载之后放到lib/ext下面,重启,然后就如图

1.其中Transaction per Second就是tps图,Response Time Over Time 就是平均响应时间,方便实时观察,而不是最后看查看结果树
2.一般短的压测都是相同条件压三次取平均值
3.一般很少会直接压线上,所以会有一个线上和测试的机器参数对比,有一个倍数关系,测试环境做完压测后再计算大概线上的结果
怎么确定性能指标?
1.互联网上对于用户响应时间,有一个普遍的标准,2-5-10原则
2.1.5倍峰值作为参考+服务器(内存,CPU等等)
jmeter怎么用上一个接口的结果作为下一个接口的参数(使用Json extractor)-加分点

十三.测试用例设计
这一块的东西我写个大致的范围…
登陆模块
1.功能用例
2.兼容性(app版本,操作系统版本,不同移动设备分辨率)
3.性能上(单用户的响应时间,高并发,长时间多用户登陆)
4.安全性(加密,SQL注入(通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令),脚本攻击,多设备登陆的互斥)
5.弱网(android 在fiddler下,ios通过自身的status ,下一章写)
6.UI测试
7.可用性,易用性(全键盘输入,enter,tab)
8.本地化(多语言)
还有很多,测试纸杯,电梯,购物车,支付功能(这都是我面试遇到过的)很多别的也可以考虑这些方面,反正都凭自身经验吧~~

十四.弱网测试
1.IOS
IOS平台,通过自带的开发者选项 --Network Link Conditioner, 简单的模拟各种速度的网络

2.android
Fiddler :
1.先开启网络模拟

2.开启延迟

然后编辑脚本

每上传和下载1KB的数据要延迟多少秒
Charles:
延迟设置 --选择相应的网络延迟设置或者自定义延迟–开启延迟即可


charles抓https的包:
1.安装Charles
2.电脑安装Charles证书(install charles root certificate)
3.手机安装证书(install charles root certificate on a mobile devi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值