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

      【文章摘要

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

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

        一、软件模块概述

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

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

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

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

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

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

        二、双向消息模块特点

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

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

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

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

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

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

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

说明如下:

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

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

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

        四、总结

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

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

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

时间: 2024-10-21 00:58:57

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

几种常见软件过程模型的比较

瀑布模型 瀑布模型(经典生命周期)提出了软件开发的系统化的.顺序的方法.其流 程从用户需求规格说明开始,通过策划.建模.构建和部署的过程,最终提供一 个完整的软件并提供持续的技术支持. 优点: 1. 强调开发的阶段性,各阶段具有顺序性和依赖性 2. 强调早期调研和需求分析,推迟编码实现的观点 3.  提供了一个摸板,这个摸板使得分析.设计.编码.测试和支持的方法可以 在该摸板下有一个共同的指导 缺点: 1. 文档驱动,用户无法及时了解产品的情况 2. 依赖早期调研和需求分析,很难适应在许多项目开

TPM:dTPM(硬件)和fTPM(固件模拟的软件模块)

转:Bitlocker.TPM和系统安全 自从微软在Windows Vista首次引入Bitlocker以来,它已经越来越多的出现在我们的周围.尤其是企业用户,Bitlocker的保护已经变得不可缺少.本文将深入讨论它的原理和如何提高它的安全性. 什么是Bitlocker? BitLocker 驱动加密是集成在Windows Server 2008和Windows Vista及以后版本中的一个新的安全特性,它通过紧密集成在Windows操作系统中的方案,来帮助降低数据偷窃或丢失导致的泄露,被盗,

maven多module项目中千万不要引入其他模块的单元测试代码

本文出处:http://blog.csdn.net/chaijunkun/article/details/35796335,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 这两天一直在整理一些旧的代码,将原来的混乱东西升级到maven管理.这其中也免不了将大项目拆分成若干个module(这里纠正一个发音,不是"猫丢",是['mɑ?d?ul],包阔我在内很多人都念错)来管理.然而为了在测试的时候图省事,在各个模块都引用的基础module中

一种控制智能卡模块封装尺寸的UV封装设备

本实用新型公开了一种控制智能卡模块封装尺寸的UV封装设备,包括工作台和安装在所述工作台上方的滴胶装置和UV固化炉,所述UV固化炉位于所述滴胶装置的右边,所述UV封装设备还包括低温装置,所述低温装置设置在所述滴胶装置和UV固化炉之间,且靠近所述滴胶装置,所述低温装置为朝向下端开口的中空箱体,所述低温装置的左侧面的底部和右侧面的底部各设一缺口,所述低温装置的下端扣合在所述工作台上,所述低温装置的后端通过第一支架与所述工作台连接.本实用新型的控制智能卡模块封装尺寸的UV封装设备,利用UV胶的黏度随温度

Nginx软件模块说明

Nginx软件模块说明 Nginx常用模块 注:以下只是列举Nginx常用模块,需要详细了解更多模块可以登录Nginx官方网站查看 功能模块 模块说明 ngx_http_core_module 包含一些核心的http参数配置,对应Nginx的配置为http区块部分 ngx_http_access_module 访问控制模块,用来控制网站用户对Nginx的访问 ngx_http_gzip_module 压缩模块,对返回的数据压缩,属于性能优化模块 ngx_http_proxy_module pro

linux中几种安装软件 方法

http://blog.csdn.net/u010509774/article/details/50593231 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd soft.version.rpm所在的目录: 4.输入rpm -ivh soft.version.rpm 详细介绍: 1. 安装: 我只需简单的一句话,就可以说完.执行: rpm –ivh rpm的软件包名 更高级的,请见

VUE中常用的几种import(模块、文件)引入方式

VUE中常用的几种import(模块.文件)引入方式:https://blog.csdn.net/weixin_38930535/article/details/80177445 1.引入js文件 在用的那一页,引入文件 相应的js文件里面,必须是暴露出来的 2.引入组件 3.引入外部组件 4.引入外部js插件 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/12237156.html

基于Qt有限状态机的一种实现方式和完善的人工智能方法

基于Qt有限状态机的一种实现方式和完善的人工智能方法 人工智能在今年是一个非常火的方向,当然了.不不过今年,它一直火了非常多年,有关人工智能的一些算法层出不穷.人工智能在非常多领域都有应用,就拿我熟悉的游戏领域来说吧,一些寻路算法,比方说A*算法(我的<十日驱鬼记>就以前使用了A*算法进行寻路).另一些高级的算法,比方说决策树等.都在游戏中得以了广泛的应用.我眼下想制作的项目和人工智能也有一定的关系,因此.我这个月開始学习搭建一些简单的人工智能框架. 蒋彩阳原创文章,首发地址:http://b

导入monkeyrunner模块失败的处理方法

因为工作的需要,想学学自动化测试的一些东西,于是开始接触 monkeyrunner,后来在写python脚本的时候发现导入monkeyrunner模块时总是失败,很纳闷,在cmd中测试的时候发现也会有各种各样的问题,于是各种搜索资料,总算搞定. 导入monkeyrunner时,所碰到的问题,大致有下列几种: a . Could not initia lize classcom.android.monkeyrunner.MonkeyDevice b . noclassdeffounderror:c