一、什么是性能测试及性能测试基本概念
一、什么是性能:
性能:是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价。
二、什么是性能测试:
性能测试:对产品或是物品的性能进行定性或是定量的量测过程。
三、性能测试内容:
性能测试通过包括以下四个维度。
A:性能测试(PerFormance Test):表示在给定的基准环境下,目标系统响应客户服务的最快速度或最好表现。
(如:在没有负重的情况下,你跑100米需要花多长时间?)
B:负载测试(Loading Test):表示在目标系统正常服务的前提下,目标系统所能承担的最大服务负荷数量(即最大并发数量),最终克分析因系统性能瓶颈。
(如:在负重50公斤,100公斤……等情况下,你跑100米需要花多少时间?)
C:压力测试(Stress Test):是一种破坏性测试,它故意让软件在比较少的资源环境下运行,如低内存、小硬盘、慢CPU上运行,考验程序直至程序无法运行,从而发现软件缺陷。用一句形象的话来比喻,就是让软件在饥饿状态上运行。
D:稳定性测试(Stability Testing):表示在给定的负载(负荷)的情况下,有外界或内部非正常的干扰,系统所能够提供稳定服务的能力。所
(如:在你负重50公斤的长跑时,不时的会刮风、下雨、有的时候还会出现坡灯情况,在这些正常非正常的条件下,我们都得跑步,但是你还能跑多长的时间?)
四、衡量性能的专业名词解释:
请求访问数量(VU或是Request Thread):即向服务器发送请求的虚拟用户数量;
场景(Scenario):性能测试过程中为了模拟真实用户的业务处理过程的一系列动作的集合;
事务(Transactions):一般是指要做的或所做的事情,在关系数据库一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性;
事务平均响应时间(Average Transsction Response Time):即在各种负载压力情况下,系统的响应时间,也就是从客户端交易发起,到服务器端交易应答返回所需要的时间(这其中包括网络传输时间和服务器处理时间),每一事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向;
每秒处理事务(Transsction per Second):每秒系统处理事务(通过、失败以及停止)的数量。通过这项目指标可以确定系统在任何给定的时间段里事务处理能力;
吞吐率(Throughput):即应用系统在单位时间内完成的交易量,也就是在单位时间内,应用系统针对不同的负载压力,所能完成的交易数量;
系统负载(Load):即系统所能容忍的最大用户并发数量,也就是在正常的响应时间中,系统能够支持的最多的客户端的数量;(TIPS:关于 用户并发量:个人的观点是,应用系统所能支持最大的在线用户量。)
CPU利用率(CPU usage):CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间/CPU的总执行时间。
最佳用户数:系统的最佳状态,即系统在当前资源配置下(服务器资源,客户端资源,网络资源)所能处理的最大用户事务数量;对系统资料的占用率,系统的处理能力,用户等待的响应时间都处于最优的配置下。
最大用户数:依据系统当前的配置(包括硬件配置,网络资源),所能容纳的最大用户数量,超过这个额定的用户,系统的处理能力可能就要达到一个瓶颈了。
(比如:一家饭店,里面有10张桌子,每张桌子可容纳6个,10个服务员,每个服务员服务于一张桌台,每张桌子的用餐时长为30分钟(桌子,桌台容纳人数,服务员我们都可以理解为系统配置的资源)等待客户能够容忍的最长等待时长是20分钟,假设在11:30~12:30 这一个小时的时间段里面,饭店开始对外营业,要分析此饭店的最佳用户数及最大用户数,我们可以作以下分析:
那么我们可以理解 这个饭店在这个时间段内能够接纳的最佳用户数为6*10=60个,所有资源都应用得当。所有资源都利用得当(桌台坐满,服务员都处于工作状态,没有一个空闲:PS:所有服务器都处于工作状态);
五、B/S基本架构
B/S典型三层构架构图
举个例子:
假设有以下场景:
1.A、B、C三个人。
2. C欠A钱(这里不考虑多少);
3. B是专门要账(浏览器)
思考问题:
浏览器与服务器的信息传递次数:
A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。(即使用户)
B对C说,给我20块钱。
C说,没有。
B对C说,给我10块钱。
C说,没有。
B对C说,给我5块钱。
最后,B回来对A说,哎呀妈呀,C那丫的忒抠门了,一分钱没有。
对于A来讲,只是来说,它只是让B问C要钱,具体的B与C之间交互了几次,A是不知道的,它所知道的就是B返回给它的结果,C一分钱没有。
浏览器与服务器传递数据的大小:
还是上面的过程,A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。
B对C说,给我20万块钱。
C说,没问题,没支票,只有1元硬币。
..........
B终于把钱拿回来给A。A很纳闷,怎么去了那么久,B委屈的说,丫的,C给我整了一堆硬币,太重了,路上走的慢,都快累死我了。
对于A来讲,只是来说,它只是让B问C要钱,谁知道C给的是支票还是硬币。所以,B去要钱消耗的时间就很长。
结论:要想提高浏览器对服务器的访问速度,应该减少数据传递次数与数据传递的大小。
这样就很自然的引出了浏览器的cookie
A在C哪里存了5毛钱。
A对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。
过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。
过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。这次C烦了,对B说,你把钱放自己口袋里吧,等A要的时候,你来问我5毛的人民币有没有改版,没有改版的话,你就直接把口袋里的5毛钱给A看就行了。
在这里A就相当于我们用户,B相当于浏览器,C是服务器。而cookie就是B的口袋,当然了cookie的用处还很多。比如我们登陆一个系统,提示我们是否保存密码(有的还有期限比如,一个星期或一个月),如果我们保存了,下次再访问登陆时,浏览器就已经帮我们填写好了账户密码或直接帮我们登陆。那这个账户密码就放在我们浏览器的cookie中。
六 性能测试工具推荐
现在市场上有很多工具可以帮助我们完成基本工作测试,如(JMeter,Loadrunner),本人的工作过程中使用的是开源的JMeter,所以的讲解中以此为例。
七、参考文献:
作者:溪玥
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。