软件开发中单元测试常用方法浅析

来源 :硅谷 | 被引量 : 0次 | 上传用户:a15088899204
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]不论采用什么技术和方法,软件中仍然会有错。软件测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。软件测试的目的之一就是尽可能早地发现软件中存在的错误,所以单元测试很重要。重点论述单元测试中最常用到的静态测试技术。也论述黑盒测试与白盒测试等动态测试技术的运用。
  [关键词]软件测试 单元测试 静态测试 黑盒测试 白盒测试
  中图分类号:TP3 文献标识码:A 文章编号:1671—7597(2009)1010074—01
  
  软件是相对于硬件而存在的,硬件是可以直观感觉到、触摸得到的物理产品,软件则是逻辑的、知识性的产品集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化。软件是智慧和知识的结晶。软件工程学出现后,软件开发被视为一项工程,以工程化的方法来进行规划和管理软件的开发。统计表明。在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中用在测试上的开销要占30%到50%。
  软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试数据,并利用这些测试数据运行程序,以发现程序错误的过程。按阶段进行测试(单元测试、集成测试、系统测试、验收测试)是一种基本的测试策略,在测试过程中应该依据每一个阶段的不同特点,采用不同的测试方法和技术,制定不同的测试目标。
  单元测试是测试执行过程中的第一阶段,单元测试是对软件基本组成单元进行的测试,测试对象是软件设计的最小单元——模块,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。进行单元测试的原因是:错误发现越早,成本越低,越到后期复杂度越高,发现解决BUG就越困难,成本也就越高。确保各单元模块被正确地编码是单元测试的主要目标,但是单元测试的目标不仅要测试代码的功能性,还需确保代码在结构上可靠且健全,并且能够在所有条件下正确响应。在单元测试中既会用到静态测试技术,有时也会运用黑盒与白盒等动态测试技术。
  
  一、静态测试
  
  静态测试技术是单元测试最重要的手段之一,静态测试就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行,适用于新开发的和重用的代码。主要有走查、审查和评审。
  (一)走查。走查(walk through)是一种使用静态分析方法的非正式评审过程。走查过程是由被指定作为测试员的小组成员提出一批测试实例,让与会成员充当计算机,对每个测试实例用头脑来执行程序,在纸上或黑板上监视程序的状态。大多数走查中,在怀疑程序的过程中所发现的缺陷比通过测试实例本身发现的缺陷更多。
  (二)审查。审查(inspection)是一种正式的检查和评估方法。它是用逐步检查源代码中有无逻辑或语法错误的办法来检测故障,可以认为它是拿代码与标准和规范对照的补充,因为它不但需要软件开发者自查,而且要组织代码检查小组进行代码检查。检查过程所采用的主要技术是设计与使用缺陷检查表。首先由程序编写小组成员逐句阐明程序的逻辑,在此过程中可由程序员或测试小组成员提出问题,追踪缺陷是否存在,然后利用缺陷检查表来分析讨论。会议后把发现的缺陷填入表中交给程序开发小组。如发现重大缺陷,那么在改正缺陷之后,还要重新开审议会议。审查结束后要完成《静态分析错误报告》。
  (三)评审。评审(review)通常在审查会后进行,审查小组根据代码审查的错误记录来评估该程序,决定是否需要重新进行审议。《静态分析错误报告》中必须写明错误的类型、影响域、位置和原因等,需交给程序编写者并同时存档。
  
  二、动态测试
  
  完成静态测试后,还需真正地将程序运行起来完成动态测试。动态测试就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。这就需要设计系列的测试用例确保测试的完整性和有效性,在测试用例的设计上,通常会综合黑盒与白盒测试方法。
  (一)黑盒测试。黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能情况下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对程序接口和用户界面进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息并且保持外部信息(如;数据库或文件)的完整性。其具体方法有等价类划分法、边界值分析法、错误推测法、因果图法等。黑盒法着眼于程序外部结构,不考虑内部逻辑结构,只针对软件界面和软件功能进行测试,它主要用于软件验收测试。黑盒测试时,必须在所有可能的输入条件和输出条件中确定测试数据。测试情况实际上有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试,另外,还得考虑接口测试、性能测试、内存测试等。黑盒测试中不可能做到穷举测试,因此局限于功能测试是远远不够的,还要结合白盒测试方法,进行逻辑和路径测试。
  (二)白盒测试。白盒测试也称结构测试或逻辑驱动测试,也就是已知产品内部工作过程情况下,清楚最终生成软件产品的计算机程序的结构和语句,按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等,通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。白盒测试针对程序的逻辑结构设计测试用例,用逻辑覆盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。语句覆盖就是覆盖所有的语句,其他类推。另外还有一种判定条件覆盖,其实是分支覆盖与条件覆盖的组合。跟条件有关的覆盖就有三种,条件覆盖是指覆盖所有的条件表达式,不考虑计算结果:条件值覆盖是指覆盖条件的所有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合覆盖是指覆盖所有条件取值的所有可能组合。白盒测试的主要方法有逻辑驱动、基本路径测试等。白盒法是穷举路径测试,主要用于软件验证。白盒法是“基于覆盖的测试”,应朝着提高覆盖率的方向努力,尽可能多地进行测试,找出那些被忽视的错误。
  以上测试方法各有所长,每种方法都可设计出一组有用的测试用例,用这组测试用例可以比较容易地发现某种类型的错误,却不易发现另一种类型的错误,因此在实际测试中,应结合各种测试方法,形成综合策略。
