Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试

<h1>日常啰嗦</h1>

看到标题你可能会问为什么这一篇会谈到代码测试,不是说代码优化么?前两篇主要是讲了程序的输出及Log4j的使用,Log能够帮助我们进行bug的定位,优化开发流程,而代码测试有什么用呢?其实测试是为了验证自己所编写的代码,及时排除错误,减少bug,所以我认为,减少错误也是优化的一个方案体现,而且如果进行了合理的单元测试,也可以帮助优化开发流程,一旦出现问题,使得bug的定位过程更加迅速。

<h1>你愿意进行单元测试吗?</h1>

其实,像第一篇文章所说的,对于打印输出信息,我们更习惯于使用System.out命令,所以很多时候,习惯决定了我们的编码方式,那么你习惯于做单元测试吗?

我感觉很多人可能都不是很乐忠于在开发工作做这件事,因为主观意识中会觉得这是一件"麻烦"的事情,或者说效果不是很明显的一件事。

针对于此,我也粗略的整理了一下根由,对各个原因,也分别谈一下自己的想法,当然,都是个人看法,大家觉得有用就看,觉得无用忽略即可。

  • 开发项目时并没有明确的要求我去写单元测试。

因为没人要求,所以就不写单元测试。我认为作为一个技术人员,应该关注自我增值和技术上的提升,要求应该是自己提给自己的,并不是说项目没有要求或者没人督促我们就不去做一些事情了,这种装鸵鸟式的态度和钻空子的小聪明不值得提倡,我们不仅要对项目负责,其实更多的也是对自己负责,严格要求自己,多学习,才能更快的进步,不要随波逐流,不要进入其他人的节奏中。

  • 业务逻辑比较简单不值得编写单元测试。

这又是一个理由,而这个理由的深层次的原因,应该是来源于对自己的自信,自信是件好事,但是要掌握好其中的度。相对于机器来说,拥有主观意识的人类更容易犯一些错误,错误可能不大,或者是一些低级错误,比如忘记写一个分号、忘记判空、忘记类型转换...这些都是小错误,但是不注意的话就会出现bug,然后再去花时间修修补补。
所谓的业务逻辑比较简单,其实是相对的。当你对某一块业务逻辑很熟悉的时候,你自然会认为它很简单。然而,单元测试的必要性并不是仅仅在于测试代码的功能是否正确,还在于,当其他同事在了解你的业务的时候,能够很快的通过单元测试来熟悉代码的功能,甚至不用去读代码,就能够知道它做了哪些事情。因此,写单元测试不仅是解放了自己,更方便了别人。

  • 做了少量的单元测试。

这里可能有几方面的原因:
1、为了完成编码任务,没有足够的时间编写单元测试。
2、在项目的前期还是尽量去编写单元测试,但是越到项目的后期就越失控。
3、和上一个原因类似,对自己足够自信,于是只挑一小部分进行单元测试。

我们简单的梳理一下开发过程,开发过程:需求—>编码—>自测—>预发布—>测试—>回滚—>改bug—>发布—>发现bug—>改bug—>发布……我们可以观察到,整个过程中改bug出现了很多次,它与编码工作一样,都是开发过程中不可缺少的一部分,编码只是整个开发过程中的一部分,开发不仅仅是编码而已。
编码的完工≠项目的完工。
因为自测的不完备,导致预发布过程或者后期的冒烟测试难度加大,加长回滚和bug修复过程,这是一个自相矛盾的事情。

  • 测试人员会抓住所有的bug,用不着进行单元测试。

