找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

多测试课程学习内容:jmeter第一天

[复制链接]
jmeter接口自动化,接口性能测试
市面上流行的性能测试工具
jmeter--轻量级的,由Java语言编写的
loadrunner--重量级的,商业化(使用它比较全面的功能是需要收费的)
一、什么叫做性能测试?(目前企业更多的关注的是接口性能)
1、软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,所有一般我们性能测试介入的时间点是在功能测试之后。另外,由我们的定义可知性能是一种指标,可以用时间或者其他指标来衡量,通常我们性能测试会使用某些工具或者某些手段来检验软件的性能指标(性能指标在需求中会有明确的规定,也有可能是单独存在的一个性能需求文档)是否达到了系统要求,这就是性能测试。

2、指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下各种对系统进行测试,来验证是否达到各项性能指标。

3、为什么要进行性能测试?
a.评估系统的能力
b.验证系统的稳定性和可靠性
c.职别系统中的弱点
d.系统调优(性能测试的重点就是性能调优)
针对我们以上的这几点,针对不同的结果,给出不同的应对措施和方案,这个才是我们性能测试的最终目的

1)测试中得到的负荷和响应时间数据可以被用来验证我们模块的能力
2)受控的负荷可以被增加到一个极端的水平,并突破它,从而修复系统的瓶颈或者薄弱的地方
3)重复运行测试,验证调整系统的活动得到的预期的结果,从而改进性能
4)检测软件中的问题:长时间的测试执行可导致程序发生内存泄露引起的失败,找到我们软件中隐藏的问题
5)在一个生产负荷下执行一段时间是评估我们系统稳定性和可靠性是否满足要求的唯一方法

三、性能测试的流程有哪些?
1、需求分析
2、性能测试场景的设计
3、性能测试计划的编写
4、脚本开发
5、性能环境和数据的准备
6、性能的执行
7、性能结果分析
8、性能总结报告

四、性能测试结束后需要提交哪些文件?
1、性能的测试计划
2、性能测试脚本
3、性能结果分析---  根据分析结果给出调优方法
4、性能的总结报告

五、性能测试的类型
1、基准测试:在给系统施加较低压力时,查看系统的运行状态情况并记录相关数据作为基础参考

2、负载测试:是指对系统不断地增加压力或者在一定的增加压力下的持续时间,直到系统某项或者多项性能指标到达我们系统的安全临界值

3、压力测试:压力测试是评估系统处于或者是超过预期负载时系统运行情况,关注点在于系统在峰值负载或者是超过峰值负载的情况下处理事务的能力

4、稳定性测试(强度测试):在系统加载一定业务压力的情况下,使系统运行一段时间(一般时间在8小时以上),以此检测系统是否稳定

5、并发测试:测试多个用户同时访问同一个应用(功能)、同一个模块或者数据记录时是否存在死锁或者其他问题。

六、性能测试常见的测试工具以及他们的区别?
1.jmeter是什么?
jmeter性能测试工具是apche组织开发的基于Java语言开发的压力测试工具

2.jmeter的特点
1)jmeter可以对http和ftp服务器进行压力测试,同时还可以对数据库进行测试以及接口测试(接口性能测试)
2)完全移植和100%的纯Java
3)可以实现多线程的并发
4)jmeter支持大量的第三方插件的扩展
3.jmeter工作原理
1)前期我们需要录制好性能测试脚本---通过badboy工具进行录制
2)导入jmeter工具进行完善脚本
3)对服务器进行性能测试

4.jmeter的缺点
jmeter的缺点是压力值不能精确控制,难以适应高并发的情况,而且由于是Java编写的,本身比较消耗资源

5、jmeter和loadrunner的区别

loadrunner是一种预测系统行为和性能的负载测试工具;通过模拟上千万用户实施并发负载以及实时性能检测的方式来确认和查找问题;loadrunner能够对企业的架构进行测试,通过使用loadrunner,企业能最大限度的缩短测试时间,优化性能和加速应用系统的发布周期,商业性的工具。

jmeter是由Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用Java实现;这个工具相对于loadrunner来说,是比较轻量级的工具,便于安装、免费开源的;一般用来做接口测试以及接口性能测试、页面性能测试。

七、jmeter目录结构
bin目录下
examples:jmeter使用实例
report-template:jmeter日报模板
ApacheJMeter.jar:jmeter源码包
jmeter.properties:jmeter配置文件
jmeter.bat :Windows环境启动文件
jmeter.sh  :Linux环境启动文件
jmeter-server.bat :window环境启动负载生成器文件
jmeter-server   :Linux环境启动负载生成器文件

docs目录:帮助文档
lib目录:用于存放jmeter依赖包(jar包),第三方插件安装后需要存放在lib\ext目录下

extras目录:提供对ant支持文件

printable_docs:用户手册(入门)


八、事务和断言
1、事务
定义一:某用户操作步骤的集合,也可以理解为一个步骤或者一个功能
定义二:性能测试中,事务是指从端到端,一个完整的操作过程,比如一次登录、一次查询、一次支付。
无论流程步骤多或者少,一定要保证事务存在的意义性
列如:
从一个浏览器到完成购物---这是一个事务
完成用户注册---这回事一个事务
从登录开始到完成购物---者也是一个事务

