一种对软件模块进行单元测试的方法

      【文章摘要

       在软件的开发阶段,单元测试是确保代码质量的重要方法。因此,掌握基本的单元测试方法是对一个软件开发人员的基本要求。

       本文基于作者的实际项目经历,介绍了一种采用得比较多的单元测试方法。

 

        一、软件模块概述

        在实际的软件系统中,各个模块之间的关系可以用错综复杂来形容。根据模块之间有无消息交互,可以将软件模块划分为以下四类。

        第一类:独立模块。即该模块不接收其它模块发过来的消息,同时也不向其它模块发消息。

        第二类:被动的单向消息模块。即该模块只接收其它模块发过来的消息,而不向其它模块发消息。

        第三类:主动的单向消息模块。即该模块只向其它模块发消息,而不接收其它模块发过来的消息。

        第四类:双向消息模块。即该模块既要接收其它模块发过来的消息,又要向其它模块发消息。

        根据软件模块的不同种类,要“因地制宜”地采用不同的单元测试方法。本文介绍第四类软件模块的单元测试方法。

 

        二、双向消息模块特点

        一般而言,第四类(双向消息模块)的主要特点有如下几个:

       第一,严格按照约定的协议与其它模块进行消息交互。程序执行成功与否,通过相关的协议字段就能够看得出来。

       第二,要约定好消息事件号和消息序列号。这样做的目的是让该模块能够有条不紊地进行消息处理。

       第三,对模块的程序执行效率的要求较高。如果接收一条消息之后,半天才给予回复,那么几乎没有哪个模块能够接受这样的“低效率”。

 

        三、对双向消息模块进行单元测试

        根据双向消息模块的特点,我们专门开发一个软件模块(简称测试程序)用于向该模块发消息。为了确保发送的消息的条数可控,我们将测试用例放到配置文件中,由测试程序负责读取、解析并发送。对双向消息模块进行单元测试的详细过程如图1所示:

图1对双向消息模块进行单元测试的详细过程

       说明如下:

       第一,在设置测试用例的时候,要尽量覆盖欲测试代码的所有流程。也就是说,要让所有的程序分支都会跑一遍。此外,正常和异常的测试用例都要设置。

       第二,遇到发不通消息或程序的日志有异常,要马上修改有问题的代码或配置,然后重新运行程序。在刚开始测试的时候,可以每次只发送一条消息,看一下整个流程是否正确。之后可以考虑每次发多条消息(定义好消息事件号和消息序列号),并对被测模块的处理性能进行测试。

       第三,在软件需求较多的时候,可以每完成一个或几个需求便进行单元测试,等已开发的功能确认无误之后再继续完成新的需求。

 

        四、总结

        在提交软件版本之前,对所开发模块进行单元测试和集成测试是每个开发人员必须要做的工作。只有自测充分了,软件版本的质量才能够有所提高。如果将程序的问题遗留到现场商用之后,那么此时修改所带来的费用或损失会大幅度地提高。因此,每个开发人员都应该养成对程序进行单元测试的好习惯。

       本文介绍了对双向消息模块进行单元测试的具体流程,为相关软件开发工作的顺利开展提供了有益的参考。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-09-30 21:51:31

一种对软件模块进行单元测试的方法的相关文章

如何设计软件模块的自动化测试?

[文章摘要]        自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,它的目的是为了提高测试效率,同时促进知识传递以及经验积累.在自动化测试过程中,我们不需要重新录入测试用例,而只需要沿用原来的测试用例即可完成所有功能的测试,测试用例通过自动化测试工具可方便传递到下一个版本.         一般的软件模块分为消息触发型和主动扫描型两类.本文对这两类软件模块的自动化测试过程进行了详细介绍,为相关模块的自动化测试的设计提供了有益的参考.   一.两类模块简介 1. 消息触发型模块

windows-有谁知道这两种exe软件启动方式的区别是什么吗?

