UTM自动化和性能测试的设计和实现论文.docx
- 文档编号:18423751
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:54
- 大小:693.73KB
UTM自动化和性能测试的设计和实现论文.docx
《UTM自动化和性能测试的设计和实现论文.docx》由会员分享,可在线阅读,更多相关《UTM自动化和性能测试的设计和实现论文.docx(54页珍藏版)》请在冰点文库上搜索。
UTM自动化和性能测试的设计和实现论文
UTM自动化和性能测试的设计和实现
摘要
计算机的日益普及与应用,让越来越多的业务依赖于由软件完成。
随着软件开发产业的不断发展和不断提高,开发企业越来越注重软件的质量问题;同时,软件开发的管理人员也认识到:
要真正解决软件的质量问题,必须通过建立软件保障体系,最主要的就是要有很完善的软件测试体系。
要提高软件测试效率,保证软件性能稳定,引入自动化测试和性能测试技术成为当今众多企业的不二选择。
软件测试从原来的开发后期测试到边编码边测试再到测试驱动开发的不断发展过程,说明了软件工程中的软件测试越来越受到开发企业的重视。
该课题就是在如何提高网络威胁综合管理系统(UTM)的测试效率和保证该系统的高性能的背景下提出的。
由于系统更新版本快、功能模块多、性能要求高,手工测试人员很难及时发现全部的BUG,所以,借助测试工具进行自动化测试和性能测试迫在眉睫。
根据对网络威胁综合管理系统的功能模块分析,提出测试方案,设计出测试框架。
然后选择适合UTM系统的测试工具及脚本开发语言。
课题着重研究网络威胁综合管理系统的分析测试需求、测试用例设计、自动化和性能测试的实现和测试结果的分析。
该课题一方面为UTM的自动化测试和性能测试构造了一个良好的测试基础性结构,另外一方面也为本人研究软件自动化测试和性能测试提供了一个很好的研究对象。
关键字:
软件测试,自动化测试,性能测试,UTM,测试工具,测试框架
Abstraction
Theincreasingpopularityandapplicationofcomputer,moreandmorebusinessesdependonthecompletionbythesoftware.Withthecontinuousdevelopmentofthesoftwaredevelopmentindustryandcontinuousimprovement,developmentcompaniesincreasinglyfocusonsoftwarequality.Thesametime,softwaredevelopmentmanagersalsorecognizethat:
toreallysolvetheproblemofsoftwarequalitythroughtheestablishmentofsoftwaresecuritysystem,themostimportantistohavetheperfectsoftwaretestingsystem.Toimprovetheefficiencyofsoftwaretesting,toensurestabilityofthesoftwareperformance,theintroductionofautomatedtestingandperformancetestingtechnologytobecomethebestofmanyoftoday'senterpriseselection.Softwaretestingsideofthetesttobeencodedfromtheoriginaldevelopmentofpost-testandthentest-drivendevelopment,continuousdevelopmentprocess,softwaretestinginsoftwareengineeringmoreandmoretheattentionofthedevelopmententerprise.
Thisgraduationprojectishowtoimprovetheefficiencyofthenetworkthreatmanagement(UTM,unifiedthreatmanagement)testingandensurethatthesystemperformancebackground.Asanupdatedversionofthesystemisfast,multi-functionmodules,andhighperformancerequirements,manualtestersisdifficulttofindallofthebug,so,withthetesttoolforautomatedtestingandperformancetestingisimminent.Accordingtotheanalysisofcyberthreatsintegratedmanagementsystemforthetestingprocess,testprograms,designtestframework.ChooseaUTMsystemtestingtoolsandscriptinglanguagedevelopment.Thetopicsfocusedoncyberthreatanalysisandtestingofanintegratedmanagementsystemrequirements,testcasedesign,automationandperformancetestingofimplementationandanalysisoftestresults.ThesubjectontheonehandforautomatedtestingandperformancetestingoftheUTMconstructagoodtestofthebasicstructure,ontheotherhand,Iresearchsoftwaretestautomationandperformancetestingtoprovideagoodresearchobject.
KeyWords:
softertesting,automatedtesting,performancetesting,UTM(unifiedthreatmanagement),testtools,Testingframework
1绪论
1.1课题背景
进入21世纪,随着计算机网络技术、通信技术和软件技术的发展,网络安全越来越被各界所重视,并极大的推动了网络安全产品的发展。
软件测试是软件产品开发流程中至关重要的环节。
据大量统计资料显示,在典型的软件开发的项目中,软件测试投入的成本和工作量往往占到软件的总成本和总工作量的40%以上[1]。
然而,在早期软件测试常常被忽视,软件经过开发人员简单的单元测试后进行发布,导致的后果可想而知。
自上世纪70年代以来,国内外的许多专家学者和组织就软件测试方面进行了大量的研讨,形成了一系列经典的软件测试流程管理标准和测试方法。
在美国北卡罗来纳大学召开的软件测试的正式技术会议,是软件测试技术发展历史上的一个转折点,它标志着软件测试成为了软件工程领域中一个独立而重要的分支[2]。
在今天的学术界,对软件测试的研究的热点已经不再是一个新鲜的话题,大量的软件测试论文的出现就是最好的证明;还有,大量的软件测试工具的出世,也证明了软件测试在商业界的地位正在日益提高。
这些,都无不说明软件测试已经对人们的生活产生了重大影响。
伴随着用户对软件产品功能以及性能的要求的提高,如今的软件产品的复杂性也越来越高,传统的手工测试已远远不能满足当前软件产品功能和性能测试的需要,自动化测试技术就在这种情况下应运而生,既节约了成本又提高了测试的效率,成了当前大部分软件产品测试的不二选择。
随着软件市场的日趋成熟,人们对软件作用的期望值也越来越高,软件的质量和可靠性也正逐渐成为人们的关注焦点,目前,中国软件产业产品性能存在着严重不足,有些系统、软件经常出现性能不足而导致崩溃的状况,所以,软件的性能测试已迫在眉睫。
如今,由于网络上病毒的泛滥,网络安全产品的功能单一,促进了UTM(统一威胁综合管理)成为学术界的研究热点,并且它已经成为了很多IT网络安全产品公司的重要开发产品。
正是因为如此,开发出一款功能强大并且性能稳定可靠的UTM产品成为了众多IT公司和用户的共同需求。
因为UTM系统产品功能的复杂性和它所处位置的特殊性,所以,自动化测试和性能测试在UTM产品化的过程中便显得尤为重要了。
1.2国内外研究现状
软件测试是软件生存周期中的一个重要阶段,是软件质量保证的关键步骤。
1983年IEEE提出的软件工程术语中给软件测试下的定义是“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。
这个定义明确指出:
软件测试的目的是为了检验软件系统是否满足需求[3]。
许多企业和组织机构的业绩好坏和核心竞争力都依赖于他们是否能很好的开发和使用他们的软件,但是太多的软件开发项目不是进度太慢就是超支或者有严重的质量问题,1995年,国外的一个大规模的研究调查了17万个软件开发项目(总投资达2500亿美元),结果发现,只有6%按时按预算完成,31%的项目被中途取消,其余63%的项目最终完成,但都超出了预算和进度。
这些项目中,一大半项目的实际花费超出预算达189%[4]。
软件测试作为软件工程学科的一个重要分支,近年来也得到了相应的发展。
国外早在上个世纪就已经由美国的IEEE、ACM等组织制定了一系列软件测试规范。
在软件业较发达的国家,软件测试不仅早已成为软件开发的一个有机组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。
以美国的软件开发和生产的平均资金投入为例,通常是:
“需求分析”和“规划确定”各占3%,“设计”占5%,“编程”占7%,“测试”占15%,“投产和维护”占67%。
测试在软件开发中的地位,由此可见一斑[5]。
国内对于软件测试方面的研究起步尚晚,比较著名的是北京大学、北京航空航天大学进行的一系列的软件分析和测试工具的研究和开发,研制了一系列的程序理解工具和测试工具,比较有代表性的工具有SafeProC/C++,SafeProjavao。
南京大学和航空局计算研究所开发的静态分析工具和测试用例自动生成工具,在嵌入式系统测试方面取得了较大的成功[6,7]。
UTM(UnifiedSecurityGateway)的概念最早出现在2002年,当时由于混合网络威胁的出现,为了满足用户对防火墙、IDS、VPN、防病毒等产品的集中部署与管理需求,一些安全厂商提出将多种安全技术整合在同一个产品中,这变是UTM的雏形。
2004年,IDC正式提出UTM的概念。
UTM的出现就是为了彻底解决网络边界存在的安全问题,将多种安全防护功能整合到统一的硬件平台上,进行统一的部署和管理。
到2008年,Cisco停止PIX防火墙的销售,全面转为销售ASA系列UTM设备,这标志着防火墙时代的结束,UTM时代的开始[8]。
1.3本文介绍
网络安全产品的自动化测试及性能测试涉及计算机网络结构、防火墙技术、入侵检测、软件工程、测试理论、测试流程优化、网络安全等多方面的内容。
本文结合了当前软件测试的研究动向和发展趋势,综合了软件自动化及性能测试原理、自动化及性能测试支持工具和自动化及性能测试案例的设计方法,并据此完成了UTM系统自动化及性能测试的案例设计。
分析了QTP的工作原理,结合目前主要测试脚本技术的特点,定义了一套UTM系统的自动化测试脚本的描述语言。
在此基础上,完成了基于该脚本描述语言的UTM系统自动化测试方法。
在对软件性能测试的过程进行了全面的分析和探讨后,在UTM系统中将性能测试的工作分为了测试需求、测试设计、测试实现、测试结果分析四个阶段,分别给出了各个阶段的具体工作指南,以对各个阶段的具体工作方法给出指导。
本文各章节内容组织如下:
第1章,简要介绍了课题的背景,综述了软件测试与自动化测试及自动化测试的国内外研究现状,提出本文研究内容。
第2章,详细先介绍了自动化测试的定义、原理、流程、需求、用例编写和工具。
然后再介绍了性能测试的定义、指标、分类、应用领域、流程和工具。
第3章,简要介绍了UTM的测试需求,包括功能测试需求和性能测试需求,最后基于需求搭建了一个测试UTM的测试框架,并对框架做了简要介绍。
第4章,详细介绍了防火墙子系统的测试需求、测试流程、测试设计、测试实现,并对测试结果做了详细的分析。
第5章,详细介绍了路由子系统的测试需求、测试流程、测试设计、测试实现,并对测试结果做了详细的分析。
第6章,对本文所研究的课题做了总结,也对该课题的未来做了展望,提出了本文所研究的不足,也展望了UTM未来可能的发展方向。
第7章,最后对给与本人在论文上的直接指导和间接帮助的人作了致谢。
第8章,列出了完成本论文所借助的参考文献。
2UTM和自动化与性能测试基础
2.1UTM概述
UTM定义为:
通过安全策略的统一部署,融合多种安全能力,针对对网络自身与应用系统进行破坏、利用网络进行非法活动、网络资源滥用等威胁,实现精确防控的高可靠、高性能、易管理的网关安全产品。
UTM既提出了系统化的解决方式,又给出了明确的目标和设备属性,同时也涵盖了更加深远的逻辑范畴。
UTM出现有三个方面的重要意义:
首先,在理论层面,它通过对各种安全理论的整合,构建起一个全新的网络安全理念;其次,在方案层面,它要求将尽可能多的安全解决方案整合到一起,构筑智能型的立体防护体系;再次,在技术层面,它通过对诸多安全技术与产品的全面整合,为信息网络提供全面动态的安全防护体系。
本文所研究的对象,UTM,即网络威胁综合管理系统,是格瑞特科技有限公司自主研发的新的网络安全产品,它采用最先进的内核状态检测包过滤技术,在操作系统的内核级实现了多层次的数据流检测,实现对数据流的细粒度检测。
防火墙在数据链路层上实现了对数据帧的控制,网络层传输层实现策略路由和状态检测包过滤,应用层实现了通用的内容过滤。
日志的生成也是由内核提交给日志守护进程,使日志信息异常丰富,能够精确到每一个会话的数据流量。
网络威胁综合管理系统提供了最完整的统一威胁管理解决方案,系统在单一设备上完整集成了入侵防御、分级过滤、防病毒、防垃圾邮件、WEB过滤、VPN、内网防火墙、应用层过滤、流量监控、异常监控、带宽管理等实用网络安全功能。
这些特性能够为你的业务网络提供高级别的安全防护,避免来自互联网的病毒,垃圾邮件和针对性的网络攻击所造成的安全威胁,最大限度的控制业务网络的安全风险。
2.2自动化测试
2.2.1自动化测试的定义及其意义
自动化测试的定义:
使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施[9]。
通常,软件测试的工作量很大(据统计,测试会占用到40%的开发时间,一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%)[10]。
而测试中的许多操作是重复性的,非智力型的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。
如对UTM某一功能所属数据的反复操作以证明软件是否还能正确执行时,可以采用自动化测试方法。
软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具,脚本等来实现,具有良好的可操作性了,可重复性和高效率等特点。
发展自动化测试的意义可以从以下两个方面考虑:
(1)手工测试的局限性:
1)手工测试无法做到覆盖所有代码路径。
当前系统越来越复杂,通过手工测试很难覆盖所有的代码路径,导致低概率缺陷很难被发现。
2)简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性,重复性,工作量往往较大。
3)许多与时序,死锁,资源冲突,多线程等有关的错误,通过手工测试很难捕捉到。
4)进行系统负载和性能测试时,需要模拟大量数据或大量并发用户等各种应用场合,很难通过手工测试来进行。
进行系统可靠性测试时,需要模拟系统运行10年,几十年,以验证系统能否稳定稳定运行,这也是手工测试无法模拟的。
5)如果有大量(几千或者上万)的测试用例,需要在短时间内完成,手工测试几乎不可能做到。
(2)自动化测试带来的好处:
自动化测试的突出优点有:
速度、效率、准确度、精确度和坚持不懈。
1)缩短软件开发测试周期,可以让产品更快投放市场。
自动化测试可以节省测试中的人力资源和时间资源,使得测试人员可以花更多的精力去保证产品更为关键的质量,因此提高了产品测试的效率和发布周期。
2)增强测试的稳定性和可靠性,提高软件测试的准确度和精确度,增加软件信任度。
自动化测试是严格基于测试脚本的,因此不存在因为测试人员人为因素带来的错误,极大的提高了产品测试的精确度。
3)软件测试工具使测试工作相对比较容易,而且能产生更高质量的测试结果。
相比手工测试,自动化测试工具可以更广泛的覆盖测试路径,提高产品质量。
4)手工测试存在一定的局限性。
如在负载,性能测试阶段,仅仅通过手工测试是不能达到实际效果的。
因此这些情况下必须通过使用自动化测试工具来完成。
软件测试的自动化进程,绝不是因为厌烦了重复的测试工作,而是因为测试工作的需要,更准确的说是回归测试和系统测试的需要。
2.2.2自动化测试的原理和方法
软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程,操作行为,或者类似于编译系统那样对计算机程序进行检查。
软件测试自动化实现的原理和方法主要有:
直接对代码进行静态和动态分析,测试过程的捕获和回放,测试脚本技术,虚拟用户技术和测试管理技术。
1.代码分析
代码分析类似于高级编译系统,一般针对不同的高级语言去构造分析工具,在工具中定义累,对象,函数,变量等定义规则,语法规则。
在分析时对代码进行语法扫描,找出不符合编码规范的地方,根据质量模型评价代码质量,生成系统的调用关系图等。
2.捕获和回放
捕获和回放则是一种黑盒测试的自动化方法。
捕获是将用户每一步操作都记下来。
这种记录的方式有两种:
程序用户界面的像素坐标或程序显示对象(窗口,按钮,滚动条等)的位置,以及相对应的操作,状态变化或是属性变化。
所以的记录转换为一种脚本的语言所描述的过程,以模拟用户的操作。
回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。
这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。
关于自动化测试中的“录制--回放”技术,目前的自动化负载测试解决方案几乎都是采用“录制--回放”的技术。
所谓“录制--回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序。
然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。
这样通过几台机器就可以模拟成百上千的用户对应用系统进行负载能力的测试。
3.脚本技术
脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。
脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。
当然,也可以直接用脚本语言编写脚本。
脚本技术可以分为以下几类:
、
线性脚本----是录制手工执行的测试用例得到的脚本。
结构化脚本----类似于结构化程序设计,具有各种逻辑结构(顺序,分支,循环),而且具有函数调用功能。
共享脚本----是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。
数据驱动脚本----将测试输入存储在独立的数据文件中。
关键字驱动脚本----是数据驱动脚本的逻辑扩展。
2.2.3自动化测试的流程
自动化测试与手工测试不同。
其主要流程如图所示。
首先,在测试设计完成后,要进行脚本录制工作。
脚本实际上是一组测试工具执行的指令集合。
其次,脚本录制完成后要按照测试案例进行脚本的编写,然后是回放。
回放就是执行脚本的过程,也是一组测试过程。
手工测试中不需要生产脚本和回放脚本。
最后,比较回放后的测试结果。
比较是软件测试中可论证地自动化程度最高的任务,也常常是从自动化中收益最高、最多的任务。
图1自动化测试流程
1)测试计划。
测试计划最好与开发活动并行开展,它标识测试条件,确定测试什么,并最好定义好这些测试条件的优先顺序,测试条件是被测试环境的描述,可以用不同的方法来描述,如简单语言描述、表格形式等等,测试条件取决于被测试的系统。
一个系统可能有许多不同的测试条件,并且测试不同的方面,如功能测试、性能测试、安全性测试等等。
2)测试案例。
设计测试案例确定“怎样”测试。
测试案例是按一定顺序执行的与测试目标相关的一系列测试。
测试案例设计将产生测试所需要的输入值、期望结果以及其它任何运行测试的相关信息。
期望输出包括应输出或建立的内容、应修改或更新的内容或应删除的内容。
期望输出集可以是一个很大的集合。
3)录制脚本及程序设计。
这其实是一个脚本实现测试案例的过程,包括准备测试脚本测试输入、测试数据以及期望输出。
测试脚本是具有正规语法的数据和指令的集合,在测试执行工具中,通常以文本形式存在。
一个测试脚本可以实现一个或多个测试案例。
测试脚本可以手工也可以非手工执行。
测试输入和期望输出可以包括在脚本中,也可以以脚本外的文件或数据库的形式存在。
4)回放。
回放就是执行测试案例的过程,在被测软件运行时使用测试案例。
对应自动测试来说,只需启动测试工具并告诉测试工具执行哪些测试案例。
5)将测试结果与期望结果比较。
对每次测试的事件输出进行分析研究,判断软件功能是否正确。
这种验证可以是非正式的测试者的判断,也可以是输出结果和期望结果的严格比较。
一般情况下,如果实际输出与期望输出一致,则软件通过测试,如果不一致,则软没有通过测试。
当然这个规则有点过于简单了,实际输出与期望输出不一致的有很多原因,比如测试定义不正确、软件不正确、测试顺序不对、期望输出的结果不正确、测试环境设置不正确等等。
2.2.4自动化测试的需求
自动化测试脚本也是一种软件,她应该遵循软件开发的过程:
1)分析每个需求,确定自动化测试开发的可行性。
2)评估软件测试的价值和成本(人力和时间)及效果。
如果成本太高,时间太长,工效不明显,就不属于自动化测试范围。
3)选择适当的自动化测试工具(loadrunner,winrunner,robot,QTP等)来满足不同的需求。
不同的自动化测试工具有不同的特点,有的在数据驱动上优势明显,有的在GUI上简便,有的在环境通用性上便利。
在特色的实现上要结合这些特点进行选择,必要时可以多个自动化工具混用。
4)适用的测试过程包括功能测试,回归测试,压力测试等。
5)将自动化测试的需求文档化可以节约人力,缩短开发周期,重点完成特定阶段的工作。
2.2.5自动化测试用例编写
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
不同类别的软件,测试用例是不同的。
不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。
因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。
测试用例更趋于是针对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UTM 自动化 性能 测试 设计 实现 论文