2024最新软件测试面试题(二)

WEB/APP性能测试

1.性能测试关注的指标是什么

1.吞吐量(Rps):每秒钟系统能够处理的请求数、任务数
2.响应时间(Rt):服务处理一个请求或一个任务的耗时
3.错误率:一批请求中结果出错的请求所占比例
4.从服务器的角度看,性能测试主要关注CPU、内存、服务器负载、网络、磁盘IO等。
5.每秒事物数(TPS)
6.内存(CPU)
7.网络(IO)
8.每秒点击数\

2.要进行性能测试,你是如何展开操作的

1.确定关键业务,关键路径;
2.确定测试的关键数据。比如并发量,响应时间,循环次数等;
3.准备测试环境,完成脚本录制或脚本开发;
4.执行测试,观察或监控输出参数,比如吞吐量,响应时间,资源占有率等;
5.对执行结果进行分析,分析性能问题。

3.怎么分析性能测试结果

1.查看聚合报告和服务器的资源使用图,检查响应时间,事务成功率,CPU,内存和IO使用率是否达到要求,如果出错率达到了总请求的3%,我们会检查是什么原因导致的,修改好后,重新测试;

2.如果出现了性能瓶颈,比如响应时间,或者CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致响应时间过长,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给代发修复,修复好了就进行回归测试。

3.查看聚合报告和服务器的资源使用图,检查响应时间,事务成功率,CPU,内存和IO使用率是否达到要求,如果出错率达到了总请求数的3%,我们会检查是什么原因导致的,修改好后,重新测试;事务通过率为100%,90%的事务响应时间不超过5秒,并发用户为1000人,CPU和内存的使用率为70%以下

4.如何判断网络是否存在瓶颈

查看在整个性能测试过程中,网络的吞吐量是多少,如果网络的吞吐量占到了服务器的70%以上,我们就认为网络存在瓶颈,通常会增加带宽或者压缩传输数据。

5.如何判断响应时间不达标

根据性能测试结果先检查看下是否是服务器带宽存在问题,如果带宽存在瓶颈,则会考虑增加带宽或者压缩传输数据,如果带宽没有问题的话,我们会从服务器上导出日志,开发一起讨论分析是哪个地方导致响应时间过长,确定问题后,就提单给开发修复,修复好了就进行回归测试。

6.如何判断CPU使用率不达标

CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致CPU使用率不达标,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试

7.项目最佳的并发用户数是多少

通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数,我们当时做到1500个并发用户的时候,查询功能的响应时间超过了性能指标2秒多,原因是有几个表的索引建得不合理导致的,重新建索引后,问题就解决了。我们当时做到1500并发用户后,就没再继续增加用户量了,

8.App常见崩溃原因

1.设备碎片化:由于设备极具多样性,App在不同的设备上可能有不同表现形式;

2.宽带限制:宽带不佳的网络对App所需的快速响应时间不够;

3.网络的变化:不同网络的切换可能会影响App的稳定性;

4.内存管理:可能内存过低,或者是授权的内存位置的使用可能会导致App失败;

5.用户过多:连续数量过多可能会导致App崩溃;

6.代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败;

7.第三方服务:广告或弹出屏幕可能会导致App崩溃。

9.弱网情况下你是如何测试的

A.2G的网速150kbps,折合下载速度15-20K/S.B=8b.g

B.3G的网速 1-6Mbps,折合下载速度120K/S-600K/S.

C.4G的网速10-100Mbps,折合下载速度1.5M/s-10M/s.

a)使用真实的SIM卡,运营上网络来进行测试。

b)通过代理的方式模拟弱网环境下进行测试(charles应延迟)

c)链接模拟弱网的热点进行测试(如360wifi助手可以设置)

1.在Charles中设置需要模拟弱网的主机和端口号

2.切换2G3G4G网络,测试客户端的容错能力(崩溃或者ANR问题)

3.还可以设置带宽、利用率、最大传输单元、不稳定性范围等参数模拟不同的网络环境,测试客户端的容错能力