2.什么是断言(检查点)
响应会有两种情况
第一种:正确的响应
第二种:错误的响应
  jmeter中有个元件叫做断言,它的作用和loadrunner中的检查点类似,用于检查测试中得到的响应数据等是否符合预期值,用以保证性能测试过程中数据交互与预期一致。
  使用断言的目的:在request返回层面添加一层判断机制,因为request成功后,并不代表结果一定正确
  所谓的检查点,就是根据系统用户的输入,按照业务要求的逻辑处理后产生的输出,不同的业务场景、不同结果

检查点分类:测试的检查点主要包括界面的展示、文件、数据库、业务日志等


3、什么是参数化
参数化是自动化测试脚本的一种常用技巧。简单的来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行的时候指定参数的取值范围和规则;这样我们的脚本在运行时就可以根据需要选取不同的参数值作为输入(入参);这种方法通常被称为数据驱动测试(data driven test),参数的取值范围被称为数据池(data pool)

九、jmeter的基本结构
1.test plan  (测试计划):测试计划是用来描述本次性能测试的需求,所有相关的内容都是基于该测试计划展开的。

2.线程组:线程组可以理解为虚拟用户组
  a.线程数:表示虚拟用户数--50个虚拟用户数
  b. ramp-up period:用来设置虚拟用户多久时间加载完成--10s(表示50个虚拟用户在10s内完成加载,每秒加载5个虚拟用户)
  c.循环次数:如果没有勾选“永远”,每个线程发送请求的次数---2  (线程循环2次,线程内的线程数是50,总的请求数应该是100,也就是发送了100个请求)
   一般我们做一个长时间的一个并发测试或者是强度测试,需要勾选“永远”,这个可以保持每时每刻都会有相同的请求数一直发送到服务器

调度器:主要用来控制我们运行的一个持续时间
持续时间:要进行并发的具体的运行时间
启动延长:定义一个时间,在这个时间内到达我们并发的一个具体值(如果设为10s,并发为200,那么在10s内,200个并且全部启动)
启动开始:设置在什么时间点去执行
启动结束:在什么时间点结束




3、添加一个http请求

名称:根据实际场景来取(自定义)
协议:根据实际场景来取
服务器名称或者ip地址:http请求发送的目标服务器名称或者ip地址
端口号:目标服务器的端口号,默认是80端口,可以不用写
方法:发送http请求的方法,常用方法:get、post
路劲:目标url路劲(不包括服务器地址和端口号)


自动重定向:如果选择了该选项,当发送http请求后得到的响应是301和302时,jmeter会自动重定向到新的页面

user keepalive (持久长链接):勾选后,jmeter和目标服务器采用keep-alive方式通信

use multipart/from-data for http post :当发送http post请求,需要勾选,同请求一起发送文件


4、察看结果树:监控http请求结果的详细结果

5、聚合报告:生成此次性能的测试数据报告
所有时间单位都是ms。
label :对应接口的名称
samples :测试一共发出的请求总数
average:平均响应时间
median:中位数,这个值是指所有数据按照由小到大将其排序;取出中间的响应时间
90%line:90%的用户的响应时间小于这个值
min :所有请求中最小的响应时间
max :所有请求中最大的响应时间
error:错误的请求数/请求总数
throughput:吞吐率---每秒完成请求数
received:接受服务器的数据量
sent:发送的数据量

十、常见性能指标(重点)
1.什么是吞吐量
吞吐量是指在单位时间内中央处理器(CPU)从存储设备读取-处理-存储信息的量
2.什么是吞吐率
吞吐率是一种关于计算机或数据通信系统(如网桥、路由器、网关或广域网连接等)数据传输率的测度。吞吐率通常是对一个系统和它的部件处理传输数据请求能力的总体评价。例如,一个服务器的吞吐率依赖于它的处理器类型、网络接口卡的类型、数据传输总线的大小、磁盘速度、内存缓冲器的体积,以及软件对这些部件进行管理的有效程度。在通信系统中,这个测度通常基于每秒能处理的数据位数或分组的数目,它依赖于网络的带宽和交换部件(如路由器或集线器)的速度。网络上两个端点设备间的吞吐率依赖于计算机、网络接口卡和连接它们的网络。
3.什么是事务
定义一:某用户操作步骤的集合,也可以理解为一个步骤或者一个功能
定义二:性能测试中,事务是指从端到端,一个完整的操作过程,比如一次登录、一次查询、一次支付。
4.什么是响应时间
响应时间是一个计算机,显示器成像等多个领域的概念,在网络上,指从空载到负载发生一个步进值的变化时,传感器的响应时间。通常定义为测试量变化一个步进值后,传感器达到最终数值90%所需要的时间。网络对整体响应时间的影响是通过不同机制完成的。在图像领域的液晶显示器响应时间,是液晶显示器各像素点对输入信号反应的速度,即像素由暗转亮或由亮转暗所需要的时间(其原理是在液晶分子内施加电压,使液晶分子扭转与回复)。常说的25ms、16ms就是指的这个反应时间,反应时间越短则使用者在看动态画面时越不会有尾影拖曳的感觉。一般将反应时间分为两个部分:上升时间(Rise time)和下降时间(Fall time),而表示时以两者之和为准。
5.什么是每秒点击事务数
每秒事务数就是1秒钟平均办理事务的次数
6.什么是每秒点击数
每秒点击数就是1秒钟平均点击的次数
7.并发
同一时间内向服务器发送同一请求
并发3中情况

