性能测试
性能测试是通过模拟生产运行的业务压力量和使用场景组合,观察系统在一个给定的环境和场景中的性能表现是否与预期目标一致,判断系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性能的完整过程。
特点:
1.这种方法的主要目的是验证系统是否有系统宣称具有的能力。
2.这种方法要事先了解被测试系统经典场景,并具有确定的性能目标。
3.这种方法要求在已经确定的环境下运行。
也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的。
负载测试
负载测试是通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。
特点:
1、这种性能测试方法的主要目的是找到系统处理能力的极限。
2、这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。
3、这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。
也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。
压力测试
压力测试是在一定的软硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,使服务器处于极限状态下长时间连续运行,目的是测试服务器在高负载情况下能否稳定工作,找出系统的最薄弱环节。
特点:
1、这种性能测试方法的主要目的是检查系统处于压力性能下时,应用的表现。
2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。
3、这种性能测试方法一般用于发现系统的薄弱环节。
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
并发测试
并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。
特点:
1、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。
2、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
3、这种性能测试方法可以在开发的各个阶段使用需要相关的测试工具的配合和支持。
也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
导致系统存在性能问题的因素:
1.内存溢出:系统由于有太多不可回收对象没有回收,导致无法继续创建新对象,产生性能问题。
2.内存泄露:系统中由于某个对象本应该被虚拟机回收,但因为仍然被引用着而没有被回收。
3.线程安全问题:多个用户同时操作一个资源,进而造成的并发访问问题或者线程死锁问题。
性能测试指标:响应时间、CPU使用率、内存使用率、磁盘使用率、单位时间处理效率、业务成功率。
性能测试工具的作用:
1.模拟用户操作。
2.提供产生压力的手段,模拟真实场景。
3.对后台系统进行指标监控。
4.收集测试数据分析,找出系统瓶颈。
性能测试的核心原理:
1.基于协议。
2.多线程。
3.任务的多次调用。
性能测试时对应用系统的分析:
1.分析被测系统的性能测试点,可以是用户量大、用户使用集中、大数据量、系统核心功能。
2.分析性能测试点的使用流程、场景,模拟真实情况。
3.关注指标是哪些?指标值是多少?
比如响应时间(要求3s内完成)、业务操作成功率(99%)、资源占用率(70%),可通过采集线上业务的数据判断。关注的指标数据还应依赖于场景,比如模拟100个用户使用半小时,或者先模拟50个用户使用10分钟,再升到100个用户使用5分钟,不同场景得出的结论可能是不同的。
对性能测试点的描述:
准确,如XX系统必须在不超过 10 秒的响应时间内处理20 起登录任务,再如发邮件时间最大不超过5秒以及平均时间在2秒以内。
根据计算好的指标进行性能测试的流程: