标签 思考 下的文章

做正确的事要趁早

最近闲暇时间在策划实施两件事儿:一是产品的自动化回归测试;二是尝试在项目中使用一些静态代码语义分析工具。我觉得这两件事是应该做的正确的事,对提升产品质量,提前发现产品中潜在的缺陷都大有裨益。但在做的过程中才感觉到:现在做有些晚,正确的事要趁早做。

去年自动化测试组发布了自动化测试框架的第一个版本,我们的产品参加了试点。但经过自动化测试组大半年的投入,效果十分有限,根本没有达到我的预期。最主 要的问题是使用他们提供的框架编写和维护test case都十分困难,工作量投入很大,这很打击大家的积极性。今年大家决定将自动化测试框架换成nokia开源的robotframework。经过预 研,robotframework完全可以满足我们的测试需求,并且robotframework的用例编写和维护效率太高了,编写门槛却很低。

虽然换成了robotframework,但我们应用的时机还是有些晚了。试点项目已经接近开发尾声,这时候如果要加上自动化测试,势必就要在短时间进行 大量测试用例开发。如果在项目初期,增量的用例添加相信会达到更好的效果。但即便是“亡羊补牢”,我们也还是要做的,还好这个产品版本的生命周期才刚刚开 始,后续可能还会持续很多年,加上自动化回归测试还是有重大意义的。

不过鉴于之前的教训,我们调整了自动化测试的切入点。之前自动化测试组只是闷头写用例,并未太多考虑自动化测试框架与被测目标如何配合的问题:比如没有考 虑自动化测试在哪个环节应用、谁来驱动、谁来执行以及测试环境如何生成等。这次我们先绕过用例编写,先从“基础设施”搭建开始。我们的目标是将自动化测试 与我们的持续集成流程集成在一起,也就是说我们将通过jenkins这样的ci平台来作为自动化回归测试的驱动。我们首先就是要将这个驱动流程run起 来,即便测试用例库中一条用例也没有。一旦run起来后,我们再将关注点集中在用例的编写和调试上,我想这才是正确的思路。

第二件感觉做得有些晚的正确的事儿就是为项目增加静态代码检查环节。之前项目静态代码检查仅停留在打开GCC编译器的-Wall选项这个层次。就是否有必 要引入第三方静态代码分析工具对代码进行缺陷检查,大家一直没有统一意见。质量部门希望我们引入,但关键问题是我们没有找到一款适合的开源工具(for C),在维基提供的C语言静态分析工具列表中,我感觉似乎只有splint符合我们的要求 – 开源、功能强大且支持linux/unix。不过splint似乎已经停止开发了,最新版本停留在3.1.2。

使用类似splint这样的工具对代码进行检查时总是能给出大量的warning,如果不加以控制,那么屏幕就会被warning淹没。因此正式使用之 前,需要一个“磨合期”。先确定打开或关闭哪些检查规则开关,原则只有一个,即尽量避免误警告,又不能漏掉真实的隐患。splint对C99新增语法的支 持不是很好。splint碰到下面这种语法时会提示parse error,并且无法recover:

struct foo {
    int a;
    int b;
};

int main() {
    struct foo f = {.a = 1, .b = 2};  /* Parse Error */
    printf("%d %d\n",  f.a,  f.b);
    return 0;
}

这类静态代码检查的基础设施在项目初期搭建起来是最佳的,开发人员可以增量的对代码进行语义检查,并修正缺陷。但如果在代码开发即将结束的阶段加入,即使 是设置了一套合理的检查规则组合,你也可能困惑于工具产生的大量Warning。不过“有胜于无”,在没有找到更好的工具前,我将splint加入到工程 中,建议组员适当时机使用,并随时对check rules组合开关进行调整和优化。也许经过一段时间的磨合后,可以实现在ci job中加入自动代码静态检查这个环节,当然目前肯定不是适宜时间。

正确的事,你会发现早做和晚做效果是截然不同的。但“亡羊补牢“的工作也不能不做。既然是你认为正确的事,从长远来看,还是能带来很大价值的。

1000公里驾车感受

