做性能测试需要哪些基础知识?--分享者:破冰
1、html教程: http://www.w3school.com.cn/html/index.asp,这是性能测试里面比较基础的。看时把里面的元素、属性、连接、表单、url看下就可以
2、需要c语言的基础:后期用lr,会需要c语言的基础,不需要学太深,只要把基本的分支循环变量、函数定义能看懂就可以
3、http请求这块要看下,比如post、get等,最后有HTTP协议的,看一下。
4、XML,这个跟html类似,它也是树形的,成对出现。
5,JSON,比如,post请求,里面很多事用JSON格式在传数据,了解JSON是怎么写的
6,数据库,增删改查,
以上这些事性能测试的基础。
刚开始从功能向性能测试转变时,要尽快把功能测试的思想去掉,往性能测试转变
性能测试有很多分类:负载测试、压力测试、并发测试、可靠性测试、配置测试。这些事测试的重点不同。
压力测试也叫强度测试,CPU内存100%情况下,系统处理新的回话的时候会不会出现错误。
并发测试:多个用户同时向一个应用发送请求,看系统多长时间能把这些并发的请求完成。
多角度看待性能测试:性能测试没有精确的标准,从不同角度来看给的解释不同:
比如 用户角度:软件的性能就是软件对用户操作所产生的响应时间;
运维人员:系统是否提供给用户可靠稳定可持续的服务;
软件开发:系统如何调整设计代码的实现,达到一个最高。
性能测试并不简单指系统的运行速度,比如银行软件:系统稳定,不出错。
性能测试的术语:
1)并发数:虚拟用户数,同一时间点内,向系统产生交互的数量
2)注册用户数:当前系统中全部注册的用户的数量,这个跟并发数要区分开,这个不需要跟系统产生交互
3)在线用户数:当前系统时间段内用户登录的数量,也不一定要跟系统产生交互
4)事务:比如登录网站时,输入用户名、密码,点击登录,这3个操作为一个事务来讲,叫登录事务。
5)TPS,每秒通过的事务数---每秒处理的事务的数量,是衡量系统处理能力的指标,看系统好不好,就看这个指标
6)吞吐量:被测系统所产生的数据流量,eg,点击网页需要10兆,100人点击,就产生100*10结果即为为吞吐量
7)每秒点击率:客户端每秒真正发给服务端的请求数量。不能反应系统的性能,反应客户端给服务端发送请求的数量
8)思考时间:用户访问网页的停顿时间,比如输入用户名密码,点击登录---看用户名和密码对不对,这个时间就是思考等待时间
9)资源利用率:系统里cpu占有率、内存的使用率,还有io的使用,这些需要后台监控才能看出来
这些就是性能测试的流程。
lr在我们测试的时候,主要分为3个功能点,代码组建、场景组建、分析组建。
开始时需要进行需求分析,测试点的提取,
测试点的提取,即,要找出哪几个功能点需要进行性能测试,是要求吞吐量、还是哪个性能指标要看,每个性能指标就是一个测试点。
测试点如何提取呢?参考历史数据或客户提出来。再或者参考同行业同项目或业界的通用规则,根据这些进行定义。
指标的评估:测试点确定后,如果是系统是新的,老大来定标准,以这个为基准,下次的时候在此基础上进行提升。
制定性能测试的计划:跟各老大一起制定计划。
搭建测试环境,执行用户、调试用户,看是否达到指标。这些就是性能测试的流程。
先把脚本写好,去掉脚本中没用的信息,再进行场景的设计,(比如:每隔多长时间登录多少用户数,然后多长时间增加到最大用户数,中间连续多长时间,达到多少连续时间,再隔多长时间,用户数减为0)
等跑完后,会出一个报告,用第三个工具进行分析,不要指望lr软件会告诉系统的问题,分析是人分析出来的,性能测试是工作经验的积累,不是简单的工具的使用。
Jmeter
这里是做接口的性能测试,lr也可以做接口的性能测试。
跟性能测试相关的,资源利用率--
可以在linux安装插件,可以看CPU等的指标进行收集,跑完后,有报告,然后看哪块可能会产生问题
常用的框架:Jenkins+Jmeter+Ant自动化集成环境搭建
linux命令
监控linux系统的一些指标,一般是CPU IO
服务器中间件配置的优化
一般Tomcat Apache
Apache 优化会了,tomcat也就差不多了,都有请求数多少,最大连接数
这个并不是参数越高越好,这些讲究一个平衡,才能调出最优效果。
MaxClients 最大连接数
MaxRequestsPerChild
•每个子进程在其生存期内允许伺候的最大请求数量,默认为10000。到达
MaxRequestsPerChild的限制后,子进程将会结束。如果 MaxRequestsPerChild
为"0",子进程将永远不会结束。
默认值是 :0
数据库-Mysql优化----21:48
1,抓取大范围,把大范围的sql语句抓取出来,把慢查询查出来,一共10条语句,找出最慢的一个,然后进行分析,sql语句不要都是后台处理,可以在前段进行处理,这样减轻后端服务器的压力。数据库的设计,可以有多库多表,分库分表,主从分离都有相应的技术。-------
JVM调优
java这块的调优,这块要了解一些基础,有年轻代年老带。。。。。
JC:java里面管理垃圾回收的策略,如何表现在内存泄漏呢?
如果看到内存的信息,占用内存越来越大,这些年轻带年老带,如果看到占用内存越来越大,那可能是没有---------
检查内存泄漏的工具:jprofiler_windows,这个工具可以模拟代码是否泄漏。
项目,整个框架的调优
每个网站系统在做前,也不是一开始就做好,做的很优化,比如,网页这种,最初就是web服务器,数据服务器,文档服务器。web服务器是直接从数据库读取,后面可以加些静态缓存,数据库服务器就升级了,再发展,会考虑部署集群。集群部署,说白了,就是多几台电脑,之前可能就一台web服务器,现在3台。再往后,可以对数据库进行分离,数据库分离分为分库分表,这是优化的一个方式。数据库这块分为水平的切分和垂直的切分。对不同业务,用的多少的放到不同的数据库中。
还有多库多表,可以再去看看。数据库这里
![](https://img.haomeiwen.com/i2839317/7c46056c9b524098.jpg)
图是电商,比较成熟的图。但这种方式现在基本淘汰了。
Consume 用户PC客户端 访问端
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定
DNS域名系统 域名与ip的绑定解析
Load balancer(负载均衡) 负责多台Web servers负载均衡,将大量用户请求指引到多台Web servers。
web servers pool (Web服务器池)
Image Server 用来存放网站静态资源,如图片、CSS、Javascript、Jquery等等资源文件,
可以单独针对静态资源设置Http Header缓存信息,另外也有助于之后将Image Server作为CDN源。
Monitor & Alert Server 主要是监测各类Server的运行情况,如CPU、请求数、请求等待时间、请求执行时间等等;此外还可用来接收并显示各类Application的异常信息,便于及时发现并处理各类系统运行异常。
DB Server 根据业务和访问量大小,进行角色和功能的拆解,会有Core DB(核心数据库)、Report DB(报告数据库)、Query DB(查询数据库)、Distributor DB等等,以适应高访问量和性能的要求
Batch Job Server 用来承担一些后台异步处理的任务,有助于降低系统设计的复杂度和各个系统功能之间的耦合性。 比如:任务系统定时跑任务 1.1日看12月31日的数据 帮你统计的数据就类似帖子回复数量(看有多少好评 多少差评 )晚上进行统计更新
Web Server 部署电子商务前台购物系统,如商品展示、购物车、用户注册登录......等等。 Back-end Business System 指后台业务处理系统,如订单处理、产品管理、客户管理、采购管理、财务管理、库存管理......等等,该系统主要给公司内部用户使用。
Message Router / Bus 进行消息的异步传输和处理,系统功能模块之间实现松散耦合,可让系统承受更高的访问量和业务量,极大提高了系统的吞吐量和性能。 Message Bus的概念,即“消息总线”。发送消息是向“Message Bus”中发送,并且需要注明发送的消息类型;同时,任何人都可以随时从“Message Bus”中接听消息,并且可以通过消息类型来进行筛选,只接收你感兴趣的话题。 WMS 负责仓库的收货入库、订单出库、库存管理等。
nGrinder 性能自动化测试平台
网友评论