软件测试方法浅析

来源 :科学时代·综合版 | 被引量 : 0次 | 上传用户:iamup
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】本文就软件开发与软件测试的关系、软件测试策略、软件测试分类、软件测试的主要方法进行一定介绍和分析。
  【关键词】软件测试;测试策略;测试分类;测试方法
  
  The main method on the software development and software which the software test method brief analysis
  Ma Jianqiang
  【Abstract】This article which tests the relations,the software test strategy,the software test classification,software tests to carry on the certain introduction and the analysis.
  【Key words】Software test;Test strategy;Test classification;Test method
  【中图分类号】TP311
  【文献标识码】B
  【文章编号】1005-250X(2007)11-0087-03
  
  一个好的软件系统,至少应该具备以下基本的素质,即:完整、规范的功能,无瑕疵,高性能,高可靠,抗疲劳,恢复性,移植性。软件测试,正是为测试软件系统的各种素质而提出的。完善的软件测试策略,可以节省 40%的开发费用和 60%的软件系统维护费用。在航天、航空、军事、通信、工业控制及民用产品等各个领域,软件测试都发挥着越来越重要的作用。本文分别对软件开发与软件测试的关系、软件测试的分类、软件测试的主要方法等问题进行广泛而深入的介绍。
  
  1 软件开发与软件测试
  
  自从发明了计算机,软件开发和软件测试就同时出现了。传统的软件测试策略,往往将软件测试定位在软件开发的最后阶段,即遵循所谓的瀑布模型,直接反映了对软件测试的重视程度不够,如图 1(A)所示。其缺点是显而易见的,尤其对出现了面向对象和多线程设计方法的今天,更显得力不从心。现代的软件测试策略,则采用双V模型,如图 1(B)所示,体现了软件测试的重要地位,它贯穿了软件开发的全过程。
  在双V模型中,首先制定出测试目的,是为了证明软件系统能正常工作,还是为了发现问题;是为了测试系统的质量,还是为了控制软件系统的质量。其次是确定测试对象和测试范围,测试对象可以是整个系统、子系统、模块、单元,也可以是某个变量、类、成员函数等;而测试范围包括功能测试、性能测试、可靠性测试、疲劳测试、移植性测试、恢复性测试等。再次是对测试环境和测试方法的选择和描述,最后对测试结构进行记录和分析,并对测试过程做全面的跟踪和管理。由此可见,软件测试不仅是现代软件工程中重要的一环,其本身就是一个系统工程。
  


  (A)      (B)
  图1 软件开发与软件测试模型
  
  2 软件测试的分类
  
  软件测试的宗旨,就是要全覆盖地实现测试目的,即:正向测试和负向测试。所谓正向测试,是指测试软件系统做了它应该做的事情;而负向测试,则是测试系统没有做它不该做的事情。
  按测试目的分类,可以分为:证明软件系统能正常工作,即演示功能;发现软件系统的问题,即检错功能;测试系统的质量,即预测功能;控制软件系统的质量,即预防功能;集成了预防、检错、预测及演示等功能,并具有自动化和智能化的特性。
  按测试功能分类,又可分为:功能测试;性能测试;可靠性测试;疲劳测试;移植性测试;恢复性测试;需求分析测试;安全测试;商用测试;资源测试;敏感性测试等。
  按测试应用分类,可分为:嵌入式实时系统;面向对象系统;通信协议系统;客户/服务器系统;JAVA系统;WEB系统等。
  按测试状态分类,又可分为:静态测试和动态测试。
  
  3 软件测试的主要方法
  
  3.1 静态测试与动态测试:静态测试,主要是针对所有文档资料、编程规范、数据定义、控制和数据使用、代码与需求的一致性、代码与设计的一致性等方面的分析,其对测试经验和测试计划的依赖性极强。静态测试是在不需运行软件系统的情况下,对系统进行的测试。
  动态测试是被测系统在运行当中,根据其动态的行为进行的测试。根据测试规模,可分为:单元测试、集成测试、系统测试及应用测试等几个阶段。
  3.2 黑盒测试和白盒测试:所谓黑盒测试,就是将被测对象看作一个黑盒,不需了解其内部结构,只需根据定义的功能规范、输入参数、输出结果等,对被测对象进行的动态测试。黑盒测试的这一特点,决定了它无法或很难实现对被测对象的全覆盖测试。
  白盒测试,就是根据对被测对象内部结构的了解,进行全覆盖式的测试。由于这一特性,使得白盒测试的方法呈现出多样化、局部化的特点。
  3.3 集成测试和系统测试:由多模块构成的集成测试和系统测试,是在单个模块测试通过后进行的。其测试方法主要包括:自下而上法;由上至下法;隔离测试法。
  三种测试方法各有利弊,组合式测试又成为常用的测试手段。与路径覆盖类似,系统的完全覆盖测试也依赖于其路径覆盖的复杂度。理论上,系统测试复杂度是所有模块复杂度的总和,即:v(S) =∑v(Gi)。但实际应用时,往往先对各模块流程图进行简化,得到新的复杂度iv(G);然后,计算出简化后的系统测试复杂度,即:iv(S) =∑iv(Gi) -N + 1,其中N是模块的数量。
  3.4 针对面向对象语言的测试:由于面向对象设计方法的特性,如:封装、继承、多型、重载等,对软件测试提出了新的要求,这些分别体现在单元/模块测试和集成/系统测试等方面。
  软件测试是一个贯穿软件开发全过程的系统工程,是对测试经验和软件规范化设计有密切关系的工程。如何用较少的测试案例,实现最大的测试覆盖、最大限度地发现软件瑕疵,是软件测试的目标之一;制定完善的测试计划、测试方案、结果分析、文档资料管理,是保证软件测试功效的前提。
  
  参考文献
  [1] 朱鸿、金凌.软件质量保障与测试 [M ].北京:科学出版社,1997
  [2] 陈意云.形式语义学基础[M].合肥:中国科学技术大学出版社,1994
  [3] FewsterM,GranamD.软件测试自动化技术与实例详解[M].舒智勇,等译.北京:电子工业出版社,2000
  [4] DustinE,RashkaJ,PaulJ.软件自动化测试:引入、管理与实施[M].于秀山,胡兢玉,等译.北京:电子工业出版社,2003
  收稿日期:2007-11-10