a:所有用户同一时间内做同一件事或者同一个操作,这里的同一操作时指同一个业务类型,列如我们同事提交订单(流程性)

b:所有用户同一时间内做同一件事或者同一个操作,同时修改一个数据,同时的一个操作,列如我们一个流程中的具体环节

c:所有用户同一时间内对系统做不同的操作


所有用户包括以下:
1.注册用户:当前平台有多少人注册
2.在线用户:当前平台有多少人在线
3.并发用户:测试过程中需要进行测试同一时刻操作的用户


1、接口bug
1. 特殊值处理不当导致程序异常退出或者崩溃


2. 类型边界溢出,导致数据读出和写入不一致


3. 取值边界外值未返回正确的错误信息


4. 参数 为null或空字符串“”等


5. 权限未处理,可以访问其他用户的信息

例如:无权限可以访问,或者 一般用户可以访问管理员权限)


6. 逻辑校验不完善,可利用漏洞获取非正当利益

例如:某网站兑换1块钱需要100币,当小于100币时调用后台 接口是否可以兑换

例如:购物结算时为100元,调用 后台接口设为0元,


7. 状态处理不当,导致逻辑出现错误(可能程序员123都搞懵了)


8. 数组类型item个数为0或者item重复时程序异常退出


9. 超时问题,超时后处理

10. 潜在性能问题(后台提交处理或者把性能风险提前提出)

2、数据库bug

3、文件大小怎么查
du -s,du -sh
4、如果让你做项目经理,你怎么做
5、手机屏幕怎么测,给你个电梯怎么测

电梯梯测试可以从几个方面来进行,功能测试,性能测试,压力测试,可用性测试(Usability),兼容性测试,本地化/国际化测试,可维护性测试;
功能测试,最基本的上下功能,开关功能,还有里面的各个按键。
性能测试(很多人忽略的),比如电梯的调度算法,用户的等待时间,平均等待时间,上下的速度,耗电量等等。
压力测试,比如承重量(你实际承受力是20,那么当进入19个人的时候就应该报警,或者是实际上用户有可能一股脑的全部冲进电梯,所以在静止的时候电梯需要考虑到这种情况),突然断电,门打不开等等。
可用性测试,按钮是否方便,按键的感觉是否好,视觉效果,现在很多人诟病的事情是,开和关两个按钮的图示很不友好,在紧急的时候很容易搞错。
兼容性测试,比如每个国家的电压不一样,是否考虑到这个情况。
本地化/国际化测试,曾经看到一部电梯的使用手册翻译成英文,翻译得很差。
可维护性测试,电梯如果坏了怎么去维修。
6、性能做过吗,过载怎么测
1.做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过5秒,并发用户为1000人,CPU和内存的使用率为70%以下(*)
2.性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具的选择
3.编写性能测试用例
4.搭建性能测试环境,准备好性能测试数据(*)
5.通过性能测试用例,编写性能测试脚本
6.性能测试脚本进行调优,设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余的脚本等(*)
7.设计性能测试场景,使用nmon工具监控服务器,运行测试场景(*)
8.分析性能测试结果,如果有问题(性能瓶颈),收集相关的日志提单给开发修改(*)
9.开发修改好后,回归性能测试(*)
10.编写性能测试报告(*)


7、linux各种指令

8、99乘法表,排序
1,99乘法表

for x in range(1,10):    #循环1到9

     for y in range(1,x+1):   #循环1到x

           print('{0}*{1}={2}'.format(x,y,x*y),end='    ')  #输出占位符(0,1,2)0等于x,1等于y,2等于x*y,输完以4空格结束

     print()#输出转行
2.数组排序,找出最大的数

a=[2,4,1,3,6]   

max=a[0]   #假设最大的数就是数组里的第一位

for x in a:  #循环数组

    if x > max:  #如果x比max大

        max=x    #那么最大的数等于x

print(max)    #输出最大的数

你常用的linux指令      
把磁盘中最大的文件找出来
find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 1   
grep用的多吗?
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用的find
find是利用文件名和文件属性,来找文件的,grep是对文件内容逐行扫描,来找匹配的内容。
vim批量替换字符
%s本地字符+换的字符/g   
存储过程
存储过程是实现某个特定功能的sql语句的集合,编译后的存储过程会保存在数据库中,通过存储过程的名称可以反复的调用执行。   
有一张表我想我查年龄最大的
select max(age) from 表名   
python 变更字典
rf框架使用关键字调接口  接口,有很多参数,怎么输入?   怎么获取时间轴?
  做压测,要大量的数据,怎么做?
jenkins在上班的时间,每隔5分钟跑一次。

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册