10.测试手机兼容性如何测试的

一般测试手机兼容性的时候会考虑到手机的型号,分辨率以及安卓版本号,一般常用的手机型号如:华为,锤子,小米,魅族等,一般碎片化会严重,从Android6.0到Android10.0的版本是不一样的,而最近的版本号已经到10了,也就是AndroidQ,它是协助开发者利用5G,折叠屏,无框屏,设备内置Al等最新技术继续创新,同时确保用户安全,隐私及数字健康。向分辨率这块大部分是19201080,还有好多的分变率,如7201280,还有大的分辨率,都要考虑兼容,不然的话手机视觉体验就会不太好,一般会买真机去测。

11.压力测试与负载测试的区别

1.负载测试 背10个人跑

2.压力测试 背一个 在背一个 在背一个

12.你是如何篡改请求数据的

1.我使用的是Charles进行篡改响应数据的

2.在配置好代理以后,抓取对应想要测试的接口,对该接口设置断点

3.再次进入这个请求,断点停留在当前的接口位置,点击下一步(excute)

4.在顶部点击Edit request修改请求数据,再次点击excute

5.查看接口放回的相应数据是否和对应错误参数的提示一致,是否有异常数值

13.App提示无法连接网络,你会如何排查

1.首先看其他app能否连接网络,如果也连不上就是网络问题

2接着切换流量,wifi,热点,几种网络之间来回切换,如果在流量下访问不到,就是欠费啦

3.接着在排查wifi是否设置了代理,如果开了代理就通过抓包工具看看请求响应是否正常,如果没有响应或者400 404之类的就是后端问题 如果抓不到包就是代理配置有问题或者https证书问题



ADB命令

1.说几个常见的adb命令

  • 查看当前连接设备:adb devices

  • 查看日志:adb logcat

  • 安装apk文件:adb install -r (apk的绝对路径)

  • 卸载App: adb uninstall 包名 adb uninstall -k 包名 (保存配置及缓存文件)

  • 列出所有的包名: adb shell pm list package

  • 列出第三方的包名: adb shell pm list package - 3

  • 列出系统应用的包名: adb shell pm list package - s

  • 查看手机内存的命令: adb shell dumpsys meminfo 包名

  • 启动: adb start server

  • 关闭: adb kill-server

  • adb logcat . 日志级别 V Verbose 最低 D Debug bug I Info 信息 W Warn 警告 E Error 错误 F Fatal 致命S Silent (supress all output) adb install -r xx.apk 覆盖低版本的

adb install -r -d 覆盖高版本的

2.性能测试的adb命令

adb shell dumpsys cpuinfo 查看手机cpu的使用情况
adb shell getprop|findstr dalvik 手机系统自己运行的内存使用



Monkey命令

1.说几个monkey指令

  • 打印日志的命令: adb shell monkey 200 >d: / monkeylog. txt

  • 触摸事件:--pct-touch

  • 动作事件:--pct-motion

  • 轨迹事件:--pct-tackball

  • 系统按键:--pct-sykeys

  • 基本导航:--pct-nav

  • 主要导航:--pct-majornav

  • 启动事件:--pct-qppswitch

  • 指定弹窗事件:--pct-flip

  • 指定其他事件:--pct-anyevent

  • 指定缩放事件:--pct-pinchzoom

  • 忽略崩溃:--ignore-crashes

  • 忽略超时:--ignore-timeouts

  • 忽略许可异常:--ignore-security-exeptions

  • 延时:--throttle

  • adb shell monkey -p com.sxxh.linghuo -s 23 --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 400



postman

1.postman与jmeter的区别是什么?

1.用例组织不同:jmeter的组织是比较偏扁平,首先它没有工作空间的概念,直接就是测试计划,而postman功能上更简单,组织方式是轻量级,他主要针对的是单个的http请求。 

2.支持接口的类型与测试的类型不同:jmeter的功能更强大,可以通过各种类型的接口,不支持的页可以通过网上或者自己编写的插件进行扩展,而postman更轻量级,定位不同,可用来测试rest接口。 