其他文献
【摘要】逻辑思维能力作为数学的六大核心素养之一,对学生对数学的学习有着非常重要的作用.它不仅可以帮助学生形成良好的学习习惯,还能提高学生的自主学习能力,对培养学生良好的数学素养有非常重要的作用.那么作为一名高中数学教师,我们应如何在高中的数学教学中有效地提高学生的逻辑思维能力呢?本文中我将从创设情境、习题教学和展开分类讨论这三方面来谈提高学生数学逻辑思维的方法.  【关键词】高中数学;逻辑思维;情
【正】 众所周知,美国是汽车生产、消费王国,这里拥有世界上最大的汽车生产厂商,其汽车制造的霸主地位数十年无人问鼎。然而,战后各国经济突飞猛进的发展,一批不起眼的工业国
准妈妈提问:胎动意味着什么呢?是不是宝宝的小手小脚已发育完全的表示?胎动的不同是否传达宝宝的讯号也不同呢?
【正】膀胱癌是泌尿系统最常见的肿瘤,治疗以手术为主,目前首选经尿道膀胱肿瘤电切术。电切术具有创伤小,术后恢复快,而且没有开放手术腹壁种植的危险等优点,尤其适用于肿瘤
当前,中国国有企业改革不应该是以管理为导向的治理微调式改革,而应该是探求公司治理的深层次制度层面问题,来寻求国有企业成功发展之路。本文解析公司治理上存在的诸多问题,
面向21世纪的基础教育课程改革把促进学生发展作为基本出发点即所谓“以学生的发展为本”。其实质就是以育人为本,其内涵与素质教育并无二致。“以学生发展为本”不但体现在课程的整体构思上,还体现在课程目标,课程结构,课程内容选择教材具体内容编写,教学手段、教学评价和配套措施等方面,体现在整个课程体系。    1 外理好学生与教师的关系    在课程实施中,要始终坚持把学生的发展作为课程教学的着眼点和目标,
乙肝,一个沉重的话题。在对乙肝患者的采访过程中,很多人告诉记者,因为身患乙肝,在学习、工作和生活中他们均受到不同程度的歧视。在病魔面前,命运显得如此无情与不公。治愈乙肝,重
期刊
当下,我国成人教育已进入快速发展阶段,无论是办学规模或是办学效益已处于国际领先地位。成人教育发展的历史经验表明,目前我国成人教育推行重构性变革的条件业已成熟,总体上
帐簿奇异分析可从帐面奇异金额、时间、地点、帐户对应关系、购销单位、逻辑混乱等方面入手.