测试-小程序打码平台

article/2025/10/4 4:53:21

一、背景

1、小程序不同于H5有线上和线下环境,而是区分开发版、体验版、正式版,并且每个版本都有对应的权限管控
2、平时项目测试过程中,都是基于开发码进行测试和验收的;
3、开发码生成的流程:开发分支代码本地编译打包,通过微信开发者工具将代码上传至微信服务器,然后微信服务器会返回一个二维码,通过微信环境扫这个二维码,就能打开一个测试用的小程序

二、本地打码的流程

  • 1、本地环境搭建
    • 安装node,环境配置
    • 安装微信开发者工具
    • 代码权限申请
    • 测试小程序的开发者权限申请
  • 2、本地代码打包
    • 切换开发分支,拉取代码到本地
    • 根据项目,执行编译打包(例如:npm install、npm build、yarn install、yarn build等命令)生成dist文件
    • ps:因为项目和业务测试需要,可能还需要针对代码中一些appId等参数进行修改,修改后再进行编译打包
  • 3、微信开发者工具生成开发码
    • dist文件夹生成后,通过微信开发者工具导入工程,直接编译生成开发码。或是指定path、query等参数编译,进入指定页面。

三、本地打码的问题

熟悉整套本地打码流程后,在一个项目中重复生成二维码“理论上”会很快。为什么说是理论上呢?有以下问题

  • 1、整个打码过程受限于工作机的性能

    • 如果工作机上开启了很多软件,开发者工具打码的过程也会导致电脑卡住。除了工作机性能不好以外,大家在使用本地打码的过程中,也有其他阻塞测试效率的问题。
  • 2、打码同学需要感知环境、打包命令等变更

    • 比如说原来开发环境用的node8,后面升级至node14,导致大家在本地构建时失败。而且这种失败并不会有比较明确的提示告诉我们需要去升级node版本。node环境外,还有打包命令的变更。早期大家用的npm安装依赖和构建,后面变更yarn命令后,有一部分同学使用npm打包失败后不知道原因是什么。
  • 3、小程序开发者权限名额太少导致无法加上

    • 一个测试小程序只有200个开发者名额,但是有赞技术团队的人数远大于200。有时候测试紧急项目加上一个测试小程序的开发者权限,项目上线后自己微信号的开发者权限就被下掉给其他开发或者测试同学了。

四、打码平台自动化

1、设计思路

整理思路就是将本地打码的一套流程,转移到一台专属服务器中去操作;这台机器除了部署node环境和安装微信开发者工具以外,还部署了Jenkins服务,通过Jenkins的job调起开发者工具生成二维码。
在这里插入图片描述

  • 专属提供一台服务器做打码自动化,因为微信开发者工具仅支持macOs和Windows系统,所以最后决定用macmini服务器
  • 机器上需要安装node等环境
  • 机器上需要安装微信开发者工具
  • 部署jenkins服务,通过shell脚本启动Job执行
    • 代码的下载编译打包(通过git等命令)
    • 调用起微信开发者工具生成二维码等(通过微信提供的cli命令行工具)
  • 生成开发码后,将图片存放至Jenkins的工作区中,方便直接通过Jenkins服务查看二维码。
2、平台1.0版本
  • 1、 以下是Jenkins 通过shell脚本实现整套自动化的简易版代码。
# step1.切换到工程目录下,清理之前的文件
cd project
rm -rf ${projectFile}
# step2.拉取代码,切换到对应分支
git clone ${project}
git checkout -b ${branch} origin/${branch}
cd ${projectFile}# step3.修改appId、店铺id
sed -i "" "s/1024-appId/${appId}/g" project/src/ext.json
sed -i "" "s/1024-店铺id/${店铺id}/g" project/src/ext.json
# step4.打包构建
yarn install
yarn build# step5.打开开发者工具
/Applications/wechatwebdevtools.app/Contents/MacOS/cli open --project  project/dist 
# step6.预览二维码
/Applications/wechatwebdevtools.app/Contents/MacOS/cli preview --project project/dist --qr-format image --qr-output /.jenkins/workspace/${jenkinsJobName}/preview$BUILD_ID
  • 2、使用后的问题
    Jenkins实现了打码的全自动化,测试同学不用再感知node环境、打包命令等变更,但是也有一些效率上的问题
    • 高频打码时段,一直在排队。
      微信开发者工具同时只能生成一个开发码。所以Jenkins的任务只能串行执行。而大家提交打码申请都是在同一时间段内。这样就导致大家一直在排队,无限延长了开发码生成的时长。
    • 单次任务时间在15分钟。
    • 公用测试小程序数量少,经常打码冲突。
    • 目前不支持qq、支付宝小程序的打码自动化。