也会有人把锅丢给测试,可能存在这样一个观点,既然有测试了,干嘛还要我费那么多精力去写测试用例?
但是测试工程师往往不在意代码层面,其测试工作只是业务上的集成测试,也就是我们熟知的黑盒测试,更多的是进行功能测试,对代码中单个方法是没有办法进行测试的,因此,测试出的bug的范围也会很广,根本不能确定bug的范围及发生的原因,所以问题的定位及bug产生的原因,还得去花一些时间来确认,如果已经进行了自测,知道了哪部分代码是健康的,至少可以缩小检查的范围,减少定位bug所花的时间。而且,单元测试也就是顺手的一件事,虽然不能解决百分百的麻烦,但是给各方人员提供的便利也是很多的。

  • 不会写。

想当初刚进入这个行业,我压根儿不知道这个事情,也根本没有单元测试的概念,因为那时候我连开发工作都做的不是很好,更不要提过程优化了,直到一段时间后,熟悉了开发流程,可以把开发做好的时候,才开始慢慢接触流程优化,但是一开始碰到的问题就是,我不会。
其实网上教程也是很多的,下一篇会进行简单的介绍和教程,代码也会放到github中,不会可以学,但是不做的话就有些不负责任了。

<h1>代码测试的重要性及必要性</h1>

测试常常是程序员十分厌倦的一个事情。测试能给我们带来什么?了解这些是非常重要的,测试不可能保证一个程序是完全正确的,但是测试却可以增强我们对程序完整的信心,测试可以让我们相信程序做了我们期望它做的事情。测试能够使我们尽早的发现程序的bug和不足。
当然,我们主要讨论的是单元测试。单元测试是一个方法层面上的测试,也是最细粒度的测试。用于测试一个类的每一个方法都已经满足了方法的功能要求。在开发中,对于自己开发的模块,只有在通过单元测试之后,才能提交到SVN库或者Git 库。
再一次强调,你不是一个人,你的代码有问题,同事pull下来的代码也是有问题的,浪费大家的时间。对于这件事情,我是深有感触的,在去年的一次项目开发过程中,由于我没有做好代码审查和单元测试匆匆上传到代码库,导致其他开发人员也无法正常开展工作,还要帮着我去修改bug,这件事导致我有些自责,也在后续的开发工作中更认真,更专注,虽然偶尔也会犯错,但是在态度上不再吊儿郎当、无关痛痒,代码测试有时候也能体现出一个人的态度问题。
知道测试的重要性最好,只要写就是对项目和编码认真的体现,虽然一开始可能写的不是很好很完善,迈出第一步就是正确的,随着测试编码的增多,测试用例也会逐渐完善,关键是要明确和认识到单元测试的重要性。

<h1>最终目的</h1>

前面论述了一下单元测试难以推进的原因以及单元测试的重要性,当我们开始认真的去做这件事了,我们也要做好这件事,我们想要追求的是完美,即使无法十全十美,也要尽自己的全力去争取写出漂亮的代码,漂亮指得是易读、简洁、健壮,为了达到这个目的,我们就需要做覆盖率高以及更完善的单元测试。
测试的覆盖率和完备性越高对于项目来说就越是一个利好的信号,即使做了单元测试,但是较为懒散,随随便便写了几个测试用例,这不能算得上单元测试,这种行为不仅是对项目不负责任,也是对自己不负责任。
不能和不为区别是很大的,不能代表的就是你没有能力去做到一件事,而不为则是明明能做到却不做。对于不能,那么首先要做的,就是通过自己的努力和学习将不能变为能,可能现在项目中并没有做单元测试,原因是因为不会,那就要学习如何去进行单元测试,掌握这个技能。

<h1>结语</h1>

认真些,端正自己的态度,做好自己的单元测试。

(怎么感觉说出这些话的我这么正气凛然,我不像是个刚正不阿的五道杠青年啊,哈哈哈哈哈。)

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,380评论 25 707
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,925评论 7 277
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,227评论 4 123
  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,186评论 2 126
  • 自上了高中以来,我感觉我自己变了很多,变得浮夸、骄傲、不可一世!对身旁的同学的劝阻不屑于顾,从当初的豪言壮志到如今...
    墨心i阅读 196评论 0 0