玩转小程序压测

简介: 小程序是移动互联网时代非常重要的流量入口。为了避免因系统性能瓶颈导致用户在使用过程中出现白屏、异常报错等问题影响用户体验,小程序在新功能上线前需要做好压力测试,评估出系统的承载能力,并以压测结果配置限流。让系统面对流量突增,也能稳如泰山。

作者:拂衣


小程序也是需要压测的

小程序是移动互联网时代非常重要的流量入口。为了避免因系统性能瓶颈导致用户在使用过程中出现白屏、异常报错等问题影响用户体验,小程序在新功能上线前需要做好压力测试,评估出系统的承载能力,并以压测结果配置限流。让系统面对流量突增,也能稳如泰山。


常见的小程序中需要做压测的 3 种场景


  • 新开发的系统或功能上线前需要了解其性能水位情况。
  • 对系统进行技术调优、系统扩容前后通过压测进行性能比对。
  • 参加小程序平台活动前对系统进行性能评估。


小程序的压测方案如何设计


根据压测场景不同,压测方案可简单可分为:单接口压测、混合压测、性能调优压测、长稳压测等。请根据需要选择不同的方案。


  • 单接口压测:针对核心业务场景涉及的接口进行单独压测,分析单接口链路的瓶颈。
  • 混合压测:针对业务场景进行混合压测,评估系统综合并发处理能力。
  • 性能调优压测:测试应用系统参数、JVM 参数、线程池参数等对系统性能的影响,并得出最佳实践的参数设置。
  • 长稳压测:长期维持一个相对较高的并发量进行压力测试,观察系统反应情况。通过 24H * N 天的长稳压测,保证系统的稳定性,防止内存溢出、缓慢泄露,线程池、资源获取时的偶然竞争造成死锁、排队等现象;长稳压测的时间长度可根据具体情况适当减少,比如按照 JVM GC、Full GC 发生次数决定稳定性压测时间等。


使用 PTS 对小程序进行压测的最佳实践


不同于自建网站压测,针对小程序压测时,通常需要获得小程序所在的平台(如支付宝、微信)的 Token 信息,并在有效期内使用才能正常压测小程序业务接口。
推荐您通过以下两种方式获取平台授权的 Token:


  • (推荐)编写接口自动获取 Token,并在有效期内刷新该 Token。压测中,您通过 PTS 压测该接口,可以自动获得 Token。
  • 压测前提前记录平台 Token,并以参数形式传入小程序业务接口中。但是请注意压测时长不能超过 Token 的有效期,避免因 Token 失效导致无法进行业务压测。


方式一:编写接口获取 Token


假设需要压测微信平台上小程序的活动页面。您可以编写接口去获取微信的 Token 信息,将该接口编排进压测场景中,并提取出参,传递给后面实际的业务接口。
具体操作步骤如下:


1. 在本地编写接口,以便能够在压测过程中持续地获取微信的 Token 信息。


2. 登录 PTS 控制台[1],在左侧导航栏选择创建场景 > 创建 PTS 场景


3. 填写场景名,例如“myAPP”。


4. 在场景配置页签下,单击压测 API 名称一栏右侧的箭头展开更多详细设置,填写第一个压测 API,即自定义的获取微信 Token 的接口。


5. 选择出参定义页签,配置示例如下:


image.gif


  • 出参名:access_token
  • 来源:Body:JSON
  • 解析表达式:access_token


6. 单击+添加压测 API,填写第二个 API,即小程序活动页面接口,请求方式选择为 POST。小程序活动页面接口即小程序的 URL。



7. 单击创建 PTS 场景页面下方的参数列表,在弹出的对话框中单击出参名的复制图标,复制该出参参数。



8. 假设需要在 API 的 Body 中传入已复制的出参 access_token,单击 API 的 Body 定义页签。在 Key 中填写自定义的名称(例如 input_token),在 Value 中粘贴已复制的出参参数。



