性能面试题目
第二部分 loadrunner 部分
1、 性能测试的目的是什么?
识别系统的弱点,评估系统能力,发现系统性能瓶颈,提高系统可靠性能和稳定性
2、 常见的性能测试方法有哪些?
a.负载测试:就是一步一步逐渐增加用户数的测试
b.压力测试:负载一定的情况下持续运行一段时间
c.性能测试
性能测试包括上面两项,且持续运行一段时间
3、 Loadrunner 由哪三部分组成,各个功能分别是什么?
loadrunner 分为脚本生成器,场景控制器,结果分析器三个部分。LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。
4、 Loadrunner 调试的时候,日志级别分别是什么?
分为标准日志和拓展日志,默认为标准日志,但是我们往往需要拓展日志,如果需要打开,可以通过runtime settings-->log-->extended log
5、 简述 loadrunner 的工作原理
用户在脚本生成器中生成客户端和服务端的协议交互的脚本,然后在场景控制器中模拟场景,模拟一定数量的用户,对服务器产生压力,同时对被测试系统涉及的操作系统,数据库,中间件等资源进行监控,收集压力情况下的资源信息,测试结束后形成测试结果和监控数据,在结果分析器中进行分析,最后胜出测试结果报告
6、 Loadrunner 脚本中 action()和 init(),end()的区别是什么?
可以将它们理解为三个大的事务,你可以把你想要的任何操作,放在它们里面,然后action可以有多个并且重命名
int开头的脚本,通常可以放用户登录时候的脚本
action操作间的脚本,通常防止一些操作事件
end结束时的脚本,通常是退出脚本
但是需要注意的是int 和end 不能迭代多次,只能运行一次,action可以运行多次
7、 使用检查点的目的是什么?
检查页面跳转或者用户登录是否正确,因为LR向服务器发送请求,只要能发送,就认为 是成功,不会判断返回的结果是否正确,这个时候我们需要加入 检查点来判断是否正确,常用的四种检查点函数有web_find(),web_reg_find(),web_img_check()以及web_global_verification()
8、 关联函数是哪个?为啥要做关联?做关联的步骤是什么?
关联函数有:web_reg_save_param(),Web_reg_save_param_ex(),
所谓的关联就是把脚本中某些写死的(hard-coded)数据,转变成是取自服务器所送的、动态的、每次都不一样的数据。如果不做关联的话,会报错
回放脚本发现每次执行到那一步报错,通过观察发现那是一个动态值(需要打开拓展日志)
知道该动态值的左边界固定值与右边界固定值,然后添加关联函数,写入左右边界值,即可成功添加关联,记住关联要放在请求之前
9、 参数化的作用是什么?结合场景完成造数据
实现多个用户使用一套脚本,给服务器造成的事实就是多个用户同时在访问系统,就是并发,实际情况中很多项目是不允许同一个用户登录多次的,所以需要参数化,更接近于显示场景
好比对用户的登录名做参数化,可以先从 数据库中找到登录用户名,然后参数化的部分右键,然后选择参数化,选择文件参数化,点击确认,最后将数据库用户登录名拷贝到该参数化文件中
10、 当接口里面用到了需要 java 代码实现的签名值(sign),怎么转换成 loadrunner 完成性能测试脚本?
1.在idea工具中新建一个项目lemon1,且创建对应的包为testmd5
2.可以由开发提供算法,以及调用,也可以由开发给算法,自己编写调用方法,本例中为MD5.java,且将文件导入到testmd5下
3.post与get算法封装方法文件,本来中为HttpClientRequest.java,且将文件导入到testmd5下
4.导入包
5.创建主要测试脚本,本例中创建的脚本名字为TestPayPasswdMd5:并对文件进编辑(这一步很关键)
6.打包,将MD5打包成jar文件MD5.jar
7.loadrunner中新建java Vusers协议脚本,导入Run-time Settings 中导入lib包,jdk中dt.jar与tool.jar,以及刚刚打的加密算法jar包
8.将idea工具中刚编写的脚本贴入到Actions文件中
9.再加上if对事务进行判断是否正确
11、 在性能测试过程中发现了什么问题?
tps低,响应时间高
12、 当发现这些问题的时候,是怎么去定位的?
当tps低,响应时间高时,性能数据图标分析(将两个数据组合在一张图标中查看数据):
步骤:
1.查看服务器的资源使用情况,这个时候如果user%CPU高,定位到哪个进程
2.查看服务器资源的使用情况,发现系统资源占用很低:
可能的原因
1)查看网络情况,最直接的方法:在本机ping服务器地址,如输入:ping 192.168.68.133 -t,看是否存在丢包
最好在同一个网络端做性能测试,使用千兆网卡
2)客户端请求有无发出去,本机的性能情况
3)连接数:分Tomcat应用的连接数,Tomcat连接数据库的连接数以及数据库本身的连接数
第三部分:Linux
1、 下面哪个 Linux 命令可以一次显示一页内容? C
A.pause B. cat C. more D. grep
备注:page :page不能对文件操作,只有man指令用manpage页面。
cat :查看文件内容,一次显示全部文件内容。
more :分页显示文件内容;space翻页。
grep :在文件中搜寻与指定字串匹配的行并输出;配合正则表达式和通配符使用。
2. 怎么更改一个文件的权限设置? B
A.attrib B.chmod C. change D.file
3. 下面哪条命令可以把 f1.txt 复制为 f2.txt? C
A.cp f1.txt | f2.txt B. cat f1.txt|f2.txt C.cat f1.txt>f2.txt D.copy f1.txt | f2.txt
4. 显示一个文件最后几行的命令是? B
A. tac B.tail C.rear D.last
5. 如何切换到用户 make 用户下? B
A.cd @make B.su – make C.su &make D.cd #make
6、如何在文件中查找显示所有以“*”开头的行? D
A.find \* file B.wc -l * < file C.grep -n * file D.grep ‘^\*’ file
7. 在 ps 命令中什么参数是用来显示所有用户的进程的? A
A.a B. b C.u D. x
8、如何删除一个非空子目录/tmp? B
A.del /tmp/* B.rm -rf /tmp C.rm -Ra /tmp/* D.rm -rf /tmp/*
9、在 Linux 系统中的脚本文件一般以什么开头? B
A.$/bin/sh B.#!/bin/sh C. use /bin/sh D.set shell=/bin/sh
10、在 vi 命令中,先要输入什么进行编辑状态? D
A.b B.a C.g D.i
11、在 vi 中退出不保存的命令是? D
A. :q B. :w C. :wq D:q!
12、在 vi 中退出保存的命令是? C
A. :q B. :w C. :wq D:q!
13、使用什么命令检测基本网络连接? A
A.ping B. route C. netstat D.ifconfig
14、什么命令解压缩 tar 文件? B
A.tar -zcvf filename.tar.gz B.tar -zxvf filename.tar.gz C.tar -tzvf filename.tar.gz D.tar -dzvf filename.tar.gz
15、对 top,iostat,vmstat,sar 命令进行解释
top:命令动态展示系统整体资源和各个进程资源占用情况,是linux下常用的性能分析工具
iostat:用于输出CPU和磁盘I/O相关的统计信息
vmstat:命令主要是对操作系统的虚拟内存、进程、I/O读取、CPU活动等整体情况进程统计,但是它不会对某个进程进行深入分析
sar:主要用于收集并统计系统资源的新秀,包括CPU、I/O、内存、网卡流量等
16、干净的 linux 环境 2 套,可以直接从原来安装好的 Linux 复制出 来一份
已经安装好2个linux
17、在一套上面安装好 Tomcat,并且能够访问比如:输入 ip+默认端 口(8080),看到 Tomcat 欢迎信息
将tomcat压缩包下载到linux系统中,并解压,进入到conf文件夹下修改server.xml,根据需要修改端口,改变端口之后记得在防火墙文件/etc/sysconfig/iptables添加相应端口,并重启防火墙,之后进入tomcat的bin目录,使用./startup.sh
18、在另外一套上面安装 MySQL 服务,源码安装,安装包网盘: mysql-5.6.13.tar.gz 19、安装好 Nginx+Tomcat 集群,并且刷新 ip 地址会访问到不同的 Tomcat
mysql已经安装成功
Nginx安装成功
两个tomcat启动成功没端口分别是8080和9999,修改了9999对应tomcat下webapps/ROOT/index.jsp文件的以作为区分
<div id="congrats" class="curved container">
<h2>Hello,Alice.……Tomcat2</h2>
</div>