性能测试做过,但是做的不久,有一点自己的看法,写出来提供参考,欢迎大家一起探讨。
做性能测试的目的:
模拟大量用户涌入目标网站进行各类 *** 作,由此导致占据的大量软硬件资源(内存,带宽,接口等)后,程序是否还能正常运行并提供优质服务,以此试探出软硬件配置的瓶颈,并在此基础上用最优的分配方法使用户能获得最佳体验,且软硬件资源利用最大化。
要理解这句话需要懂一点计算机原理以及软件或网页的运行方式。
简单说说运行方式(举个例子):
- 用户使用软件或者点击网页,需要与服务器进行信息交换(就好像以前打电话点外卖,打电话到餐饮店点菜,然后报地址)
- 服务器返回储存在数据库里的数据(炒好菜,打包)
- 然后用户的交互页面渲染相关图文,显示内容(把菜送到你说的地址,货款两清)
当程序运行的时候,需要消耗服务器的硬件资源:CPU运行线程,进行计算;内存在程序运行时,缓存、调用数据;带宽传输数据等。举个例子,三双筷子,有一个人要吃饭了,那么一双筷子就被占用了。而硬件同理,软件运行就需要占用资源,通常称呼这种占用为消耗。
接下来,就可以理解之前的话了,一个人访问的时候,系统完全没有压力,但是当上千人,上万甚至几百万人访问的时候,需要消耗的资源是巨量的。还是举个例子,比如一家十个桌子餐馆,20个人来吃饭,忙得飞起,100个人呢?500个人呢?大概就这个意思。
性能测试步骤:
- 分析需求,设计用例,需要找到频繁使用的功能,以及核心功能(测试的功能都是通过了的),毕竟不能说把全部功能都测一遍性能,太过于浪费时间和资源。还需要确认需要测试的并发数(模拟用户数量,1万名用户,单场景一般取10%~20%)。
- 根据用例,设计场景/脚本,把确认后的功能用自动化的方式,模拟场景(详见自动化),或是需要测试的接口(详见接口)
- 准备数据,从线上环境拷贝并去隐私的数据(数据脱敏)或者代码生成数据,作为测试大数据量的测试基础
- 脚本执行(前置条件:保证和线上环境一致,要不然进行测试的意义不大),第一次运行需要先测个基准线,看看响应时间的平均值和TP95(严格点的用TP99),然后进行压力测试,看看系统的极限,再就是跑负载测试,单场景,和多种场景混用,模拟真实用户 *** 作。比如10%的人在登录,20%的在挑商品,20%的在付款等。根据各公司的具体需求进行测试。
- 数据收集,分析,当运行完之后,分析收集好的数据,根据之前说的目的,可以看出需要在意的几个方面,响应时间(用户体验),CPU、内存(程序调用是否有问题),以及系统的稳定时间(长时间运行是否出错)等,然后与开发同学一起把不符合需求的地方改进。
具体的性能测试工具:大名鼎鼎的LR(死贵,免费版可以并发的数量属实抠脚,用破解的小心上门打官司),各中小公司都在用的Jmeter(插件超多,不用自己造轮子),各大厂自己弄的平台(外包干过,无脑填数据,点执行,看结果,就没了)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)