2024最新金三银四软件测试面试题

一直以来大大小小参与过不少面试,遇到过不少坑,但是没来的及好好总结汇总下。现在把之前遇到的问题汇总下,希望以后自己能加深印象。

1、appium 怎么定位toast弹框

appium1.6以后回答需要升级u2进行定位。

2、什么是事务,知道事务提交、回滚

事务是并发控制单位,用户定义的一个操作序列。这些操作要么都做,要么都不做,是不可分割的的工作单位。通过事务,sql server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性,主要用于一些对操作过程的完整性比较高的程序。(事务的特性:原子性、一致性、隔离性、持久性)。

事务提交是提交事务的所有操作:具体来说就是将所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。

事务回滚是数据库返回到事务开始的状态;事务在运行过程中发生某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,使数据回滚到事务开始时的状态。

3、怎么进行数据库优化

 

大致是有8种方法:

a、选取最试用字段属性

b、使用连接(join)代替子查询

c、使用联合(union)来代替手动创建的临时表

d、使用事务 

e、锁定表

f、使用外键

g、使用索引

h、优化查询语句

4、什么是分布式系统架构

分布式架构系统简单的说是运行在多个处理器上的软件架构设计。分布式系统是建立在网络之上的软件系统、正是因为软件的特性,所以具有高度的内聚性和透明性。

5、linux中使用top什么命令可以查看系统详细内存

top 按 c 查看显示完整命令

6、python中列表和字典的区别,列表和元祖的区别

元祖(tuple):元祖常用小括号表示,即:(),元素加逗号,是元祖的标识。

列表(list):列表常用方括号表示,即:[],创建一个列表,只要把用逗号分隔的不同的数据项使用方括号括起来即可。

字典(dict):字典是由花括号{}来包含其数据的,花括号内包含键(key)和其对应的值(value),一对键和值成为一个项,键和值用冒号:隔开,项和项之间用逗号,隔开,空字典就是不包含任何项的字典,也可理解为空字典就是花括号内不包含任何内容,直接使用花括号{}表示

列表和字典的区别:字典的查找和插入的速度极快,不会随着key值的增加而增加,需要占用大量的内存,内存浪费多

列表和元祖的区别:元祖比列表操作速度快,对数据不可更改、可用于字符串格式化中、可作为字典的key

7、数据库中有使用过if等函数吗?

if既可以作为表达式用,也可在存储过程中作为流程控制语句使用

8、什么是脏数据?

脏数据是在临时更新(脏读)中产生,比如事务A更新了某个数据项x,但是由于某种原因,事务A出现了问题,于是要把A回滚。但是回滚之前,另一个事务读取了数据X的值(A更新后),A回滚了事务,数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”值,这就是脏数据。

9、什么是幂等性?

就是用户对同一操作发起一次请求或者多次请求的结果是一致的。不会因为多次点击二次产生副作用。简单的例子,就是支付,用户购买商品使用支付,支付扣款成功,但是返回结果的时候网络异常,此事钱已经扣了,用户再次点击,此时会产生二次扣款,结果返回成功,用户查询余额返现多扣钱了。流水记录变成了两条、这就是幂等性。

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

1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

11、安卓四大组件

activity 通过Intent进行通信
service service用于在后台完成用户指定的操作
Content provider 指定数据集提供给其他应用程序
Broadcast Receiver 对外部事件进行过滤

12、什么是多线程,

线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

13、linux中vim模式有

1、命令模式,2、编辑模式、3、末行模式

14、计算机网络模型

七层模型(应用层、表示层、会话层、传输层、网络层、数据链层、物理层)五层模型(应用层、传输层、网络层、数据链层、物理层)

15、什么是子网掩码

它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

16、如果测试时间不够,你会怎么办?

