高效能程序员的修炼札记:加强代码测试

前言:代码测试,无疑是编程环节中重要一环,重要到什么程度呢?假如治理雾霾就是编程,如果想把雾霾治理好,最最重要的无非就是减少工业污染,而代码测试就是这样,它能够从根源上就杜绝bug的发生。实战经验告诉我,在编程的过程中,当你顺利的把代码敲完毕了,那么及时的跟上一次代码肉眼扫描,以及通过SVN版本库的对比,或者是和你认可的同事进行代码的检测,当你对重要的代码写一小段测试用例后,你会发现,你已经能够修正了大量的bug,如果按照bug10个量记的话,一遍代码测试能够做到7个bug的消除。

与客户患难与共

我曾经也一度认为,远离客户,远离用户群,会让我一个做技术的开发人员进入到编程世界的“桃花源”,那里不再有任何嘈杂的声音,没有你厌恶的那种“小白”,更能让你远离那些无知的“需求”。

然而就如同作者所说,用户才是与代码休戚与共的人,而我们一旦完成了代码的编写,很多情况下,我们就如同和代码之间隔了一座巫山,从此不再相见。而那么用户,会被迫的和你的代码成天的打交道,他们对你的代码有着最真切的体验。

由于工作角色的问题,我必须在交易平台的项目中身兼数职,从客户需求的分析到产品的上线运维,我必须亲力而为,自然的与客户就要经常打交道,我发现,我所负责的代码,客户用起来远远要比我熟练的多,他能让交易的K线图呈现完美的走势,而我,只有羡慕的份。而他们也是发现软件问题的最重要的人,刚开始,我认为他们反馈的问题是“无稽之谈”,然而相对而言,如果他们都能发现软件的问题,为什么我们不能做的更好的呢,很多时候,和客户打成一片,会让我们能够更好的保证软件的质量。

混世魔王

很多时候,软件在测试的环境下,什么问题也没有,然而一旦正式上线,各种莫名其妙的问题就会不断涌现,我们有的时候会感到无助,因为这些摸不着头脑的问题让人无从下手,对于这些问题,多半情况下,我们准备不足。

那么如何才能从容自如的处理这个问题呢,作者说要创造一种混世魔王,为程序添各种乱子,让我们能够从日常的实战中就获得足够的处理经验,另外提升我们的软件处理能力,对一场情况有着更佳的处理方式。

虽然目前阶段,我们做不到增加一个混世魔王出现,但是我们要保证,让程序足够的健全,尽量让程序去处理一些边缘情况(出现几率比较高的),这样能够保证我们的程序不再那么脆弱。另外,在上线测试之前,一定不要相信你的程序什么问题都没有,有的时候,别人会给你埋坑的,你会被迫的跳坑的。

代码评审

同级之间的代码评审是你为提高代码质量所能做的最大贡献。

在一个软件维护的组织里,在引入代码评审之前,55%的维护代码改动都是错误的,在引入代码评审后,错误率降到了2%。

从实际的经验开发中,我不难发现,有一个值得你信赖的评审者,让你倍感欣慰和荣幸!经过一个负责人的检验后,他会帮你筛选掉你花费大量时间都不能发现的问题,从自我体会来说,代码评审太重要了,我已经不想再重复这个话题了,记得找一个你信赖的人进行评审。

加大测试力度

原本以为昨天已经是对接华夏银行测试的最后一天,紧张了一个星期的神经要稍微的放松了一下,然而,就在今天早上进行清算对账的时候,原本的代码存在很大的漏洞,关于出入金的明细核对,在处理方式上显然没有做到“仁至义尽”,还埋着很多坑。而昨天晚上睡觉前的反省,也让自己发现对于冻结资金的处理,是不应该每日累加的。

这一切都足够的证明,测试根本就不是想象中就能完成的,即使在脑袋能够想到的方方面面,我们已经处理的足够优秀,然而,面对现实测试的时候,程序依然显得那么脆弱,还需要再进行精雕细琢,还需要加大测试力度,如果我们认为一个问题经过两三个测试用例后,就不会出现错误了,显然是不可能的!

单元测试

大家对于单元测试的接受,已经成为软件开发领域在过去5-7年里最大的进步之一。

我们很多人都用户junit,这东西在很大程度上能够帮我们完美的测试出当前类,当前方法存在的漏洞,以及性能如何。那么我想列出来我认为非常棒的“测试先行”的观念,因为之前在优化服务端的交易撮合速度,就是靠着单元测试的出来的:

  • 降低修复bug的成本
  • 它比直接写代码的效率更高
  • 帮助你不破坏现有功能的基础上持续改进
  • 可以作为示例代码

单元测试和beta测试

只有当你把你的代码交给beta测试人员后,真正有价值的测试才算真的开始。

的确,beta测试最能模拟真实的线上运行场景,beta测试已经成为众多软件开发的标配。我们当前的期货交易系统,在每次修改代码后,都会更新到对应的测试服务器进行相对真实环境的测试,用来尽可能的在上线之前解决问题,而这的确帮助了我们太多。

低保真的可用性测试

如果你不找来真正的用户做可用性测试,你无法知道你的程序能否正常工作。

这个无需多言,对于我们小型企业和团队来说,去找到合适的群体对产品进行可用性测试的确比较困难,但是我们必须尽量去做。很多时候,迫于无奈,我们没有这些群体,只能勉强通过自己的自我测试后,就要着急上线,而上线后,很多时候无法面对真实环境的使用压力,bug最终会压坏产品,我们的确也曾这样失去一个客户。

比程序崩溃更糟糕的是什么

到目前为止,我发现Java的异常处理已经被我们多数人玩坏了,随处可见的try catch能够让看得眩晕,为了保证程序的“健壮性”,考虑到用户的体验,我们把错误一层层的包装起来,当遇到错误的时候,我们很友好的提示用户耐心的等待,这在很多时候,让用户颇感无奈。

看到作者这篇文章,心有戚戚然,“快速失败”真的非常重要,让用户的数据在出现错误的时候,能够不至于丢失。我们没有必要把错误藏在深处,当然Java的事务回滚,能够帮我们做很多,然而尽量不要在try 中再包含try,尽量让错误中止接下来的代码继续运行,让你能够尽快的定位到问题发生的根源,尽快的解决掉问题。

时间: 2024-10-18 19:55:08

高效能程序员的修炼札记:加强代码测试的相关文章

高效能程序员的修炼札记:轻重缓急,了然于心

前言:时间过的真快,转眼间五一三天假期就结束了,以前在苏州的时候,会放假7天左右,带着对亲人的思念奔走于苏州和洛阳.如今,想和父母见上一面,倒也变得容易得多了,这让我觉得幸福更加让人珍惜.本篇作为<高效能程序员的修炼>最后一章,也是在讲述幸福是什么,以及如何更好的把握人生. 程序员,你幸福吗 这个话题真是让人有着千丝万缕的情感,说也说不清楚.我觉得我应该感到幸福,因为家庭比较美满,工作相对顺利.然而也总欠缺着什么,虽说谈不上什么人生抱负有待实现,却也心怀"安家立国"之志.

高效能程序员的修炼札记:程序员的高效工作场所

前言:最近几天,心里颇不宁静,感觉无所适从.每天沉浸在游戏中,我对自己说,只有跌入谷底,才知道往上爬.在写这篇博文的时候,终于能够从游戏中挣脱出来,尝试着去做出一些改变,再次从Jeff的博文中获取进步的动力. 不知道有伙伴是否和我一样,有的时候对生活感到困惑,不知道自己的奋斗目标,也感觉不到生活的压力,进而产生消极的生活,而这个时候,你们是怎么度过的呢?看到一个"不争气"的自己,你是否会为自己感到失望? 好了,废话就不再说了,努力写出好的博文札记,为自己找回一点点救赎的凭证. 程序员的

高效能程序员的修炼札记:揭露营销伎俩

前言:也许你乍一看题目好像与程序员没有一点关系,程序员又不做营销,但是我觉得还是比较紧贴生活的,看着就感觉发生在自己的身上,很多时候自己都中了营销的伎俩. 谨防九种营销诡计 1.不恰当的比较 我觉得很多时候,确实很奇怪,我在花钱买菜的时候,感觉1块钱要比两块钱便宜的多,而在买衣服的时候,100和200差不了多少,很怪异. 2.利用消费惯性 都说洛阳要比苏州的消费低,但是自从回到洛阳后,还是月光族,信用卡依然刷爆,本月的债依然要下月才够还. 3.免费的诱惑 说起来免费,当然所有国内的人都想起来了3

高效能程序员的修炼札记:安全基础,保护用户数据

前言:现如今,各种网站用户安全问题不断爆发,很多用户的密码被网站曝光出来,安全是互联网的一个老生常谈的话题,为什么用户的密码这么容易被破解呢,首先,作为我们开发者来说,我们要想尽办法提高用户数据的安全性,同时保证用户体验效果. 所有网络通信都应该加密吗 很显然随着互联网的高速发展,在作者的眼里,https已经提高了很大的性能,实现ssl的通信已经变得不再让人那么沮丧,那么我们一般的网站可以尝试去使用https通信,不过https需要有ca的认证证书,需要花费一定的金钱,而如果不是CFCA签发的证

高效能程序员的修炼—第一次读后感

高效能程序员的修炼-第一次读后感 最近利用在地铁上的时间看完了<高效能程序员的修炼>发现自己还是存在的很大的不足之处,或者说成为程序员就需要不停的学习,而我在一段时间很自满以为没有自己不能解决的问题,直到跳出了那个城市来到了北京才发现自己不过是一个很菜的菜鸟,在这里我那点知识根本是不够用的额,我突然发现了如果这么下去我们之间的差距就会变得很大,然后么我就每天花一点时间研究一些深入的东西,发现以前的好多东西站在现在的角度还是有很大改进的地方.特别是最近看了这本书,发现人或许就是活到老.学到老,而

《高效能程序员的修炼》读书笔记四

第一章第三节:如何培养写作习惯 -------------------------------- 我个人一直坚信要成为一名优秀的程序员,其实和写代码是没有多大关系的(刚好本书作者也是这样的想法).当然,作为一名程序员的话,具有一定水平的技术能力还是需要的.但,个人觉得更重要的是良好地沟通技巧. 本书作者的合伙人Joel Spolsky有过这样一段话: 杰出的程序员跟勉强过得去的程序员之间的差别,不在于他们掌握了多少种编程语言,也不在于他们谁更擅长Python或Java.真正的关键是,他们能不能把

读书笔记--《高效能程序员的修炼》

  初次邂逅...... 最近小编抽空看了一本书,书的名字叫做<高效能程序员的修炼>,从这本书的名字就能看出来,软件开发远不只是写代码那么简单,你要学会的是高效能的工作,这让小编想到了去年读过的一本书<高效能人士的七个习惯>,有兴趣的小伙伴可以看看哦,受益匪浅,<高效能程序员的修炼>这本书从人文角度而非技术角度去阐释了作为一个程序员,应该具备的基本素质,所以小编在看这本书的过程中,感到非常的有共鸣,通俗易懂,又很贴近小逼啊工作和生活中的实际, 俗话说,有一千个读者,就有

高效能程序员的修炼阅读

入门 宣扬 "每个人都需要知道如何去编程" (乔布斯说的) 是 一种倒退!举个例子: 马桶堵住了,你不需要特地去学 高级水管工 的课程. 生命中最苦难的是想清楚自己真正要做事情,如果你探索的道路上,决定仍然走上 编程之路,那应该用尽一切方法去学.我的祝福与你同在,当然我的祝福 你听听 就算了,他帮不了你. 绝不要为了学编程而学编程,学编程应该是为了追求快乐 . 我成为程序员是因为我想改变我所玩电脑游戏的规则,而学习编程是唯一的途径. 代码是一种信仰. 善于写作,学会表达,即使没人看 八

《高效能程序员的修炼》阅读笔记

1.一路向前冲:沿着那条路下去,一定要快.如果有什么东西挡住了你的去路.....绕开它! 2.第一条原则:永远都是你的错!甚至在开始出错的地方根本就不是你的代码的时候,也应该首先假定问题出在你的代码里! 一定不要在代码出问题的时候,去怀疑系统或者IDE的问题!因为在所有报告的程序错误中,百分之95都是程序员造成的,只有2%由系统软件,2%由其他软件,1%由硬件造成. 3.避免写注释:你应该总是专注于编写代码,而忘了还有注释这种东西的存在. 4.学会读源代码:不管文档上怎么说,源代码才是最终的真实