性能测试的基础理论、常见术语 1) LR LoadRunner HP公司提供的一种自动负载测试工具,能预测系统行为,优化性能,是目前业界市场占有率最高的性能测试工具。 2) Transaction 交易(事务) 在测试脚本中定义的、完成一种业务操作的过程,性能测试主要关注定义事务的处理能力及其响应时间。每个测试脚本中根据需要可定义多个事务。 3) TPS 每秒事务数 Transations per Second,系统每秒能够处理的事务数量,是衡量系统处理能力的重要性能指标。交易有两种理解,一种是业务人员角度的一笔业务过程;另外一种是系统角度的一次交易申请和响应过程。前者称为业务交易过程,后者称为事务交易过程的STEP。两种交易指标都可以评价应用系统的处理能力,一般的建议与系统交易日志保持一致,以便于统计业务量或者交易量。 4) ART 平均响应时间 Average Response Time,各事务响应时间的统计平均值,是用户视角的软件性能的主要体现。计算的是端到端的时间,说的通俗一点,从点击Web页面中的某个控件,到从数据库返回数据到客户端,整个过程都被计算在交易的响应时间内。交易响应时间的指标包括最小响应时间(Min)、平均响应时间(Avg)、最大响应时间(Max)、90%交易的最大响应时间(90%)等。 5) VU 虚拟用户 LoadRunner中特定术语,为模拟现实中的实际用户,测试软件使用虚拟用户代替真实的用户。 6) Scenario 场景 LoadRunner中专门术语。它是所有测试资源包括测试脚本、运行设置、运行用户数等的集合。在这个场景中,可以定义并发用户的数目,定义要运行的脚本,或者说运行的流程类型。在一个场景中,可以是单个流程,也可以是多个流程的混合。 3、性能测试模型、类型 1)测试模型 | 交易名称|场景交易量配比 | |预约挂号|25%| | 自助缴费 | 40%| |报告查询| 35%| 2)测试类型 a、单交易基准测试 b、单交易负载测试 c、混合压力测试 d、稳定性测试 e、可靠性测试 f、全链路测试 4、HTTP、TCP协议相关知识 网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。 5、连接池、线程相关知识 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。 进程与线程的区别:通俗点讲,打开QQ相当于打开了一个进程、QQ聊天、发文件、接视频属于一个个线程。 二、工具篇 1、Jmeter ①、Jmeter的工作原理是什么? jmeter可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。有了性能测试脚本,jmeter就可以通过线程来模拟真实用户对web服务器的访问压力。这与LoadRunner的工作原理基本一致 ②、常用的元件、各自的作用是什么? 1.测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2.线程组(Thread Group)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3.取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用HTTP请求。 4.监听器(Listener) 5.逻辑控制器(Logic Controller) 6.断言(Assertions) 7.配置元件(Config Element) 8.前置处理器(Pre Processors)和后置处理器(Post Processors) 9.定时器(Timer) ③、几个典型的场景,如何基于jmeter设计测试脚本? http://jyfhsszq.iteye.com/blog/2271766 ④、是否会二次开发?如果会,怎么二次开发的(介绍大概过程和原因)? 2、Loadrunner 3、其他开源/商业性能测试工具 比如:Ngrinder、Locust、Wrk、Artillery等; 4、前端、服务器、数据库性能监测工具 nmon、spotlight、德鲁伊 1、服务集群 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。 2、负载均衡 负载均衡原理、实现方式 1)http重定向协议实现负载均衡 原理:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。 2)dns域名解析负载均衡 原理:在DNS服务器上配置多个域名对应IP的记录。例如一个域名www.baidu.com对应一组web服务器IP地址,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上。 3)反向代理负载均衡(Nginx) 原理:反向代理处于web服务器这边,反向代理服务器提供负载均衡的功能,同时管理一组web服务器,它根据负载均衡算法将请求的浏览器访问转发到不同的web服务器处理,处理结果经过反向服务器返回给浏览器。 4)IP负载均衡 原理:在网络层通过修改目标地址进行负载均衡。 5)数据链路层负载均衡 原理:在数据链路层修改Mac地址进行负载均衡。 3、缓存应用 缓存就是在内存中存储的数据备份,当数据没有发生本质变化的时候,我们避免数据的查询操作直接连接数据库,而是去 内容中读取数据,这样就大大降低了数据库的读写次数,而且从内存中读数据的速度要比从数据库查询要快很多。 Redis 1)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 2)Redis支持master-slave(主-从)模式应用 3)Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 4)Redis单个value的最大限制是1GB,memcached只能保存1MB的数据。 4、分布式框架 Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 pring框架无缝集成。 https://blog.csdn.net/qq_29234631/article/details/80987316 5、全链路压测 基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程