为了降低小程序测试的门槛、提升测试开发效率,小程序云测服务联合微信开发者工具推出 录制回放 功能。
从录制环节上看,该功能具有以下突出优势:
- 零代码生成用例脚本,降低测试开发门槛
- 通过点击操作快速生成用例,提升测试效率
- 支持模块化管理用例,兼容更多元的测试场景
从回放环节上看,该功能能够有效实现:
- 更详细的回放结果,操作日志、截图内容一目了然
- 更直观的错误分析,错误原因呈现清楚明白
最近,微信团队针对录制回放能力进行了重点更新,进一步提升小程序测试的便利性:
- 支持使用微信号 / 虚拟号进行测试,无需迁移测试数据,很好地解决前期虚拟账号无法绑定个人身份信息等相关问题
- 覆盖更全面的机型,支持 400 种机型同时跑测,帮助用户排查兼容性问题(注意:该功能只对 付费用户 开放)
- 提升底层稳定性,优化测试体验
录制回放如此高效便捷,点击 使用文档 体验使用,开启丝滑测试新体验!
--- 彩蛋 1 ---
你对录制回放有自己的深入见解?你希望分享更多小程序测试的实用干货?……
即日起至 2023 年 2 月 15 日,在 微信开放社区小程序云测试交流专区 发表标题含「录制回放征文」的文章内容,精选文章即获得微信官方周边礼品一份!
* 获奖名单将在「微信开放社区小程序云测试交流专区」公告栏进行公示
文章内容包括但不限于:
- 录制回放使用流程经验分享
- 录制回放常见问题答疑
- 录制回放优化建议合集
- ……
期待各位开发大大的干货分享,一起更高效更便捷地测试小程序!
--- 彩蛋 2 ---
录制回放功能有需要提升的地方?你希望录制回放功能增加哪些新能力?……
欢迎在下方评论区分享你使用录制回放的踩坑史 / 经验帖 / 吐槽点,我们将精选评论用户并且各送出 Q 猛虎公仔 1 个,赶上虎年的尾巴继续生猛起来!
* 获奖名单将在「微信开放社区」本次话题评论区进行公示
前段时间,我们发起「录制回放」有奖调研活动。在此期间,我们收到了开发者朋友们的热切反馈。每一条对「录制回放」能力的期盼和建议我们都认真看过。我们将参考这些宝贵的意见,评估需求点,在后续的版本优化升级,与各位开发者朋友们一起打造更好的小程序开发生态!
我们精选以下 3 位用户的回答并各送出公仔 1 个。2023 年 2 月 3 日前,我们将通过社区私信联系以下得奖者确定邮寄地址,如一周内未收到回复(即 2023 / 02 / 10 0 点前),视为放弃奖品。
录制功能很不错,录制过程操作简单容易上手。但是在回放过程中遇到几个问题不知道算不算BUG。
1.部分步骤回放完成后没有状态显示
2.某些步骤回放报错
3.模拟请求能否自定义提交不同的post参数,便于测试时候需要变更部分数据?
4.复杂的目标对象怎么能快速定位到小程序页面元素的具体位置?
感觉这东西要是给我们QA知道,得开心坏了,我先试用下,以下是初步的感受
优点:
1、复杂的产品,对个人开放者帮助挺大,自动化测试很方便,相比之前,“直观” 这个点加分!
2、企业开发者,对于QA的“回归”测试,也有很大的帮助,几套用例存好就行
3、可以记录整个点击的流程和动态显示,用于重现BUG还挺好的
疑问:步骤截图的机制
1、有很多重复的截图,是什么原因?
2、我测试了下一个项目,中间有2个请求,但是请求后结果并没有出现在截图中
3、关于jsonP、较长的request和 长链接,截图机制是什么?
(先这些,持续试用ing...)
前两天调研了下小程序自动化,体验了录制回放以及云测等相关功能,有以下几个点反馈下:
2.【优化】录制之后的用例选择"导出用例为jest脚本",想着二次加工下,但导出的jest脚本直接执行会报错(自己人肉的jest可以执行成功)。 这种不知道算不算bug
自己人肉写jest脚本可以跑过【以下人肉】;
const automator = require('miniprogram-automator') // jest describe('index', () => { let miniProgram let page beforeAll(async () => { miniProgram = await automator.connect({wsEndpoint: 'ws://localhost:12345'}) page = await miniProgram.reLaunch('/mps/zfsy/plugin/zufang/pages/home/home') await page.waitFor(500) }, 30000) it('筛选项个数', async () => { const filter = await page.$('filter-ftoy') const filterTabs = await filter.$$(".filter-tab-item") expect(filterTabs.length).toBe(4) }) afterAll(async () => { // await miniProgram.close() }) })
导出的执行会报各种问题,只要录制的就是滚动和点击【以下导出】;
const automator = require('miniprogram-automator') jest.setTimeout(300000) describe('index', () => { let miniProgram beforeAll(async () => { jest.setTimeout(300000) miniProgram = await automator.launch({ projectPath: '/Users/jiajun/code/58/小程序/wechat-app/wechat-app', }) // 如果需要在真机回放请把下面注释取消 // await miniProgram.remote() }, 30000) afterAll(async () => { await miniProgram.close() }) it('auto', async () => { let page, element, expectResult, actualResult page = await miniProgram.currentPage() await page.waitFor(2000) element = await page.xpath('/view/view/category/view/view[1]/image') await element.dispatchEvent({"eventName":"touchstart","eventData":{"detail":{},"changedTouches":[{"clientX":41.59375,"clientY":183.6875,"force":1,"pageX":41.59375,"pageY":183.6875,"radiusX":11.5,"radiusY":11.5,"screenX":150.01953125,"screenY":-627.1953125}],"touches":[{"clientX":41.59375,"clientY":183.6875,"force":1,"pageX":41.59375,"pageY":183.6875,"radiusX":11.5,"radiusY":11.5,"screenX":150.01953125,"screenY":-627.1953125}]}}) await page.waitFor(73) await element.dispatchEvent({"eventName":"touchend","eventData":{"detail":{},"changedTouches":[{"clientX":42.01953125,"clientY":184.37890625,"pageX":42.01953125,"pageY":184.37890625,"radiusX":11.5,"radiusY":11.5,"screenX":150.01953125,"screenY":-626.62109375}],"touches":[]}}) await page.waitFor(1) await element.dispatchEvent({"eventName":"tap","eventData":{"detail":{"x":42.01953125,"y":184.37890625},"changedTouches":[{"clientX":41.59375,"clientY":183.6875,"force":1,"pageX":41.59375,"pageY":183.6875,"radiusX":11.5,"radiusY":11.5,"screenX":150.01953125,"screenY":-627.1953125}],"touches":[{"clientX":41.59375,"clientY":183.6875,"force":1,"pageX":41.59375,"pageY":183.6875,"radiusX":11.5,"radiusY":11.5,"screenX":150.01953125,"screenY":-627.1953125}]}}) page = await miniProgram.currentPage() // 其他都是等待滚动点击代码。省略了。。 }) })
3.【优化】我们的项目是有个主工程,其他业务都是分包集成进去的,为了互不影响,想着将用例各自保存在本业务项目中,希望能提供个“导入用例”的功能。
暂时以上~ 快把公仔交粗来~
测试了发现以下 2 个BUG
第一:在测试流程当中有需要观看激励广告后才能完成的操作,回放看完广告没有回放点击关闭广告按钮导致后续流程无法进行。
第二:我明明回放了很多次,有成功的和失败的但是点击右上角回放记录列表为空。
这个对测试人员来说是好工具呀
能添加条件了吗
之前用了 智能化Monkey,出现了比较多的重复图,不知道是否已修复,然后就是录制回放的这个测试计划怎么选。
功德+1,功德+1
礼物我收下了,不用谢我!