成为务实程序员的入门三件套

大家好,我来了~

今天这一章的主题是务实的入门套件。这本书讲的内容有点太多,可能一时间不知道从哪里下手,所以,作者特意选了三件务实的入门套件。

而且和语言、方法论、技术栈这些都不管,属于最基本最基础的部分,大概是地基的角色。

他们分别是:

  1. 版本控制
  2. 回归测试
  3. 全面自动化

版本控制

之前的内容里有说过,应该把项目中用到的所有东西都加入版本控制中。

这样做还有一个隐形的好处,它能让我们不依赖于某台特定的开发电脑,并且谁都不敢轻易地动它。

有了版本控制后,一起都变得简单了。那台电脑想要,就克隆一份下来就好。

另一个好处是,使用版本控制可以推动测试和部署的自动化。

每一个commit提交,都可以触发自动的测试和部署。

回归测试

务实的程序员会对程序进行冷酷无情的持续测试。相比于被别人发现bug,自己先发现要好得多。

作者说,一个好的项目,测试的代码甚至要比工作代码还要多。

并且测试需要自动化进行,测试的环境也要尽可能的和生产环境一致,不一致的地方都有可能是bug的温床。

单元测试

单元测试是后续所有测试的基础。它就是基于单一模块,单一功能的测试。

集成测试

多模块间的配合测试,它可以用来测试,各个模块的合同是否被很好的贯彻。

认证与验证

对于权限的认证,以及如果有用户输入的情况,对用户的输入进行验证。

性能测试

又或者叫压测,测试系统的性能瓶颈。

测试测试

我们无法写出完美的程序,我们也同样写不出完美的测试。

所以测试本身也需要测试,有一种套娃的感觉。

这种测试通常是通过刻意引起bug,看看我们的测试是否能够捕获到这个错误。

彻底地测试

有一些工具,可以检测到我们的测试覆盖的代码量。通常很难达到100%,但多少可以作为一个参考。

但也仅仅是参考而已,即便达到了100%的代码覆盖量,也不一定表面,程序就没有bug了。

同一段代码在不同状态下,表现也可能完全不同。

比如下面这个方法,可能你运行100次都是OK的,只有在a+b等于0的时候,才有可能出错。

int test(int a, int b) {
return a / (a + b);
}

所以,相比于代码覆盖率,状态覆盖率是更重要的。

这时候就需要“基于属性的测试”出场了。

让计算机生成批量的测试数据,来帮我们找到那些边界状态。

永远只发现bug一次

这是一条很朴素很管用,但是实际工作中却很少严格执行的建议。

就是每发现一次bug,就新写一个可以捕获到这个bug的测试,并在之后的每一次测试中,都加上它。

不论开发人员多么信誓旦旦地承诺,这个不会再发生了,都没有用,它已经会再次发生的。

所以,要让一个bug被发现的第一次,也成为它被发现的最后一次。

全面自动化

上面提到了这么多测试,如果都通过手动执行,会不会感到很崩溃?会不会完全不想试试看?

所以,让测试自动化,就是很重要的一步。

当然除了测试的自动化以外,部署也需要自动化。

所有固定流程的重复,都要想办法,让它们自动化。

人不是机器,人不适合做这种重复的工作,因为人不可靠。没办法像机器一样,每一次都一模一样。

作者说,他之前到过一个团队里,团队所有成员都使用了相同的IDE,然后每个人都有一本手工配置说明书,比如,先单击这里,然后把这个拖到那里,然后双击这个……

但是,最后总是时不时发现,同一段代码在A的机器上可以,在B的机器上不行的这类问题。然后仔细寻找原因后,发现多半是大家某个东西的版本不一致。

而这种事情,交给机器做,肯定会一模一样。而且,还可以一键升级。

所以,不要使用手工程序。

以上,就是作者提到的务实三件套,环环相扣,少一环都不行。除了第一个相对简单外,剩下的两个可能是大部分项目或团队有所缺乏的。需要刻意地补上才行。

特别是想想,测试的代码可能要比开发的代码还要多这件事,就挺令人绝望的。

出来混,总是要还的。

不妨从下一个方法,下一个bug开始补上吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容