Skip to content


Test Smell

  1. 行为Smell
    Assertion Roulette
    Erratic Test –Fragile Test
    Frequent Debugging
    Manual Intervention
    Slow Tests
  2. 工程Smell
    Buggy Tests
    Developers Not Writing Tests
    High Test Maintenance Cost
    Production Bugs
  3. 代码Smell
    Obscure Test
    Conditional Test Logic
    Hard-to-Test Code
    Test Code Duplication
    Test Logic in Production

Assertion Roulette:断言复杂,影响测试用例的可读性,不利于维护

Erratic Test(Fragile Test):脆弱测试,测试用例非常容易因为代码变更而失败。具体原因有:

  1. 接口敏感Interface Sensitivity
  2. 行为敏感Behavior Sensitivity
  3. 数据敏感Data Sensitivity
  4. 上下文敏感Context Sensitivity

Frequent Debugging:频繁debug,这种情况指明测试用例很难作为bug的定位器,或者对bug的定位提供有效的帮助。

Manual Intervention: 手工干预,这种情况指测试用例的执行需要手工干预,例如需要手工介入gui的测试,数据准备,资源销毁等。这些与测试自动化的原则违背。

Slow Tests:慢速测试,这种情况指测试用例的执行效率很低,常常消耗大量的时间。慢速的测试往往导致开发人员执行测试用例的积极性下降。同时也给测试自动化带来麻烦。

Buggy Tests:有漏洞的测试,测试用例自身存在bug。这种情况下测试用例常常在执行过程中失败,而检查代码后发现生产代码并不存在问题。例如:测试用例排除了生产代码捕获error错误,而fail。

Developers Not Writing Tests: 开发人员不写测试,这种情况导致的原因往往是开发人员抱怨没有足够的时间编写测试用例,或者测试代码很难编写。

High Test Maintenance Cost: 高测试维护成本,这种情况导致的原因跟很多因素有关,例如:测试代码重复、测试用例很难编写、脆弱测试等。

Production Bugs: 生产环境bug多,这种情况一般指生产环境发现的bug比测试阶段和单元测试阶段的要多。这意味着存在一下情况:存在测试未覆盖的代码或者需求、测试未能有效的执行、未进行有效的单元测试、存在永不失败的测试用例。

Obscure Test: 晦涩的测试,这种情况下测试用例很难理解。一般引起的原因为:测试用例测试的功能和代码过多,使用的通用固件(fixture)太大、测试中存在不相关的信息、硬编码测试数据、间接测试。

Conditional Test Logic: 存在条件判断的测试逻辑,这种情况指测试用例中存在条件判断。导致很难理解测试用例的真正意图。一般引起这个问题的原因是:条件判断的验证逻辑(conditional verification logic)、弹性测试用例、复杂的测试条件。

Hard-to-Test Code: 代码测试困难,这个很容易理解,测试用例无法简单高效的书写。一般情况下这和SUT的的 高耦合有关。有时异步代码的测试以及未考虑可测试性的设计也会引起代码的测试困难。

Test Code Duplication: 测试代码冗余。这个就不说了,多半情况下是Ctrl+C和Ctrl+V的滥用造成的。也存在测试代码未考虑整体重用性的可能。

Test Logic in Production: 生产代码中包含测试逻辑。 导致这个问题的罪魁祸首就是存在测试环境无法测试的情况,为了测试覆盖率,不得不把测试逻辑放入SUT中。这样无形中增加了SUT的复杂度。

ref:xUnit Patterns

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 全部, 开发技术, 读书笔记. Tagged with .

Twitter 因为“明天”被“墙”了

怎样的国度啊!只能说明20年前的事确实太恐怖、太残忍、太不光彩吧,也许那才是当代中国与民主最接近的时代,五四运动已经离我们远去,可是“留斯”不是。我们需要纪念这样的精神。因为时代呼唤民主、自由、博爱!

此地无银三百两

simpsonschina.jpg

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 网络生活.

An interesting ref from OOAD 3rd edition

Sir Isaac Newton secretly admitted to some friends:
He understood how gravity behaved, but not how it worked!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 杂七杂八.

纪念谭卓君【转】

公元二零零九年五月八日晚,就是浙大学子谭卓君被非人性的跑车撞害的第二天,我独在文二西路紫桂花园外徘徊,遇见路人甲,前来问我道,“可曾为谭卓写了一点什么没有?”我 说“没有”。她就正告我,“还是写一点罢;谭卓生前就很爱看文章的。”

