Serverless+puppeteer打造云端自动化测试

关于自动化测试,还有很多工作要做,本文只是迈出了万里长征的第一步。

蹊径落地页是AMS推出的帮助广告主快速、便捷创作落地页的平台工具。平台希望在发布新功能的同时,同时能够快速验证老的特性能够不受影响。

基于此,测试同学需要回归修改可能涉及到的特性,来确保功能的正常。

  • 方案一:每一次代码合并master之后就要验证一次。此方案会有大量重复性的工作,这样测试的效率会大幅降低。
  • 方案二:只验证最后将要发布的master代码。这个方案会减少验证频率,但一旦出现了问题,不能马上定位到具体是哪一次merge所带来的影响,因此不能快速修复该问题。

综上所述两种方案都不是最完美的,如果能够通过机器,自动化的帮我们回归已有功能,那我们就可以高效的完成测试回归工作。因此,自动化测试也因此而诞生。

首先,先来思考下我们业务中哪些功能需要回归:

  1. 组件ui,组件特性功能展示正常
  2. 组件交互,在点击之后,能够符合预期

如何能够让机器知道这个组件的样式是渲染正常的呢?

之前分享jest的snapshot给了启发,那就是快照的概念,如果我们能够保存一份正确渲染的组件图片,那么我们只需要在每次merge进master之后,对比上一次的快照图片,如果图片一致,就说明功能是正常的。

基于此,我们引入了puppeteer的截图功能,在每一次代码merge进入master,触发了ci流程后,就调用puppeteer,对已经创建好的一份最全的组件功能页面进行截图,与上一次保存的图片进行比较。

从上面两张图我们可以看出,我们调用ci执行的docker环境中需要先拉取创建的docker镜像,这个镜像里面需要包含puppeteer和一些基础库,那么拉取镜像这个过程本身比执的测试用例耗时的多,我们希望整个构建是快速的,那么有没有方法去缩短这段时间呢?

这个时候,Serverless就横空出世了!

Serverless可以理解成运行在云上的一个函数,它由事件所触发,然后创建这个函数的实例,最后销毁,我们只需要去编写这个函数本身的代码,不用关心服务器的运维,而我们自动化测试的场景,就是需要这样的一个服务。

触发钩子----> 执行任务---->返回结果

目前腾讯云个人帐户可以免费体验Serverless云函数服务。

  • 登陆腾讯云云函数控制台,点击新建函数
  • 然后编写函数代码
  • 设置触发函数的钩子
  • 最后,投入使用

持续优化测试流程时,播放端的ci构建就简化成了这样的一段代码

curl http://serverless.example.com

我们只需要触发腾讯云云函数,之后的puppeteer爬取测试用例页面,截图之后,我们将生成的图片保存在腾讯的cos上,然后在邮件发送测试报告即可。整个自动化测试,只需要3S就可以完成,大大缩小了之前的执行时间。

写到这里,我们已经完成了第一步的ui截图快照功能,但是整个自动化流程中,还有可以持续优化的地方。

  • 如何能够让机器自己识别两次图片是否一致?
  • 未完成的点击交互测试

后续,我们将分享这两个问题的解决方案。

感兴趣的读者可以点击阅读原文至腾讯云云函数控制台部署使用~

原文发布于微信公众号 - ServerlessCloudNative(ServerlessGo)

原文发表时间:2019-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券