从零开始的微信小程序自动化测试之路(上)

发表于:2021-6-30 09:30

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

 作者:小胖砸儿    来源:掘金

  1. 前言
  在每次发布新版本之前、都需要回归核心功能、已确保上线后小程序也能按照预期运行. 目前这部分回归工作是由测试同事手工去验证测试用例、按照每周一版本的迭代节奏、回归就花了测试挺多时间的。
  最近前端工作比较轻松、故在思考能否把这部分重复的工作交给程序自动来进行呢、省时省力。

  2. 何谓小程序自动化
  小程序自动化SDK为开发者提供了一套通过外部脚本操控小程序的方案,从而实现小程序自动化测试的目的。
  大白话翻译就是: 让开发者工具能按照代码的执行顺序自动在页面上完成点击、输入等操作(即模拟用户操作), 再将操作后的页面表现与预期想要的结果做对比得到测试结论(断言)。
  官网链接:https://developers.weixin.qq.com/miniprogram/dev/devtools/auto/
  小程序自动化测试SDK:https://www.npmjs.com/package/miniprogram-automator
  小程序自动化测试SDK具备的特性:
  A. 控制小程序跳转到指定页面;
  B. 获取小程序页面数据;
  C. 获取小程序页面元素状态;
  D. 触发小程序元素绑定事件;
  E. 往AppService注入代码片段;
  F. 调用wx对象上任意接口;
  G. ...

  3. 小程序自动化SDK
  3.1 运行环境
  A. 安装Node.js并且版本大于8.0;
  B. 基础库版本为2.7.3及以上;
  C. 开发者工具版本为1.02.1907232及以上;
  D. 要做自动化测试的项目(后面会介绍哦)。
  如何查看&修改基础库版本,请见下图。

  如何查看开发者工具版本、请见下图。

  需要做自动化测试的项目(3选1):
  A. 借助微信开发者工具新建个项目;
  B. 开发者可直接从github下载小程序官方组件源码下来(小程序官方组件源码git地址: https://github.com/wechat-miniprogram/miniprogram-demo;
  C. 真实的项目。
  在本篇文章中、为尽可能直白讲清楚实践步骤、采取方案A新建个项目(下文所有的演示都是基于该项目)。
  先来看看大概的一个目录结构如下:

  若具备以上运行环境了,请继续往下看。

  3.2 安装自动化测试SDK
  Tips: cd 进入到项目根目录下, 终端执行如下命令。
npm i miniprogram-automator --save-dev

  该命令执行成功后,在终端会输出如下内容,说明安装成功。

  终端也有些warn告警,暂不影响使用,故先不处理。

  3.3 初体验
  A. 开启工具安全设置中的CLI/HTTP调用功能。
  具体操作指南如下: 打开微信开发者工具->设置-> 安全设置 -> 启用服务端口。

  有关于CLI/HTTP功能的详细介绍、请戳此链接:https://developers.weixin.qq.com/miniprogram/dev/devtools/http.html
  B. 先准备个需要做自动化测试的页面(为方便、下面会以最简单的demo来演示)。
// 想要测试的页面index
// index.wxml
<view class="usermotto">
  <text class="user-motto" bind:tap="tapFn">{{motto}}</text>
</view>

// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    motto: 'Hello World',
  },
  tapFn (e) {
    console.log(e,'测试自动化结果')
  }
})

// index.wxss
.usermotto {
  margin-top: 200px;
  text-align: center;
}

  C. 在项目中新建文件,以.spec.js结尾(本文以在项目根目录下新建index.spce.js为例子), 输入类似如下内容(在实际过程中根据自己的项目修改即可)。
const automator = require('miniprogram-automator')

automator.launch({
  cliPath: '/Applications/wechatwebdevtools.app/Contents/MacOS/cli', // 工具 cli 位置,如果你没有更改过默认安装位置,可以忽略此项
  projectPath: '/Users/susan.li/files/mini-demo', // 项目文件地址
}).then(async miniProgram => {
  const page = await miniProgram.reLaunch('/pages/index/index')
  await page.waitFor(500)
  const element = await page.$('.user-motto')
  console.log(await element.attribute('class'))
  await element.tap()

  await miniProgram.close()
})

  这里有3个点需要注意:
  1.修改cli工具的路径(若您没更改过微信开发者工具的默认安装路径、可忽略此项、若改过安装路径的、就需要自行寻找安装路径是什么然后补充到这);
  2.修改项目的文件路径(这里推荐绝对路径);
  3.修改下面demo中实际想要操作的元素。
  D.在终端输入如下命令、就在执行自动化测试结果了。
node index.spec.js

  我们来看看命令执行的全过程。
  这里需要留意一点, 在自动化测试启动微信开发者工具时、留意右侧是否出现下图内容[启动自动化端口]。

  紧接着我们看看开发者工具是否有打印出相关内容。

  最后我们再看看终端, 你会发现终端会输出如下内容, 跟你代码的预期是符合的。

  本演示demo想实现的是: 通过自动化测试SDK模拟用户点击Hello World文本(tap操作)、看能否正常执行bindtap里面的方法。
  至此,小程序自动化测试算是开了个头, 请接着往下看。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号