百度:单元测试(unittesting),是在计算机编程中,针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。通常来说,程序员每修改一次程序就会进行最少一次单元测试,在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格书要求的工作目标,没有程序错误。
老师在第二堂课就指出了我的缺点,在一个概念出现的时候,主要注重都是自己的理解,而却忽略了概念本身要表达的意思。这是我一直所缺陷的,所有的概念都是一知半解就以为全都明白,就出去解决问题,弄得遍体鳞伤,回过头来才发现是基本功太不扎实,下面我将用我的话重述单元测试。
JackMing:是最低级别的测试活动,目的是检查软件是否达到最初是的工作目标,所谓单元,根据不同的编程语言,单元划分的方法并不相同,但是可以肯定的是,所划分的单元是最小的被测功能模块,因为再小的话,似乎就没有测试的意义了,那只能叫检查了。程序员每修改一次程序都要进行至少一次单元测试,这不仅是对软件功能的负责,也是对自己的提高。
我的理解:记得本科弄硬件的时候经常需要去焊电路板,一块大大的板,上百个电阻,数十个电容,数十个二级三级管,还有一大堆芯片,最闹心的事,每个都不一样,而且处于一个萝卜一个坑状态,刚开始的时候闷着头一个劲的插电阻,焊完再插电容,最后一测,不好使,好几百个组件挨个找错,真的好不费劲,有的甚至因为一个电阻电容的毛病,把主要的芯片给烧了,恰逢老师讲到了组件模块,就让我想起了那时的老师傅,焊一个模块,通电,检查是否焊错,因为一个模块的组件比一大块板子少的多,就算焊错也很好找,所以经常看着那群焊工师傅们抽着烟聊着天完成了我们好几个人的工作量,而我们往往很快焊完一块板,然后用比这多好几倍的时间去检错,那时年轻,只是好奇,只知道单元测试这一名头,这次让我真正了解到了单元测试,的确是一种好的方法,只不过这会用到软件上,其实这比硬件简单多了,因为硬件拆件是个相当痛苦的活,软件只需要按个键盘,编译一下,但是就是这么简单的活最后留着一起做也是个相当大的工程,况且考虑到有些效率不是很高的语言,实现一个功能就得编出好几百行的代码,最后一个大功能下来,上万行代码生生能把5.0的眼睛看成4.0的,所以单元测试十分重要,但是选定单元就要基于不同的语言,下面介绍一下java语言,python语言的单元测试工具。
java语言:java语言的单元测试工具一搜又来了一大堆,http://www.2cto.com/kf/201506/410707.html这里简单的介绍了8个。
这里主要介绍Junit
JUnit是一个Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
4、图形和文本的测试运行器
5、使用eclipse的时候方便运行,并且很多java工具里都有集成。
6、网上关于这方面的介绍很多,使用的比较频繁。我更喜欢特立独行,但是在软件工具这方面,还是随大流比较好,因为你会遇到好多不可预期的错误。
python语言:这里介绍了http://www.oschina.net/project/tag/222/unittest?lang=25&os=011 种单元测试工具,但是由于自己对python语言并不了解,但是想在自己java语言熟练之后进行入手,所也就不去分析到底哪个比较好了。
黑盒测试:即把系统封入盒子里,直流输入和输出,看看能否可行,能否在输入正确输入的时候输出正确的结果。
白盒测试:软件使用黑盒测试还是不多,主要是白盒测试,因为要调里面的程序,功能以及需求改变都要看着里面的程序进行调解。
关于高内聚低耦合:我推荐这篇博客http://www.cnblogs.com/robnetcn/archive/2012/04/15/2449008.html,这里是用简单的语言介绍了每条框架的条款分类,没有长篇大论,简单易懂。