你现在位置:首页>技术论文>电气常识>仪器仪表>正文
我对单元测试的实践与理解[1]
日期:2008-4-10 18:10:01 来源:本站整理  
点击: 作者:未知
点击【】放大字体.

谈起单元测试的好处,每个人都能说得头头是道,但真正能将单元测试成功地应用于产品开发的过程中,却难之又难。我所呆的几个公司,以及我从朋友了解到的其它公司,都曾经尝试过采用单元测试来控制软件质量,但到目前为止,我还没有看到一个真正成功的样榜。

P.L.C.技.术.网——可编程控制器技术门户

我自己在单元测试方面做过三次尝试,一次失败,一次半成功,一次比较成功。试着分析这几次尝试的成败得失的原因,也许能得出普遍而通用的结论。

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

案例一:

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

项目名称:

plcjs.技.术_网

《某水电厂智能短信平台》

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

项目目标:

WWW_PLCJS_COM-PLC-技.术_网

从电厂MIS系统的关系数据库中取得实时数据,加工后按照一定规则,通过手机向电厂相关人员发布与生产安全相关的短信。该项目是我到湖南某公司后,接手的一个半拉子项目。该项目已开发了半年多,到了初验收阶段,但用户在使用过程中发现短信系统很不稳定,并提出了许多功能改进意见。我的工作目标是:完善该系统,使之通过用户的验收。

P.L.C.技.术.网——可编程控制器技术门户

工作过程:

WWW.PLCJS.COM——可编程控制器技术门户

我阅读了该系统的源码后,认为该系统的编码极不严谨,只考虑了常规用例路径,没有各种防误措施。选用的工业MODEM不稳定,经常出现处理异常、假死机、真死机等现象。

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

我工作的第一步,就更换了底层串口通讯构件,重构了MODEN收发软件模块,在此过程中引入了单元测试,对每一函数都进行了严格的单元测试。

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

这次引入单元测试是成功的,中途更换工业MODEM的厂家,需要重构短信解析层,因为有单元测试,很快便完成了收敛。该模块的质量也非常高,系统运行至今,底层通讯、短信处理等模块一直非常稳定。

WWW_P※LCJS_COM-PLC-)技.术_网

但是,在远程管理平台这一层,我的尝试没有成功,主要原因是因为我对ASP.NET编程极不熟悉,对它的理解、改动非常吃力,更不用说为之增加单元测试模块了。

WWW_PLC※JS_COM-PmLC-技.术_网

好在只有系统管理员关心远程管理平台,一般用户不关心这个功能。该项目最后验收通过了。验收之后,该系统也曾出现几次问题,但都是与上层模块有关。

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

经验:

WW.W_PLC※JS_C,OM-PL,C-技.术_网

1. C#开发平台上有一个很好的单元测试工具NUNIT,Visual studio 2003也很好地支持该工具,因此,引入单元测试在技术上没有困难;

WWW_PLCJS@_COM%-PLC-技.术_网

2. 我对串口编程比较熟悉,对串口通讯中异常处理的重要性认识得比较深刻,因此,对引入方法以保证系统稳定性的迫切性比较高;

WWW_P※LCJS_CO※M-PLC-技-.术_网

3. 我加入单元测试的几个模块都是底层的模块,这些模块与其它模块的交互性比较小,容易实现单元测试;

WWcW_PLCJS_COM-PLC-技.术_网

4. 单元测试的关键问题是如何将需测试的模块与其它模块隔离,这个系统中需要隔离的是重点是:将实际的串口通讯隔离,我采用了宏替代,并辅以一些模拟函数来模拟串口通讯过程,这个思路很好,实际上就是桩函数的思想;

WWW_P※LCJS_CO※M-PLC-技-.术_网

5. 我对程序防误有一定的经验,因此在设计单元测试用例时比较有针对性;

W1WW_P4LCJS_COM-PLC-技.术_网

6. 我在接手该系统前,正在看《单元测试之道 C#篇》,这本书从理论方面给了我很多帮助;

WWW_P※LCJS_COM-PLC-)技.术_网

教训:

plcjs.技.术_网

1. 我对ASP.NET编程极不熟悉,在自己不熟悉的领域也强行推动单元测试,最后的结果非常不理想;

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

2. 上层模块更需要处理好桩函数和隔离,这一点我经验不足;

WWW_P※LCJS_CO※M-PLC-技-.术_网

3. 单元测试的工作量非常大,我最后放弃在上层模块推行单元测试,便是在项目交付与开发工作量之间权衡后取消的。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

待续...

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

评论内容
载入中...
相关文章
商城相关
相关下载
博客相关
论坛相关
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
深圳秦合源科技有限公司 
   深圳市秦合源科技有限公司是国内领先的规模较大品种齐全的称重传感器(Loadce......
广州汇巨自动化设备有限公司 
   广州汇巨自动化设备有限公司是一家专业工业自动化产品和自动化设备开发、维修改造、电......
深圳联脉电子有限公司 
   公司自1998年创立以来,一直致力于工业控制产品的研发、制造、销售,目前有机房监......
北京力天昭阳科技发展有限公司 
   北京力天昭阳科技发展有限公司(PekingPowerSkyScience&......
东莞市友诚自动化 
   本公司专业代理台湾永宏、台达PLC、HITECH人机、特价供应文本显示器MD20......
深圳市爱威轮实业有限公司 
   爱威轮实业对广大用户的技术支持与服务,贯穿于与客户接触的每一个环节中,渗透在每一......
·栏目热门排行
·站内热门排行
载入中。。
报告错误·关于我们· 用户帮助· 联系我们 · 友情链接· 本站服务 · 合作伙伴 · 版权声明· 招聘信息 · 投搞指南

迅闻自动化工程部声明如下:
旗下网站:PLC技术网(www.plcjs.com)-可编程控制器技术门户
网站备案号:粤ICP备17165530号
网站法律顾问:ITLAW-庄毅雄律师
法律保护:PLC技术网,迅闻电子,plcjs.com,plcjs.net,plcjs.cn等字样

Copyright 2010-2015. All rights reserved. 

51La