3、平台2.0版本

打码平台是基于Jenkins实现的打码自动化的基础上,支持多个打码任务并行执行,同时提供可视化的页面。

  • 1、多并发打码
    打码平台最需要解决的就是打码排队问题。我们首先想到的就是将串行的任务变成并行。
    幸运的是我们发现一台机器上是可以安装多个开发者工具。每个开发者工具登录不同的微信号,并且对应不同的Jenkins Job,就可以实现多并发。
    还可以增加打码的机器来实现更高的并发
    在这里插入图片描述

  • 2、单次任务执行时间降低
    单次任务时间降低主要从硬件、脚本两方面进行优化。

    • 硬件优化
      最早用来跑自动化打码的机器配置是4核8G,单次任务时间大概14分钟多,将近15分钟。将机器替换为8核16G后,单次任务执行时间降低至10分钟。
    • 脚本优化
      • 最早拉取代码用的是git clone + git checkout 2句。git clone时除了会拉取默认的master分支外,还会拉取所有远程分支的信息。这样会非常耗时间
        # version1
        git clone ${project}
        git checkout -b ${branch} origin/${branch}
        
      • 所以我们可以在git clone时增加branch参数,将两句合并为1句。
        # version2
        git clone -b ${branch} ${project}
        
      • version2的代码,只会拉取指定分支的数据。但这还不是最优解。version2的git语句,会将这个分支的所有commit信息都拉到本地。但是我们只是为了拉取最新的代码,直接打包构建。并不用到历史commit信息。所以可以在version2上再增加参数–depth=1,只拉取分支最新commit的信息。
        # version3
        git clone –b ${branch} ${project} –depth=1
        

    测试下来,version1时长在209s,version3只花了33s,优化了进3分钟。
    通过硬件+脚本的优化,单次任务从15分钟降低至7分钟。

  • 3、打码冲突比较多
    这里的冲突,主要是受限于微信的限制。同个小程序同时只能存在一个开发码。但是目前大家在用的公用测试小程序只有2个。
    甲同学用小程序A打码,乙同学同时也提交了小程序A的打码申请。那当乙同学打码成功后,甲同学的二维码虽然还是可以扫,但是小程序内容已经是乙同学的改动了。
    从自动化打码的方面来说,是无法解决这种冲突的。我们只能建议高频打码的团队去申请自己的小程序,将这2个测试小程序留给打码需求比较少的团队共用。

  • 4、可视化页面

    • 实现多并发打码后,直接通过Jenkins分发任务带来了一些问题。

      • 在使用Jenkins打码时,需要人工区分哪个Job是空闲的,这又将全自动化打码变成了半自动化。
      • Jenkins中都使用一个admin账号进行打码,有问题时找不到对应的分支是谁在打码。
      • Jenkins只记录了最近30次的构建结果。无法定期review打码数据,对打码流程进行优化。
    • 改进

      • 搭建了打码平台,用户只需要在可视化的页面上输入参数,点击提交。后端服务查询空闲的Jenkins任务,通过JenkinsApi调起对应的Job开始打码。Jenkins任务结束后,回调接口将打码结果返回给后端服务。
      • 同时结合公司的账号体系,每次打码都能直接拿到打码人的用户名,并且将用户名、打码参数、打码结果都持久化在DB中
      • 在这里插入图片描述

http://chatgpt.dhexx.cn/article/Fbqaydsf.shtml

相关文章

php对接打码平台,易语言接入打码平台的方法

易语言作为一个可视化操作的中文编程软件,可以很更利的开发一些营销类的软件,能做自动化工作,这时对于有输入验证码的操作的,就要接入到打码平台了,现在看看易语言怎样接入到打码平台的! 1、对于打码平台&a…

autojs-识别验证码-联众打码

联众官网进不去了 新写了超级鹰打码 需要的可以看看:https://blog.csdn.net/tfnmdmx/article/details/123329446 本篇保姆级教程,包括账号注册,获取点数,上传图片获得结果,结果报错以及返回用户点数函数!…

两阶段(two stage)目标检测原理详解 -- RCNN

