
支付宝活动性能测试分享20170714.docx
11页性能测试分享性能测试分享 1一、性能测试实施流程 2二、性能测试方法 2三、需求分析 3四、测试准备阶段 4五 测试执行阶段 7六、测试分析和报告阶段 8七、测试总结阶段 9、性能测试实施流程性能测试流程分为五个阶段,分别是【需求调研分析阶段】-【测试准 备阶段】-【测试执行阶段】-【测试报告阶段】-【测试总结阶段】IIIIIII测试清备缺陥定也测试报告搭建坏愎融陽分析^33宪网欄试方案应用、糸窮 ;领域专 I宋讨论Sli";二、性能测试方法1. 基准测试:当我们刚刚拿到一个性能测试系统,对系统不够了解,我们可以 先做基准测试,比如 100 和 200 个用户的并发场景,看一看响应时间是多少, 然后将次作为我们的基准2. 压力测试:如果我们需要快速了解这个系统性能到底是什么情况?我们可以 先做一个压力测试,压力测试是为了获取极限性能指标比如可以设置一个3 小时压测场景,每10分钟加10个用户,那到3小时后,就是180个用户了 这个时候观察,在压力不断增大过程中系统的表现3. 稳定性测试:通过给系统加载一定的业务压力,然后持续运行N小时,验证 系统的稳定性,如内存回收,一旦内存回收出问题可能会出现内存溢出,这在日 常测试是很难测出,所以用稳定性测试排查这些问题。
4. 回归测试(调优后):主要针对硬件和软件的调优后,了解不同因素对系统性 能的影响,从而决定是否值得调优 硬件:如服务器数量、内存、 CPU 等等优化- 软件:如 Nginx 配置、 SQL 语句优化、数据库加索引、代码逻辑、算法优 化等C8的回归测试因素:增加服务器数量、SQL语句优化等三、需求分析阶段1. 如果没有需求,通常通过类似百度统计、友盟、统计出网站业务数据,如高 峰段持续时间,访问那个场景比较多,PV、UV多少、页面或接口访问比例是多 少,来推导出我们需要的场景和指标如:过去一个月我们平均每天下单1W笔,预计在活动时下单激增到20W笔, 系统晚间几乎无交易量,按照2: 8原则推算, 80%的订单在白天产生,按照白 天 8 小时计算:1.1 推导方法例子: (200000*80%)/(8*20%*3600)=28 笔/秒20W单80%的量,在白天8小时的20%期间内产生,依次来估算系统 需要支持 28 笔/秒下单的处理能力2. 比例分析:例如 C8 下单接口 90%用户下单成功, 9%用户重复出单, 1%用 户年龄错误下单失败,按照这个比例分配虚拟用户数4. 最终得到的指标指标项指标量值负载机平均响应时间<=3S90%用户响应时间<=3S下单成功率100%生产服务器CPU使用率<=80%内存使用率<=80%最近1分钟Load小于<=cpu 核数 *2数据库CPU使用率<=80%内存使用率<=80%最近1分钟Load小于<=cpu 核数 *2稳定性测试稳定运行时间24小时业务成功率100%四、测试准备阶段1. 测试环境拓补图2. 测试工具准备:• LoadRunner:传统商业软件,功能强大,支持NET,C开发测试脚本,支 持脚本录制编辑,分布式测试等等,但设置复杂,测试场景需要的参数 化实现成本较高。
• Jmeter: JMeter 是 Apache 组织开发的基于 Java 的压力测试工具,开源 免费,拓展性强,支持分布式,在插件支持下可以设计复杂场景, Jmeter 的拓展监视器收集数据比较全面• Apache AB:接口性能测试工具,apache自带,支持POST,发送 Cookies等,支持参数较多,测试结果全面,但无法设计场景• Webbench:类似于AB的基准测试工具备注:- 在测 C8 接口之前,我们做了 LR 和 JMeter 的工具对比测试,结果印 证两种测试工具的压力发生器产生的压力是一样的 情况许可时,应使用几种测试工具或手段分别独立进行测试,并将结 果相互印证,避免单一工具或测试手段自身缺陷影响结果的准确性;3. 环境准备:3.1负载机环境搭建:压测工具及其依赖环境(Windows或Linux)3.2 WebServer 环境部署,服务调试正常4. 数据准备: 环境准备的工作中会涉及到基础数据的准备,一般采用自造的模拟数据,或 线上脱敏数据5. 准备监控服务:5.1 服务器:- 使用阿里云自带监控服务(历史数据: 包括 CPU 、 Memory、 Load 、I/O), 如图:££±*u.IMdFrom 2015/12/27 17:55:3^1 Ta 2O1S/12/28 17:55:34■ SysteisCurrent:59.S3Average:G7.MHIMaximum :89.56(0■ UserCurrent:41上百1Average;4G . 39mMaximum s61.77nt□ NiceCurrent:G.GOAverage;313,59uMaxinufli;4&.50肋■ TotalCur『亡nt:101.29iiAverage:114.54in陥i崔imum :179.50m实时数据: top、htop、vmstat 、free-m-s 等Processes; 288 tot^lF 2「unn 佃叭 12 stuckp 266 s lee ping F 1646 threads 15:52Lo刖 Aug: 2-23P 仁W驻 1-69 CPU usages 2-35% user^ 2,14% 95-^ idleSharedLlbss 2删 resident^ 7B49K data, @B llnkedlt.MlemReglcni: 923^4 tct^lp 4144M1 residenitj, S^M prlvate,, IPG■轴:shared^PhysHefii 1&& (3O4ZM wired h Z21H mnus-ediVMi 753G w&LzeP 10'53« framework VsizE^ 13976^^1 H) swapihs^ 1SS495B(Bl swapOut^.MetwcirkE: packets: 13a4193^/5G22H in, 11194494/3«44M out. Dd刍曲:1454571/WG readp 9842d4/40G written..PIB 7519^ 7519C 75193 74913 74986 74131 M1M 7353572935 73931 72816 72814 7281172207 72264COflHAND top baish login ocspd cupadGoogle Ch-m COB* appLe*』We mdworkerJZ cob. apple-, hl Wethat Gckogle Go 口 g" GoogleChrcjnChroflChrCMQulckLookSat QuiCkLODkSat quicklookdl%CPU4.C0010-STIME 卿餉® Of 00^1 00i«».93 00:ee.ei«0te»,e3#1:05.97^9tl2.i2MsSe.tZ«Be01p85 ea:afi.32 es^ei^a ■軸m出2 e0ree.2B 韓;■氛前#FHVI2AWPDRT MEM19 3&S4K15 66-0K26 归朋K17 94BK41 2596K12B177 1A2M54 55S4K3S 91GK31fl+ 11SM+BB 2W109 B6M197 11*1胴 16M43 1936K55 4352KFURG卵 SB es O @B 452&K @B 9B 1SM+0B SB 0B SB卵CHPRSAB os胆 QB 456K 114M-77*132N1W 8564K 34MK 34&BICFGfiP PPID STATE BOOSTS 75m 7519& running 11J 751W& 75193 sleeping *elll 75193 43147 Sleeping rt[9] T-1913 1 sleeping *9111 7490& 1 sUeping *@|1] 4432S 44323 sleeping 4«[12] 74119 1 sleeping *Q|S94S| 73535 1 steeping 72935 L sleeping «|1»] 72931 1 sleeping *Q|261J] 斗432B 4432& StatisticsZifl&n.Ji IF&Mp4rtM Ti啊* grf Tim 比例分别为:90%,9%,1%在达到设定的并发峰值前后会逐步递增 \ 递减用户数,使数据平稳,减少波动,如图Eip&cle G A«ll*e Users Couni00:02:1924&215。» Wint Mia ♦951h中方3?th pd b* RjBmhnKl肖 Sfifi甯TMI0蛊咻片£他124CT«16.0Q441-0.955W・W137却S4曲anl 7.60C6-mnic-jgA-«mr6Cl.3 帕14OS.54ME里CH刘矽.33S71.SGS.Q21.5flAA?Cfl-repeMl-OHS&F0W?0DOT%23110115<97.00W5ft59I? 05風3T19.12CB-BLECMe@265?00.00%3W-.1D2dD他07aosfl.oo4499.00SSffi.921S5JSB6.5410A.376. 测试场景设计:- 此次测试的接口是 C8 (核保和出单),我们尽量模拟活动时用户的真实 场景,共添加3 个逻辑,核保出单成功、重复下单、年龄超限导致下单失败。
