一组测试跑完成后的随笔:聊聊测试

最近同事跟我聊起博客,说我为啥不多写点博文,去整个微软MVP什么的,我才想起我也是有博客的,哈。至于什么微软MVP嘛。。呃。

上面的话先打住了,今晚上来看一下(还忘了密码了。。。),发现某些文章浏览量竟然过千的,还发现那浏览这么多的其实还是一个不好的实践,立马改掉,以免误导大众啊。其实博文我写了没几篇嘛,每篇在日后一看都摇头自叹当初很傻很天真,估计多日之后我看今天这文也是同此感想 :)

哦,标题里提到测试了,这东西估计很多人对它都不陌生了,先来看一两张图:

看出啥了吗?嘿,图一跑的时间比图二的时间总体上要长一些,换句话说,截图一时程序的性能要比图二时差。其实在图一之前我已经做了一次优化,那次优化性能提升的要比这次要大很多(大概是3秒变1秒的程度)

我想说啥?呃,只想在这里对近一年来各种测试框架在个人开发及项目实施中的带来的帮助表示感谢,谢谢微软的测试框架,也谢谢NUnit,谢谢Anroid Unit Test,谢谢JUNIT,谢谢XCode下的XTCTest,也谢谢JQuery发布的Qunit等,你们让我在这一年里改变了太多。

对于每天已经使用测试框架来协助开发的人来说,基本上已经离不开各种Unit Test,我也是,而我下面的话,是对那些还没有在用Unit Test的人说的。

记得很久以前,有人问我怎么写单元测试,我愣了一下没法回答,因为我觉得我告诉他那无非就是和验证1+1是不是等于2,他可能会认为我很2。。。有时想把问题说简单,让别人理解,反而真会误导人。

后来自己开发了自己一套微软CRM测试框架并在公司推广测试时,才粗略的总结了一下。

怎么写测试?很多人会从技术的角度去考虑这个问题,其实错了,写单元测试根本不是个技术问题。

简单的举例,你打篮球,投得很准,身体对抗也强,技术没问题,但这能确保你打赢比赛?NO,你还需要一个比较强的团队合作能力、战术实施的能力,这些能力是啥,其实不是技术问题了,是意识问题,这些方面有了较强的意识,你才知道什么时候转球,转给谁,什么时候进攻,是否需要马上准备防守等,这些问题其实都是意识问题,和你个人球技没多大关系。

换到代码的世界里,写测试其实就是一个意识问题,所以只能说:它真不是说你一学就会的,有太多东西需要去实践,所以初写测试的朋友还是不要把各种Unit Test框架当做一种新技术来学习,像微软的QualityTools.UnitTestFramework是新的技术吗,JUNIT是新的JAVA技术吗?可以说是,也可以说不是,你其实可以在半小时不到内把这些测试框架里的所有类和方法都试用一遍,你甚至可以比较容易就可以实现里面的一些类和方法并搞清楚它功能原理,但你可能还是不会写测试,为啥?如有此雷同的感受,只能归结到一点:不知道测试的价值在哪。

测试的价值是什么?这个对不同的公司、不同的人来说,可能有不同的答案,大多成功实施测试自动化的企业的答案估计是:项目成本、软件质量。对我来说,它提高了我代码质量和水平,提高我的开发效率,拯救了我马虎的心 :)

一些人开始问了,还有这么多功效?

嘿,我的代码质量一向无法形容,一直都不敢给人看,加上自己天生的马虎,程序BUG一直很多,后来加上测试,这一切得到了改变。。。(这是。。广告吗? - -)

至于怎么改变的,以后再聊了,换点瞎扯点的结尾----

最近各种项目天天加班到半夜两三点,还通宵了,这是不让人活的节奏啊,明天发布新版本的微软CRM测试框架,并开始应用于解决系统升级、性能检查的问题,得早些睡了啊。

原文地址:https://www.cnblogs.com/bcszz/p/crm-unittest.html