




已阅读5页,还剩61页未读, 继续免费阅读
(计算机应用技术专业论文)基于net网站的自动化安全测试工具研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着i n t e m e t 及其相关技术的飞速发展,网站安全问题也越来越 突出,网站发布前的安全测试,能测试和修复可能存在的安全漏洞, 有效防止攻击,无疑是网站安全防范非常有效的方法,安全测试工具 成为一个引起广泛关注的研究领域。目前的安全测试工具单纯采用黑 盒测试方法,普遍存在分析漏洞不准确和无法修复漏洞等缺点。 论文针对目前安全测试工具的缺点,分析了其中的不足,在研究 了相关理论与关键技术的基础上,提出了黑盒测试与白盒测试相结合 的测试模型,模型结合了黑盒测试方法节省测试时间和白盒测试方法 分析程序全面的特点。在此模型的基础上论文实现了一个针对n e t 网站的自动化安全测试工具s t t c ( s e c u f i t yt e s tt o o li nc j ! i 的缩写) , s t t c 主要包括黑盒测试和白盒测试两个子模块,黑盒测试模块测试 网站页面,记录漏洞程序和漏洞类型,白盒测试模块提取并分析漏洞 源程序,定位和尝试修复漏洞。在黑盒测试子模块中,建立攻击数据 库来模拟人为攻击。在白盒测试子模块中,对每类漏洞建立攻击模式 匹配库,有效防止攻击,通过程序跟踪准确定位漏洞位置,通过程序 插桩自动修复漏洞。最后以w o r d 文档方式返回详细测试报告,为用 户提供全面的安全解决方案。 论文对主要模块的设计思想和实现进行了论述并通过实验对 s t t c 的测试和修复能力进行了检测,然后通过与商业测试工具 a c u n e t i xw e b v u l n e r a b i l i t ys c a n n e r 的比较分析了s t t c 的性能。最后 对论文进行了总结,阐述了将来进一步的研究工作。 关键词软件坝酊式安全澳啦式,测试工具开发,自动化测试 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to ft h ei n t e r n e ta n dt h ec o r r e l a t i v e t e c h n o l o g i e s ,t h es e c u r i t yo fw e b s i t e sh a sb e c o m eam o r ea n dm o r e s e r i o u si s s u e a sf a ra sw e b s i t es e c u r i t yt e s ti sc o n c e r n e d 。t ot e s ta n d r e m e d yt h ep o t e n t i a ls e c u r i t yb u go ft h ew e b s i t eb e f o r ei t si s s u ei s u n d o u b t e d l yt h em o s tf a v o r a b l ew a yo fs e c u r i t yp r e c a u t i o n 西u st h e s e c u r i t yt e s tt o o lh a sb e c o m ear e s e a r c hf i e l dg a i n i n gm o r ea n dm o r e a t t e n t i o nf r o mr e s e a r c h e r s t h es e c u r i t yt e s tt o o l i nc o m m o nu s ea t p r e s e n ta d o p t so n l yt h eb l a c kb o xt e s ta n dh a st h ew e a kp o i n t so fb u g a n a l y s i si n a c c u r a c ya n df a i l u r ei nb u gr e p a i re t c t h i sp a p e rm a k e sa na n a l y s i so ft h ed e f i c i e n c yo ft h es e c u r i t yt e s t t o o li nc o m m o nu s ea tp r e s e n t ,a i m i n gd i r e c t l ya ti t sw e a kp o i n t s b a s e d o nt h er e l a t i v et h e o r i e sa n dk e yt e c h n o l o g i e s ,t h e nt h i sp a p e rd o e sa p r o f o u n dr e s e a r c hi nt e c h n o l o g i e so fb u gp o s i t i o n i n ga n db u gr e p a i ra n d p u t sf o r w a r daw h i t ea n db l a c kb o xc o m b i n a t i v et e s tm o d u l ew h i c hp u t s t o g e t h e rt h ep e c u l i a r i t i e so fb l a c kb o x st i m es a v i n ga n dw h i t eb o x s c o m p r e h e n s i v ea n a l y s i s r e l 姐n go n t h i sm o d u l e ,t h i sp a p e rr e a l i z e s s t t c ( t h e a b b r e v i a t i o no fs e c u r i t yt e s tt o o li nc ) p a r t i c u l a r l ya p p l i e d t o n e tw e b s i t e s s t t cm a i n l yi n c l u d e st w os u b m o d u l e s n a m e l yt h e b l a c kb o xt e s tm o d u l ea n dt h ew h i t eb o xt e s tm o d u l e t h eb l a c kb o xt e s t m o d u l et e s t st h ew e bp a g e so f w e b s i t e sa n dr e c o r d st h ep r o g r a ma n dt y p e o ft h eb u gw h i l et h ew h i t eb o xm o d u l ea b s t r a c t sa n da n a l y z e st h e p r o g r a mo ft h eb u g ,p o s i t i o n sa n dr e p a i r st h eb u gt e n t a t i v e l y a na t t a c k d a t a b a s ei sb u i l ti nt h eb l a c kf f o xt e s ts u b m o d u l et oi m i t a t et h ea r t i f i c i a l a t t a c k a t t a c kp a t t e r nm a t c h i n gd a t a b a s ef o re a c ht y p eo ft h eb u g si sb u i l t i nt h ew h i t eb o xs u b - m o d u l et op r e v e n ta t t a c ke f f i c i e n t l y , t op o s i t i o nt h e b u ga c c u r a t e l yt h r o u g hp r o g r a mt r a c k i n g a n dt o r e p a i r t h eb u g a u t o m a t i c a l l yt h r o u g hp r o g r a mi n s t r u m e n t a t i o n f i n a l l yas p e c i f i c t e s t r e p o r tw i l lb es e n tb a c kt ot h eu s e ri nw 研df i l ea n d ac o m p r e h e n s i v ea n d s e c u r cs o l v i n gp l a nw i l la l s ob ep r o v i d e d t h i sp a p e rm a k e sa no v e r a l lr e v i e wo ft h ed e s i g ns t r a t e g i e sa n d r e a l i z a t i o no f t h em a i nm o d u l e sa n de x a m i n e st h et e s ta n dr e p a i ra b i l i t yo f s t t ct h r o u g hc x p e r i m e n t s t h e nac o m p a r i s o ni sd r a w nb e t w e e nt h e c o m m e r c i a lt e s tt o o la c u n e t i xw e bv u l n e r a b i l i t ys c a n n e ra n ds t t ct 0 a n a l y z ei t sp e r f o r m a n c e a tl a s t ,t h i sp a p e rc o m e st oac o n c l u s i o na n d s t a t e sc l e a r l yt h er e s e a r c hw o r kt ob ed o n ei nt h ef u t u r e k e yw o r d ss o f t w a r et e s t , s e c u r i t yt e s t ,t e s tt o o ld e v e l o p m e n t , a t o m i z a f i o nt e s t 1 1 1 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在在论文中作了明确的说 明。 作者签名:鱼生经垒日期:型年互月望日 关于学位论文使用授权说明 本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位 论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论 文;学校可根据国家或湖南省有关部门规定送交学位论文。 作者签名:垒憋师 硕士学位论文第一章绪论 1 1 课题来源及研究背景 第一章绪论 n e t 的发布给网站开发者带来了一场全新的革命,由于其高效率开发、多 平台特性、无接触部署、可信赖计算、消除d i l h e l l 等特点使其很快受到广大编 程者的亲睐。虽然n e t 有安全性高的特点,但在程序员没有足够安全意识的情 况下,用n e t 编写出来的程序同样具有很多漏洞。 软件狈8 试是保障软件质量的有效办法,现在国内开发出来的软件大都不如国 外的稳定,完善。分析其原因主要是由于软件测试不充分。一个非常明显的现象 是国内软件开发企业的软件开发人员多而软件测试人员相对很少,或者根本没有 专门的软件测试人员。这相对与国际标准的软件开发人员与软件测试人员比例为 1 :l 的比例相差很远。所以大力研究软件测试是国产软件生存最有效的途径之 一 随着w e b 应用的普及,尤其是网上交易的使用,针对w e b 的攻击越来越多, 每年因此所造成的损失不记其数,而且这种攻击由于针对的是系统的8 0 和4 3 3 这两个网站运行必须打开的端口,所以攻击难于防范和检测,防火墙和杀毒软件 对他们的作用也很有限,通过对w e b 程序的安全性测试来提高网站的安全被认 为是目前提高w e b 安全比较好的途径。而国内外目前开发出来的w e b 安全测试 工具都是基于黑盒测试方法,这种方法开发出来的测试工具不能分析源程序,因 此无法详细报告漏洞也不能修复漏洞,另外,目前还没有针对n e t 项目源程序 的安全分析工具。 传统的软件测试都是采用手工测试的方法,即测试人员通过自己对软件的不 断使用和有针对性的错误操作等来发现软件的问题,这样,非常耗费时间,使得 测试的进度非常缓慢,有时前一版本还没有测试完成,下一版本又已经开发出来 了,这样测试的进度远远跟不上开发的进度,从而会延迟软件的发布日期甚至无 法按期交付软件。因此,软件测试的发展趋势是自动化的测试,即开发相应测试 类型的自动化测试工具来代替手工测试,这样不仅可以大大减少测试时间,提高 工作效率,还可以节省测试人员花在修复常见漏洞的时间,从而用更多的时间和 精力去测试软件中最核心的部分。 本课题正是作者通过分析以上几个方面的原因,为了提高国内软件测试水平 和测试工具开发能力的目的而自选的课题。 硕士学位论文第一章绪论 1 2 国内外研究现状与水平 随着信息技术应用的不断增长,计算机软件系统已经渗透到社会生活的方方 面面,包括安全、生活、经济以及保密等方面的关键系统。这些系统的软件质量 尤为重要,因为软件的故障可能导致非常严重的后果,根据美国航空业的调查表 明【1 1 ,由于软件质量问题导致的经济损失巨大:1 9 9 6 年损失6 4 亿美元,1 9 9 7 年损失1 1 7 亿美元,1 9 9 8 年损失2 5 5 亿美元,1 9 9 9 年损失1 6 亿美元。从市场 的观点看,软件产品的利润率通常遵守:暴利一高额利润一一般利润一微利一亏 损的曲线变化,由于软件质量导致市场推广滞后,不仅丧失了赚大钱的机会,而 且对原有的类似产品线也会构成威胁;另外,软件的质量问题也导致了交易成本 的增加。因此如何保证软件的质量成了推动各国软件产业发展的一个关键因素 【2 】。软件测试也开始受到越来越多的公司的重视。 软件测试的社会分工也经历了如下发展历程 3 1 :( 1 ) 7 0 年代以前- a d - h o c t e s t i n g ,与调试没有区分;( 2 ) 7 0 年代末一8 0 年代中期坝i 试基础理论和实用技术 形成,测试作为软件质量保证( s q a ) 的主要职能:( 3 ) 8 0 年代末棚0 年代中期一 测试工具在质量和数量上不断增长,测试与s q a ( 注重于过程和质量监督) 分 离。注重于工具对测试效率的影响;( 4 ) 9 0 年代后期目前一关注有效的过程管理 对于软件测试的重要性,形成各种测试模型、测试能力成熟度模型。g h a f f a d a b u 和j o “a ow c a n g u s s u t 4 】在传统模型的基础上提出了一种定量的学习型的测试模 型。j o a c h i m w e g e n c r l 5 】提出了一种自动化结构测试的进化测试环境,从而大大提 高了进化测试的性能。 国外许多大公司专门开发软件测试工具,如m e r c u r yi n t e r a c t i v e 公司,其开 发的一系列测试工具有【8 1 :t e s t d i r e e t o r - - 基于w e b 集成的测试管理工具,组织和 管理整个测试过程;w i n r u n n e r x r u n n e r - - - 企业功能测试工具,测试w i n d o w s 和 x - w n d o w s 应用是否能正确地工作;q u i c k t e s 卜一个革命性的技术,能简化、 加速测试:l o a d r u n n c r - - 负载测试工作,预测系统的性能和表现;t c s t s u i t e e n t e r p r i s e - - 一整套的自动测试软件包,包括l o a d r u n n c r , w i n r u n n e r , 和 t e s t d i r e e t o r 。这些都是很完善的测试工具,已经被许多公司大量购买和使用, m e r c u r yi n t e r a c t i v e 公司开发的测试工具占整个测试市场的5 0 以上。专门针 对n e t 的测试工具有微软开发的a c t ( 集成在m i e r o s o r v i s u a ls t a d i o n e t 中的 压力测试工具) 和n u n i t ( x u n i t 系列中的单元测试工具) ,另外,还有一些程 序静态测试工具和研究项目,如p r e f i x 9 1 ,b a n e 1 0 ,n 】,m e t a l 1 2 1 ,e s p 1 5 1 , e s c 1 6 , 1 s l a m 18 1 。n a s h a tm a n s o u r 和m a n a lh o u r i 【1 9 】提出了针对w e b 的数据流 驱动测试方法和事件流驱动测试方法。目前还没有专门针对n e t 程序的安全测 试工具。没有对n e t 程序进行白盒测试的测试工具,也没有对n e t 程序进行自 2 硕士学位论文 第一章绪论 动化测试的工具,因此目前n e t 虽然被大部分的编程者采用为开发语言和开发 环境,但是没有出相应的各方面的测试工具。因而编程者也就无法保证自己 用n e t 开发的网站的安全。 w e b 安全一直以来都是人们关注的重点,也是一大难点,第一例公布的w e b 应用攻击于2 0 0 0 年跚,一个1 7 岁的挪威小孩,在网上交易中发现自己的银行 帐号被作为u r l 其中的一个参数显示在u r l 中,因此,他将这个帐号改成随机 的帐号而获取客户的详细信息等。后来接连不断的w e b 攻击更是带来越来越大 的危害,而且现在的w e b 攻击可以绕过防火墙和杀毒软件,因此研究防火墙和 杀毒软件已经不能很好的解决w 西安全问题,而进行充分的安全测试则是目前 一种很好的安全途径,因此也引起很多大公司的兴趣,开发出了很多相关的测试 工具,如:w e b i n s p e c t 2 ”,w a t c h f i r e sa p p s c a n l “,a c u n e t i xw 曲v u l n e r a b i l i t y s c a r m c r f 2 5 j ,c o d e n o m i c o nh t r pt e s tt o o l 2 6 1 ,s e c u r i t y m e t r i c sa p p l i 锄c e 【2 7 】等等。 y a o - w e nh u a n g 等人把错误注入和运行监控等用于w e b 安全测试,从而实现了 一个w e b 安全的黑盒测试测试工具w a v e s 2 8 1 。但经过本人对这些工具的研究,发 现这些对w e b 的安全测试工具不但价格很高,而且由于采用黑盒测试方法,知识 对网站进行一些模拟攻击,这样的测试不够深入,无法发现漏洞的真正原因,而 且,这些工具产生的测试报告也比较模糊,无法报告出具体的漏洞,存在的位置, 解决的有效办法等。这样给测试用户带来的作用不大。无法让程序员通过测试报 告快速找出自己程序中的漏洞和解决的办法。因此迫切需要一种针对源程序进行 安全测试的自动化测试工具。 国内对软件测试的研究起步较晚,加上到目前为止国内大部分还是中小型软 件公司,公司的规模与经济条件使这些公司的测试无法达到国际要求的软件测试 人员与开发人员比例为一比一的标准,一般都是一个项目开发完以后用一两个人 对其进行一定的调试和运行检测就交给客户使用了,这就造成了目前国内开发出 的软件经常出现不如国外软件运行稳定的现象,比较大的公司对项目的测试也是 临时编写测试脚本,测试完后这些脚本就没用了,没有达到很好的重用性。国内 一部分公司开始注意到这一点,开始重视软件测试的投入和研究,另外目前几乎 还没有专门研究软件测试工具的公司,几乎没有自行开发而且投放市场使用的软 件测试工具,论文研究过的测试工具有基于c 2 9 川、c + + 【3 1 捌、j a v a 3 5 】三种语言 的部分类型测试工具,以及对面向对象软件测试的理论研究和一些模型的研究, 朱芳、李曦和赵振西提出了一种多平台自动化测试工具【3 6 】,闰会强、许静、杨 冰、韩维桓等人提出了一种分布式测试系统【3 ”。于n e t 发布比较晚,目前还没 有针对n e 嚆言的测试工具,也没有专门针对n e t 程序的安全测试工具。 3 硕士学位论文第一章绪论 1 3 研究的目的和意义 本课题是用c 拌开发的基于n e t 网站的自动化安全测试工具s w w c ( s e c u r i t y t e s tt 0 0 1 i nc 群的缩写,为了书写方便,论文中一律用s t r c 代替) ,s 们r c 可以 对网站源程序进行自动化安全分析与测试,找出代码中可能存在的安全漏洞,并 尝试进行自动化修复,在测试报告中为用户提供全面的解决方案。 课题研究出的自动化安全测试工具对w e b 程序员有着很大的帮助,能让编 程者在开发的同时,及时地检查代码中的安全漏洞,并随时完善。这样开发出来 的网站,就具有比较高的安全级别,从而投入使用以后可以减少很大的安全管理 费用。也大大减少以后维护网站的时间。而对于已经发布的网站的管理员,本工 具也可以很方便的帮助测试并修复存在的漏洞,使管理员不用费心的去读懂每个 程序。节省维护时间和成本。另外,对本工具进行一定的完善以后,可以投入市 场推广使用,因为目前还没有类似的测试工具,所以可以在一定程度上弥补国内 在软件测试工具方面的一些不足。而且具有较高的学术价值和应用价值。 1 4 论文的内容结构 论文基于目前国内开发出来的软件普遍存在质量不稳定,交付运行后经常出 现问题的现状,分析产生这种现象的原因和解决的办法,结合自己软件测试方面 的理论知识和软件开发水平设计并实现了一个网站安全自动化安全测试工具,论 文主要包括以下几个部分: ( 1 ) 分析了目前国内外软件测试工具的现状和存在的问题。提出论文研究的 目的与意义。 佗) 对软件测试的相关概念和自动化测试的方法进行了简单的阐述,对一些 与论文相关的关键技术与理论进行了研究。 ( 3 ) 提出了黑盒测试与白盒测试相结合的模型,结合了黑盒测试节省时间和 白盒测试分析程序全面的特点,在此模型的基础上提出了测试工具 s t t c 。介绍了s t i c 的整体和主要模块的设计思路。 ( 们论述了s t t c 中各模块的具体实现过程和方法,并且通过对实验验证了 s t t c 的漏洞测试和修复能力。然后通过和商业测试工具a c u n e t i xw e b v u l n e r a b i l i t ys c a n n e r 的比较分析s t r c 的性能。 ( 5 ) 对论文进行总结并提出下一步需要完善的工作。 4 硕士学位论文第二章软件测试理论与关键技术 第二章软件测试理论与关键技术 2 1 软件测试的定义与目的 测试最早出于古拉丁字,它有“罐”或“容器”的含义。在工业制造和生产 中,测试被当作一个常规的检验产品质量的生产活动。测试的含义为“已检验产 品是否满足需求为目标”。而软件测试活动包括了很重要的任务,既发现错误。 “软件测试”的经典定义是在规定条件下对程序进行操作,以发现错误,对 软件质量进行评估【帅j 我们知道,软件是由文档、数据以及程序组成的,那么软件测试就应该是对 软件形成过程的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。 随着人们对软件工程化的重视以及规模的日益扩大,软件分析、设计的作用 越来越突出,而且有资料表明,6 0 以上的软件错误并不是程序错误,而是分析 和设计错误。因为,做好软件需求和设计阶段的测试工作就显得非常重要。这就 是我们提倡的测试概念扩大化,提倡软件全生命周期测试的理念。 早期的软件定位指出软件测试的目的是寻找错误,并且尽最大的可能找出最 多的错误。 g r e n f o r dj m y e r s 就软件测试目的提出了以下观点。 测试是程序的执行过程,目的在于发现错误; 一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 b i l lh e t z e l 提出了测试目的不仅仅是为了发现软件缺陷与错误,而且也是对 软件质量进行度量和评估,以提高软件的质量。 测试的目的,是想以最少的人力、物力和时问找出软件中潜在的各种错误和 缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件 缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质 量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择与接受 软件提供有力的依据。 2 2 软件测试过程模型 在软件开发几十年的实践过程中,人们总结了很多的开发模型,比如瀑布模 型、原型模型、螺旋模型、增量模型、渐进模型,快速软件开发( r a d ) 以及 5 硕士学位论文第二章软件测试理论与关键技术 最近比较流行的r a t i o n a l 统一过程( r u p ) 等,这些模型对于软件开发过程具有 很好的指导作用,但是在这些过程方法中,并没有充分强调测试的价值,使得根 据这些模型开发出来的软件不够稳定。所以软件测试专家总结了很多好的测试模 型。主要的模型有v 模型、w 模型、h 模型等。 2 2 1v 模型 v 模型是最具有代表意义的测试模型,最早是由p a u l r o o k 在2 0 世纪8 0 年 代后期提出的,在英国国家计算机中心文献中发布,旨在改进软件开发的效率和 效果。v 模型的具体结构如图2 1 所示。 图2 - 1 软件测试v 模型 在v 模型中,单元测试是基于代码的测试,最初由开发人员执行,以验证 其可执行程序代码的各个部分是否已达到了预期的功能要求。 集成测试验证了2 个或多个单元之间的集成是否正确,并有针对性地对详细 设计中所定义的各单元之间的接口进行检查。 在所有单元测试和集成测试完成后,系统测试开始以客户环境模拟系统的运 行,验证系统是否达到了在概要设计中所定义的功能和性能。 最后,当技术部门完成了所有测试工作后,由业务专家或用户进行验收测试, 以确保产品能真正符合用户业务上的需要。 v 模型存在一定的局限性,它把测试过程作为在需求分析、概要设计、详细 6 硕士学位论文第二章软件测试理论与关键技术 设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后的一个阶 段,主要是针对程序进行测试寻找错误,而需求分析或概要设计等阶段隐藏的问 题一直到后期的验收测试才被发现。而这时候修复需求分析或概要设计阶段的错 误所花的代价会比需求分析之后修复错误高几十倍。所以v 有些人对v 模型进行了改 进。如戴莉萍、杜琼等人提出的改进型v 模型【4 2 】等。 2 2 2w 模型 在v 模型中增加软件各开发阶段应同步进行的测试,被演化为一种基于v & v 原理的w 模型,w 模型具体结构如图2 2 所示。 图2 - 2 软件测试w 模型 w 模型由e v o l u t i f 公司提出,相对于v 模型,w 模型更科学。w 模型可以 说是v 模型自然而然的发展。它强调:测试伴随着整个软件开发周期,而且测 试的对象不仅仅是程序,需求、功能和设计同样要测试。这样,只要相应的开发 活动完成,我们就可以开始执行测试,可以说,测试与开发是同步进行的,从而 有利于尽早地发现问题。 根据w 模型的要求,一旦有文档提供,就要及时确定测试条件,以及编写 7 硕士学位论文第二章软件测试理论与关键技术 测试用例,这些工作对测试的各级别都有意义。当需求被提交后,就需要确定高 级别的测试用例来测试这些需求。当概要设计编写完成后,就需要确定测试条件 来查找该阶段的设计缺陷。 w 模型也存在一定的局限性。w 模型和v 模型都把软件的开发视为需求、 设计、编码等一些列串行的活动。同样的软件开发和测试保持一种线性的前后关 系,需要有严格的指令表示上一阶段完全结束,才可正式开始下一个阶段。这样 就无法支持迭代、自发性以及变更调整。对于当前很多文档需要事后补充,或者 根本没有文档的做法下,开发人员和测试人员的工作都很难迸行。 2 2 3h 模型 为了解决v 模型存在的局限性,专家提出了h 模型。它将测试活动完全独 立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰的体 现出来。h 模型的结构如图2 3 所示。 测试就绪点 图2 - 3 软件测试h 模型 测试流程 设计流程) 这个示意图仅仅演示了在整个生产周期中某个层次上的一次测试“微循环”。 图中的其他流程可以是任意开发流程。例如,设计流程和编码流程。也可以是其 他非开发流程,例如,s q a 流程,甚至是测试流程自身。也就是说,只要测试 条件成熟了,测试准备活动完成了,测试执行活动就需要进行了 从图2 3 可以看出: ( 1 ) 软件测试不仅仅指测试的执行,还包括很多其他的活动。 ( 2 ) 软件测试是一个独立的流程,贯穿产品整个软件生命周期,与其他流程 并发地进行。 ( 3 ) 软件测试应该尽早准备,尽早执行。从而尽早发现错误。 软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动有时是 按照某个次序先后进行的,有时是反复的。 硕士学位论文第二章软件测试理论与关键技术 2 3 软件测试关键技术 2 3 1黑盒测试技术 黑盒测试方法是设计测试用例输入被测程序,根据不同的输入结果及相应的 输出来判定程序错误的方法,因此,黑盒测试方法中,测试用例的设计是最重要 的部分,下面介绍几种最常用的黑盒测试用例设计方法。 ( 1 ) 等价类划分法 等价类划分法完全不管程序的内部结构,而分析程序的各项需求,把程序的 输入域划分成若干部分( 包括有效等价类和无效等价类) ,然后从每个划分的区 域中选取几个最有代表性的测试用例作为代表。 这种方法的优点是测试用例比较均匀的覆盖了输入域的各个区域,缺点是因 为在每个区域中选取的测试用例代表就是随机抽取的,这样主观性比较强而可能 不够客观。 ( 2 ) 边界值分析法 根据人们长期的测试经验,大量的错误是发生在输入域或输出范围的边界 上,而不是输入范围内,边界值分析法正是基于这种现象而设计的。 对边界值设计测试用例,应遵循以下原则【4 2 】: 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚 刚超越这个范围边界的值作为测试输入数据。 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数小1 、 比最大个数多1 的数作为测试数据。 根据规格说明的每个输出条件,使用前面的第一条原则。 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第 一个元素和最后一个元素作为测试用例。 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上 的值作为测试用例。 分析规格说明,找出其他可能的边界条件。 边界值分析法设计出的测试用例发现错误的概率非常大,因而可以提高测试 的效率。 ( 3 ) 错误推测法 错误推测法是测试者根据自己的经验和直觉来设计测试用例的方法。具体方 法是首先列举程序中所有可能的错误和容易发生错误的特殊情况,再根据列举出 来的情况设计测试用例。这样设计出来的测试用例发现错误的可能性最大。但是 这种方法设计的测试用例一般不全面,所以一般将错误推测法作为补充测试用例 数的方法。 9 硕士学位论文 第二章软件测试理论与关键技术 ( 4 ) 因果图法 因果图法是从规格说明书中找出因果关系,再根据因果图转换成判定表。利 用因果图导出测试用例需要经过以下几个步骤 4 2 1 : 步骤i :分析程序规格说明书的描述中,哪些是原因,哪些是结果。原因常 常是输入条件或输入条件的等价类,而结果是输出条件。 步骤2 :分析程序规格说明的描述中语义的内容,并将其表示成连接各个原 因与各个结果的“因果图”。 步骤3 :标明约束条件。由于语法或环境的限制,有些原因和结果的组合情 况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号 标明约束条件。 步骤4 :把因果图转换成判定表。 步骤5 :为判定表中的每一列表示的情况设计测试用例。 r 5 ) 判定表驱动法 判定表驱动法是根据规定的判定表格式,将被测项目中的因素填入构造出判 定表,再根据判定表设计测试用力的方法。判定表由条件桩、条件项、动作桩、 动作项四个部分组成,判定表的具体结构如图2 - 4 所示: 图2 - 4 判定表结构图 规则 ( 6 ) 正交试验法 正交试验法是从海量数据中寻找有代表性的点,从而合理安排测试的一种设 计测试用例的方法。 一般情况下,正交试验法是用正交表来安排和分析试验结果,正交表一般用 l 表示,常用的有l 。( 2 7 ) 、l 9 ( 3 4 ) 、l ,。( 4 6 ) 、l 8 ( 4 $ 2 ) 。其中各符号的含义如下: 比如l b ( 2 7 ) ,其中,7 表示此表列的数目( 最多可安排的因子数) ;2 表示因 子的水平数;8 表示此表行的数目( 试验次数) 。 1 0 硕士学位论文 第二章软件测试理论与关键技术 正交表具有每一列中各数字出现的次数都一样和任何两列所构成的各有序 数对出现的次数都一样的性质。因此,用这种方法构造出来的测试用例分布比较 均匀。 正交试验法法设计测试用例的步骤如下: 步骤1 :提取功能说明,构造因子“”状态表。 步骤2 :加权筛选,生成因素分析表。 步骤3 :利用正交表构造测试数据集,正交表推导依据g a l o i s 理论。 正交试验法具有节省测试时间、可控制生成的测试用例数量、测试用例具有 一定的覆盖率等优点。 ( 7 ) 功能图法 功能图法是用功能图表示程序的功能说明,然后生成功能图的测试用例。功 能图模型由状态迁移图和逻辑功能模型构成。 功能图由状态迁移图和布尔函数组成。状态迁移图用状态表示数据的输入位 置,用迁移表明状态的改变,同时还用判定表和因果图表示逻辑功能。 以上列举的黑盒测试用例设计方法各有优缺点,适合于不同的情况,我们 需要综合起来使用。一般情况下,可以按照以下综合方法来设计黑盒测试用例。 首先进行等价类划分法,因为这种方法是减少测试工作量和提高测试效率最 有效的方法,然后进行边界值分析法,这种方法设计出来的测试用例发现错误的 能力最强,接下来用错误推测法增加一些测试用例。检查设计出的测试用例覆盖 率,如果不足就补充测试用例。当程序功能说明有输入条件组合情况时,适合用 因果图法和判定表驱动法;对于参数配置类软件,适合用正交试验法;另外,在 适合的情况下还可以用功能图法增加测试用例。 2 3 2白盒测试技术 白盒测试方法主要包括代码检查法、静态结构分析法、静态质量度量法、逻 辑覆盖法、基本路径测试法等。下面分别进行介绍。 ( 1 ) 代码检查法 代码检查包括桌面检查、代码审查和走查等,主要检查代码与设计是否一致, 代码的可读性、正确性、结构的合理性等方面。 代码检查的主要项目包括:变量交叉引用表、标号的交叉引用表、子程序、 函数、等价性检查、常量检查、标准检查、补充文档等。 代码审查和走查一般都是由程序员和测试员组成的审查小组,通过相关的程 序代码、控制流程图、规格说明书等材料的分析,来检查程序是否满足要求。 ( 2 ) 静态结构分析法 静态结构分析法主要使用测试工具分析程序源代码的系统结构、数据结构、 硕士学位论文第二章软件测试理论与关键技术 数据接口、内部控制逻辑等内部结构,生产函数调用关系图、模块控制流图、内 部文件调用关系图、子程序表、宏和函数参数表等各类图形图表,可以清晰地标 识整个软件系统的组成结构,使其便于阅读与理解,然后可以通过分析这些图表, 检查软件有没有存在缺陷或错误。 ( 3 ) 静态质量度量法 根据i s o i e c 9 1 2 6 国际标准的定义,软件的质量包括功能性 ( f u n c t i o n a l i t y ) 、可靠性( r e l i s b l r r y ) ,可用性( u $ a b l i t y ) 、有效 性( e f f i c i e n c y ) 、可维护性( m a i n t a i n a b i l r r y ) 、轻便性( p o r t a b i l i t y ) 这六个方面。静态质量度量法就是以质量模型为基础,构造出软件质量度量模型, 再依据质量度量模型,对被测试的软件进行质量分析与度量。 ( 4 ) 逻辑覆盖法 白盒测试的动态测试要根据程序的控制结构设计测试用例,其原则是: 保证一个模块中的所有独立路径至少被使用一次。 对所有逻辑值均需测试t r u e 和f a l s e 。 在上下边界及可操作范围内运行所有循环。 检查内部数据结构以确保其有效性。 逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖。它包括语句覆盖 ( s c ) 判定覆盖( d c ) 、条件覆盖( c c ) 、条件判定组合覆盖( c d c ) 、多条件 覆盖( m c c ) 和修正判定条件覆盖( m c d c ) 。 语句覆盖是指将程序中的每条语句都执行一次。这种覆盖方法对程序执行逻 辑的覆盖很低,所以语句覆盖也是最弱的逻辑覆盖。 判定覆盖是使得程序中的每个判定的真值和假值都执行一次,因此判定覆盖 又称分支覆盖。判定覆盖比语句覆盖更强,但是判定覆盖也无法发现判定中的逻 辑错误。 条件覆盖是将判定条件中的所有可能值都执行一次,但是它只要求判定条件 中的变量都取过真值和假值,而不要求组合结果的值,所以,满足条件覆盖不一 定满足判定覆盖。 条件判定组合覆盖要求判定条件中每个条件的所有可能值都取一次,而且所 有判定结果也都取一次,它比前面的几种覆盖方法更强,但它仍然无法发现某些 逻辑错误。 多条件覆盖是使得每个判定中的各种可能的组合都取一次,因此,满足多条 件覆盖的测试一定满足判定覆盖、条件覆盖和条件组合覆盖。但是,当程序中的 判定语句较多时,其条件取值的组合数目非常大。 修正条件判定覆盖是由欧美的航空航天制造厂商和使用单位联合制定的 硕士学位论文第二章软件测试理论与关键技术 “航空运输和装备系统软件认证标准”。它要求满足两个条件:首先,每一个程 序模块的入口和出口点都要考虑至少被调用一次,每个程序的判定到所有可能的 结果值要至少换一次;其次,程序的判定被分解为通过逻辑操作符( a n d 、o r ) 连接的b o o l 条件,每个条件对于判定的结果值是独立的。 ( 5 ) 基本路径测试法 基本路径测试法是在程序控制流程图的基础上,通过分析控制流图的环路复 杂性,导出基本可执行路径的集合,然后据此设计测试用例。设计出的测试用例 要保证在测试中程序的每一条可执行语句至少执行一次。 基本路径测试法适用于模块的详细设计及源程序,其主要步骤如下: 步骤1 :以详细设计或源代码作为基础,导出程序的控制流图。 步骤2 :计算得到的控制流图g 的环路复杂性v ( g ) 。 步骤3 :确定线性无关的路径的基本集。 步骤4 :生成测试用例,确保基本路径集中每条路径的执行。 以上介绍的白盒测试方法各有优缺点,在实际使用时需要综合考虑,选取最 有效的办法进行白盒测试,一般情况下,可以使用如下综合策略: 首先进行静态结构分析,这样可以排除程序中的低级语法和词法错误,为以 后的测试工作节省时间,然后通过代码检查和动态测试的方式对静态分析结果进 行进一步的确认,使测试工作更有效。一般情况下,可以使用基本路径测试法达 到语句覆盖标准,对于软件中的重点模块,需要应用多种覆盖标准衡量代码的覆 盖率。另外,在不同的测试阶段,应该采用不同的测试方法,比如在单元测试阶 段,以代码检查和逻辑覆盖为主;在集成测试阶段以静态结构分析和静态质量度 量为主等。 2 4 其他测试相关理论 2 4 1 测试自动化 自动化测试就是通过测试工具或其他手段,按照测试工程师的预定计划对软 件产品进行自动的测试,它是软件测试的一个重要的组成部分,它能够完成许多 手工无法完成或者难以实现的一些测试工作。 软件测试自动化涉及到测试流程、测试体系、自动化编译以及自动化测试等 方面的整合。也就是说,要让测试能够自动化,不仅是技术、工具的问题,更是 一个公司和组织的文化问题。首先公司要从资金、管理上给于支持,其次还要有 专门的测试团队去建立适合自动化测试的测试流程和测试体系;最后才是把源代 码从受控库中取出、编译、集成、发布并进行自动化的功能和性能等方面的测试。 目前已经有许多自动化软件测试过程的模型【4 1 k r a u s e 为自动化的软件测 1 3 硕士学位论文第二章软件测试理论与关键技术 试提出了四级成熟度模型1 4 3 1 ,在该模型中,他将软件测试成熟度模型m 和s e i ( 软件工程研究所) 的软件过程成熟度模型4 6 1 ( 演变为c m m ) 联系起来了,四 级成熟度模型中的四级分别为:附属级自动化( a c c i d e n t a la u t o m a t i o n ) ,初始级 自动化( b e g i n n i n ga u t o m a t i o n ) ,主体级自动化( i n t e n t i o n a la u r o r a a t i o n ) 。优化 级自动化( a d v a n c e d a u t o m a t i o n ) 。 所有领域的自动化水平应该达到这样一种程度,它能够根据时间和成本适应 于你的组织,你实现的自动化程度越高,你的测试过程就越好越有效。 自动化测试能够替代大量手工测试工作,避免重复测试,同时,它还能够完 成大量手工无法完成的测试工作,概括地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论