关闭

单元测试的随想录

发表于:2012-5-15 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:feixiaoxing    来源:51Testing软件测试网采编

  很长时间以来,自己就想写一篇关于单元测试文章。但是由于自己在某些方面思考得不是很成熟,再加上前一段时间稍微有点忙,所以这个事情就一直这样耽搁下来了。其实,朋友们在开发的时候都知道单元测试是个好东西,但是真正用于实践,并且在开发中一直保持下去的却是少数。虽然单元测试的框架很多,什么CUnit,CxxUnit等存在很多现成的开源代码框架,但是大家使用起来还不是很习惯。至于大家为什么会对单元测试很抵触,我想这主要有几个方面的原因:

  (1)单元测试会在无形中增加自己的代码开发量;

  (2)程序员们缺少软件质量的意识,认为保证软件质量是软件测试部门的事情;

  (3)单元测试的效果无法在短期内有所体现,不如功能开发那样立竿见影;

  (4)大家习惯了开发、编译、调试、上机测试、修改这样的传统的开发方式;

  (5)项目至上而下缺少质量控制意识,片面追求开发速度、功能数量、入库行数并过度依赖集成测试。

  但是,这里我想说的是每一个程序员都必须对自己的代码负责,不管这段代码是你设计的还是你维护的。单元测试就是一种很好的验证你代码质量的方法。无论是在设计测试用例、理解代码设计、新功能开发、系统理解方面,单元测试都会对你有所帮助。但是,不可否认,单元测试对个人的要求还是很高的,这就需要个人一点点去适应、去改变。

  a)头文件仿真

  在单元测试中,为了调用很多的底层函数,通常我们会对某些头文件进行仿真。这个时候,我们引用的函数完全是自己定义和设计的。但是,我们也不能为了现在的测试修改原来的头文件排布。所以,这个时候就需要对原有的头文件进行仿真。现在,我们假设原来会引用到一个data_type.h文件,中间有我们需要的函数声明,但是现在不需要了。这时候,我们就可以自己定义一个空的data_type.h文件,添几行代码就可以了。

#ifndef _DATA_TYPE_H
#define _DATA_TYPE_H

#endif

  b)数据处理流程和上层接口分开

  我们在安排源文件的时候,在安排函数分布的时候要注意一个基本的原则:数据和上层接口分开。在单元测试的时候,我们不太在乎曾经将这个数据的上层包装形式是什么。只有真正把数据从结构从释放出来,形成一个独立的处理文件,这样我们的测试才更方便、更有针对性。小函数、独立函数、与接口分离的函数,这些都是我们在代码开发中需要特别注意的。

  c)底层驱动打桩处理

  在真实的软件模块中,我们的代码是不可能独立存在的,因此当前模块的代码常常需要引用别的模块代码。建立符合自己模块的桩函数,一方面可以提高代码的开发效率,另外一方面也方便我们对自身的代码进行测试。当然,底层驱动打桩函数是多种多样的,某些配置类的函数我们可以象征地输出一行打印就可以了;某些函数我们可以利用测试端的一个相似函数代替即可;另外本地不存在的一些函数可能还需要我们真正编写代码仿真一把。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号