3.配置不同:jmeter可以在线程组里添加http,tcp,而postman只支持rest接口。

2.postman做接口测试

1.postman上将接口地址 传参方式以及参数写在对应的输入框里面 点击send按钮 会在下面reponse文本框显示返回的数据是以json凡是返回来的,这个 时候我们会对应接口文档 惊醒正返例数据的填写 对比接口文档查看数据是否符合标准 2.创建项目》选择请求方式》输入接口地址》配置参数名以及参数值》send按钮》看看是否有返回数据

3.postman配置测试环境

  • 1:在Postman中设置两个环境,本地环境、测试环境

  • 2:在两个环境中分别设置变量名为 base_url的变量,存放各自环境的IP地址

Postman 中获取环境变量值的方式为:{{变量名}},这样就可以获取变量值。

这里base_url的值获取方式就是:{{base_url}}

  • 3:在Postman的URL地址栏中设置 为 {{base_url}}/login

  • 4:切换不同的环境,base_url的值就会发生改变,这样就达到了IP地址切换的效果。

4.postman中如何实现接口之间的关联

获取响应文本,通过json提取器或正则表达式提取相关参数,下一个接口直接引用定义的参数

如何取

第一个接口tests中用pm.response.json() 获取所有返回值,根据自己的需要取,用pm.globals.set(变量名,取数据的表达式) 定义为全局变量

如何用

在第二个接口中直接用{{变量名}} 引用即可



Mysql数据库

1.Mysql数据库查询语句有哪些/多表联查

数据库语言最常用的是SQL
多表联查:select * from table1 t1,table2 t2 where tl.id=t2.id
这样就是多表联查。
left join
right join
inner join

2.Mysql数据库的增删改查

:alter table 数据表名 add birthday datetime;

:alter table 表名 drop 列名;

1.修改字段,不重命名,用modify alter table 数据表名 modify birthday date;

2.修改字段,重命名,用change alter table 表名 change 原名 新名 类型及约束 alter table 数据表名 change birthday birth date;

:查询表使用数据 select * from 表名;

部分查询 select * from 表名 where 条件;

可以使用as 为列表指定别名 select 字段 as 别名,字段 as 别名 from 数据表名 where…;

3.sql内关联和内关联的区别

内关联是求交集 外关联是以主表为标准,去附表找需要的信息

4.熟悉数据库嘛 平时数据库用的多吗

还行,一般出现问题,遇到bug,就要去查询数据库,初步定为问题。开发会给到我们一个库表设计的excel(数据字典),里面有描述表名和表中的字段,我把交易过程的一些唯一标识,把他作为where条件去查询数据。初步分析后,再把问题暴露给开发。