9. 单击施压配置页签,根据实际需要,填写压测并发数和时长等信息,示例如下图所示。



说明


  • 若需要获取已经登录的微信用户信息供多个串联链路使用,如 OpenID 或 Token 等,请参见使用 Cookie 模拟登录场景[2]
  • 若获取的信息侧有限流信息,如同一用户的频繁登录登出限制、接口调用限制等,可准备一个串联链路低并发、低 RPS 的登录信息。
  • 施压配置的更多信息,请参见如何进行施压配置[3]


10. 单击创建 PTS 场景页面左下方的保存去压测,即可发起压测。


方式二:手动记录 Token 并写入业务接口


假设需要压测微信平台上小程序的活动页面。那么,您可以在压测前提前批量获取到平台 Token,或者在本地准备些数据(如果业务允许),放在数据文件中,压测时作为全局参数使用。


注意 一般平台 Token 都存在有效期限制,需要定期刷新才能使用。所以采用该方法请注意确认 Token 有效期,超过该期限后,压测就无法正常进行。


具体操作步骤如下:


1.新建一个 .csv 文件(用 Excel 编辑之后另存为 .csv 格式,或者用 Apache 的 commons-csv 来生成),将 Token 信息写在一列中,示例如下:



说明
您可以通过线上环境批量获取平台 Token,或者如果业务允许的情况下可在本地构造 Token 数据。


2. 登录 PTS 控制台[1],在左侧导航栏单击创建场景 > 创建 PTS 场景


3. 在创建 PTS 场景页面,填写场景名,例如“myAPP”。


4. 在场景配置页签下,填写小程序活动页面接口。


5. 单击创建 PTS 场景页面下方的数据源管理,单击+上传文件,上传本地准备的 .csv 文件。上传完毕后,填写参数名,并单击确定




6. 单击+添加压测 API 右侧的下拉箭头,选择添加数据配置


7. 单击数据配置一栏右侧的箭头图标展开更多详细设置,在文件参数设置页签中选择参数名。单击复制图标,复制该参数。



8. 假设需要在 API 的 Body 中传入已复制参数,单击活动页面 API 的 Body 定义页签。在 Key 中填写自定义的名称(例如 token),在 Value 中粘贴已复制的出参参数。



9. 单击施压配置页签,根据实际需要,填写压测并发数和时长等信息,示例如下图所示。



10. 单击创建 PTS 场景页面左下方的保存去压测,即可发起压测。


使用 PTS 做小程序压测的优势


  • PTS 完全自研的压测引擎,支持吞吐量模式,准确模拟流量漏斗模型
  • 支持全国地域发起压测流量,模拟真实用户分布
  • 提供问题诊断工具,展示方法堆栈粒度的报错信息,精准定位性能问题
  • 支持客户端代理录制,大大降低构建压测脚本的成本


同时,PTS 全新售卖方式来袭,基础版价格直降 50%!百万并发价格只需 6200!更有新用户 0.99 体验版、VPC 压测专属版,欢迎大家选购!



相关链接


[1]PTS 控制台

https://pts.console.aliyun.com/?accounttraceid=e03f85e8c48a48239986f1adbd831f5etyot


[2]使用 Cookie 模拟登录场景

https://help.aliyun.com/document_detail/71027.htm#multiTask1285


[3]如何进行施压配置

https://help.aliyun.com/document_detail/70480.htm#concept-70480


[4]支付宝小程序压力测试方案

https://opendocs.alipay.com/support/01rb1x


[5]如何在一分钟内发起压测

https://help.aliyun.com/document_detail/70290.html


点击此处,了解性能测试 PTS 更多资讯

相关文章
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
532 1
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
487 0
在线课堂+工具组件小程序uniapp移动端源码
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
931 0
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
5280 3
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
979 0
微信小程序更新提醒uniapp
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
649 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
366 7
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
390 7
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的美食推荐小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的美食推荐小程序的详细设计和实现(源码+lw+部署文档+讲解等)
262 3