我也早觉得有写一点东西的必要了,这虽然于死者毫不相干,但在生者,却大抵只能如此而已。倘使我能够相信真有所谓“在天之灵”,那自然可以得到更大的安慰,——但是,现在 ,却只能如此而已。 
可是我实在无话可说。我只觉得所住的并非人间天堂。一个浙大优秀青年的血,洋溢在我的周围,使我艰于呼吸视听,那里还能有什么言语?长歌当哭,是必须在痛定之后的。而此后 几个所谓交警的遮遮掩掩的论调,尤使我觉得悲哀。我已经出离愤怒了。我将深味这浓黑的悲凉;以我的最大哀痛显示于19楼,使它快意于我的苦痛,就将这作为后死者的菲薄的祭品,奉献于逝者的灵前。这是怎样的哀痛者和幸福者? 

然而造化又常常为人渣设计,车祸后漠然的眼神、荒唐的借口,以时间的流驶,来洗涤文二西路上的血迹,仅使留下淡红的血色和微漠的悲哀。罪人得以偷生,不知道真情何时会坦诚 于市民面前! 
我也早觉得有写一点东西的必要了。离五月十二日也只有几天了,在全民沉痛悼念汶川逝者的时候,让杭州人民也纪念一下逝者吧,我正有写一点东西的必要了。

我在五月八日下午才知道文二西路飚车撞人的事,不久便得到噩耗,说遇害者为谭卓君。更是听说某部门就这个事情召开了通报会。但我对于这些传说,竟至于颇为怀疑。 
然而晚上回家,从19楼证明是事实了。而且又证明着这不但是搅动事故,而且是缺乏人性的,是禽兽残害了谭卓君,因为70码的车速竟将他70kg的身体被撞后飞起5米多高, 
飞出20多米远! 
但下午就有通报会,说是“压双黄线借道”! 
说是“飚车只是民间你超我、我超你的通俗说法”。 
说是“时速只有60-70公里”! 
好个只有60-70公里!即肯定了超速,又对超速定了性!按规定,超速50%以内是性质绝对不一样的。只是,不知是否他们物理没有学好抑或认为全国人民物理均没有学好,他 们忘记在70公里不到的时速下是怎样使得25岁的谭卓君飞起5米多高,飞出20多米远的!他们忘记可以通过现场模拟还测出当时时速的!惨象,已使我目不忍视了;通报会,尤 使我耳不忍闻。我还有什么话可说呢?我懂得衰亡民族之所以默无声息的缘由了。沉默呵,沉默呵!不在沉默中爆发,就在沉默中灭亡。 
但是,我还有要说的话。

我没有亲见谭卓君遇害的场景,走路而已,稍有人心者,谁也不会料到有这样的禽兽。但竟繁忙路段飚车!谭卓君当场就已死亡,听说脑浆都出来了,到医院抢救半小时也只不过是尽 人事。

始终微笑的阳光的谭卓君确是死掉了,这是真的,有他自己的尸骸为证。当一个阳光男孩从文明人所发明的跑车上飞起的时候,这是怎样的一个惊心动魄的哀伤呵!

时间永是流驶,街市依旧太平,有限的一个生命,在中国是不算什么的,至多,不过供无恶意的闲人以饭后的谈资,或者给有恶意的闲人作“流言”的种子。至于此外的深的意义,我 总觉得很寥寥,因为这对有些人来说实在不过是一起交通事故。

 
然而既然有了血痕了,当然不觉要扩大。至少,也当浸渍了亲族;师友,爱人的心,纵使时光流驶,洗成绯红,也会在微漠的悲哀中永存微笑的和蔼的旧影。陶潜说过,“亲戚或余悲 ,他人亦已歌,死去何所道,托体同山阿。”倘能如此,这也就够了。

呜呼,我说不出话,但以此记念谭卓君!

 

–EOF–

感谢鲁迅先生,和这位网友的修改!我也只能转载一下这样的文章来表达一下我对逝者生命的惋惜!

几十年前鲁迅先生的文章放到今天,读来的确又有了新的内涵。没有思想的民族是没有未来的!

中国的文学已死,中国的德先生和赛先生还未出生!历史又回到了原点,中国的未来需要我们这代人去改写,我渴望我们的祖国和民族能公平正义、民主法制、科学创新!然而现在,我还无能为力!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 全部.

谭卓事件跟踪

(转载某网友留言)

我们不仇富,袁隆平教授买8辆车我觉得是应该的,但是我并不觉得一个母亲知道自己的儿子撞死人后,第一反应不是送医院,去道歉,请求原谅,而是到处找关系,走门路,摆平这件事!

我也不认为一个20岁的,已经成年的小伙子在撞死人后,第一反应,不是去查看人怎么样了,而使一脸无所谓的下车,第一句话是是他自己撞我的,然后想着怎么推脱责任

我也不认为作为以为交警,第一时间做发布会却不是采信目击者的证词而去相信劣迹斑斑的有违章飙车前科肇事者的话,而且还睁着眼说瞎话。

我更不认为作为媒体(有良心媒体人除外)第一时间不是公正的报道这一起案件,而是集体禁言,隐瞒消息,粉饰太平!