(比如做智联项目支付时,输入支付密码后,已经返回了支付成功的提示信息,然后界面上的订单查询还是待付款,这个时候就要去查询订单表的数据,找到自己刚才做的交易的那一笔订单,去分析一下错误,再暴露给开发


Jmeter

1.Jmeter是如何测试的,如何使用的

1.打开jmeter;
2.创建线程组;
3.设置线程数和循环次数;
4.配置元件;
5.配置我们需要进行测试的程序协议、地址和端口;
6.构造http请求;
7.添加http请求头;
8.添加断言;
9.添加查看结果树;
10.添加Summary Report;
11.执行测试计划,执行测试计划不能用GUI,需要用命令来执行;
12.web报告。

2.jmeter连接数据库

1.在jmeter的线程组中分别添加JDBC Connection ConfigConfiguration 、JDBC Request 、 Debug Sampler 、 查看结果数。
2.在测试计划中将连接mysql需要的包加到classpath中。
3.在JDBC Connection Configuration 中添加JDBC的配置。

3.jmeter为什么要参数化

1,多用户登录的时候,如果不进行参数化就没演示了。

2,需要使用CSV将参数放到文件,来演示多用户登陆。

3,在进行录制的时候,有可能存在第二个请求的参数是从第一个请求中获取出来的,需要在第一个请求下,去将参数提取出来,再到第二个请求中进行参数化。

4.jmeter如何进行压力测试

我们在公司大部分是进行的数据库压测以及接口压测

创建线程组设置循环次数创建http请求添加查看结果数和聚合报告

jmeter设置线程数 启动时间 循环次数运行 检查并保存运行数据 判断是否需要优化

5.jmeter的接口测试是怎么做的

1.把线程组设置数量为1,循环次数为1

2.配置好全局变量URL通过配置元件---用户自定义的变量添加

3.增加配置元件http请求默认值,添加事物控制器

4.在事物控制中添加http请求添加接口请求信息

5.添加对应的断言元件进行断言

6.监听器(查看结果树,图形结果,聚合报告等)

6.jmeter中的关联是怎么做的

我们的一个接口,需要另外一个接口,响应里边的某个参数 会用jmeter中提取方法,常用的四种方法 边界提取器 xpath提取器 beanshel

1. 正则表达式提取器

解决方案分析 1. 测试计划->线程组
2. 线程组->HTTP请求(获取title)
3. 获取title->后置处理器->正则表示式提取器
4. 线程组->HTTP请求(使用title)
5. 测试计划->察看结果树

2XPath Extractor

解决方案分析 1. 测试计划->线程组
2. 线程组->HTTP请求(获取title)
3. 获取title->后置处理器->XPath Extractor
4. 线程组->HTTP请求(使用title)
5. 测试计划->察看结果树



Linux

1.Linux系统操作的指令增加 删除 复制 移动等

Cd:进入目录

Cd app:切换到app目录

Cd.. :切换到上一层目录

Cd/ : 切换到系统根目录

Ifconfig :查看ip

Ll:查看文件及其属性

Vi: 编辑

Rm-rf: 删除

Cp:复制

Mv 隐藏文件

Ls -d只显示隐藏文件

Pwd:显示当前路径

Mv:移动

Df 磁盘空间

Touch:创建文件

Ps:查看进程

cat /proc/cpuinfo:查看CPU信息

2.Linux查看日志命令

1.Tail【参数】【文件】

tail -f info.log  : 动态查看实时输出info.log日志

tail -n 200 info.log: 查看info.log日志后200行

tail -f info.log | grep  "orderId": 动态查看含有关键字orderId的日志

2.Cat

cat info.log:查看info.log的全部日志内容

cat info.log | grep "java":查看info.log的java关键字关联的全部内容

cat info.log | grep -A 5 "java":查看info.log的java关键字后5行关联的全部内容

cat info.log | grep -B 10 "java":查看info.log的java关键字前10行关联的全部内容

cat info.log | grep -C 20 "java":查看info.log的java关键字前后20行关联的全部内容

3.Less

less info.log :从头开始查看info.log日志内容

4.More

more info.log: 查看info.log的日志内容,按下方附加操作滚动日志内容

more info.log |grep "test": 查看全部关键字test关联内容

5.Head

head -n 20 info.log: 查看info.log日志的前20行内容

3.Linux系统日志查看指令,压缩,解压指令等问题

tar -xvf 文件名 :解压

Tar -n logcat 查看系统日志

tar -zcvf 文件名:压缩

4.Linux 中 find和grep的区别

grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式进行匹配查找。语法: find 查找位置 文件名或目录名

find是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间 语法:grep 字符串 文件名

5.Linux 一个文件的访问权限是755,其含义是什么

1、第一位7,代表文件所有者拥有的权限为可读

2、第二位5,代表文件所有者同组用户的权限为可读

3、第三位5,代表公共用户的权限为可读

6.linux查看文件用什么命令 查看进程用什么命令

查看进程:ps -ef | grep 进程号
查看文件内容的命令有 more less head tail cat
查看日志文件常用:less、view

7.查看日志主要查看什么内容

主要查看程序运行的记录,比如支付失败,后台就有报错信息打印到.log日志文件中,就可以通过分析日志信息来初步定为问题。(补充:同时也去查询数据库,分析订单数据,查看支付状态等等)

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值