浅谈性能测试
背景
这两年除了基础的功能测试,越来越多的企业也开始关注专项测试,例如性能测试
我再我们年初和年终的领导改进建议中都提到,加强自动化和性能的学习和工作输出,今天浅聊下~
1.性能测试概念(来自百度)
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
-----------------------------------------------------------------------------------------------------------------------------------------------
2.实际应用类型
第一种不需要借助自动化的:
1.在实际页面模拟客户实际场景,主要用来压力摸底
一个下单系统(销售使用),测试出下单系统中最多加多少产品,提交订单时候会报错,摸底出系统最大负载,提前告知销售,下单时候分批,避免订单超时无法处理-----与客户深度合作,提前告诉性能风险,以及应对方式
2.系统页面加载时间过慢,比如查询时间过长(没有遵循2/5/8原则)
第二种一般使用工具
1.持续运行8h以上,看系统是都依旧正常(比如每1min请求一次,自动运行24h以上)
2.并发测试,同时设置xx并发量,请求同一个接口(比如秒杀)
3.逐步加压,看系统服务什么时候会挂(下图场景为:100个用户,在1h内连续,不停循环请求,再继续加的200,300,500等,不加时间的话就是100个并发请求完成后停止)
3.具体场景
1.一般是单场景先测
2.再进行流程性的组合场景持续
4. 实操
4.1制定性能测试指标策略
有接口埋点的数据:
无接口埋点的数据:
4.2测试范围识别
4.3测试类型识别
- 基准测试
基准测试:系统较低压力时,查看系统的运行状况并记录相关数做为基础参考。 - 负载测试
负载测试是通过逐渐增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。
目标:确定系统的性能容量(如系统在保证一定响应时间情况下能够允许多少并发用户的访问),系统各项指标,如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能。 - 压力测试
压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。 - 并发性能测试
负载测试和压力测试通常被合称为并发性能测试。
即大并发场景下的系统性能,多用户同时访问时,检测系统是否能够稳定运行。
平均并发用户数 C = nL/T
n:平均每天访问用户数(login session的数量);
L:一天内用户从登录到退出的平均时间(login session的平均长度);
T:考察的时间段长度(一天内多长时间有用户使用系统);
并发用户数峰值:C'≈C+3*根号C
- 大数据量测试
大数据量测试包括独立的数据量测试和综合数据量测试。
独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。
综合数据量测试指系统在具备一定数据量时,在负载压力测试下,考查业务是否能够正常运行的测试。
目标:测试数据量较大时系统的性能状况。 - 容量测试
容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数),系统在其极限状态下没有出现任何软件故障且能正常运行。 - 配置测试
通过对被测系统软硬环境的调整,了解各种不同环境对系统性能的影响程度,从而找到系统各项资源的最优分配原则。 - 稳定性测试
稳定性是通过给系统加载一定的压力,让系统持续运行一段时间(通常为7x24小时),检测系统是否能够稳定运行。稳定性测试也称为疲劳强度测试,属于可靠性测试的范畴。
目标:测试系统长时间无故障稳定运行的能力 - 失效恢复测试
失效恢复测试是针对有冗余备份或负载均衡的系统来说,检验如果系统局部发生故障,系统灾备措施是否可以正常启动,用户是否可以继续使用。(如:集群、热备等)
目标:通过实施失效恢复测试,评估系统的健状性和可恢复性。
在实际项目当中,可根据不同的性能测试目的,选作相对应的性能测试方式。