不知不觉我的车的总里程表上的数字已经达到了1029公里了,我的"驾龄"也马上要到一个月了^_^,这里谈谈驾车感受,备忘一下。

1、总体感受:累!

车是不开不知道,一开真叫累啊。特别是在一二线城市开车上下班,短程的还好,路程稍长的,像我这样上下班来回50公里,那真是累啊。

累的原因之一首先就是堵车。像东北这地,每年冬天是无法修路的,一到春夏,各路工程纷纷上马 – "要修一起修",这样一来,痛苦的就是开车上班族了:每天回家就那几条必经之路,堵也得硬着头皮往上冲。我这每天都要上二环,每天上的时候都要和周围大车 (市内不让走大车,因此大车都上二环) – 什么水泥车、大挂车、大货车等进行"斗争",说实话,挺恐怖的,稍有不慎就会出现刮碰;

累的原因之二 – "路斗"。中国的驾校培养出来的驾驶员都是什么样大家心知肚明,包括我在内,实际上都是不合格产品,因此马路上你就要格外小心,随时提防急刹、突然并道 (不大转向)、信号灯前急速夹塞等"常见"行为;另外行人、电动车也同样"不甘落后" – 横穿马路、闯红灯等行为那是屡见不鲜,越是路况好的道路,越是要提防行人和电动车的突然杀出。

原因之三 – 停车难、停车贵。中国的停车位的发展速度远远不及车辆增长的速度。因此可想而知,找个车位是多么的难,每天到家时都要在小区周围"逛一逛",试图找到一个 合适的车位;实在没有了,就只能侥幸的停在路边,心里暗自祈祷明早不要看到罚单。第二天早早出来将车开走,否则等警察叔叔出来,200元就没了。公司停车 位也越来越不宽裕了,还好我每天来的早,地下车库车位可随意挑。如果有事来晚了,那只能在马路边放车了。

有了车,出行本来应该方便的,但现在每次出去逛街之前,我都要研究一下目的地哪块儿好停车,先找好路线。商业区停车是很贵的,地上还好,按次收费,一 般<=5元;商场或购物中心的地下车位是计时收费,1小时5元,成本很高啊。因此每次能找免费找免费,找不到就尽量地上停,这一过程也挺累。

2、对车的感觉

以前也没长期开过什么车,因此也不好做什么对比。新速腾整体来说让我很满意:性能不差,只要给油,起步也不是那么慢;3、4档加速很有力;油耗低,目前我 的表2平均油耗显示为6.4L/100km(我一般都是2000转换档,1档到2档也是如此);最近一次加油200元,行驶了380多公里,大约7.2L /100km;这期间有些时候早晚都让LP开,LP一般用"3档龟速行驶,每信号灯必等"的开车法,油耗肯定升高;空调凉的很快(最大功率时),但打开空 调后,对车动力是有不小影响的,毕竟是1.6的排量。车很稳,刹车也不赖;日间行车灯绝对是必要的,对行车安全很有帮助。

要说不足也有一些,比如大众的车门即使锁上了,也可以从内部打开,孩子在车上时务必要小心;刹车到车停下那一刻似乎有些小异响;悬挂感觉有些硬,舒适性没有想象的那么好,尤其是路况差时。

3、驾驶技术

开了1000公里,感觉自己还是有进步的,比如油离配合比之前更熟练,也更快速;起步基本不熄火了(起步时稍给点油);每天上二环坡起也不那么紧张了,近期也很少熄火和溜车了;高峰期低速跟车也比以前更加熟练了(车距保持恒定)等等。

但新手毕竟是新手,目前个人感觉还有很多方面值得改进,比如倒库,路两旁的"非字形"车位我现在基本可以顺利倒入了,但"一字型"车位我还是没掌握要领,有两次轮胎都轻轻蹭到了马路丫子,还好不严重;另外降档依旧不得要领。尤其是4降3依旧操纵的不好,有时还有明显顿挫。

另外有一条经验教训:下地库时务必带档下,否则没有了发动机制动的车就像在冰上溜一下,速度很快,凶险万分啊;建议挂一档下,二档的发动机制动力对于比较陡的地库来说也有不足。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats