思想
一、性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,验证系统是否能够达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,优化框架,最后起到优化系统的目的。
压测的必要性,压力测试主要目的就是让我们在上线前能够了解到我们系统的承载能力,和当前、未来系统压力的提升情况,能够评估出当前系统的承载情况能不能满足当前和未来一段时间的正常运行
压力测试也让架构师和开发人员能够对自己负责的系统做到心中有数,当有大并发需求的活动或者其他突发事件导致的访问暴增,能够提前做好预估和准备应急预案。
二、 性能测试分类
目前项目涉及到的性能测试主要是负载测试、压力测试、稳定性测试三类
负载测试(Loading Test):表示在目标系统正常服务的前提下,目标系统所能承担的最大服务负荷数量(即最大并发数量),最终克分析因系统性能瓶颈。
负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。
压力测试(Stress Test):测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力以及系统是否出现错误。
压力测试可以被看作是负载测试的一种,即高负载下的负载测试,
通过压力测试,可以更快地发现内存泄漏问题,还可以更快地发现影响系统稳定性的问题。例如,在正常负载情况下,某些功能不能正常使用或系统出错的概率比较低,可能一个月只出现一次,但在高负载(压力测试)下,可能一天就出现,从而发现有缺陷的功能或其它系统问题。
压力测试通常是在高负载情况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。
稳定性测试(Stability Testing):在给系统加载一定业务压力的情况下(例如资源在70~90%的使用率),使系统运行一段时间,测试系统在这种条件下能否稳定运行。
什么样的场景需要做性能测试
典型事务的选择遵循以下原则: