2024最新金三银四软件测试面试题
一直以来参加了许多场面试和的经历中遇到了不少问题和教训(可惜没有及时地进行总结和梳理)。现在就将之前遇到的问题整理一下,并希望能够以此加深自己的印象)。
1、appium 怎么定位toast弹框
appium1.6以后回答需要升级u2进行定位。
2、什么是事务,知道事务提交、回滚
在数据库系统中,事务被视为一个独立的执行单位。它代表了由用户定义的一系列操作步骤,并且这些步骤必须全部完成或全部取消以形成不可分割的整体工作单元。通过事务机制的应用,在MySQL中实现了将相互关联的一组数据库操作整合为一个整体处理单位,并确保在发生错误时整个处理不会部分成功而部分失败的能力。具体而言,在MySQL中实现的事务具备以下核心特性:一是原子性(Atomicity),确保整个交易作为一个整体进行;二是一致性(Consistency),保证所有参与者看到的数据状态一致;三是隔离性(Isolation),防止不适当的数据可见性和修改冲突;四是持久性(Durability),确保一旦提交就无法被 roll back。
- 事务提交涉及提交事务的所有操作:具体而言就是将所有对数据库的更新重写回磁盘上的物理数据库,并且在交易完成后正常地完成。
- 事务提交包括提交事务的所有操作:具体而言就是将所有对数据库的更新存回磁盘上的物理数据库,并且在交易结束后正常地完成。
- 事务提交涵盖提交事务的所有操作:具体来说就是将所有对数据库的更新重写到磁盘上的物理数据库中,并且在交易成功后正常地完成。
- 事物提交涵盖执行全部 submit 操作:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库中,并且当该事物执行完毕后就会自然地结束了。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库中,并且当该事物执行完毕后就会自然地结束了。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库中并以自然的方式结束该事物。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库并以自然的方式结束该事物。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库并以自然的方式结束该事物。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库并以自然的方式结束该事物。
- 所有关于事物提交的操作都是指那些执行全部 submit 操作的事物:即把所有的针对数据库的操作结果保存到磁盘上真实的物理数据库并以自然的方式结束该事物。
当发生回滚时,数据库恢复至初始状态;当遇到故障时(即无法继续执行),系统会取消所有已完成的操作(即更新记录),从而导致数据恢复至最初状态
3、怎么进行数据库优化
大致是有8种方法:
a、选取最试用字段属性
b、使用连接(join)代替子查询
c、使用联合(union)来代替手动创建的临时表
d、使用事务
e、锁定表
f、使用外键
g、使用索引
h、优化查询语句
4、什么是分布式系统架构
分布式架构系统主要基于运行在多个处理器上的软件架构设计。分布式系统依附于网络而存在,并且由于其固有的属性而展现出极强的内聚性和透明性。
5、linux中使用top什么命令可以查看系统详细内存
top 按 c 查看显示完整命令
6、python中列表和字典的区别,列表和元祖的区别
元祖(tuple):元祖常用小括号表示,即:(),元素加逗号,是元祖的标识。
列表(list):通常使用方括号来表示列表结构(即: []),其基本操作包括创建与管理列表内容。要生成一个列表,请按照以下步骤进行操作:首先输入方括号包围的内容;然后将需要包含的具体数据项用逗号分隔开来;最后将每个数据项具体化为字符串、数字或其他可识别类型的元素即可完成创建
字典(dict)是一种通过花括号{}存储数据的数据结构。
在花括号内部定义键值对,则包含了键及其对应的数据。
每个键值对都是一个独立的项。
各项之间由逗号分隔。
空字典则没有任何键值对。
也可以视为无内容状态下的数据结构。
可以直接用{}来初始化一个空字典。
列表和字典的区别:在Python中,字典(dictionary)的搜索和添加操作效率极高,不受键数量变化的影响;然而,在实际应用中使用字典可能会导致内存消耗显著增加。需要注意的是,这种数据结构可能会占用较高的内存资源。
元祖与列表的主要区别在于其操作速度上的显著差异;不可更改性使得元祖在数据处理方面具有独特的优势;另外,在字符串格式化操作中表现出了更高的效率;此外,在字典中通常可以直接使用作键值存储
7、数据库中有使用过if等函数吗?
if既可以作为表达式用,也可在存储过程中作为流程控制语句使用
8、什么是脏数据?
脏数据源于所谓的“脏读”行为。例如,在这种情况下,“事务A”修改了一个特定的数据字段。但因发生了不可预见的问题,“事务A”会被系统尝试性地回滚。“其他事务”在此期间先访问了修改后的“数据X”字段,在尝试回滚“事务A”的过程中,“data X”的暂时性记录被保存下来。“而‘事务B’则直接获得了这个临时值”,因此形成了所谓的“脏数据”现象。
9、什么是幂等性?
即当用户对同一操作发起一次请求或多次请求时,返回结果保持一致。无论是否发生网络异常等情况,在此情况下也不会产生副作用。例如,在支付商品交易中,用户在购买商品时使用支付方式完成交易后正常情况下的处理流程是:支付扣款成功但因网络异常导致的返回结果会使得资金已被扣除;而如果此时用户的点击行为被误判为重复操作,则会导致再次扣款并最终仍能获得处理成功。最终的处理记录显示两次扣款的情况这正是幂等性的体现
我目前有一个程序,在Windows操作系统上运行速度较慢。如何分析判断该问题是由程序本身存在故障还是软件和硬件系统共同导致的?
1、判断系统的安全性是否存在异常迹象;
2、评估软件及硬件配置是否达到推荐要求;
3、核查当前系统的独立性及其对外提供的服务需求;
4、如果是基于C/S或B/S架构的应用程序,在服务器连接或访问出现异常时可能导致问题;
5、在低负载状态下运行性能监控工具,并评估应用程序对CPU和内存资源的需求。
11、安卓四大组件
activity 基于intent实现通信机制
该服务负责在后台执行用户指示的任务
content provider负责将选定的数据集分发给相关应用程序
broadcast receiver充当过滤器角色以处理外部事件
12、什么是多线程,
Thread represents a single sequential control flow within a program. In a single application, running multiple threads to process various tasks is referred to as multi-threaded programming.
13、linux中vim模式有
1、命令模式,2、编辑模式、3、末行模式
14、计算机网络模型
七层级架构(涉及:业务层面、通信层面及对话层面)与五层级结构(涵盖:业务层面及通信层面)
15、什么是子网掩码
它是一种用于标识一个IP地址中哪些位表示主机所属的子网以及哪些位表示主机的位掩码的信息结构。这种技术要求在应用时必须同时提供有效的IP地址才能发挥作用。这种机制的独特功能在于通过结合网络接口设备实现对数据流量的有效分类与管理。
16、如果测试时间不够,你会怎么办?
进行公司内部的产品测试工作时,在遇到无法按时完成任务的情况时(如若无法按计划完成),需本着对产品质量负责的态度进行延期处理。
这些应对措施主要包括:优先测试客户关注的、功能较为关键的部分;通过确保所有业务流程顺利运行(最终能获得项目款项)。
具体实施时,则需重点分析以下几点:一是分析客户最近关注的功能需求;二是排查系统中最薄弱的部分;三是确保所有业务流程能够正常运转等。
17、性能指标有哪些?
新增用户数量、实时用户数量、同时在线用户数量、单次应答耗时、单笔处理耗时、每秒操作次数(OPC)、吞吐量(TPS, 每秒事务处理量)以及业务成功完成率等关键指标包括:资源使用效率(CPU)、内存占用量以及网络带宽等
18、什么是接口?
传递数据的通道就叫接口
19、测试的基本6大法则
功能性、可靠性、效率性、可移植性、可维护性、易用性
20、接口测试测哪些东西
a、通过性验证
b、参数组合
c、接口安全
d、异常验证
e、根据业务逻辑来设计测试用例
21、用fiddler抓包时怎么制造异常情况;
通过请求前打断点,可以修改请求参数
22、 什么是mq,mq的特点是什么?
把要传输的数据放在队列中保存消息的容器.
mq的特点是:异步、解耦、广播、流控与销峰
23、怎么保证软件测试质量
测试人员需要做的工作
测试策略的设计: 产品质量呈现多样性,并非单一指标所能全面衡量
多种不同的功能特性需通过相应的检测手段进行评估
通过系统性的方法整合各维度的关键指标
用例质量: 采用合适的用例方法、如何进行需求分析、用例评审
执行质量: 保证执行深度(界面、关联模块、数据库、日志)与广度(系统测试类型)
缺陷质量:bug评审,引入合适的bug流程
过程质量:合理的软件测试流程,测试过程监控
24、android和ios系统测试的不同点
1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
2、多分辨率测试,Android端20多种,ios较少;
3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
4、操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
5、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
6、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有appstore,iTunes和testflight下载;
7、升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)
25、使用中间件,中间件的作用!
详细说明中指出,在引入中间件后,并非直接暴露底层操作系统的技术细节。相反地,在此之上构建了一个更为直观且易于使用的开发界面。这不仅简化了系统实现的过程,并且让我们能够专注于核心业务逻辑。此外,在避免了因跨平台部署而导致的各种技术和维护挑战的同时,并显著降低了整体的技术实现成本
26、什么是orm(对象关系映射)
解决面向对象技术与关系型数据库之间的不匹配问题的技术,在ORM(Object-Relational Mapping)中实现了一种简明的方式来描述对象及其与数据库之间的映射关系,并实现了程序中的对象实例能够自动地被持久化存储到对应的关系型数据库中。
27、使用什么命令实现查看app手机内存
adb shell dumpsys meminfo 包名(com.mbox.cn)
28、什么是ANR(applicaton not responding)
29、APP日志分析查找关键字 crash ANR Exception ERROR force closed
30、多线程: 线程可被视为程序中独立执行的一系列有序操作.通过多线程技术,可以在同一台计算机上实现多个任务的并行处理,从而提高系统的处理效率.
31、unittest工作原理
应用testcase进行单元测试;在testsuit中加载测试案例;利用testrunner运行各测试案例;获取各测试案例的运行结果
32、给你的一个测试项目,你怎么开展测试工作
在完成对项目的理解并熟悉其需求与原型图之后,在开始设计具体用例之前,请先思考整体的测试思路:可以从哪些方面入手?有哪些关键点需要涵盖?支持哪些常见平台?涉及哪些典型应用场景?是否需要考虑系统的稳定性与性能等关键因素?基于以上分析制定初步的测试规划方案;然后根据初步方案逐步细化到具体的实施步骤中去。依次是:1)明确具体的测试目标;2)全面分析待测系统的功能需求;3)制定完整的测试计划并设计相应的用例。
33、什么是cdn?
CDN的缩写形式为Content Delivery Network(CDN),其全称为内容分发网络。从通俗易懂的角度来看,则主要功能包括加快网站加载速度以及均衡分配服务器负载。这种技术能够有效应对因跨运营商、不同地区的网络环境而产生的网站加载缓慢的问题。
34、怎么在VI模式下删除指定数据?
1.使用ctrl+v或者v命令切换到块模式
2.然后选中需要删除的块
3.使用x命令进行删除
35、linux文件替换指定内容
操作基于的是文件;在``括起来的grep命令中所包含的内容被用作操作文件的基础。
用于定位并替换了yyyy内容的标记语法,在处理同一行中的多个yyyy时(其中g指示全部进行替换而非仅限于首次出现)。
此外,在无需搜索子目录的情况下,则只需在此目录内进行替换操作即可实现目标功能

36、怎么查看linux下面的端口号
netstat -anp |grep 端口号
37、进程、线程、协程的区别
1、一个程序至少有一个进程,一个进程至少有一个线程
2、线程的划分尺度小于进程(资源比进程少),使得多线程程序并发性高
3、进程在执行过程中具备专有的内存单元,在这种情况下多个线程可共用内存空间,并因此使得程序的整体运行效率得以显著提升。
4、线程不能独立运行,必须依存于进程中
5、一个线程可以多个协程,一个进程也可以单独拥有多个协程
6、线程进程都是同步机制,协程是异步机制
38、http协议与websocket协议的区别
HTTP协议:每次都需要客户端进行定期查询于服务器以请求数据,并由服务器在之后发送给客户端
websocket协议:支持服务端发起对客户端的数据推送操作,在浏览器与服务器之间只需完成一次端到端通信初始化过程即可建立持续性的连接,并实现双向的数据传输。
保持持续保持着连接的状态:与HTTP相比,在WebSocket中必须首先建立一个连接才能实现数据传输;这种机制使它成为一个基于会话的状态协议,在后续的数据传输中仅需传输少量的状态信息;相比之下,在HTTP中每个请求都需要携带完整的上下文信息
39、 性能测试通常需要监控的指标包括:
1.服务器Linux(包括CPU、Memory、Load、I/O)。
2.数据库:1.Mysql 2.Oracle(缓存命中、索引、单条SQL性能、数据库[/url]线程数、数据池连接数)。
3.中间件:1.Jboss 2. Apache(包括线程数、连接数、日志)。
4.网络: 吞吐量、吞吐率。
5.应用: jvm内存、日志、Full GC频率。
6.监控工具(LoadRunner[/url]):用户执行情况、场景状态、事务响应时间、TPS等。
7.测试机资源:CPU、Memory、网络、磁盘空间。
40、监控工具
性能测试通常采用下列工具进行监控:
1.Profiler。一个记录log的类,阿里巴巴集团自主开发,嵌入到应用代码中使用。
2.Jstat。监控java[/url]进程GC情况,判断GC是否正常。
3.JConsole。监控java内存、java CPU使用率、线程执行情况等,需要在JVM参数中进行配置。
4.JMap。监控java程序是否有内存泄漏,需要配合eclipse插件或者MemoryAnalyzer来使用。
5.JProfiler。全面监控每个节点的CPU使用率、内存使用率、响应时间累计值、线程执行情况等,需要在JVM参数中进行配置。
6.Nmon。全面监控linux系统资源使用情况,包括CPU、内存、I/O等,可独立于应用监控。
7.Valgrind。监控C/C++程序是否存在内存泄漏,基于linux环境。
8.Vmmap和ApplicationVerifier。监控C/C++程序是否存在内存泄漏,基于windows环境。