其他文献
在当前的互联网生活中,广大网民已经越来越离不开一位助手——搜索引擎。通过它,我们就仿佛有了一本百科全书,可以在浩瀚的因特网海洋中找到我们所需的知识。然而,并不是所有的检索都是那么一帆风顺,人们搜索过程中找到的并不一定都是自己想要的内容,通常情况下,或多或少地夹杂着一些无关的网页,而且其中的一部分甚至排在了页面链接列表的前端,这是用户不愿意看到的。解决问题的途径就是通过Web挖掘技术。本文将重点讨论
期刊
[摘要]动态链接库技术是实现和设计程序常用的技术。分析和比较Windows和Linax两种操作系统动态技术,为对动态链接库技术的学习提供有益的借鉴。  [关键词]动态链接库共享对象技术程序移植  中图分类号:TP3 文献标识码:A 文章编号:1 671—7597(2009)1010092—01    一、引言    动态链(Dynamic Link Library abbr,DLL)技术是程序设计
期刊
一、手机银行发展现状    现在手机在中国的普及度非常高,据权威机构的统计数据表明中国的手机用户数量到2010年将达到7.38亿,这样的用户群体是很庞大的。如今手机银行在国内还没有得到广大传统银行用户的认可,虽然几家大型国有银行都分别推出了自己的手机银行业务,但是因为种种原因并没有得到很好的发展。但是手机银行在国外已经发展了很长一段时间了,技术各方面都相对比较成熟了。本文将对手机银行的架构进行深入
期刊
企业管理的基础是职责的划分,而职责的划分离不开流程,如果没有完善的流程,员工的职责就无法得到真正的落实。企业中每个员工的工作都离不开流程的指引,但是随着企业规模越来越大,运营内容越来越多,流程的数量也是迅速增加。由于企业在流程管理方面的工作往往滞后于对运营工作本身的提升,所以流程内容互相重叠,版本管理混乱,流程定位错误等问题也逐渐浮现出来。具体应该用哪条流程,正确的流程到哪里才能找到,已经成为员工
期刊
一、引言    swing的主要优势在于MVC体系结构的普遍使用,在一个MVC用户界面中,存三个通讯对象:模型、视图和控件。模型是指定的逻辑表示法,视图是模型的可视化表示法,而控件则指定了如何处理用户输入。当模型发生改变时,它会通知所有依赖它的视图,视图使用控件指定其相应机制。
期刊
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)1010105-01    万维网(World Wide Web)已经改变我们的生活方式,它不仅仅是一个超大的分布式应用它更是一个用于分布式计算的平台。Web服务、mashup(注1)及Aj锨应用都把web作为平台使用,而如今的Web服务却忽视了Web赖以成功的重要性——简单。本文通过用REST思想对已有的Web服务进行重
期刊
[摘要]lucene是一个开源的搜索引擎工具包,提供高效的API来给文本创建索引,同时也给出方便的接口来进行扩展。Ajax是一种新的Web开发技术,具有良好的可扩展性、可移植性和组件的可复用性,在交互多、频繁读数据的Web中有很好的应用。将Lucene和Ajax结合起来,探讨基于Lucene的搜索引擎在Ajax中的应用。  [关键词]lucene Ajax 搜索引擎
期刊
[摘要]一般抹灰工程是保护建筑物的主体结构、完善建筑物的使用功能以及美化建筑物,采用一定的材料及饰物对建筑物的内外表面及空间进行的各种处理过程,着重介绍一般抹灰工程在投入与转换的过程中容易出现的各种质量缺陷并加以分析,从而避免施工中出现类似的质量问题。  [关键词]一般抹灰 质量缺陷 事故分析  中图分类号:TU19 文献标识码:A 文章编号:1 671-7597(2009)1010116-01 
期刊
[摘要]裂缝是混凝土结构中普遍存在的一种现象,它的出现会降低建筑物的抗渗能力,影响建筑物的使用功能。从混凝土裂缝原因、如何防治等方面谈谈看法,以供广大同仁商榷。  [关键词]混凝土 楼屋面 裂缝 分析 防治方法  中图分类号:TU4 文献标识码:A 文章编号:1 671-7597(2009)1010115-01    一、前言    普通钢筋混凝土结构在使用过程中,出现细微的裂缝是正常的、允许的(
期刊
电子商务下零售业的最终目标是通过信息在供应商、零售企业和顾客之间无缝、迅速流动,从而实现对三方资金流和物流的高效管理,降低运营成本,提高企业效益,给消费者带来更多实惠,同时使企业竞争力得到增强。
期刊