今年有幸第二次作为移动互联网测试开发大会(MTSC 2019)的讲师,在 TTF 开源项目专场分享了 HttpRunner 2.0 方面的内容。对于大会,这已经是连续第五届了,每年的规模也在逐步扩大,今年参会人数已经达到 2000+ 了,在此为组委会点个赞。

说起这次大会,能参加分享还真是挺意外的。因为今年上半年我主要都是在换工作的过渡期,感觉也没啥可以分享的内容,所以今年也没打算参加任何大会做讲师,想的还是再多积累沉淀下,等做出些东西后明年再看。前段时间茹炳晟老师邀请我参加 GIAC 做分享时,当时也是很不好意思地拒绝了。意外的是,五月底的时候思寒将我和孙圣翔(ATX 作者)拉了个小群,说希望在本次 MTSC 大会上搞个 TTF 开源项目专场,分享议题就是我们的开源项目,包括思寒自己的 AppCrawler,孙圣翔的 ATX 和我的 HttpRunner。这是大会的一个新的尝试,感觉挺有意思的,也是对开源项目进行宣传和推广的不错机会。特别地,当前 HttpRunner 仍然还主要是我一个人开发维护,或多或少有些孤独,要是能借此机会吸引一些小伙伴一起来做就更好了。所以,我也就欣然接受了这次参加大会做分享的机会。

答应下来后,就需要开始准备分享议题了。我们这个专场相比于其它会场还有点特殊,除了会更多聚焦于开源项目本身外,还会多一个现场演示环节,让听众能更好地体验到项目的功能和特色。那么在准备的时候,除了 Keynote 外,就还得准备好演示的案例。而恰恰是这个演示案例,在经过一些尝试后发现并没有想象中的那么容易。首先,这不能是一个纯粹的 demo,会显得太没诚意,肯定要结合真实的应用或业务场景。而涉及到业务场景的话,挑选的被测对象一定要稳定,不然在现场演示时出现点意外就比较尴尬;同时不能涉及太多的业务概念或业务逻辑,要在现场演示那么短时间内让听众先熟悉这些概念,本身就是一个比较高的理解成本,而且会显得喧宾夺主,毕竟听众重点要听的是测试框架的使用。当时思寒跟我推荐企业微信的接口,我看过官方文档后也是因为涉及较多业务概念而放弃了。因此,现场演示挑选的功能场景一定要简单,最好对听众来说不要有任何理解成本。但光是简单还不行,还得能覆盖接口测试时常见的一些机制,包括参数关联、隐私变量处理、公共变量处理、参数化、测试用例分层等等。挑来挑去,最后发现我平常用的大纲笔记 幕布 就挺合适,而且它现在也是字节跳动旗下的产品,假如遇到技术问题直接跟项目开发人员沟通也方便。

确定演示案例后,我自己也尝试了下脚本开发调试全流程,功能实现是没什么问题,但是操作总是不够流畅,特别是稍微遇到个问题卡一下壳,时间就会变得完全不可控。平时操作还好,但要在分享现场面对三四百号听众的时候,心境可能又是完全不一样了。不过我还是不想就这样放弃了,毕竟是开源项目专场,如果只是讲讲 Keynote 或者播放个视频回放,风险是降低了,但实际效果就大打折扣了。于是,我还是明确了采用现场演示的形式,只是要提前解决好可能存在的问题。其实仔细想想,使用测试框架开发调试脚本的操作不流畅,说明框架本身还是存在易用性的问题。因此,我也在准备案例的过程中,重点针对体验方面的问题进行了一些优化,包括工程脚手架脚生成、脚本格式展示、默认参数配置、日志展示等,直到达到自己相对满意的状态。

后来跟孙圣翔交流时得知,他也是在准备案例演示时对 ATX 进行了一些优化,发布了多个优化的小版本。通过这个共性的现象,我觉得是可以得出一些有指导意义的方法论的。

我们做工具框架时还是要多站在演示的角度,演示不是目的,但它可以营造条件,倒逼我们去对工具进行极致优化和改进。这也跟我之前推崇的一个观点非常类似,知识只有做到可以通过文字或语言通俗易懂地教授给别人,才算是真正理解和掌握了。

实际在现场分享时,现场来的听众比预期中多了不少,将整个会场塞得满满的,在此也十分感谢大家的关注和支持。而我自己比较出乎意料的是,从头到尾基本上没有紧张的感觉,可能是之前已经有过多次大会分享的经历了吧,也可能是自己心态变好(脸皮变厚)了,想好最坏的结果无非就是现场演示出现意外,然后在一阵“哈哈哈”中拿出事先录制好的演示视频,总不会被轰下去吧。庆幸的是,现场网络环境、被测对象、框架和脚本都很稳定,最终演示也一切顺利。不过时间把控还是没有做好,最后没有剩下时间跟大家 Q&A 互动,颇为遗憾。

现场演示出现小意外时,表情被摄影师捕获到了,😝

另外,很开心的是又一次跟行业内的朋友们聚在一起。平时大家都是分散在全国各地的网友,即使是同在一个城市,因为时间关系也很少见面。有了 MTSC 后,大会已经成为了大家每年一聚的节日,大家聚在一起闲扯下近况和八卦,兴致来了再合个影,这些都是我们终将逝去的青春啊。

最后,祝愿 MTSC 越来越好,我们明年再见!

附录:本次分享的 Keynote 下载链接