很多人一直困惑功能测试和性能测试之间到底有什么区别可能有点懵懂,今天咱们就一起来探讨功能与发性能测试之间的关联关系。
首先:什么是功能测试?其实就是基于需求验证软件功能是否满足需求规格说明书要求。功能测试是我们进入软测行业必须掌握的基本技能。为啥说是基本技能?因为如果你连最基础的功能测试都不懂就更别妄想做自动化与性能测试,所有高级测试都是基于基础之上,正所谓“万丈高楼平地起”,那到底她们是怎么关联起来的呢?举个列子:我们进入淘宝网站购物,首先我们需要安装淘宝客户端软件进行注册、登录、搜索端口、添加商品入购物车、下订单、支付、收货、好评才算下单成功。那意味我们是不是需要确保购买流程的功能正常,才能供用户实现买买的过程?答案是肯定的,假设我们在购物的过程中突然发现支付宝接口出现异常。例如:用户支付成功后扣款返回失败的提示信息,这时我们就要焦虑了,于是查询一下支付宝余额确认,发现扣钱了但是系统提示支付失败,于是找淘宝客户各种咨询,最后才了解到是因为接口返回错误,实际是正常支付成功了,只是前端页面在判断的时候给了一个错误的提示信息。这基于是基于前端页面的功能BUG,造成这个BUG产生的原因是什么?很简单就是前端返回信息错误,实际上用户支付成功后扣款流程是对的,可是前端给用户提示支付失败让用户担忧,这其实就是基于界面的功能BUG。
性能测试一般需要测试那些场景?接着我以商城案例来讲解,大家平时用淘宝网站用得多最的是那些功能点?我想大部人都是用买买用得最多,那是不是意味着买买功能的并发用户数最多?用户数越多说明这个功能是不是使用操作最频繁?操作频繁是不是意味着功能特别重要?那我们要不要不做性能测试?那是必须的。
通过上面问题的分析,我们也知道性能测试需求是基于用户使用频繁的业务而开展性能测试,目标明确了,从而知道如何基于用户使用情况来获取性能测试需求。那什么是性能测试?新华字典里对“性能”的解释:事物的性质和能效。业内对于性能的大家都比较认可的解释: 从性能本质上来说,软件系统的性能主要体现在两点:
How fast : 衡量一个系统的处理效率。一般来说,响应时间就是典型的处理效率的指标。
How much : 衡量一个系统的处理能力。
一个系统的性能一定要同时考虑这两方面才有意义。软件的性能好坏,取决于是否符合业务需求。
一般功能出现性能问题会表现在那些方面呢?
举例:
早上大家都有赶地铁上班的习惯,大家可以发现在不同的时间段,聚齐在地铁站上的人员数量是不一样的,为啥在早上8点到9点的时候要限流?如果地铁站不限流会带来什么后果?那必然会造成生命安全问题,为什么?地铁站的空间容量是有限的,但是人这么多如果不实施限流措施,会不会出现拥堵现象,发生一些意外事故,我想那是必然的。所以通过这个例子大家应该明白了功能测试与性能测试之间的区别是什么了。很明显性能测试是站在比功能测试更高的层面来考虑问题,容纳更多的用户数量。那么什么是性能测试?上面我们已经详细解说。
性能测试有什么特点呢?
首先:基于多用户。
其次:基于协议的。
再次:模拟真实的用户场景。
基于协议:协议其实指的是一种标准说明书,咋们要实现通讯一定要按照一定的规范方法来传递数据,并且这种标准是经过双方协商达成的一种共识。类似我们的劳动合同/结婚协议书/离婚协议书,其实就是一种标准规范用来达成合作的说明书,基于协议其实就 基于接口的一种测试方法,不用通过界面直接调用脚本来请求系统,达到性能测试的目的。
基于多用户:指在同样的情景下一个用户在同一时间点坐车不会产生拥堵,但当批量用户同时在同一时间去乘车就会产生事故,这里其实告诉我们系统的一种抗压能力大概能承受多少用户同时访问系统。系统的资源利用率情况是怎样的,用户数量足够大会不会导致系统崩溃硬件资源耗尽等问题。
模拟真实的用户场景:大家都知道由于硬件设备的缺乏,在系统上线之前我们不知道到底会有多少用户访问系统,于是我们需要根据已知需求预估未知访问系统人数,有没有方法可以使用真实的用户来测试系统?其实是有方法的,比如我们准备N多台电脑设备,但是假设我们的系统用户访问量有5万人,那你是不是需要准备5万台电脑来访问系统这样现实?答案肯定是不现实的,有没有什么工具可以帮助模拟这种场景呢?Loadrunner工具就能解决关于多用户模拟真实场景的问题,使用这款工具可以解决模拟多用户同一时间操作一个功能,并得出性能测试结果,达到真正模拟正常场景的目的。
我相信经过上文详细的解说,大家对功能测试以及性能测试的区别有了一个明确的理解,基于性能测试与功能测试之间的关联关系大家都已经掌握,希望在以后的项目实施过程中,大家能够根据功能需求提取性能需求,从而有针对性的实施性能测试。