前言
我想写一个简单的系列文章。主题很简单,就是记录下面对上传视频需求时,攻城狮和普通人(泛指所有非技术人员)的一些区别。当然,从需求分析到最终完整实现,每个步骤都是有干货。我会尽量避免一些偏情绪化的表述。更多的时候,我们应该把注意力集中在各个需求点本身的技术实现上。
这个系列的主要目的,就是秀一下我们作为攻城狮的优越感;不过,我总觉得我们秀完,他们可能也不知道究竟发生了什么事。另外,更重要的是,这个系列文章展示了从需求分析到技术选项,一直到最终的自动化上传,自动化测试的完整思考核实践的过程。我觉得,对于攻城狮来说,后者可能是我们更需要交流和关注的。
我会适当替换一些敏感的代码细节。即使如此,我仍然努力会保证,经过适当配置后,所有代码都是可以正常运行的。
背景简介
大概是上周一左右吧,临时被安排去给一个内部项目新上传大约 100 个新的视频资源。要的还很急,说是周三就要做好。好吧,当时我就知道,那一周肯定会过的很“酸爽”。因为那个项目可以认为是没有管理后台的,数据是要直接上传到数据库。意思就是我要手动编辑视频相关的资料数据。还有就是,我拿到的第一手数据,也不是什么结构化数据,而是一个 word 表格,和一个分散在多个文件夹下的视频资源。
更“可怕”的是,我同时还被指派成了这个项目的 ”Owner“。“Owner”,就意味着,我绝不能像他们上次那样,继续手动传视频了。成本太高,而且数据容易混乱。上一次,我只是作为一个协作者,写了几行项目相关的代码,帮他们简单设计了一个数据库表,也没想太多,够用就性。毕竟当时时间也非常紧,许多东西也是没办法尽善尽美的。
原来只有约20个视频,都是交给“普通人”上传的。流程大概就是:视频拷贝给普通人 --> 普通人上传完视频 --> 邮件发出来视频url和视频标题 --> 我手动把数据录进数据库。中间,往返沟通了几次,比如视频尺寸不对了,视频不能播放了,标题和视频不对应了。。。真正的往返沟通,要比多很多,但是视频数量少,总体来看倒也无伤大雅。
但是这次是大概100个视频。就算是只录入数据,差不多也得1个小时了,如果再手一抖,录错了。。。更可怕的是,我成了项目的 Owner,以后这种事,都得我直接处理。跨部门沟通,真的成本很高,或者说我太懒了吧,懒得一遍遍去别人工位催人家。所以,我就暗暗发誓,这件事必须彻底解决。这次我要把包括视频相关的数据,从生成到上传,到自动化验证,完全自动化,智能化。虽然这100个视频,时间上不会有太多变化,但是以后,再多的视频,最多也就是输入几行命令,敲几下键盘,就可以自动搞定了。如此,这个Owner,才能做的舒心。当然,它是一个很小的内部项目,我也是真的不想再让它以后占用我太多时间了。
更新规划
如果没有意外的话,本周三到周五晚上,每天一更;周末会适当多写点。
(一)生成结构化数据
讲述的是,数据如何从普通的 word 文档数据,变成最终可被程序化处理的过程。是的,你没看错,大部人“普通人”是用 Word 来传递数据的。好处就是人人都能看的懂;但是人人都能看懂的东西,攻城狮反倒没法直接用。
(二)批量验证语义分析功能
项目对接了微软拿到 Luis 语义识别系统。原来是手动逐条验证每个问题和答案是否能匹配上。现在,必须写个简单的脚本来自动化验证了。
(三)批量导入数据
就是如何把数据处理成数据库需要的格式,自动导入数据库。因为是内部项目,项目本身没有提供数据编辑功能,所以我就采用最简单的策略,每次数据有变化时,就全部删除旧数据,重新批量导入新数据。新数据,肯定是从原始数据,自动生成的。手动输入,真的很容易出问题。
(四)批量导入视频
就是如何把视频批量自动上传到七牛服务器。肯定是一个自动化脚本,可能大家都会写。但是,小技巧往往解决大问题!晚上睡了一觉,第二天起来看到所有视频都上传完了,真的是很开心的事。
(五)批量验证视频上传是否成功
视频是否上传成功,肯定需要单独验证的。只是上传脚本不能说明一定都上传成功了,需要单独验证下。
(六)验证视频能否真正播放
这一步很关键。项目主要在 iPad 上用,所以需要验证每个视频在 iPad 上能否自动播放。iPad 上,用 HTML5 Video 播放视频时,对视频格式有一些要求,所以每个视频都要验证下。原来,就那几个,手动点下就行了。现在,肯定不能再那样了。于是写了一个简答的测试网页,通过捕捉 Video 的一些事件,来实现自动化批量验证视频能否真正播放。