我们怎么判断是性能问题呢,其实大部分都是用用户角度来说的
比如
1、响应时间过长
2、系统一直在loading中,就是一直在加载中
3、卡顿(比如玩游戏,掉帧,或者一卡一卡的)
4、系统有响应,但是数据确加载不出来(过年时间12306抢票)
这些大部分或者说所有的问题好像都和响应时间有关系,确实是这样的,不管是并发用户量多,还是其他硬件性能跟不上,甚至网络跟不上,反映到最后都是一个响应时间的问题,最终的结果就是响应时间超出了我们的预期
那我们怎么取分析这些问题呢,或者说我们靠什么去定位这些问题?
其实就像人生病一样,去医院,如果是一个经验丰富的医生,他可以根据你的症状去判断你的病,但是确诊靠的是什么,是检查,然后在对症治疗
性能测试的一个性能问题的检查,根据检查结果,对症下药,就是调优;你想问病人是谁,对,就是那个系统,他是来做体检来了。
检查我们会检查什么呢,医生会让你查血,拍片子什么的!然后看看你的血常规的各个值和标准值一致不一致,等等,而测试工程师呢,也有对照的东西,看看软件在运行的过程中各个性能指标和标准指标的偏差,然后在根据这些偏差去分析定位问题,下面就说说都有哪些指标,以及这些指标的含义
在这里先说下一个请求的处理步骤
1、客户发送了一个请求
2、web服务器接收到的这个请求,然后进行解析处理
3、web服务器根据解析处理出来的命令,向数据库服务器发出请求获取数据
4、数据服务器根据请求,读取或者存储这些数据
5、数据库服务器把处理结果反馈给web服务器
6、web服务器把处理结果反馈给客户
在这六个过程中每一步都有一个时间,我们把从客户发送请求到客户接收到web服务器的响应的所有时间成为响应时间
我们关注的指标其中就有这个响应时间
1、响应时间
响应时间一般可参照3/5/10原则
1)在3秒之内的,用户认为很不错,很好
2)3-5秒的,用户认为还可以
3)5-10秒的,用户认为勉强能接受
4)大于10秒的,用户可能就再见了朋友
不过这个标准也是很早之前的了,现在基本上5秒就认为很长了,想让我认为很不错基本是在毫秒级别的,不能超过1秒,3秒我也就勉强接受了,当然这只是我自己认为的,每个企业可能都会有自己的标准
2、事务(Transaction)
事务是个什么鬼呢,我们刚才定义了响应时间是一个请求的一个全流程的处理时间,而这个请求的全流程就是一个事务,比如我们登录,从我们输入账号、密码、点击提交,到服务器相应给我们的登录成功,这就是一个完整的事务。这里要说明一点事务可能不是只有一个请求,比如我们买东西付款,这是一个事务,但是会有很多个请求组成。
3、事务响应时间
这个看一下我们的第二个事务就明白了了,就是我们一个事务的响应时间,而响应时间是一个请求的响应时间。事务响应时间是直接衡量系统性能的参数
4、并发用户数
这个并发一般有两种解释
1)严格意义上的并发就是所有的用户在同一时间做同一件事或操作,比如100个人同时在同一时间点击登录
2)广义的并发意思是很多个用户在同一时间发送了很多个请求,或者做了很多操作,这些操作有些是一样的,有些是不一样的,对于整个系统来讲,他始终是在操作,所以也是并发的范畴;就是我这有100个人,在这一时刻10个人在登录,10个人在付款,10个人在修改账号,还有其他70个人在做其他操作,他们都在同一时间想服务器发送了请求,这就是广义的并发
在我们实际场景中,这种广义的并发其实发生的更多,但是这种严格意义上的并发也有发生,并且一旦出现问题后果也是很严重的,所以我们一般是先根据实际情况做严格意义上的并发,然后在做广义上的并发,比如12306抢票,我们会先做一个同时订票的严格意义上的并发,然后在做一个和其他功能混合的广义的并发测试;
这里还有一个点,用户数、用户在线数、用户并发数不是一个概念,用户数是这个系统的所有用户,包括一些僵尸用户;在线用户数是指系统上登录的用户数,包括一些游客,但是这些用户不是所有的人都在操作,有的只是登录了,有的在查看内容,就比如我在写东西,这其实是没有向服务器发送请求的;用户并发数指的是我操作了,发送请求的用户数,这个才是我们要找的并发数;
下面有一个公式可以看一下,这个参考的《软件性能测试过程详解与案例分析》
C=nL/T
c^=C +3*√C
C是平均并发用户数,n是login session数量,L是login session登录的平均时长;T是考察的时间段长度;C^是我们并发数的峰值
比如一个系统3000个用户,平均每天400人登录,每人平均登录时间是4个小时,而我们的考察时间是8个小时,那么他的平均并发用户数是
C= 400x4/8=200个
C^=200+3x14=242
这些数据我们从哪里得到了,从运维那可以得到这些数据
5、吞吐量
这个指的是一次性能测试过程中网络上传输的数据量的总和
吞吐量/传输时间=吞吐率
6、TPS
每秒钟系统能够处理的事务数量,他是衡量系统处理能力的重要指标
7、点击率
每秒钟用户向WEB服务器提 交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
8、资源利用率
这个比较多,指的是对不同系统资源的使用程度,比如服务器的CPU利用率、磁盘利用率等等,资源利用率是分析系统性能指标进而改善性能的只要一句,所以这一块是web性能测试的工作重点,这个今天先到这,预知后事如何,且听下回分解!!!