目录 一、目标检测的任务 二、什么是“两阶段”呢? 三、两阶段算法原理 (二)候选区域算法 (三)边框回归( Bounding Box Regression ) 1. 非极大值抑制(Non-Maximum Suppressio…

Apriltag定位原理与测试

Apriltag定位原理 二维码的检测工作的思路是提取一块四边形的区域,这个区域具有比周围亮度更低的特点。这个思路的主要优点是尽可能多的检测出所有可能的二维码,但是极有可能出现 false positive,后续的编码可以对野值进行剔除。 图 1 二维…

如何理解海森堡的「不确定性原理」?

维尔纳海森堡(1901-1976),德国物理学家,量子力学创始人之一,“哥本哈根学派”代表性人物。 海森堡提出了著名的“不确定性原理”:一个运动粒子的位置和它的动量不可被同时确定。 我是物理科学…

万用表测不准简单维修

文章目录 1. 起因2. 故障表现3. 组装 1. 起因 这几天装灯暖浴霸,需要用到万用表,有点坏了, 是大一大二上电工电子实验课时候买的万用表,胜利V97,也得有7-8年了,100多块钱。 2. 故障表现 坏的表现是&am…

你也可以看懂,量子力学的困惑,测不准原理 薛定谔的猫 !

量子力学已经是现代物理学的基础学科之一,其影响力越来越大!巨大的影响力迫使着人们了解它,可量子世界中的种种奇异现象却挑战着常人的逻辑底线。甚至 让许多物理爱好者也摸不着头脑, 以至于玻尔(量子物理学家&#xf…

交易市场中的测不准原理

(图片来源于网络) 众所周知,在物理学中,微观粒子的速度(动量)和位置是无法同时精确测量的——也就是说,要么我们可以精确知道一个粒子此刻的速度,但是我们就不能知道它具体在哪个位置;要么我们可…

【数字信号处理】卷积和乘法系列3之测不准原理

关注公号【逆向通信猿】更精彩!!! 声明:底部的小广告标签并不是博主所加!! Heisenberg测不准原理 信息在时域中的扩展(尖峰之间的距离)与其在频域中的对应扩展之间的这种关系是Heisenberg不确定性原理的一个例子。时域中的扩展(方差)乘以频域中的扩展具有不能被突破的…

PCIE总线-PCI、PCIE关系及信号定义

PCI(Peripheral Component Interconnect)总线规范在上世纪九十年代由Intel提出。在处理器体系结构中,PCI总线属于局部总线(Local Bus)。局部总线作为系统总线的延伸,主要功能是为了连接外部设备。 处理器主频的不断提升,要求速度更快&#x…

7、PCIE总线-PCI、PCIE关系及信号定义

PCI(Peripheral Component Interconnect)总线规范在上世纪九十年代由Intel提出。在处理器体系结构中,PCI总线属于局部总线(Local Bus)。局部总线作为系统总线的延伸,主要功能是为了连接外部设备。 处理器主频的不断提升,要求速度更快&#x…

PCIe总线了解

转载于:若风飘茫的博客 PCIe总线概述 随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完…

pcie总线基础知识

PCIe总线概述 随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能…

pci总线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangweiqing80/article/details/83112671 一、Pci的地址域 PCI总线协议中定义了三个不同的地址空间:1、PCI配置空间;2、PCI memory空间&#xff1b…

PCIE总线基本介绍(和PCI总线差异、速率计算、引脚定义)

1、PCI和PCIE的差异 (1)PCIE协议在软件编程上是兼容PCI协议,不同在于PCIE和PCI的控制器; (2)PCIE是差分串行信号线,PCI是电平并行信号线; (3)PCI协议使用INTA#、INTB#、INTC#、INTD#四根中断线来触发终端,PCIE协议没有…

I3C总线技术概述(一)

官方I3C协议规范技术文档中文版 在本篇文章之前,我们通过I2C协议研读(一)-(十一)回顾了I2C总线协议,从本篇开始将开展I3C协议的研读。大概分为以下几点: 1、I3C总线技术概述 2、I3C总线协议&…

总线通信协议-PCIe

文章目录 1.简介1.1 总线特点1.2 总线接口1.3 拓扑模式 2. 传输协议3. 小结 1.简介 采用串行同步全双工的传输方式,工作频率可以达到2.5GHz。 1.1 总线特点 代表着传统并行总线向高速串行总线发展的时代的到来为了兼容之前的PCI总线设备,虽然PCIe是一…

PCIe总线的基础知识

与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而…

总线通信协议-PCI

文章目录 1. 简介1.1 总线特点1.2 总线接口1.3 拓扑模式 2. 传输协议2.1 传输模式2.2 时序图2.3 PCI-X总线基本概念2.4 PCI传输速率 3. 小结 1. 简介 PCI(Peripheral Component Interconnect)总线协议由Intel在1992年提出,是一种局部并行总线…

什么是I3C总线?它和I2C和SMBus是什么关系?

计算机技术发展十分迅速,三十年前,一间房子大小的小型机的算力,到现在还比不上大家手机CPU的算力。令人吃惊的是,有这么一种38年前的技术,现在还在大家的电脑中运用十分广泛,甚至它的控制器在计算机中的个数…