对云招OurATS完全不了解的网友可以看下上一篇文章/帖子:
谈谈云招OurATS为什么不把开发语言从PHP转成go/java/.net,而是搞了个PHP编译器BPC来实现本地部署
简言之,云招OurATS是一个使用PHP语言开发的招聘管理系统.
经常看到有网友接手PHP/Python等动态语言开发的项目后,不管是加功能还是调bug,都痛苦不不堪,直呼"动态一时爽,重构火葬场".
确实,我本人在参与开发云招OurATS的前两年里也有类似的经历.
当时面临最大的问题是,不敢轻易加需求.
为什么?
因为经过2年的开发,云招OurATS的代码库已经稍有规模.每添加一个需求,是否会影响到其它功能模块,都需要好好测试才放心.
可是招聘系统的功能模块多,相互关联错综复杂,要测试的地方太多了,就一个字,累!
当时敏捷开发、TDD是非常流行的,尤其是TDD很明显可以解决我们面临的测试问题,所以当时狠花了一些时间研究怎么搞TDD.
也去聆听过某知名公司组织的敏捷开发分享交流会,发现方法论比较多,落地实战几乎没有.
于是静下心来,自己搞.
核心关键点:
测试用例不好写
那是被测试代码不容易测,需要重组代码结构,让测试用例好写
要高覆盖率吗?
覆盖率只是一个指标/手段,不是目的.
目的是建立对被测试代码的信心,写个1+1=2
根本不需要测试,因为我们有信心不会出错.
核心逻辑覆盖到,在担心出错的地方多覆盖,在有信心不出错的地方少覆盖.
摆正心态,写测试用例肯定会多花点时间,但这是为了不去体验火葬场
云招OurATS至今已经历了三次大的升级:
每次升级,都是先跑通测试用例,这时会有一些SQL和PHP的兼容性调整,但都很轻松地搞定了.
升级后系统运行地也很平稳,利益于PHP近些年来的性能提升,每次升级都还能节省几台服务器.
在2023年初,我们使用PHP编译器BPC成功编译了云招OurATS.
BPC完全脱离了PHP解释器,每一个PHP的语法、扩展函数都重新实现了一遍,这当中如果没有测试做保障,那根本就是不可能完成的任务.
好在PHP自身有完善的phpt测试用例,BPC首先通过了这一层测试.
OurATS相关的每个项目/模块也都有写好的PHPUnit测试用例,BPC也通过了这一关测试.
测试都过了,我们很有信心BPC编译后的OurATS等价于PHP解释执行的OurATS.
如此大规模的升级都轻松搞定了,日常的小升级更不在话下.
这十多年来,每年我们的代码库都会有相当规模的变化,但这十多年里,我们没再体验过火葬场,我们也非常自信云招OurATS和"屎山"不沾边.
贵公司还在招人吗
近期应该没有计划
羡慕