性能测试工具【LoadRunner vs Locust】
持续测试是一种测试实践,它包罗了涉及全部质量特性的测试活动。因此,持续测试也包罗非功能测试。众所周知,软件质量特性包罗功能性、可靠性、可用性、效率等,前面已经先容了一些功能性在持续测试中的落地方法,下面就讲解一下持续测试中的非功能测试。性能测试
性能测试估计是全部测试工程师都耳熟能详的术语,对于怎么进行性能测试,许多人能讲解一二,至于性能测试是什么,却难以给出定义。性能测试是一个统筹概念,指在一定的束缚条件下测试体系可以或许蒙受的并发用户数,这里的束缚条件指被测体系运行所需的软件、硬件、网络等外部束缚条件。
在性能测试内里还涉及诸如负载测试、压力测试、极限测试、容量测试等概念,这些概念相互交织,并没有行业普遍认可的定义。
实在负载测试是模拟现实软件体系所蒙受的负载条件的测试。压力测试用于评估处于或超过预期负载时体系的运行情况。极限测试类似于压力测试,容量测试类似于负载测试。但是这些仅仅是概念上的分类,在测试过程中我们很难把负载测试和压力测试分得清清楚楚。
在现实工作中,性能测试、压力测试、负载测试许多时候是指一件事,即负载测试。以是在工作中,提到上述概念时,除非有其他前置条件,否则都可以按照负载测试准备。
持续测试中更倾向于成品交付过程的流畅、连续,因此在性能测试上会更加倾向于DevOps流水线双向驱动的性能测试技术的应用实践,尤其是性能测试即代码的技术落地。
性能测试工具概述
性能测试就是通过模拟高并发访问完成的,这个模拟并不是真的有多个用户一起访问体系,而是通过工具完成的。性能测试工具模拟高并发有3种模式,分别是多进程、多线程和协程。进程、线程和协程的关系如图3-1所示。
https://i-blog.csdnimg.cn/blog_migrate/0bee0b978458eee4e68eb63dc5e0bc9f.png
图3-1 进程、线程和协程的关系
进程是为了更好地利用CPU资源而定义的,用于分配体系资源、标识任务。进程是体系资源分配的最小单元,主要占用地点空间、全局变量、文件描述、硬件等资源。操作体系以多进程的方式完成多个任务,这样可以充实地利用体系资源。
当前主流性能测试工具中,LoadRunner支持多进程,但是这个工具的授权费用非常贵。别的,多进程方式占用的体系资源较多,进程间的调治开销较大,因此在性能测试中并不推荐利用多进程方式。
线程就不一样了,线程降低了上下文切换的消耗,进步了体系的并发性。线程就比如一个汽车生产车间里的多条生产流水线,每条生产流水线并发处理相同事务的工作。若在一个进程中启动多个线程,以处理相同逻辑,就实现了并发处理的效果。LoadRunner、JMeter都支持多线程并发访问模型,其中JMeter是一款开源的性能测试工具。
在性能测试过程中,常利用多线程模型来模拟并发访问,这样既可以完成并发访问,也可以充实地利用体系资源。协程是一个相对较新的概念,它通过用户控制完成调治,而不是通过CPU完成的,这样就制止了陷入内核级别的上下文切换造成的资源消耗,同时突破了线程在I/O上的性能瓶颈。协程不需要多线程的锁机制,基于线程实现调治。
Locust是基于协程访问模型的性能测试工具。从事性能测试工作的读者许多应该听说过LoadRunner,不外知道Locust的人估计就比较少了。这两款工具各有上风,在现实项目中具体选用哪一个要根据情况而定。
不外,在容器化技术盛行的当下,LoadRunner已变得不那么好用。LoadRunner与Locust都提供了UI的脚本编辑和录制、场景设置等功能,这导致在容器上利用它们时只能实现并发模拟,脚本的编写则需要在客户端的PC上完成。对于容器上的性能测试工具,我们盼望它具有以下功能。
[*]支持在PC上编辑脚本并调试。
[*]支持在容器上编辑脚本并调试。
[*]支持在服务器端进行性能测试。
[*]拥有服务器端的性能场景设置功能。
[*]拥有服务器端无UI的场景设置功能。
[*]能和CI(Continuous Intergration,持续集成)体系集成。
综上所述,强烈推荐利用Locust。纵然不在容器上利用,Locust也是不错的选择。Locust是一款开源的性能测试工具,支持利用Python代码定义用户行为,并接纳纯Python描述测试脚本。
利用Locust可以模拟百万级并发用户访问体系。除HTTP/HTTPS之外,Locust还可以用来测试利用其他协议的体系,只需要接纳Python调用对应的库并对请求进行描述即可。
Locust照旧分布式的用户负载测试工具,可用来对网站或其他体系进行负载测试。利用Locust可以测试出体系并发处理的用户量,这完全是基于时间的,因此单台呆板大概支持几千个并发用户。
LoadRunner与其他接纳进程和线程的测试工具则很难在单台呆板上模拟较高的并发压力。相比许多其他事件驱动型应用,Locust不利用回调,而利用轻量级的处理方式——协程。
协程是一种用户态的轻量级线程,由用户控制。协程拥有自己的寄存器上下文和栈,在切换进行时,协程会将寄存器上下文和栈保存到其他位置。比及切换回来时,协程不但可以恢复保存的内容,从而降低内核切换的消耗,还可以不加锁地访问全局变量。协程制止了体系级资源的调治,因而大幅进步了单台呆板的并发本事。
在GB/T 25000.10的八大质量特性中,性能效率这个独立的质量特性包罗时间特性、资源利用性、容量、性能效率的依从性等质量子特性。利用技术本事检验信息体系性能效率的过程称为性能测试。通过性能测试,我们可以评估信息体系与性能效率要求的符合程度。信息体系通常包罗以下方面的信息。
并发用户数:这是针对服务器而言的,指在同一时刻与服务器进行交互的在线用户数目。在压力测试期间,并发用户数指同时执行一个或一系列操作的用户数目,或同时执行某个脚本的用户数目。不同场景下的并发情况是不一样的,在现实的测试工作中,要根据具体的需求设置并发用户数。
最大并发用户数:用来描述信息体系的最大服务本事。
吞吐量:单位时间内体系所能处理的请求数目。对于交互式体系,吞吐量的单位通常是字节数/秒、页面数/秒或请求数/秒;对于非交互体系,吞吐量的单位通常是事务数/秒。
响应时间:分为用户响应时间和体系响应时间两种。用户响应时间指用户所能感受到的体系对其操作的响应时间。人的眼睛由于“视觉暂留”征象只能察觉0.1s以上的视觉变化,因此用户响应时间只要不超过0.1s即可。体系响应时间指计算机对用户的输入或请求做出应答的时间。压力测试一般站在用户的角度考虑问题,因而衡量的是用户响应时间。
资源利用率:描述信息体系性能状态的一系列数据指标,包括被测服务器的CPU利用率、内存利用率、磁盘I/O速率、网络吞吐量等。
等待时间:信息体系用户在进行业务操作时发出的两个连续请求的时间间隔。
性能测试用来评估体系的服务本事。性能测试主要分为以下3种。
[*]负载压力测试:通过不停给体系增长负载,观察体系的性能变化并确定体系在满足一系列性能指标(包罗响应时间、CPU利用率、内存利用率、网络吞吐量、磁盘I/O速率等,其中关键的性能指标是响应时间、CPU利用率和内存利用率)的条件下所能蒙受的最大负载。
[*]失效恢复测试:针对提供体系冗余备份或负载均衡机制的体系,模拟体系局部发生故障后,在体系仍有大量用户持续访问的情况下,对体系服务本事的恢复进行测试,主要用来评估体系的结实性和可恢复性。
[*]疲惫测试:在包管总业务量的情况下长时间运行体系的测试,主要用来评估体系长时间、无故障、稳固运行的本事(测试周期通常是7×24小时、3×24小时或1×24小时)。
末了: 下方这份完备的软件测试视频学习教程已经整理上传完成,朋友们假如需要可以自行免费领取【包管100%免费】
https://i-blog.csdnimg.cn/blog_migrate/c25666c247ce91cd5f97f692fdf1849d.png#pic_center
这些资料,对于【软件测试】的朋友来说应该是最全面最完备的备战堆栈,这个堆栈也陪同上万个测试工程师们走过最艰巨的路程,盼望也能资助到你!
https://i-blog.csdnimg.cn/blog_migrate/2bcdac02bb5291f7354c980de8242938.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]