标签 博客 下的文章

做正确的事要趁早

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

去年自动化测试组发布了自动化测试框架的第一个版本,我们的产品参加了试点。但经过自动化测试组大半年的投入,效果十分有限,根本没有达到我的预期。最主 要的问题是使用他们提供的框架编写和维护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中加入自动代码静态检查这个环节,当然目前肯定不是适宜时间。

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

绥中电厂海滩之旅

上周末,部门组织了一年一度的集体出游活动,这次的目的地是位于葫芦岛市附近的绥中电厂海滩。

 
周六(北京时间7月28号),恰逢伦敦奥运会举行开幕式,很遗憾不能完整的看完现场直播。在看完憨豆先生的精彩表演后,我就从家里出发了。本来这次旅游我是想带LP和果果一起去的,之前用一周时间已经做好了所有准备(吃的、穿的、玩的、用的),但人算不如天算,果果居然感冒了,早上起来一量体温:38度。唉,果果与大海第一次邂逅的时间只能推迟了。
 
天气预报也没有给我们带来什么好消息,受冷涡影响,周六、周日葫芦岛一带有各种雨:中雨、大雨以及雷阵雨。还好,大家也调低了对此次出游的期望:大不了就在住所打牌吗!大巴准时从沈阳出发了。
 
将近六个小时的行程让人有些疲惫,路上虽然顺利,但有些惊险:大巴刚到京沈高速锦州西出口时,老天就降起了瓢泼大雨,雨最大时能见度估计也就二三百米。司机降低了车速,我们到达的时间也延后了将近两个小时。老天也许是怜悯我们,当我们到达目的地时雨居然停了。
 
这次我们住在农家院,房间挺不错的,几乎每间屋都有电视和空调,4人以上房间还都有室内卫生间,可以洗热水澡。吃的也还行 – 只要不吃坏肚子,我都认为“不错”^_^ 。最大的不足就是离海边太远,步行要半个小时,这与之前几次到海边旅游的境况大相径庭 – 以前基本上出门就能看到海。
 
匆匆午饭后,我们就乘车来到了海边。外面的天很阴沉,没有太阳,也就没那么晒,至少省防晒霜了。不过这里的海却不那么吸引人 – 水质黄浊,风浪巨大。不知道是不是这里的泥成分较大,海水发黄,十分浑浊,与之前我在网上看到的网友的评价出入很大啊。另外当天风浪很大,初步目测了一下,浪高在0.8-1米左右,即使会游泳的人也不敢贸然向远处游,绝大多数人是套在泳圈里在岸边接受“海浪”冲扶:(。海滩也很窄,没走几步就延伸到海中了,坡度也陡,难觅平缓;沙子较粗,同事开玩笑的说:这不就是建筑工地用的那种沙子么^_^。
 
 
水太脏,索性也就不下海了。沿着海岸走了一周,无趣。于是和同事一起到岸边组织踢沙滩足球。估计与我有同感的同事有不少,不一会儿就聚集了好多要踢球的同事。沙滩上踢球是很累的,踢了几个回合下来就已经全身透汗了。另外由于沙子较粗,一不小心脚内测磨掉了一小块皮。于是下场用清水冲洗伤处,坐下休息。
 
沙滩的配套设施也不那么完善,淡水淋浴房中出的水十分浑浊,看到进去洗澡的同事都扫兴而出。玩得不尽幸,索性也就早点回了驻地(没等旅行社的车)。
 
晚饭后,有些人回屋以电视消遣,有些人(包括我)则开始打牌消磨时间。这时外面居然下起雨来,而且是雷雨 – 电闪雷鸣的。突然听到一个极响的雷,然后农家院所有的电视信号就都没有了。估计是小镇的电视信号设备被雷搞坏了。那些看电视的同事无所事事,也就陆续卧床休息了。我们继续打牌,一直打到快11点了,雨停了。年轻的同事提议去外面吃烧烤,考虑到外面道路泥泞,还没有路灯,再加上我也不喜欢海鲜烧烤,因此我也回屋休息了。还别说,一天下来还真的挺累,很快就进入了梦想。半夜时分,外面似乎又下起了暴雨,且伴有雷电,翻了个身,继续在梦中旅游^_^。
 
第二天起来时,雨早已停了,外面有些凉,但空气不错,天气有转晴的迹象。按照导游的计划,今天我们去另外一片小海滩 – 那里游客不多。早饭后乘车来到这片海滩,的确不大,人也的确很少,但海水与昨天的海滩没有大分别,浪似乎更大了。大家基本没有下水的。海滩上有一个简易排球场地,我们租了个排球,继续海滩运动之旅。好久没打排球了,不过高中的排球底子还在,感觉还行 –  技术动作还是蛮规范的^_^。大家玩得还是蛮欢乐的,打了近两个小时,全身透汗,不过时间到了,该乘车返回了。
 
两天的绥中电厂海滩之旅就这样不温不火地结束了,中午十分,天已大晴,太阳出来了,瞬间大家就感觉到了热量。午饭后,大家赶紧钻进已开空调的大巴车中,等待回程。一路无雨,行车速度自然也就快了许多,4个半小时多点,我们就回到了沈阳。
 
乘地铁回家,看到果果病已痊愈,虽疲劳,但还是蛮高兴的。
如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! 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