测试目前主要是产品测试和项目测试。做自己公司的产品测试,如果碰到不能按原计划完成,本着为质量负责,一般都可以申请延期。
如果是做项目,迫于合同和客户验收的压力,碰到不能按原计划完成的情况,就是项目风险了。而处理的方式基本都是“先测客户比较关心的,比较常用的功能”,保证通过客户验收,拿到项目款。分析客户验收所关心的功能点(比如客户最近几天提过什么需求,肯定要测试,因为时间短,他肯定记得),分析系统最脆弱的地方,走通所有业务流程等。而客户验收时候,不关心和不可能想到得地方可以不测试(比如系统中很多同步功能)

17、性能指标有哪些?

注册用户数、在线用户数、并发用户数、请求响应时间、事务响应时间、每秒点击数、吞吐率、业务成功率、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是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

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执行用例,testresult查看用例执行结果。

32、给你的一个测试项目,你怎么开展测试工作

在拿到项目后,在熟悉需求、原型图后不必急着去设计用例,而是先需思考下测试思路,从哪方面下手,有哪些地方需要覆盖到,支持哪些平台,有哪些不同的常用场景,是否需要考虑到稳定性、性能等等,针对项目进行大概的测试规划,再根据大概的规划去逐个细化,最后形成用例,简单来说就是:
1.明确测试任务
2.分析测试范围
3.制定测试计划和测试用例。

 33、什么是cdn?

cdn的全称是 Content Delivery Network 即内容分发网络,通俗的理解就网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度慢等问题。

  34、怎么在VI模式下删除指定数据?

1.使用ctrl+v或者v命令切换到块模式

2.然后选中需要删除的块

3.使用x命令进行删除

35、linux文件替换指定内容

表示操作的是文件,``括起来的grep命令,表示将grep命令的的结果作为操作文件。

/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个

另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

 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环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PADS9.5封装库转换为AD库

1、打开PADS Layout,File – Library,选中usr,如下图: 2、封装– 导入,选中你的 .d后缀文件(也就是PADS的封装文件),打开。 3、元件 – 新建 – PCB封装 - 分配 - 确定。 4、,选择“斜线”…

Laya2.13.3接入第三方库Socket.io

服务端: 1.新建一个文件夹,使用npm.init -y创建node工程 2.在控制台使用以下代码下载Socket.io npm install socket.io 3.创建一个app.js的文件,将以下代码填入 import { Server } from "socket.io"; import { createServer }…

Linux学习笔记3 xshell(lnmp)

xshell能连接虚拟机的前提是真机能够ping通虚拟机网址 装OpenSSL依赖文件 [rootlocalhost nginx-1.12.2]# yum -y install openssl pcre-devel 依赖检测[rootlocalhost nginx-1.12.2]# ./configure [rootlocalhost nginx-1.12.2]# yum -y install zlib [rootlocalhost n…

【腾讯云 HAI域探秘】StableDiffusionWebUI 让我找到了宫崎骏动漫里的夏天

目录 前言一、HAI二、应用场景三、构建 Stable Diffusion 模型1、新建HAI应用2、StableDiffusionWebUI(1)功能介绍(2)页面转中文(3)AI绘图① 正向提示词语② 反向提示词③ “” 、“ AND”、“|” 用法④ 权…

网络协议与 IP 编址

网络协议与 IP 编址 之前大概了解过了网络的一些基础概念,见文章: 网络基础概念。 之前简单了解OSI模型分层: TCP/IP模型OSI模型TCP/IP对等模型应用层应用层表示层应用层会话层主机到主机层传输层传输层因特网层网络层网络层网络接入层数据链…

C语言数组(下)

我希望各位可以在思考之后去看本期练习,并且在观看之后独立编写一遍,以加深理解,巩固知识点。 练习一:编写代码,演⽰多个字符从两端移动,向中间汇聚 我们依旧先上代码 //编写代码,演⽰多个字…

数据库Delete的多种用法

数据库的Delete操作是用来删除数据库中的数据记录的,它是数据库操作中的一种重要操作,能够帮助用户删除不需要的数据,以便保持数据库的整洁和高效。在使用Delete操作时,需要注意确保操作的准确性和安全性,以免误删重要…

基于 Gin 的 HTTP 中间人代理 Demo

前面实现的代理对于 HTTPS 流量是进行盲转的,也就是说直接在 TCP 连接上传输 TLS 流量,但是我们无法查看或者修改它的内容。当然了,通常来说这也是不必要的。不过对于某些场景下还是有必要的,例如使用 Fiddler 进行抓包或者监控其…

触想嵌入式工业一体机在智能垃圾分类站的应用

1、行业发展背景 根据住建部给出的目标,到2025年前,全国地级及以上城市要基本建成垃圾分类处理系统。随着垃圾分类政策在全国强制落地,终端执行层面面临的最迫切问题是垃圾分类的准确性与社会参与意愿,而这两点与垃圾分类操作的简…

CNN发展史脉络 概述图整理

CNN发展史脉络概述图整理,学习心得,供参考,错误请批评指正。 相关论文: LeNet:Handwritten Digit Recognition with a Back-Propagation Network; Gradient-Based Learning Applied to Document Recogniti…

Python 中的数学运算(Python Math)

更多资料获取 📚 个人网站:ipengtao.com Python中的math模块是数学运算的重要工具,提供了丰富的数学函数和常数。本文将深入探讨math模块的功能和用法,使您能够更好地利用Python进行数学运算。 Python的math模块是一个强大的工具…

C51--OLED

GME12864-12 OLED写入指令数据: 1、start()开始 2、slave address 存积地址:011110 xx 写入:b 0111 1000 (0x78)(R / W位置为0时,表示写入) 3、ACK 4、cotro…

操作系统———磁盘调度算法模拟

实验目的 磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘是,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。目前最成用的磁盘调度算法有先来先服务(FCFS),最短寻道时间优先&…

Spring Boot的配置文件

配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置,如数据库的连接信息,项目的启动端口,用于发现和定位问题的普通日志和异常日志等等。配置文件可以分为两类 系统使用的配置文件(系统配置文件)&#xf…

JS基础源码之手写模拟new

JS基础源码之手写模拟new 手写模拟new初步实现最终实现 手写模拟new new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。 我们先看看new实现了哪些功能: function Person (name,age){this.name name;this.age age;this.habit Games;…

开发猿的平平淡淡周末---2023/12/9

上周回顾 完成了遗留的开发任务,基本全部完成进一步了解了系统当时设计的原理熟悉了代码的重构 2023.12.9 天气晴 温度适宜 前言 小伙伴们大家好,时间很快,又来到了周末,也是一个平平淡淡的周末。上周只更了一篇博客...原…

渗透测试 | 渗透测试之信息收集

渗透测试(penetration test,pentest)是实施安全评估(即审计)的具体手段。 渗透测试可能是单独进行的一项工作,也可能是常规研发生命周期(例如,Microsoft SDLC)里 IT 安全…

Unicode编码解码

一、Unicode概述 Unicode是一种字符编码标准,旨在解决不同字符集之间的兼容性问题。它为全球所有语言提供了一种统一的编码方式,使得各种字符能够在计算机系统中正确显示和处理。Unicode字符集包含了世界上几乎所有的字符,包括中文字符、英文…

算法Day23 简单吃饭(0-1背包)

简单吃饭(0-1背包) Description Input Output Sample 代码 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int total scanner.nextInt(…

高项备考葵花宝典-项目进度管理输入、输出、工具和技术(中,很详细考试必过)

项目进度管理的目标是使项目按时完成。有效的进度管理是项目管理成功的关键之一,进度问题在项目生命周期内引起的冲突最多。 小型项目中,定义活动、排列活动顺序、估算活动持续时间及制定进度模型形成进度计划等过程的联系非常密切,可以视为一…