新功能上线前,想测试新版本的性能表现?
新版本发布初期,大盘数据特征不明显,优化性能无从下手?
……
为了方便开发者快速验证版本性能表现、及时发现性能质量问题,小程序云测服务 上线 小程序质检报告,一站式查看启动性能、运行性能、异常监测、网络监测等各个环节的小程序质量问题,助力开发者提前发现潜在问题。(👉 查看 使用教程)
近期小程序质检报告更新以下 3 项重点能力,更定制化、自动化地支持开发者的测试工作:
- 支持更多种指定操作路径:录制回放、Minium 支持指定操作路径,便捷对比不同版本
- 支持配置定时任务:自动跑测,灵活检测特定时间的小程序表现,省时省力
- 支持 API 提交:便于联动企业内系统,一站式打通 Devops 流程
----- 彩蛋环节 -----
彩蛋 1:为了更好地优化小程序质检报告能力,即日起至 1 月 30 日,官方团队邀请各位开发者朋友在下方评论区分享使用小程序质检能力的使用体验,精选评论的用户将获得超可爱的限定版龙年生肖公仔 1 只!无论是竖起大拇指的认可,还是暗戳戳的体验吐槽,我们都非常欢迎!
彩蛋 2:欢迎各位开发者朋友使用小程序云测服务,提升小程序整体表现!即日起至 3 月 1 日,前往 小程序云测服务交流专区 分享云测使用的最佳实践,精选文章的用户将获得限定版龙年生肖公仔 1 只!上不封顶,好文章越多,奖品越丰厚 ╰(○'◡'○)╮
非常感谢大家关注和体验小程序云测!
我们收到了很多开发者朋友们的热切反馈,我们将认真参考大家提出的意见,不断改进和提升小程序云测的用户体验,与各位开发者朋友们一起打造最好用的小程序测试平台!
我们精选以下8位用户的回答并送出周边礼品一份。2024 年1月 31 日前,我们将通过社区私信或企微群中联系以下得奖者确定邮寄地址,如本周内未收到回复(2024年2月5日 0点前),视为放弃奖品
获奖者:
不测不知道,一测才知道我的小程序还有这么多可以优化,测试纬度比较全面。
有以下 3 点建议,主要围绕开发者更快速的解决问题的角度:
1.优化建议部分是否可以直接点击给出相关解决方案,最好具体些。
如:大量未使用CSS,可以标注没有使用的CSS,让开发人员更好的清楚掉无用CSS。
2.关于超时部分的接口,是否可以直接导出记录?这样便于让后台人员排查。
在上个层级有请求记录详情,有一个【下载请求日志】按钮,点击一直报错【无权限】。
3.关于业务上的特殊性,如何测试全面?
如:我的小程序是需要开通会员才能体验会员专属功能,这种情况下,我该如何处理?
1. 我们考虑怎么优化下
2. 下载请求日志的问题明天上线会修复
3. 好问题~~现在质检报告只要用monkey去跑,如果开通会员这个操作只是和账号相关,可以尝试在云测中,先添加真实账号 (https://developers.weixin.qq.com/miniprogram/dev/devtools/minitest/mock_real_account.html),然后测试时用真实账号跑测。 如果是必须要指定步骤操作,可以尝试下minium和录制回放的方式去指定操作路径(https://developers.weixin.qq.com/miniprogram/dev/devtools/minitest/replay.html)
===
非常欢迎加入我们企微官方群,联系云测小助手,进一步深入交流
1.支持开发工具云测插件和云测服务 Web版本两种打开方式(优点);开发工具打开云测,为啥只能显示当前项目,而不能像云测服务 Web版本那样可以新增项目,或者自动同步该微信已绑定小程序,每次新增项目或开发工具打开指定项目再打开云测很麻烦(缺点)
2.测试中为啥有时不能取消,不能取消的原因是什么,取消了为啥也有报告,但报告内容无数据。
3.项目管理-人员管理,同步项目人员同步成功了没有数据体现,这里的人员同步是否与账号管理(测试账号管理)有联系,既然真实账号测试必须是小程序管理员或开发者,那为啥还要用户扫码授权。
测试计划可以对指定页面进行测试这个很nice,不然每次全测很费时;测试人员零代码就可上手,快速定位小程序问题页面(启动性能优化、运行性能以及体验、页面耗时等等)。
后期是否会增加其它的一些检测?
1、比如内容违规检测、页面始终loading未完成加载或无法操作、授权异常检测,造成页面空屏、出现undefined等
2、扫码功能测试,比如:扫码得券,扫码购物等
3、滑动流畅性测试、动画流畅性测试
4、一些页面涉及设备数据如加速度,比如:摇一摇、摇红包等
1. 开发者工具打开,是同步你工具中打开的那个appid的项目,因为在工具打开的是走工具给的授权信息
2. 关于任务取消的问题,逻辑是在测试开始后的1分钟-5分钟内都可以取消的。主要是因为云测是真机跑测的,每次测试都实实在在占用机器资源测试,如果可以无限取消,那机器资源会被无效消耗殆尽
3. 同步成员是指和小程序管理后台 https://mp.weixin.qq.com 里面的成员一致。云测不做成员管理,mp平台的开发者就是项目成员。平台每天凌晨定时同步一次。如果项目在mp平台添加人员后,希望立刻同步到云测端,可以手动点下开始同步~
我用云测工具对我的小程序进行了一次检测,下面写一下我的感受和一些想法。
测试开始之前:安装插件和运行Monkey测试需要的操作非常少,几乎是零门槛上手。
测试过程中:此过程没有提供详情查看,我通过日志发现一次测试会多次进入小程序,本以为会使用多个真机机型进行测试,看通过nginx日志并不是这样的(后续的质检报告里也证实了这一点),不过小程序基础库在多机型的适配上已经做的很到位了,没什么大问题。
测试结果:
1.(赞)质检报告中的各项内容都比较详细,能够基本了解测试的过程。
2.(建议)运行截图页面,可以评估是否有必要增加一些文字描述,如点击(tap)了某个层级的组件(view),来描述如何从当前截图到下一个截图。由于截图不是视频,目前有一些截图中没有显示触摸点,下一个截图便跳到了新的页面。这对解决次页面onload、onshow等事件的问题时,可能会存在挑战。
3.(建议)云测对引入的官方组件页面也进行了测试,可以考虑在这里进行优化以节省资源。比方说,我引入的官方评价组件,也被云测反反复复点了很多下。
4.(疑问)貌似没有覆盖到从onShare分享出去的path再次进入的流程。
5.(疑问)JS ERROR可以通过sourceMap进行定位,但在We分析中,下载sourceMap是需要专业版的。对于这一点,未来是否有更方便的解决方案?
特定问题:
1. 在测试过程中,我发现云测多次进入了某一页面,在这个过程中偶尔会出现 this.getOpenerEventChannel() 为 undefined 的问题。不清楚是否与云测环境有关,因为项目代码中进入这个页面的入口只有一个,而且在We分析的JS分析中没有出现此类错误。
2. 出于隐私保护考虑,我的程序设计了一项功能,允许用户开启指纹验证的开关,这样在用户进入小程序时,会先要求进行指纹验证(在开启开关时前已进行checkIsSupportSoterAuthentication前置检查)。在云测中它点击打开了这个开关,后续进入时,却无法完成指纹认证,导致后续一直卡在这个验证页面,直到测试结束。如果因为这一项功能而放弃快速monkey,似乎有点得不偿失。
1. 咱们是支持多机型一起跑质检测试,但是机型选择能力是只对购买额外时长的项目开放。普通项目都是用华为P40以及iPhone 11真机进行跑测。普通项目固定机型的好处是方便后续进行报告对比
2. 运行截图增加操作描述建议挺好的,我们后面考虑怎么集成进去,感谢反馈
3. 对官方组件页面进行测试,因为新接入的项目是用Monkey能力跑测的,云测Monkey的目标是尽量覆盖更多测试页面,并不会区分该页面是否为官方组件
4. 目前还不支持分享跳出小程序的测试
5. 建议在上传代码的时候,直接保存sourcemap,然后上传云测(嗯,we分析的问题咱们解决不了额~)。这个过程可以全部通过接口自动化进行,可以参考这个文章: https://developers.weixin.qq.com/community/minihome/article/doc/000666067f8bb83c697e3da3851813
6. 特定问题需要针对报告分析下,可以加入我们官方企微群,联系云测小助手排查看看
体验感觉非常不错,我们比较多的关注小程序性能方面,能够很直观的感受到小程序加载的性能。
不过也有几点不是很理解的地方
1、启动性能分析中,能看到各个包加载加载,但是确不能明确的知道是因为什么问题影响加载时长,网络波动的话有多次性能分析报告,应该不会每次都是网络波动问题
2、启动性能分析中,能够看到不同的插件加载时长,但是插件的下载看起来是并行,但是安卓和ios相差比较大,并且加载插件和分包的顺序还不一样,这个得自己去观察,希望能更好的告诉我们两者不一样的地方,侧重关注哪一点。
3、多份相同设备的性能分析报告中,分包和资源加载时间相差较多,不能更好的体现到底应该如何去优化性能
4、启动性能分析报表中,希望可以直观的告诉开发者性能优化建议(比如分包加载时间过长,主包资源过大,子包应该怎样合理加载)。
1. 启动性能确实会受到网速影响,包加载这块,重点关注包体大小,以及包体加载的时序,关于具体的问题,请扫码加入我们企微群,联系云测小助手,分享报告后一起分析
2. 安卓和ios对比启动性能没有意义,因为启动的流程都不一样
3. 启动性能只有同机型对比才有意义,不同机型之间差异巨大都是正常的
4. 这个也是我们努力的方向,再次感谢支持
之前小程序的自动化测试方案是比较缺乏的,小程序云测出来之后,填补了这一空白,还可以自定义测试任务和定时提交任务。
使用过程中能够较好的发现项目的问题,最重要的一点是即使在不收费的情况每周也有足够的免费时长(每周150分钟)。初次使用还可以进行免费的性能专项测试和智能Monkey。
质检报告中很详细的给到了启动性能的分析(含热启动和冷启动),对于页面出现的问题无论代码异常还是网络异常亦或性能问题都可以很详细的展示,并且给到最佳实践建议。
分析详情中能给到很清晰的运行截图,网络请求的详情,并且提供日志下载。
比较钟意的一点是云测提供了API调用的方式,结合我们现有的Devops流程实现了自动提交云测任务,并且在任务进行不同阶段通过企微机器人进行播报。使用过程中也碰到一些问题,例如在通过接口上传sourceMap的时候,接口会报错508,希望帮忙看下是上传数据的问题还是服务器接口的问题
关于对接接口 官方给了Python的例子,顺手提供个node版本demo
const fs = require('fs') const axios = require('axios') const FormData = require('form-data') const args = process.argv.slice(2) const test_type = args.length > 1 ? Number(args[1]) : 1 class MiniTestApi { constructor(user_token, group_en_id) { this.token = user_token this.group_en_id = group_en_id this.minitest_api = 'https://minitest.weixin.qq.com/thirdapi' } async thirdAutoTask() { const config = { assert_capture: true, auto_relaunch: true, auto_authorize: false, audits: true, compile_mode: 'pages/getOpenId/index?p=1&m=2' } const data = { token: this.token, group_en_id: this.group_en_id, test_type: test_type, platforms: 'ios', wx_version: 2, desc: args.length > 0 ? args[0] : '' minium_config: config } try { const response = await axios.post(`${this.minitest_api}/plan`, data) const resp = response.data console.log(resp, 'resp') return resp } catch (error) { console.error(error) } } async queryAutoTask(plan_id) { const data = { token: this.token, group_en_id: this.group_en_id, plan_id: plan_id } try { const response = await axios.get(`${this.minitest_api}/plan`, { params: data }) const resp = response.data console.log(resp, 'queryAutoTask') return resp } catch (error) { console.error(error) } } async shareUrl(planId) { const data = { token: this.token, group_en_id: this.group_en_id, plan_id: planId } try { const response = await axios.get(`${this.minitest_api}/share_url`, { params: data }) const resp = response.data return resp } catch (error) { console.error(error) } } async uploadSourcemap() { const data = { token: this.token, group_en_id: this.group_en_id } const sourcemapFile = fs.createReadStream('../sourcemap.zip') const formData = new FormData() formData.append('file', sourcemapFile) try { const response = await axios.post(`${this.minitest_api}/source_map`, data, { data: formData }) const resp = response.data return resp } catch (error) { console.error(error, 'uploadSourcemapError') } } } // 脚本调用执行 if (require.main === module) { new MiniTestApi(config.ycToken, config.ycProjectId) }
小程序质检能力使用有一段时间了,跑了几次,整体来看我的小程序还是可以的😁
最近几次的质检报告,小程序代码已经按照文档配置好了「静态初始渲染缓存」,可是报告这里还显示“未开启初始渲染缓存”,不知道哪里出问题了😳
我看了下代码,变量已经绑定在WXML里面的,但是这里还会提示「setData传入未绑定在WXML的变量」😳
------
还记得质检能力刚上线的时候还不支持指定页面跑Monkey,当时提了一下,过两天就支持上了,给云测团队点赞👍
因为业务需要,最近使用质检任务功能比较多,其中我们比较关注质检中的页面切换时间的性能这个模块。说下使用感受有几点如下:
整体的感受: 从最开始没有质检功能到现在的质检上线, 从开始简单的质检到后续的数据的丰富,定时任务的增加,跑测脚本类型的增加,问题反馈后的及时修复,整体上看到了一个可靠的团队在一直优化和提升,给了我们继续使用的信心。
另外在使用的过程中,也遇到了一些困惑,希望有更好的解决方案的出现。
目前就想到这么多,希望产品越做越好。
1和2我们私聊排查下
3. 购买额外时长的项目,是支持选择机型的
4. 定时任务的问题,我排查看看
使用感受有以下几点:
1.小程序质检任务可以自选monkey自动化脚本这个方式特别好,能够捕获前端页面,接口响应,页面响应等多个维度的问题所在,并且报告信息也比较全面和详细,也为项目的质量评估工作提供了一个准确参考,支持越做越好;
2.Monkey自动化脚本跑测时,在点击到需要调用手机相机的页面时,经常出现JS-Error的报错,但是相同脚本只在安卓机型发现异常,苹果机型未发现;
3.测试的机型较为单一,是否能够定期更改跑测的机型,或者多添加几个常见机型自选更好;
1. JSError的问题,请加入官方云测企微群,联系云测小助手排查下
2. 普通项目固定机型跑测,主要是为了方便后续做报告对比能力,同机型对比报告才有意义。ps:购买额外时长的项目可以自由选择测试机型 。参考 :https://developers.weixin.qq.com/miniprogram/dev/devtools/minitest/buytime.html
1、我采用的是按需引用,还是提示vant组件库中有大量未使用的css?
2、vant 组件中input提示使用了废弃接口是怎么回事?
1. css判定和按需引用无关,另外目前的检测中,无法识别动态绑定的css(也可能是这个原因导致的)
2. 根据官方文档 https://developers.weixin.qq.com/miniprogram/dev/component/input.html , auto-focus是即将废弃的属性