单元测试(Unit Test) 之大小

news/2024/7/5 23:22:33

单元测试之大

现在,软件行业的人普遍都知道测试驱动开发,知道单元测试,尽管测试驱动开发在实践中存在一些争论,软件项目本身的一些约束条件或者开发人员的编程习惯都可能成为制约因素而不能真正做到100%的测试驱动、写程序先写单元测试。然而,必须承认对软件行业来说,单元测试的理念的确是一种进步,某种意义上说这是这个行业走向成熟的一种迹象。因为,在外界看来的高科技产业-软件行业,从发展程度来看,相当一部分企业及开发人员还停留在"手工作坊时代"的初级阶段:

问题1 - 软件产品质量的好坏主要由开发人员的"手艺"决定,并没有一种客观的可以量化的评测标准来衡量。
问题2 - 软件的变更甚或开发人员的更替都会导致软件质量某种程度上的不确定性。

单元测试的出现和流行使得这一现象开始有了改观,从管理的角度看它可以解决上述两个问题:

1.单元测试在软件的最底层发挥质量保证的作用
2.单元测试可以作为一种客观的质量评测标准,保证软件的质量的一至性

政治经济学中说 “生产工具和劳动者决定了生产力水品“ ,套用一下,单元测试的大规模应用可以标志着软件开发进入了"工业时代"。

单元测试之小

题外话:当今足球的先进理念,相信很多教练都知道,但是并不是每个人都能带领球队取得成功。米卢在中国成功了,杜伊最近的一些列战绩表明他正在走向成功,起码让人看到了成功地希望。

同样,知道单元测试,使用了单元测试并不一定代表你的软件开发水平真的提高了,误解及错误的应用反而适得其反。有一个相关的例子很知道玩味,PMP培训课上讲到质量管理的时候,强茂山老师举了一个例子,他说,现在很多公司都上了ISO质量体系认证,判断这个企业是不是真的实现了ISO的要求,一个最简单的方法就是看这个企业册成本在实施了ISO后是上升了还是下降了。

那么怎样的单元测试才是正确的,使之真正对软件开发起到正作用而不是一种负担?

单元测试原则:
1。 测试代码尽求简洁 - 单元测试的目的是检验被测试的代码(生产代码 Production Code)是否正确,复杂的测试代码,只会增加开发人员的工作负担 - 既要维护成产代码又要维护测试代码。

2。 测试代码要明确测试范围 - 范围(Scope)在软件行业中并不陌生,大到项目范围,小至一段测试代码的测试范围。单元测试,作为被测试代码的调用方(Caller, Consumer),应该只关心被测试代码的公有方法及属性。因为:
a)被测试代码(生产代码)中只有其公有部分才会被外部代码调用,公有部分的测试通过即可保证被测试代码可以正常工作以供调用。

b)面向对象思想中有一个封装(Encapsulation)概念,封装使一个外部调用者只关心被调用着的公有接口,被调用者的内部实现的改变并不会影响外部调用者。只对成产代码的公有部分进行测试,使得测试代码易于维护,不会因为生产代码的内部实现(Private)的改变而被迫改变,这在一个复杂软件中尤为重要,维护测试代码不应该成为一种额外的负担。









http://www.niftyadmin.cn/n/3657231.html

相关文章

[概念] 价值分析(Value Analysis)/价值工程 (Value Engineering)

PMBOK (英 2004 3rd P110) 项目范围管理中的范围定义过程中有一种输入叫做产品分析(Product Analysis),其中提到了的分析工具有价值分析和价值工程,据课堂上老师介绍国内基本把这两种方法当作一种方法,没有区别。google了一下,好像…

Java8特性之接口的默认方法与静态方法

简介 Java 8用默认方法与静态方法这两个新概念来扩展接口的声明。它允许添加新方法到已有接口中,但是不会破坏那些基于老版接口实现的代码的二进制兼容性。默认方法和抽象方法的区别在于:抽象方法是必须要实现的,而默认方法不是。意义 众所周…

NS3概念概述及first.cc讲解

NS3概念概述及first.cc讲解 文章转载自:漫天大雪 一、关键的抽象概念 1.1节点 在因特网术语中,任何一台连接到网络的计算设备被称为主机,亦称为终端。 ns -3是一个网络模拟器,而非一个专门的因特网模拟器,为此我们…

[概念] 属性抽样(attribute sampling)和变量抽样(variable sampling)

PMBOK(2004 3rd 英) P191中提到了质量控制中要注意区分的几个概念,其中提到了属性抽样与变量抽样这一对概念,书上没有详细解释,查阅如下:Attribute Sampling (http://www.answers.com/topic/attribute-sampling?catbiz-fin) :Sta…

TCP/IP为什么要进行三次握手?

定义 三次握手(three times handshake;three-way handshake)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系&am…

[概念] 争议解决程序 (dispute resolution procedures)

PMBOK (2004 3rd 英) P292关于合同变更控制系统中提到了争议解决程序,但是没有详细展开。http://www.venables.co.uk/adr.htm 给出了一些概念和解释:Alternative Dispute Resolution (ADR) was introduced in the 1980s for the resolution of commercia…

记一次网易2018实习生笔试-大数据岗位

记一次网易2018实习生笔试-大数据岗位 网易2018实习生招聘笔试题-大数据开发实习生-云音乐 凭借印象和草稿,记录下一些题目。 共有20道选择题,3道编程题,2道简答题。 选择题 HDFS Block的概念。TCP/UDP。DNS、Telnet、SMTP、POP等与TCP、…

Java NIO(一)入门篇

概念 java.nio(java new IO),是jdk1.4 里提供的新api ,为所有的原始类型提供缓存支持。Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer)缓存支持。字符集编码解码解决方案。 Channel :一个新的原始I…