问题描述 有谁知道这两种exe软件启动方式的区别是什么吗? windows下开机自启动一个软件,一个是放在启动项里启动,一个是写入注册表中启动,这两者原理的区别是什么? 解决方案 这个是历史问题造成的. 在Windows 3.1中 来个图吧.你看到,有一个叫Startup的组,这是Windows 3.1的启动程序的方式.那时候还没有注册表.注册表是Windows 95引入的. 但是出于兼容性的需要,微软以后又不得不保留这个"启动",这就造成了开机启动有多个方式.除了你说的这两种之外,其

在JavaScript的AngularJS库中进行单元测试的方法

这篇文章主要介绍了在JavaScript的AngularJS库中进行单元测试的方法,主要针对AngularJS中的控制器相关,需要的朋友可以参考下 开发者们都一致认为单元测试在开发项目中十分有好处.它们帮助你保证代码的质量,从而确保更稳定的研发,即使需要重构时也更有信心. 测试驱动开发流程图 AngularJS的代码声称其较高的可测性确实是合理的.单单文档中列出端对端的测试实例就能说明.就像AngularJS这样的项目虽然都说单元测试很简单但真正做好却不容易.即使官方文档中以提供了详尽的实例,但

一种远程检测用户杀软的简单方法

本文讲的是一种远程检测用户杀软的简单方法,Windows7是我经常工作使用的操作系统,为了进一步保证安全性,我安装了卡巴斯基网络安全反病毒软件--KIS.有一天,我在一个网页中发现一段有趣的代码,然而这段代码本身并不应该出现在这样的网页中. 为什么 FaceBook 的网站嵌入了卡巴斯基站点的js文件?我马上意识到,我所安装的杀软(卡巴斯基)针对https进行了类似中间人攻击(MITM)的行为,并在当前活动的页面中注入了它自己的代码以便跟踪分析网页. 嗯--,为什么不创建一个特定的网页来监视那段

小脑袋搜索引擎优化软件提供竞价优化的方法

小脑袋搜索引擎优化软件提供竞价优化的方法 &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 查找引擎优化是指 遵循查找引擎的 查找原理,对网站构造.页面文字语言和站点间互动交际略等进行合理方案安顿,以 改善网站在查找引擎的查找表现,进而添加客户发现并拜访网站的可能性的这样一个进程. 查找引擎优化也是一种科学的翻开观和方法论,它跟着查找引擎的翻开而翻开, 一同也促进了查找引擎的翻开.   查找引擎优化的首要作业是通过

一种基于SDN的安全云接入方法

一种基于SDN的安全云接入方法 徐耀峰 郭志刚 寿国础 这篇论文结合SDN(Software Defined Networking)技术,从接入安全保障角度提出一种新型的安全云接入模型.这个模型中,云服务提供商(CSP)只关心数据的处理和存储,第三服务方根据云用户的需要提供对应的接入安全保障服务.在SDN网络中,第三服务方可以采用基于服务名称寻址的网络管理策略,这使得服务很容易扩展或恢复.整个模型分为两部分,API 模块和功能模块,API模块负责功能模块与SDN控制器的网络策略互,功能模块处理接

五种适合个人站长的网站推广方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我们大部份个人站长们对网站推广这块既是又爱又恨,之所以爱它是因为网站做得再好,如果没人看,那还不如不做.但是只要推广做得好,草根站长也有翻身的机会.之所以恨呢,是因为现在网络上使用的推广方法大多都是拼钱的游戏,并不是谁想做就能做的,而且还不一定能捞得回来.但是网站推广这个问题又是我们每个合格的站长必需要解决的问题,当然你也可以不解决,但是最终

android判断软件是否第一次运行的方法

  本文实例讲述了android判断软件是否第一次运行的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 SharedPreferences sharedPreferences = this.getSharedPreferences("share", MODE_PRIVATE); boolean isFirstRun = sharedPreferences.getBoolean("isFirstRun", true);

八种常见Excel错误提示及问题解决方法

  八种常见Excel错误提示及问题解决方法          1.#####! 原因:如果单元格所含的数字.日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误. 解决方法:如果单元格所含的数字.日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽.如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误.如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值