阿里SaaS性能测试平台PTS最佳实践

发表于:2018-12-04 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:中间件小哥    来源:云栖社区

#
阿里
分享:
  PTS(Performance Testing Service)是web化的卓越的SaaS性能测试平台,具备强大的分布式压测能力,可方便的模拟海量用户的真实业务场景。PTS于2015年正式在阿里云上线,为广大用户提供极具性价比和业界领先的性能压测解决方案。
  PTS铂金版是2016年8月正式发布的全新产品,核心能力基于服务阿里全生态多达4年以上的单链路/全链路压测平台,该平台对内除了支持日常的外部流量压测之外,同时支持了大大小小的大促活动,如天猫双11、双12和年货节等等;PTS铂金版的压力发起来源是遍布全国上百个城市和各运营商的CDN节点,相比业界产品的云主机发起,更快速,来源更广泛,脉冲能力和流量掌控能力更强。
  PTS铂金版在功能上强调页面可视化编排,目前也在快速迭代中,倡导无需编码的复杂交互式压测;除了上面提及的特性之外,TPS压测模式、实时调控实时生效的调速能力也都是领先于业界的。PTS铂金版会持续的提供高性价比的最佳实践。
  PTS铂金版有哪些特点,涉及哪些术语和概念?
  我们(阿里高可用团队)希望将性能压测本身的工作持续地简化,将更多的精力回归到业务和性能本身,通过性能、体验的提升创造更大的价值,更好的降低成本,更稳定地支持核心的活动。我们选择通过PTS铂金版这款好用不贵的产品输出我们的最佳实践。PTS铂金版就是由阿里巴巴 中间件-高可用团队创造和维护的产品。
  那么,在一个压测闭环中,PTS及其他阿里云产品覆盖了重要的三部分的能力:翻译构造流量的能力、模拟掌控真实流量的能力、展现和定位问题的能力。
  PTS铂金版涉及的几个主要的术语和概念如下:
  VUM:VUM(每虚拟用户每分钟)是性能测试PTS的计费单位,VUM=VU(压测任务并发用户数值)* M(压测任务执行时长,按分钟粒度,不满一分钟按一分钟计算),举例:100并发用户运行10分钟即1000VUM, 1并发用户运行1000分钟也是1000VUM,以此类推。比较贴心的是PTS铂金版并不是同大部分SaaS压测产品那样基于压测时间预设的最高并发计算VUM,而是按照实际的消耗VUM计费。
  链路:在 PTS 中被定义为一种业务行为,可以是一个接口、页面等,是一个最小的单位。以电商为例,登录、查询商品详情、提交订单和付款等都是一个链路。
  串联链路:串联链路是一组含有某种业务含义的链路的有序集合(事务),链路只有在同一个串联链路中才能进行入参和出参关联(运行时数据传递)等。
  场景:串联链路的一组集合组成场景,场景也就能模拟各种有序集合的组合形态,也就是复杂业务场景。
  压测模式:PTS铂金版支持并发模式和TPS模式两种,特别是第二种是独创的一种压测模式,更侧重一步到位地评估被压测端的吞吐能力,因为所谓的并发在服务端最终是被网络解耦为有先后顺序的请求。
  指令:为了更加贴合业务逻辑、更加真实地模拟用户行为,PTS铂金版提供了一系列的指令功能,指令是一种可以改变、控制链路执行的行为和流程的功能组件。指令可以穿插在串联链路的各个位置,一般来说只会对单个串联链路起作用,某些特殊的指令也会对多个串联链路同时起作用。
  PTS铂金版如何做一次压测?
  由于篇幅原因,下面介绍一个简单的压测配置过程,更多强大的扩展可以通过购买资源包自行做深度体验。
  假设我们的压测场景是一个 首页 -> 搜索 -> 详情 -> 思考时间 -> 下单 的流程,也就是说压测场景中包含一个串联链路,一个串联链路中是4个链路。
  那么我们首先录入和设置这4个链路,在左侧导航栏中单击链路管理,在链路列表页面右上角单击新增链路,录入基本信息。
  如果需要给每个请求单独构造请求体、请求头、Cookie或者是URL的,那么按照PTS的文档介绍构造完成之后上传即可。
  在业务上某些链路需要输出一些值给到后续链路的,比如首页传递userid、name给到后续链路,搜索传递搜索到的itemId给到详情和下单页面的,那么需要在相应的链路中定义出参(支持正则和JSON表达式的解析,详见文档)。
  对应的,需要出参的链路定义一个入参,并在场景中关联(后面场景部分再介绍)。入参的定义很简单,主要是一个变量的申明,需要使用的的时候可以直接在文件中直接通过 #{param} 占位符来引用。举例说明,详情链路有一个名为 “itemid” 的入参,那么压测文件中只需要 itemid=#{itemid}&age=12 这么使用即可。
  接下来进入场景构建步骤,在控制台左侧导航栏中单击场景管理,在场景列表页面单击新增场景。输入场景名称(可以以业务来命名),设置持续时间(压测的最长时间),选择模式(TPS 或 并发 模式),然后单击确定。
  前面有讲到,场景中只有一个串联链路,然后在串联链路中添加前面配置的业务链路,在添加的时候如下图所示关联前后的出/入参,设置单个链路的起步和目标压测值即可。
  在指令部分,这个例子中增加了最常见的思考时间,思考时间用于模拟用户在前后两个节点间思考、反应花费的时间,支持多种模式,如固定值、均匀分布和正态分布。
  其他还有一系列的指令,如集合点、Cookie的导入导出等等,具体参见文档并视业务情况使用即可。
  全部配置完成之后的效果如下:
  当然启动前可以使用调试场景的功能方便的进行场景的调试,在不计费的情况下会跑一条数据或者一次轮询并结构化地展示各链路的请求/响应情况,对出入参/断言都会单独展示出来便于问题的排查。
  接着保存配置或者直接去压测,实时的客户端视角的监控和报表效果如下图:
  当压测完成之后会自动生成报表,分为概览和明细两部分,话不多少直接看图:
   原文链接:https://yq.aliyun.com/articles/535584?utm_content=m_43778

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号