我们真的不是仇富,我只想问这一切的连锁反应到底是怎么了。你们有钱是你们的本事,但是不代表你们可以把撞死一条人命不当回事! 我想问,那个肇事者的母亲,什么叫手下留情,他(胡斌)还是个孩子,这个世界上有些事情不是一句孩子就可以推脱的,要别人手下留情,怎么不见你儿子脚下留情,不要图一事痛快吧油门踩到底,多顾忌一下其他人的生命?20岁,早成人了,早就该有人生观世界观了,还以为你儿子是巨婴不成?!说到底是你们的溺爱害了你们自己的儿子,北京有过路上飚车的事件,被作为危害公共安全处理了;如果杭州这事情可以作为普通交通事故,那是不是意味着以后时不时也会发生?想像,一个年过半百的老人家,慢悠悠地过着马路,他是没有能力和反应去躲避一辆改装过且速度飙快的汽车的难道我们就应该在这样的国情下苟且下去,每天穿马路的时候不但走斑马线,看绿灯,左顾右盼,还要耳听八方,还要身手敏捷,可能这一切都不够,还是要祈祷不要碰到这样的人渣?

我们要的不单单是一个公正合理的结果,我们更要求一个公平公正的制度,让类似的事情不再发生,让所有对这个国家还抱有希望的人不至于心灰意冷,你说这个没有什么意思?

如果这个事情别某种力量歪曲地平息,即使人们会渐渐淡忘,但是它在某些人心底种下的失望,彷徨,仇恨。。。会在将来类似的事件中再一次的爆发

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 全部.

好久不来

原来做到blog的持续更新这么难。最近工作太忙,一直都没能闲下时间来写点东西,进行学习充电,写些感想。

现在这个blog基本上都属于休眠状态了。今天做个近段时间的小结吧。

  1. 关于项目:项目交付了,不过还有不少bug要修复。还有很多地方要优化重构,还有不少小的功能没实现(特别是安全方面),这些都是需要近段时间解决的。
  2. 关于小工具:最近尝试了新的小工具如ClipX和Everthing,第三方的剪切板确实解约了不少Ctrl+C和Ctrl+V的时间,再加上Everthing的文件快速检索搜索,方便了开发中经常要找某个文件的操作。
  3. 关于Q2:Q1顺利完成了review,下阶段的主要任务是三点:项目,日常组,单元测试。项目需要好好修改bug,提高质量,并保证安全方面的问题;日常组来说,还没做过组长,需要Q2中控制团队中的工作,还要有必要留出资源来做些组内的文档技术优化的需求,不过目前看来资源严重不足中,希望项目结束后,组员都能回到组中;关于单元测试来说,基本上已经不是我的主角了,主要任务是协助发现号把单元测试做好,增加实践经验。可能的话好好研究一些JUnit4和TestNG中新的技巧,并增加JMock相关的使用技巧;
  4. 关于业界:
    • 最大的事莫过于Oracle收购SUN了,我的几点废话般的评论已经在Twitter中说了,这里省略。
    • 其次是Ubuntu 9.04已经发布,Ubuntu持续的改进和优化,已经抢占了大量linux玩家的市场。启动速度高达17.5秒的速度也不知道是否含有水份,但是Ubuntu团队这么执着的去做好linux系统的精神值得欣赏。最大希望应该是捕获更多初级用户,特别是非IT人士。只有他们使用linux才拥有未来。
  5. 关于学习:
    最近都没有时间充电学习,对于“挨踢”人士来说应该说非常致命的。

    • OpenSource ESBs In Action还没能浏览完毕。mule in action也已经出版,需要好好补习下esb的知识了,这个领域已经不是前沿科技了,已经是主流的SOA解决方案中必不可少的一部分。
    • Spring事务与相关源码的学习。对于大规模的系统来说,分布式和事务是非常非常重要的一环。而程立的分布式事务解决方案是很好的实践与学习材料。这方面如果不学习,岂不是浪费大好的机会。Spring的源码有空一定要好好研究,打好基础再去看分布式事务等相关知识。
    • Spring osgi dm的书籍也搞到一本电子版,有空要看看,至少做到浏览和心中有数。
    • Groovy上次的学习只能用半途而废来算了。尽快过一遍,况且有问题可以直接问问管华。主要看两本书:groovy recipes 和programming groovy。
    • 前端时间很热的Collective Intelligence 也一直缺乏关注。花时间找到的书籍也因为懒惰没去看,真是很讽刺,虽说“磨刀不误砍柴工”,但是如果不砍柴的话,刀不白磨了吗?
    • 心理学的书籍虽然很有兴趣,但是专业充电,和广域的知识补充都兼顾的话真的没时间啊。谁能告诉我怎么办?

先谈这么多,想到再补充!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • LinkedIn
  • description
  • TwitThis
  • MySpace
  • StumbleUpon
  • Google
  • FriendFeed
  • Mixx
  • Reddit

Posted in 全部, 职业生涯. Tagged with .