(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf_第1页
(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf_第2页
(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf_第3页
(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf_第4页
(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(通信与信息系统专业论文)设计模式在列控中心软件测试平台中的应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 软件重用是解决当前软件危机的重要方法,而设计模式又在软件设计重用 中占有重要的地位,它能够有效提高软件设计的效率和质量。可是,当我们进 行软件设计时,众多的设计模式又常常使我们无所适从,这就需要我们以一种 有效的方式将众多的设计模式组织起来,以便于设计人员能够快速地应用恰当 的模式和模式组合。 软件测试技术的自动化是软件测试的发展趋势,它能完成许多手工测试无 法实现或难以实现的测试。正确、合理地实施自动化测试,能够快速、彻底地 对软件进行测试,从而提高软件质量,节省经费,缩短产品发布周期。对列控中心 测试平台中站场c a d 建模及数据生成子系统的研究及开发就是在这样的背景下 展开的。 本文研究的内容围绕两个部分:列控中心测试平台的软件架构及设计模式 在站场c a d 建模及数据生成子系统中的应用及实现。全文介绍了设计模式、c a d 技术的概念、列车控制系统的发展现状、软件测试理论等基本内容。在此基础 上,结合实际课题任务,提出了适用于列控中心测试平台的设计模式,详细论 述了站场c a d 建模及数据生成子系统中设计模式的应用及实现。 关键词:c a d ,软件测试,设计模式,列控中心 a b s t r a c t n o w a d a y s ,s o f t w a r er e u s ei st h ep r e v a i l i n gs o l u t i o nf o r t h es o f t w a r e c r i s i s a n d t h ed e s i g np a t t e r n ,w h i c hc a ni m p r o v et h ee f f i c i e n c ya n dq u a l i t yo f s o f t w a r ed e s i g n e f f e c t i v e l y ,p l a y sa ni m p o r t a n tr o l ei nt h er e u s eo fs o f t w a r ed e s i g n h o w e v e r , w h e n w eb e g i nt op e r f o r ms o f t w a r ed e s i g nt a s k s ,w ew i l lb ec o n f r o n t e dw i t hav a r i e t yo f d e s i 匦p a t t e r n s ,l e a d i n gt ot h ed i l e m m at h a tw ec a n n o tc h o o s ea v a i l a b l eo n e 锄o n g t h 锄a sar e s u l t ,i tr e q u i r e su st oi n t e g r a t et h e s ed e s i g np a t t e r n si naw i e l d yw a y , w h i c hc a i lh e l pt of a c i l i t a t et h ea p p l i c a t i o no fa p p r o p r i a t ep a t t e r n sa n d t h ei n t e g r a t i o n o ft h e s ep a t t e r n s 1 1 1 ea u t o m a t i o ni st h et r e n do fs o f t w a r et e s t i n g ,w h i c hc a l lf u l f i l la l o to ft h ej o b w m c hi sh a r df o rm a n u a lt e s t i n gt of i n i s h i m p l e m e n t i n ga u t o m a t i o no fs o f t w a r e t e s t i n gc 0 r r e c t l ya n dp r o p e r l yc a n t e s tt h es o f t w a r eq u i c k l ya n dt h o r o u g h l y , s ot h a ti t c a i lh e l pt oi m p r o v et h es o f t w a r eq u a l i t y ,s a v et h eb u d g e t ,s h o r t e nt h ep r o d u c t i o n r e l e a s ec y c l e t h er e s e a r c ho ft h ec a d a n dd a t ag e n e r a t i n gs u b s y s t e mo ft h e t r a i n c o n t r o lc e n t e rt e s t i n gp l a t f o r mw a s b a s e do ns u c ha l le n v i r o n m e n t 删1 em a i nt o p i co ft h i sp a p e ri st or e s e a r c ht h ea r c h i t e c t u r eo f t h et r a i nc o n t r o l c a l t e rt e s t i i l gp l a t f o r ma n dt h ea p p l i c a t i o no fd e s i g np a t t e r ni nt h ec a d a n dd a t a g e n e m ! t i n gs u b s y s t e m t h ec o n c e p to fd e s i g np a t t e r n s ,c a dt e c h n o l o g y , d e v e l o p m e n t o ft r 血c o n 仃o lc e n t e rs y s t e m ,s o f t w a r et e s t i n ga r ei n t r o d u c e di nt h i sp a p e r a f t e rt h a t , i tw i l li n t r o d u c et h ed e s i g np a t t e r n sa c c o r d i n g t ot h er e s e a r c ht a s k ,w h i c hi ss u i t a b l e f o rt h e 仃a i nc o n t r 0 1c e n t e rt e s t i n gp l a t f o r m ,a n dd e t m lt h ea p p l i c a t i o n i nt h ec a da n d d a t ag e n e r a t i n gs u b s y s t e m k e yw o r d s :c a d ,s o f t w a r et e s t d e s i g np a t t e r n ,t r a i nc o n t r o lc e n t e r i i 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:彳泵劭 枷年多月序日 , 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 年月 日年月 日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名:彳容耙 罗年;月”日 第1 章绪论 1 1 研究背景 第1 章绪论 当今,我国铁路建设发展迅猛,为了进一步适应其跨越式发展需要,铁道 部制定了中国列车控制系统( c t c s ) 技术规范总则( 暂行) 和相应c t c s 技术条 件。这些规定和技术可以保证铁路运输安全以及运营互通的需求。c t c s 是参照 欧洲列车控制系统( e t c s ) 制定的我国现代铁路列车控制系统。根据规定,c t c s 系统应当包括地面设备和车载设备,其系统配置按功能划分为5 级。 随着第六次铁路大提速,列车运行时速将达到2 0 0 公里,该速度在国际铁 路联盟定义中已经属于高速范围,传统的以地面信号为主体信号的信号系统已 不能满足运输要求和保证行车安全,必须采用列车超速防护系统。列控中心是 c t c s 的地面设备之一,是为了满足我国铁路既有线2 0 0 公里d , 时提速区段临时 限速的需要而研制的列控核心安全设备。车站列控中心设备安装在车站,采用 2 x 2 取2 安全冗余结构,接收车站计算机联锁、t d c s c t c 系统信息,根据调度 命令、进路状态、线路参数等产生进路及临时限速等相关控车信息,通过l e u 控制的有源应答器及轨道电路传送给列车,进行进路通告和临时限速设置。 因而,作为实现第六次提速的关键信号设备,车站列控中心系统依据调度 指挥系统下达的临时限速命令和联锁系统当前的进路状态实时计算,选择预先 编码生成并存储于列控中心系统中的应答器报文数据,控制有源应答器向列车 动态传送,从而实现对列车运行的动态控制。因此,车站列控中心系统被定义 为s i l - 4 级安全设备,与计算机联锁系统具有相同的故障一安全等级要求,在任 何情况下均不能导致危险输出。 而根据铁道部颁布的铁路运输安全设备生产企业认定方法,车站列控中 心设备必须进行认定测试。为此,依据既有线2 0 0 k m h 车站列控中心运用技 术原则( 暂行) 中关于车站列控中心功能和功能仿真测试端口的要求,开发” 既有线2 0 0 k m h 车站列控中心软件测试平台”,并采取与计算机联锁制式测试相 类似的方法,设计应答器报文和功能覆盖率较高的虚拟车站和线路,对车站列 控中心进行较为完整的制式测试是认定测试的可行方法。 第1 章绪论 1 2 设计模式研究概况 设计模式在近些年来正逐渐成为软件工程届的一个热点研究领域。我国则 是从1 9 9 6 年开始对这个领域开始研究的,关于设计模式的研究大致可以分为以 下几个阶段: 第一阶段为九十年代初,随着设计模式一书的发布,国外软件工程界 对这一领域表现出极大热情,使其逐渐成为了热门的研究课题。随后软件工程 界逐渐抽象出了更多的设计模式范例供设计开发使用,并尝试对其进行分类、 编目。主要研究成果有程序设计模式语言年会论文集p l o p ( p a t t e r nl a n g u a g e s o fp r o g r a m m i n g ) 。 第二阶段则为随后开始的设计模式逆向工程,即从已有的代码框架中抽取 设计模式。如基于图的设计模式发现方法乜1 ;变体模式的设计模式发现方法口钔 等。随着软件体系架构的不断扩大,软件的相关文档越来越难以保持完整。因 此迫切需要一种更为科学的方法来帮助研发人员扩展和维护现有的软件体系架 构。而设计模式逆向工程则可以在文档不完整的情况下帮助设计工程师从已有 代码中抽取出设计模式,从而可以更好的维护和扩展现有的软件体系架构。 然而目前设计模式的研究仍然不够成熟,有很多地方有待进一步完善。例 如设计模式的识别仍然比较困难;对其的定义仍然没有形式化,致使有些时候 含义比较模糊,存在二义性;没有有效的可参照的检验机制来验证设计人员的 使用是否得当;同时也缺少有效的范例指导设计人员应用。 因此当前设计模式热点研究方向有如下几个方面: 1 设计模式的识别。通过各种模式挖掘方法对已有的软件进行模式抽取。 如基于图的设计模式发现方法,变体模式的设计模式发现方法等。由于模式本 身的抽象性,其抽取准确性及有效性仍有待进一步提高,目前还处于理论研究 阶段,还无法真正实际应用。 2 模式的组织、索引。当前设计模式的保存仍然是非常分散的方式,各种 设计模式散落在不同的文献和书籍中。面对新的设计模式的不断涌现,需要统 一的组织和索引来予以有效维护。 3 形式化描述。设计模式的描述方法包括自然语言描述法、统一标记语言 ( u m l ) 描述法、形式化语言描述法畸1 。自然语言描述法具有简单、方便的特点, 但在现实与设计之间的过渡不够流畅。对象建模技术( o m t ) 描述法是利用类图和 第1 章绪论 对象图对设计模式中的类、实例以及整体模式结构进行图形描述的方法,随后 在o m t 的基础上,发展起来了u m l ,其描述更为清晰统一,符合大部分软件设计 者的习惯,也更容易为设计人员所理解应用。 4 设计模式的模板。通过科学的设计和组合,将设计模式运用到一类特定 的软件系统中形成模板,供软件工程参考。目前已有的设计模式的研究成果大 多为通信软件领域,网站建设领域,企业业务系统领域,在软件自动化测试领 域的成果还不多见。 而软件系统自动测试平台的开发是一项较为复杂的工程,其软件架构的设 计不仅要求合理,还要有足够的可靠性和复用性,而这就必须依靠设计模式的 思想来予以保障。本文的研究重点就是研究设计模式在软件自动化测试领域系 统体系设计中的具体应用,使其成为测试平台的模板。 1 3 软件测试的发展和待解决的问题 传统的手工测试过程通常非常单调繁琐,极易出错,是劳动密集型的。它无 法支持那些可能由自动测试工具完成的相同种类的质量检查。因此为了达到测 试的有效性、可重复性,必须引入自动化测试。而自动化的程度一般取决于以 下因素:如测试目标、预算、软件过程、开发的应用类型以及目标环境等。 因而在软件测试过程中引入自动化测试是软件测试的发展趋势,它能完成 许多手t n 试无法实现或难以实现的测试。合理正确地实施自动化测试,能够快 速反复地对软件进行测试,从而大大提高软件质量,节省开发费用,缩短软件的 开发周期。 近些年来,随着软件技术的飞速发展,软件测试技术研究也取得了很大的 突破。其成果有著名的v 模型、w 模型等,在测试过程改进方面也提出了t m m ( t e s t i n gm a t u r i t ym o d e l ) 的概念,在单元测试、自动化测试、负载压力测 试以及测试管理等方面涌现了大量优秀的软件测试工具。 本文研究的重点就是如何将设计模式运用于列控中心自动测试平台的系统 设计开发中。设计模式是进行系统设计的有利武器。但是一个实际的系统设计 并不是对设计模式的简单叠加。在实际的系统设计中,往往需要考虑多种因素 的相互制约,达到整体的最优化。而这些因素和目标往往不是相互独立的,当 用某种设计模式提高系统可维护性时,可能却会影响到系统的其他方面。因此 3 第1 章绪论 在列控中心测试平台系统设计中,需要灵活的运用设计模式,最终提出一种适 合于列控中心测试平台的系统软件架构。 1 4 论文主要工作 在列控中心测试平台系统中,站场c a d 拼贴及站场基本数据生成是整个平 台运行的基础。站场c a d 拼图模块负责构建站场图,并持有图元信息,可以为 列控中心自动测试及仿真显示提供服务。数据生成模块提供测试的基础数据, 并将站场相关的数据与站场图元相绑定。仿真显示则为测试提供实时显示,显 示站场状态及测试进度等。 论文主要内容包括以下几个方面: 1 介绍软件测试和软件工程的理论。( 第二章) 2 介绍设计模式的概念及设计模式在列控中心测试平台开发中的意义。( 第 三章) 3 介绍了列控中心测试平台的系统架构设计。( 第四章) 4 详细介绍了列控中心测试平台中站场c a d 拼图模块、数据生成模块,仿 真显示模块的分析和设计,运用设计模式设计软件系统架构及接口,最终结合 面向对象技术及面向对象编程开发实现。( 第五章) 5 对文中的研究和开发工作进行总结,并对下一步研究工作做出展望。( 第 六章) 4 第2 章软件测试和软件工程 2 1 软件工程 第2 章软件测试和软件工程 在当今社会中,软件运用于我们生活工作的方方面面。典型的软件如电子 邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏 等。同时,在各个行业中几乎会都有计算机软件的应用,比如工业,农业,银 行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作 更加高效,同时提高了生活质量。 软件工程( s o f t w a r ee n g i n e e r i n g ) 是一门研究用工程化方法构建和维护有 效的、实用的和高质量的软件的学科。 2 1 1 软件工程概述 软件工程是借鉴了传统工程的原则和方法,以求高效地开发高质量软件。 其中应用了计算机科学、数学和管理科学。计算机科学和数学用于构造模型与 算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用 于计划、资源、质量和成本的管理。从软件项目需求定义开始到它退役的整个 生命周期中,通常用著名的瀑布模型来加以描述。图2 1 是带反馈的瀑布模型。 软件生存周期的8 个阶段的主要任务是: 第2 章软f i , :测试和软件j 鼙 图2 1 带反馈的爆布模型 1 问题定义:确立问题性质、工程目标和规模。确定软件开发的总目标:给 出软件的功能、性能、可靠性以及接口等方面的设想。 2 可行性研究:研究完成该项软件任务的可行性,探讨解决问题的方案:对 可供开发使用的资源( 如计算机硬、软件、人力等) 、成本、可取得的效益和开 发的进度作出估计,制定完成开发任务的实施计划 3 需求分析:对开发的软件进行详细的定义,由软件人员和用户共同讨论 决定需要满足哪些需求,并且给予确切的描述;写出软件需求规格说明书,以 及用户手册,提交管理机构审查。 4 总体设计:设计是软件工程的技术核心。在设计阶段应把已确定的各项 需求转换成相应的体系结构,在结构中是功能明确的模块。每个模块都应体现 相应的需求。 5 详细设计:对每个模块要完成的工作进行具休的描述,以便为程序编写 打下基础。上述两步设计工作均应写出设计说明书,供后继工作使用并提交审 查。 6 编码和单元测试:把软件设计转换成计算机可以接受的代码,即选取一 种适当的程序设计语言,写出可以运行的程序,并予以测试。 第2 章软件测试和软件t 程 7 综合测试:即通过各种类型的测试手段使软件的质量达到预定的要求。 最基本的测试是集成测试和验收测试: 集成测试,将已测试的模块组装起来进行检验。 验收测试,按照需求规格说明书地规定,由用户( 或在用户的参加下) 对目 标系统进行验收。 8 软件运行维护:已交付用户的软件投入使用后便进入运行维护阶段。该 阶段可能持续若干年,甚至几十年。在运行中可能有多种原因需要对它进行维 护。其原因包括:运行中发现了软件中有错误,需要修正:为了适应变化了的软 件工作环境,需要作相应的变更:为进一步增强软件的功能,提高它的性能,需 要进一步完善和扩充。 可以将以上8 个阶段分为3 个时期,即软件定义时期、软件开发时期和软 件运行维护时期。在实际开发中,为了确保软件的质量,每一阶段完成后都要 进行反馈检查。如果检查没有通过,则必须返回进行修正,并且修改后还要再 经过审查。审查的一条主要标准就是每个阶段都应该交出该阶段必须的交付件, 从而保证最终可以提供一个可供交付使用,满足需求的软件产品。 在生命周期的每一个阶段,应该采用适合该阶段任务的特点的系统化的技 术,即结构分析或结构设计技术。这种技术主要解决每个阶段的关键问题和结 束标准。 w i l l i a mp e r r y 将软件开发过程总结为四个阶段,即p d c a 。p l a n 为计划阶 段。d o 为执行阶段。c h e c k 为结果检查。a c t i o n 则为对检查结果所作的修改阶 段,这几个阶段两两之间存在交互。p d c a 四个阶段流程如图2 2 。其中p 、d 、a 是由开发者实施的,c 是由测试者实施的,即由测试者来检查软件是否满足用户 需求,同时提交软件缺陷报告。在这种描述方法中,测试作为一个独立的实施 阶段,其目的在于查找软件中存在的缺陷,包括与需求说明不符或相违背的属 性。 7 第2 章软件测试和软件。i :程 2 2 软件测试 图2 2p d c a 阶段 据统计,随着软件、硬件技术的飞速发展,计算机的应用领域越来越广, 而其中软件的功能也越来越强大,软件也越来越复杂。这就使得保证软件质量, 保证软件的高度可靠性安全性,面临严峻的挑战。特别是在诸如军事、航空航 天、通讯、交通医疗等行业,软件的微小瑕疵就可能造成对生命安全、甚至对 国家安全产生严重的威胁。 尤其在大型软件系统的开发过程中,往往有开发周期长,技术复杂度高的特 点,人对于系统的认识也无法完全客观正确,开发团队成员之间的沟通协作也不 可能天衣无缝。因而在软件生命周期的各个阶段中都会伴随着错误发生。 通常在软件开发的生命周期中会进行代码审查。近年来,有的开发团队甚 至采用结队编程,即由2 名开发人员同时在一台计算机上开发,以期互为检查 以降低错误发生的机率,然而经验表明错误依然不可避免。 软件产生错误的原因很多,通常由以下因素造成: 1 ) 交流不够、交流上有误解或者根本不进行交流; 2 ) 软件复杂性 3 ) 程序设计错误 4 ) 需求变化 5 ) 时间压力 6 ) 代码文档贫乏 7 ) 软件开发工具 经验表明,如果在软件投入运行之前,没有发现并纠正软件中的关键错误, 则这些错误会在实际运行环境中暴露,从而带来巨大的经济损失和高昂的代价, 甚至产生难以预料的灾难性的后果,如航天器的失事等。而测试的目的就在于尽 可能地降低和修正软件中的缺陷,提供高质量的产品。因此测试是保证软件质量 的行之有效的手段,是对软件规格说明、设计和编码的最后复审睛1 。 2 2 1 软件测试的意义 e w d i j i k s t r a 在1 9 7 2 年给软件测试做的经典总结是:“程序测试只能表明 第2 章软件测试和软件工程 错误的存在,但不能表明错误不存在”。因此测试的目标是为了发现错误,而不 是为了验证程序可以j 下确运行而去做测试。 尽管软件测试无法证明错误不存在,有效的测试依然能够极大的提高和保 障软件产品的可靠性和安全性。因此在软件开发的生命周期中测试将继续保持 其不可替代的角色。应当在一开始就假定软件中隐藏着错误,然后测试软件, 从而尽可能多的发现错误。理解软件测试的意义会对软件测试产生极大的影响, 提高软件测试的质量,从而更成功的进行软件测试。 当然软件测试也并不是质量保证的一切要素。保证和提高软件质量可以从 两方面来予以实现:第一,高质量的开发,应尽量在开发期问减少错误,通过 软件工程来确保软件的高质量;第二,应通过科学的分析和有效的测试来发现 和修复软件产品中隐藏着的错误。 2 2 2 软件测试的策略 如今,随着软件测试技术的不断变化发展,有越来越多的测试手段和策略 可以在测试活动中应用。但是每一种测试策略都有其不同的侧重点,适用于解 决特定的测试目的。为了检验开发的软件能否符合需求规格说明书的要求,测 试活动可以组合采用各种不同的策略,从而合理结合各种测试策略的优势来确 保高质量的软件产品被交付。 目前软件测试的常用测试策略有:静态测试与动态测试;黑箱测试方法与白 箱测试方法;随机测试与穷举测试;自顶向下测试与自底向上测试;累进测试 与非累进测试等等。基于测试平台的应用背景,本节将着重介绍黑箱测试与白 箱测试的相关理论吟1 。 黑箱测试是一种十分重要的测试策略,又被称为输入输出测试或数据驱动 测试。使用这种测试时对程序内部完全不了解,因而这种策略常常用于对内部 信息完全不明确系统的测试,其重点在于将软件放于不按其规范正确运行的环 境条件。 白箱测试是另一种十分重要的测试策略,也被称为结构测试或逻辑驱动测 试。指对信息完全明确系统的测试,例如提供数据结构、源程序清单、数据字典 和有关的接口信息的系统。白箱测试法全面了解程序内部逻辑结构、对所有逻 辑路径进行测试。白箱测试法也是穷举路径测试。在使用这一方案时,测试者 9 第2 章软件测试和软件j :程 必须检查程序的内部结构,从检查程序的逻辑入手,得出测试结果数据。程序 里的独立路径数可能是一个异常庞大的数字。但即使每条路径都覆盖了,软件 案中依然可能存在错误。这是由于:第一,穷举路径测试决不能查出程序违反 了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程 序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的 错误。 黑箱测试是以用户的观点,从输入数据与输出数据的对应关系出发进行测 试的。如果外部特性的描述本身存在问题或需求规格说明有误,用黑箱测试方 法当然是不能发现的。白箱测试则与之相反,它只根据程序的内部结构进行测 试,而不考虑外部特性。如果软件结构本身有问题,比如流程逻辑有错误,或 是有遗漏,那也是难以发现的。由于每种测试策略的局限性,在实际测试中我 们需要根据实际情况,结合不同的测试策略来最终确保产品的高质量。 2 2 3 软件测试的步骤 在软件开发的生命周期不同阶段对于测试的侧重点也有不同,因此需要在 每一阶段采用不同的测试方式。通常大型软件系统的测试步骤包含以下几个步 骤: i 单元测试( u n i tt e s t ) 也称作模块级测试。由编程的开发人员自行计划与完成的,针对单个或相 关联的一组程序单元的测试。单元测试的目的是将模块的功能与定义模块的功 能规格说明或接口规格说明进行比较。 单元测试的任务包括: 1 ) 模块接口测试 2 ) 模块局部数据结构测试 3 ) 模块边界条件测试 4 ) 模块中所有独立执行通路测试 5 ) 模块的各条错误处理通路测试。 2 集成测试( i n t e g r a t i o nt e s t ) 计划于设计阶段,由开发人员与测试人员合作完成的,针对结合起来的不 同单元以及它们的接口的测试。 1 0 第2 章软件测试和软件j 程 通常集成测试又可分为两类,一类是自项向下集成,另一类则是自底向上 集成。自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检 验,从而可以较早地发现错误。缺点在于测试较高层模块时,低层处理采用桩 模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试 并不充分。自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺 点是程序最后一个模块加入时才具有整体形象。它与自顶向下集成测试方法优 缺点正好相反。 3 系统测试( s y s t e mt e s t ) 测试整个系统,以证实它满足要求所规定的功能、质量和性能等方面的特 性。 通常包含以下几类测试: 1 ) 恢复测试,主要检查系统的容错能力。 2 ) 安全测试,检查系统对非法侵入的防范能力。 3 ) 强度测试,检查程序对异常情况的抵抗能力。 4 ) 性能测试,对于实时和嵌入式系统,软件部分即使满足功能要求,也未 必能够满足性能要求,只有当系统真正集成之后,在真实环境中才能全面、可 靠地测试。 4 回归测试( r e g r e s s i o nt e s t ) n 们n 盯 用于验证改变了的系统或其组件仍然保持应有的特性。回归测试作为软件 生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软 件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本 的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天 都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试 的效率和有效性是非常有意义的。 5 验收测试( a c c e p t a n c et e s t ) 也称用户接受度测试。测试整个系统,以保证其达到可以交付使用的状态。 将程序与最初的需求及用户当前的需求进行比较的过程。通常由客户或用户来 执行,需要将程序的实际操作与原始合同进行对照。 2 2 4 安全软件的可靠性与安全性研究 第2 章软f l :测试和软件 j 程 安全软件作为一种涉及生命财产安危的软件,其质量的高要求是毋庸质疑 的。但是对安全软件质量的认识上存在一些模糊的概念,如往往把软件的可靠 性等同于软件的安全性。虽然在软件可靠性与安全性设计中,有许多方法与基 本要求是一样的,但两者的目标侧重点还是有所不同的。为了正确理解可靠性 与安全性的区别,我们首先从数学定义的角度对比两者定量测度之间加以区别。 可靠性的定量测度为可靠度,其定义如下: 定义2 1 可靠度:设在时刻t 0 系统萨常运行,则系统在整个时间区间 t 0 ,t 1 内正常运行的条件概率称为系统在时刻t 的可靠度,记为r ( t ) 。 安全性的定量测度为安全度,其定义如下: 定义2 2 安全度:设在时刻t o 系统正常运行,则系统在时刻t 的安全度s ( t ) 是指系统在整个时间区间 t 0 ,t 1 内正常运行的条件概率加上系统在时刻t 处于 失效安全状态的条件概率。 仅从数学定义的角度看,可靠度与安全度是不同的。定义2 2 中安全度是 两个条件概率之和,其中第一个条件概率就是可靠度。因此,一个可靠度高的 系统,其安全度也必然高;但反之,一个安全度高的系统,其可靠度未必一定 很高。一个运行可靠的系统可以被认定为是一个安全系统,但在系统设计过程 中,对于铁路信号这样一种效率和安全两方面均要顾及的系统来说,仅仅注重 软件的可靠性还是不够的。铁路控制系统安全软件有一个十分重要的特点是故 障一安全,即系统在预定( 功能) 意图未能实现的情况下,要求系统维持在安全状 态,或向安全状态转移的原则,即故障后自动导向安全的原则。严格地说,不 具备故障一安全特性的软件便不是合格的铁路控制安全软件。 事实上,软件本身存在着一个可靠性指标,即软件在给定输入后得到预期 结果的能力。而对软件的安全性,则必须统观整个系统,注意软件在各种运行 环境包括特殊环境中产生的响应。可靠性是面向系统目标、预期功能( 即按需求 规格说明提供的服务) ,以及系统所希望执行的规定任务而言的。 可靠性研究是系统服务的连续保证能力。安全性研究的是如何制作一个不 会引发事故的系统,要求确保系统不会进入危险或不安全的状态,而在该状态 中,就具有较大的概率防止:危及安全的能力。 2 2 5 软件失效机理 1 2 第2 章软件测试和软件工程 软件有着较为复杂的内部逻辑,运行环境经常变化,因而软件失效机理就 可能存在多种表现形式。软件的失效机理可以形象地描述为:人为错误( h u m a n e r r o r ) 软件缺陷( s o f t w a r ed e f e c t ) 软件故障( s o f t w a r ef a u l t ) 。软件失效 ( s o f t w a r ef a i l u r e ) ,如图2 4 所示。 人为错误是指在软件生存期内出现的不期望或不可接受的人为差错,其结 果会导致产生软件缺陷。人为错误是人们在软件开发活动中难以完全避免的一 种行为过失。 软件缺陷是存在于软件中的、不期望的或不可接受的偏差,其结果是当软 件运行于某一特定条件时将出现软件故障( 即,软件缺陷被激活) 。软件缺陷以 一种静态的形式存在于软件的内部,是软件开发过程中人为错误的结果。 软件故障是指在软件运行过程中出现的一种不期望的或不可接受的内部状 态,此时若无适当措施加以处理( 例如,容错) 就会产生软件失效。软件故障是 一种动态行为,是软件缺陷被激活后的表现形式。 软件失效是指软件对要求行为的偏离,是软件运行时产生的一种不期望的 或不可接受的外部行为结果。 在某种意义上讲,软件缺陷和软件失效代表了软件的两个不同层次的问题。 软件缺陷是软件的内部问题,是软件开发人员能够察觉到的问题:软件失效是软 件的外部问题,是用户能够察觉到的问题。 “ 需要指出的是,软件失效并不是都会导致事故发生,因为软件失效后只有 在特定的条件下才可能导致事故。例如,联锁软件发生“信号升级”的失效, 仅在前方区段有满员的列车占用、而司机没有采取任何制动措施等条件下,才 会引发最严重的后果 图2 4 软件失效( s o f t w a r ef a il u r e ) 2 3 自动化测试技术 2 3 1 软件测试自动化 第2 章软什测试和软件1 :科 因为软件测试的工作量很大( 占据4 0 到6 0 0 , 6 的总开发时间) ,而又有很 大部分适于自动化。因而测试自动化技术j 下越来越受到广泛的关注和研究。由 于测试中的许多操作是重复性、需要细致注意力的工作。因而计算机最适合代 替人类去完成这些任务。 自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程 师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高 测试效率和软件质量的目的。自动化测试适用于发现曾经发现过的老缺陷。而 手工测试适用于探索发现新缺陷。 2 3 2自动化测试的优势 目前,软件测试自动化的研究领域主要集中在软件测试流程的自动化管理 以及动态测试的自动化开发。用以提高测试覆盖率;同时自动化测试更便于测 试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这 个特点在功能测试和回归测试中尤其具有意义。 对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上 一个版本相似或完全相同,因而特别适合使用自动化的测试。 使用自动测试可以避免执行大量重复高强度的测试案例,从而缩短不同版 本间的测试时间,进而缩短产品开发和发布周期。 同时对于一些非功能性方面的测试:如压力测试、并发测试、大数据量测 试、崩溃性测试等。用人工的方式是很难做到的,因而必须要引入自动化测试 来解决。 因此自动化测试带来的好处是: 1 ) 生产出可靠的系统。 包括需求定义改进、性能测试改进、压力测试改进、质量测试与测试最佳 化、与开发组伙伴关系改进、系统开发生存周期改进等。 2 ) 测试工作质量改进。 包括冒烟测试改进( 冒烟测试是指构建验证测试,即版本构建后验证版本 的主要功能是否存在问题) 、回归测试( 在冒烟测试基础上扩展以包括已经被证 明可行的全部现有功能) 改进、多平台兼容性测试改进、软件配置测试改进、 普通测试执行改进、集中于高级测试问题改进、执行手- r n 试无法完成的测试、 1 4 第2 章软件测试和软件j 程 重现软件缺陷的能力、业务专业知识增强、几小时后的测试等。 3 ) 减少测试工作并缩短进度。 使得测试效率大为提高,加快项目完成进度。 而列控中心测试平台的功能是向被测软件系统遍历报文,对于每个铁路待 测站场,可能有数十万乃至百万条报文需要遍历,因而必须以自动化方式实现。 2 3 3自动化测试的局限 然而尽管自动测试具备上述优点,其本身也有其局限性。 首先,不能期望自动测试能够完全替代人工测试。经验证明新缺陷越多, 自动化测试失败的几率就越大。发现更多的新缺陷应该是手工测试的主要目的。 测试专家j a m e sb a c h 发现8 5 的缺陷首先是靠人工发现的,而自动化测试只能 发现大约1 5 。因此自动化测试更多的是发现老缺陷。测试的主导依然是人。其 次,自动化测试需要足够的技术力量的投入,技术问题,组织问题,脚本维护 相对于传统的手工测试都更为复杂,因此要权衡开销和得益的问题。 2 3 4 适合自动化测试的情况n 习 适合于软件测试自动化的场合: 1 ) 回归测试。软件测试自动化的目的是为了获得自动测试工具的重复使 用,减小软件测试复杂度,并缩短测试时间。回归测试能够较好地满足这一要 求,应该作为自动化测试的首要目标。随着软件版本的升级,每次都需要进行 重复的回归测试。此时可以采用自动化测试,完成对测试内容的重复性测试, 对于只需要进行单次测试的内容不值得开发自动回归测试工具。 2 ) 产品型项目。产品型的项目,每个项目只改进少量的功能,但每个项目 必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测 试来承担,同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。 3 ) 增量式开发、持续集成项目 由于这种开发模式是频繁的发布新版本进行测试,也就需要自动化测试来 频繁的测试,以便把人从中解脱出来测试新的功能。 4 ) 能够自动编译、自动发布的系统 要能够完全实现自动化测试,必须能够具有自动化编译,自动化发布系统 第2 章软f ,i :测试和软件i :程 进行测试的功能。当然,不能达到这个要求也可以在手工干预下进行自动化测 试。 5 ) 多次重复、机械性动作 自动化测试最喜欢测试:多次重复、机械性动作,这样的测试对它来说从 不会失败。比如要向系统输入大量的相似数据来测试压力和报表。 6 ) 需要频繁运行测试 在一个项目中需要频繁的运行测试,测试周期按天算,就能最大限度的利 用测试脚本,提高工作效率。 7 ) 将烦琐的任务转化为自动化测试 软件的自动化测试非常的重要,一般如果能够提高测试效率以及成本,应 该尽可能的实行测试自动化。 2 3 5自动化测试的方法 在实际的软件测试过程中,对软件测试实行自动化的具体做法一般为: 1 ) 测试案例( t e s tc a s e ,或称为测试用例) 的生成 用编程语言或更方便的脚本语言( s c r i p tl a n g u a g e 例如p e r l 等) 写出短 小的程序来产生大量的测试输入( 包括输入数据与操作指令) ,或同时也按一定 的逻辑规律产生标准输出。输入与输出的文件名字按规定进行配对,以便控制 自动化测试及结果核对的程序易于操作。 这里提到测试案例的命名问题,如果在项目的文档设计中作统一规划的话, 软件产品的需求与功能的命名就应该成为后继开发过程的中间产品的命名分类 依据。这样,就会为文档管理和配置管理带来很大的方便,使整个产品的开发 过程变得更有条理,更符合逻辑。任何新手半途加入到开发工作中也会更容易 进入状态。 2 ) 测试的执行控制 单元测试或集成测试可能多用单机运行。但对于系统测试或回归测试,就 极有可能需要多台机在网络上同时运行。有一个这样的原则,在开发过程中的 任何时候,如果需要等候测试的运行结果的话,这就是一个缩短开发时间的机 会。 对于单个的测试运行,挖潜的机会在测试的设置及开始运行和结果的对比 1 6 第2 章软件测试和软件工程 及显示。有时候,需要反复修改程序,重新汇编和重新测试。这样,每一个循 环的各种手工键入的设置与指令所花费的时间,加起来就非常可观。如果能利 用m a k e 或类似的软件工具来帮助,就能节省大量的时间。 对于系统测试或回归测试这类涉及大量测试案例运行的情况,挖潜的机会 除了利用软件工具来实现自动化之外,就是怎样充分利用一切硬件资源。往往, 就算是在白天的工作时间内,每台计算机的负荷都没有被充分利用。能够把大 量测试案例分配到各台机器上去同时运行,就能节省大量的时间。另外,把大 量的系统测试及回归测试安排到夜间及周末运行,更能提高效率。 如果不购买商品化的工具的话,应当遵从正规的软件开发要求来开发出好 的软件测试自动化工具。在实践中,许多企业自行开发的自动化工具都是利用 一些现成的软件工具再加上自己写的程序而组成的。这些自己开发的工具完全 是为本企业量身定做的,因此可用性非常强。同时,也能根据需要随时进行改 进,而不必受制于人。当然,这就要求有一定的人力的投入。 在设计软件自动测试工具的时候,路径( p a t h ) 控制是一个非常重要的功 能。理想的使用情况是:这个工具可以在任何一个路径位置上运行,可以到任 何路径位置去取得测试案例,同时也可以把测试的结果输出放到任何的路径位 置上去。这样的设计,可以使不同的测试运行能够使用同一组测试用例而不至 于互相干扰,也可以灵活使用硬盘的空间,并且使备份保存工作易于控制。 同时,软件自动测试工具必须能够有办法方便地选择测试用例库中的全部 或部分来运行,也必须能够自由地选择被测试的产品或中间产品采作为测试对 象。 3 ) 测试结果与标准输出的对比 在设计测试用例的时候,必须考虑到怎样才能够易于对比测试结果和标准 输出。输出数据量的多少及数据格式对比较的速度有直接影响。而另一方面, 也必须考虑到输出数据与测试用例的测试目标的逻辑对应性及易读性,这将会 大大有利于分析测试所发现的不吻合,也有利于测试用例的维护。 许多时候,要写一些特殊的软件来执行测试结果与标准输出的对比工作, 因为可能有部分的输出内容是不能直接对比的( 比如,对运行的日期时间的记 录,对运行的路径的记录,以及测试对象的版本数据等) ,就要用程序进行处理。 4 ) 不吻合的测试结果的分析、分类、记录和通报 上一点所谈到的,用于对测试结果与标准输出进行对比的特殊软件,往往 1 7 第2 章软f l :a 1 0 试和软件j 1 j 犟 也同时担任对不吻合的测试结果进行简单分析、分类、记录和通报的任务。 “分析”是找出不吻合的地方并指出错误的可能起因。“分类 包括各种统 计上的分项,例如,对应的源程序的位置,错误的严重级别( 提示、警告、非 失效性错误、失效性错误;或别的分类方法) ,新发现的还是已有记录的错误, 等等。“记录”,是按分类存档。“通报”,是主动地对测试的运行者及测试用例 的“负责人”通报出错的信息。 这罩提到测试用例的“负责人”的概念。是用以指定一个测试用例运行时 发现的缺陷,由哪一个开发人员负责仔细分析( 有时是另外的开发人员引进的 缺陷而导致的错误) 及修复。在设立测试用例库时,各用例均应有指定的负责 人。 最直接的通报方法是由自动测试软件发出电子邮件给测试运行者及测试用 例负责人。邮件内容的详细程度可根据需要灵活决定。 5 ) 总测试状况的统计,报表的产生 这些都是自动测试工具所应有的功能。目的是提高过程管理的质量,同时 节省用于产生统计数据的时间。 产生出来的统计报表,最好是存放到一个规定的路径位置,以便任何有关 人员都知道怎样查阅。同时,可按需要用电子邮件向适当的对象(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论