
一、性能测试举个栗子我按照食谱做的红烧肉和大厨做的红烧肉。都可以吃但是好不好吃就又不一样了。为了发现系统性能问题或获取系统性能相关指标而进行的测试就是性能测试对于软件而言性能问题是指查询数据时间过长、网速很慢、服务器无响应、查询数据很长时间才显示列表二、性能测试指标2.1 并发数从业务层面看并发数并发用户数指同一时间段内登录、持有有效会话、停留在系统中的在线用户总量只要账号保持登录、页面未关闭、会话未过期就算业务并发用户从后端服务器层面看指的是web服务器在一段时间内处理浏览器请求而建立的http连接数或生成的处理线程数。消耗cpu举个栗子一个web系统有总员工 5000 人最大同时在线业务并发 2500 人用户行为浏览页面、填写订单、提交订单、查询订单。1.业务并发 2500这 2500 人全都登录在线属于业务层面并发用户其中一部分人只是打开页面浏览一部分在前端输入填单这两类行为不产生高频后端请求。2.服务端实际请求并发 ≠ 2500只有这些操作会计入服务器并发浏览商品 / 页面加载接口查询订单查询数据库接口 提交订单写入数据库接口 纯前端手动填写订单无接口请求不计入服务端并发。 假设 2500 在线用户里400 人浏览页面、80 人查订单、50 人提交订单其余仅挂页填表服务器瞬时并发仅为 530远小于业务在线并发 2500。2.2 吞吐量单位时间内处理的并发数直接体现软件系统负载承受能力。吞吐量越高系统承受的并发越多性能越好举个栗子有AB两种场景。A场景有100个并发用户每个用户每隔1秒发出⼀个请求。吞吐量100/1100B场景有1000个并发用户每个用户每隔10秒发送⼀个请求。吞吐量1000/10100A和B场景的吞吐量相同都是每秒100个请求。但是A场景思考时间短所以A场景占用的系统资源更多。2.3 响应时间响应时间应用系统从请求发出开始到客户端接收到最后一个字节数据所消耗的时间。对于web系统而言系统响应时间包含前端展现时间和系统响应时间前端展现时间页面渲染时间。系统响应时间包含服务器、数据库、通讯网络等响应时间。|并发用户、系统吞吐量、系统响应时间之间的关系当并发用户较少系统吞吐量低系统响应时间较短我们认为系统处于空闲区间轻压力区。随着系统并发用户增加系统吞吐量开始呈现线性增长系统性能进入了线性增长区间重亚力区。吞吐量在某个点上达到了饱和点也称之为拐点。在这之后用户请求不再被立即处理响应时间随之变长吞吐量也逐渐降低系统性能进入了过饱和区间。系统性能的拐点通常是性能测试的主要目的2.4 TPS和QPSTPS每秒处理事务数用于衡量系统在一定时间内能够处理的事务数TPS总的事务数/总的运行时间QPS每秒查询率若一个事务中只有一个接口且是查询接口则QPSTPS2.5 资源利用率通过查看系统占用的情况分析资源瓶颈。服务器cpu、内存、磁盘、网络等三、性能测试分类3.1 基准测试基准测试(Benchmark Testing)又称单用户测试主要用于监测被测系统在较低压力下的运行状况并记录相关数据。当性能测试环境确定以后通常选取业务模型中的重要业务做基准测试对被测系统施加⼀定压力从而获取被测系统在单用户运行情况下的各项性能指标为多用户并发测试和混合场景测试等提供参考依据3.2 并发测试并发测试(Concurrency Testing)用于评估被测系统的某些特定操作同时发生时的性能表现例如被测系统被多个用户同时登录时的响应能力或系统的某⼀功能被多个用户同时操作时的性能表现。通过并发测试不仅可以获得被测系统在多用户并发操作时的性能指标还可以发现被测系统在并发条件下可能发生的问题如内存泄漏、线程锁、资源争用问题。例如通过模拟多个用户同时访问某⼀条件数据或模拟多个用户同时更新数据可能会发现被测系统的数据库访问错误、写⼊错误等。几乎所有的性能测试都会涉及⼀些并发测试。但并发测试对并发时间要求比较苛刻通常需借助专门的性能测试工具采用多线程或多进程的方式来模拟多个虚拟用户的并发性操作。3.3 负载测试负载测试(Load Testing)是性能测试的⼀种测试类型用于评估被测系统在预期的不同负载下的行为。负载测试可用于系统的性能验证、性能诊断和性能调优等场景。负载测试关注系统处理不同负载的能力这些负载可通过控制并发用户或者进程的数量来实现。进行负载测试时通过对系统不断增加并发访问负载监测系统性能的变化直到系统的 某项或多项性能指标达到安全临界值最终确定在满足该安全临界值的性能指标下系统所能承受的最大负载量。简而言之负载测试是通过逐步加载的方式来确定系统的处理能力。负载测试类似于举重运动通过不断给运动员增加重量确定运动员在其身体状况保持正常的情况下所能举起的最⼤重量。通过负载测试可以获取系统能够达到的峰值指标3.4 压力测试压力测试(Stress Testing)用于评估被测系统在高于预期、高于指定容量负载需求或低于最少需求资源的条件下的行为。压力测试关注被测系统处理超出预期或特定峰值负载的能力也可以用于评估系统在资源匮乏时的处理能力比如在可用的计算能力、带宽和内存资源不足的条件下系统的表现。进行压力测试时通常采用逐步增加系统负载的方式使系统某些资源达到饱和甚至失效从而发现那些只有在高负载条件下才会出现的缺陷如同步问题、内存泄漏等。通过对被测系统进行压力测试也能找出被测系统的性能拐点获得系统所能提供的最大服务级别系统所能承受的最大压力评估系统在峰值负载或超出最大负载情况下的处理能力。压力测试主要用于性能诊断、性能调优和容量规划等场景压力测试和负载测试的区别压力测试与负载测试不同。负载测试是在保持性能指标要求的前提下测试系统能够承受的最大负载而压力测试则是测试系统性能达到极限的状态。例如软件系统要求的响应时间为2秒。进行负载测试时发现当访问量达到1万时系统响应时间不超过2秒而当访问量超过1万时系统响应时间则会超过2秒那么在满足系统响应时间指标的前提下该系统能够承受的最大访问量是1万。进行压力测试时则可继续增加系统的访问量并观察系统的性能变化。例如当系统访问量增加到2万时发现系统响应时间延迟到5秒⽽当访问量增加到3万时系统则崩溃无法做出响应。由此可以确定系统能达到的极限访问量是3万3.5 稳定性测试在负载测试的基础上执行较长时间的测试以检查系统的稳定性。通常较长时间指3*24小时以上。四、小结前段时间找房子已经筋疲力尽了然后又做简历简历做好又找不到工作。有个hr和我说现在大环境太差了压根没岗位如果能接受付费实习可以过去。好难啊有点想转行了前方的路看不到一点光啊。咪咪绝育又没绝成真的好难啊干什么都好难