(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf_第1页
(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf_第2页
(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf_第3页
(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf_第4页
(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)软件测试过程改进方法的研究.pdf.pdf 免费下载

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

文档简介

硕士学位论文 m a s t e r st h e s i s 摘要 目前,软件测试是用来发现错误并验证软件能否实现预期功能的最主要方法之 一。在软件开发日渐成熟的进程中,软件测试无疑也得到长足发展。随着对软件质 量要求的提高,如何改进和优化测试过程已被广泛关注。软件测试过程主要包括三 个方面:测试管理、测试技术和测试人力资源等。本文选取在中兴通讯实旋测试过 程的改进实践为主要研究内容,以传统软件工程学知识和软件测试理论为基础,在 质量保证体系和能力成熟度模型下,研究软件测试过程改进在实际项目实施中遇到 的问题和解决方法,为企业测试过程的可持续改进提供科学的依据和参考。 本文主要讨论了与测试过程密切相关的测试技术、测试策略、测试生命周期模 型和质量管理体系等内容,介绍了测试过程改进中需要关注的问题,包括:1 ) 明 确过程改进的框架;2 ) 制定过程改进的策略;3 ) 分析过程改进的利害得失。 同时,以传统软件工程和测试理论为基础,结合试点项目的研究成果,参考相 关历史数据,提出了适合本组织和项目实施测试过程改进的具体方法,详细描述了 各关键测试活动的改进实例,内容包括:1 ) 提出测试过程改进活动框架,和成功 实施过程改进的必要条件,指出在过程改进中应该坚持持续改进、适当裁减的概念: 2 ) 明确实施对象,改进了测试计划、测试设计、测试执行和测试报告各阶段的活 动规范;3 ) 引入了新的测试用例充分性判断标准;4 ) 设计了更适合缺陷收集和跟 踪的分析算法;5 ) 提供了衡量测试过程改进成效的参考标准,通过可量化的数据 图表,分析试点项目在实施测试过程改进后取得的成效。 本文通过测试相关理论与生命周期模型在具体项目中的应用,展示了测试过程 改进的实施方案和效果分析。结果表明:1 ) 与项目特点紧密结合的测试过程改进 方法能够提高测试质量,增强过程能力,降低成本:2 ) 通过测试过程改进增强了 组织的预测能力;3 ) 客户满意度得到了提高。 最后指出了有待进一步研究的问题及方向。在测试领域中,需要进一步研究如 何更合理地判断测试结束准则,以及在大型项目中如何有效跟踪和运用度量数值, 确保测试的充分性。通过持续完善软件测试过程改进方法、提升测试技能与管理方 式、结合组织级度量数据进行分析等手段,能够不断提高软件开发质量,达到提升 企业综合竞争力的目的。 关键词:软件测试;过程改进;测试策略;测试用例;缺陷;自动化测试;生 命周期:度量;估算:风险 硕士学位论文 m a s t e r st h e s i s a b s t r a c t i h es o 脚a r et e s th a sb e e np r 0 v e dt ob eo n eo ft h em o s te f f e c t i v ew a y st od e t e c t d e f e c t sa n dp e r f o 肌v e r i 矗c a t i o n i ti sk e e p i n gi np r o 酽e s sd u r i n gt l l eg r a d u a lg r o w t h0 f s o f c w a r ed e v e l o p m e n tp r o c c s s w i mh i g h e rr e q u i r e m e n t so ns o 行w a r eq u a l i t yt h a nb e f b r e , t h em e t h 。d so fh a wt oi l n p r o v ea n do p t i m i z et l l et c s t i n gp m c e s sa r ep u ti n t of o c u s t h e s o f t w a r ct e s t 协gp r o c c s sc o n s i s t so fd i 丘e r e n t1 ( i n d so fo b j e d s ,1 i k et e s t i n gm a i l a g e m e n t , t e s ts k i l l sa i l dh rm a i l a g 锄e n t d e s 口i b e di i i 也j sa n i d ei st h es t u d yo fi m p l e m e n t a t i o n o nt e s t i n gp r o c e s si m p m v e m e n ti nz 1 ec 0 0 p e r a t i o n ,w h i c hi sb a s e do nb o t ht r a d i t i o n a l s o f t w a r ee n g i i l e e 血gk d o w l e d g ea n dt e s t i i l g t h e o 珊g i l i d e db yb o 也q u a l i t ya s s u r 卸c c s y s t e m s 卸dc a p 曲i l i t ym a t i l r i t ym o d e l s b yp r o v i d i n gr e s o l u t i o n sa n da l l s w e r s t o 碍喀s t i o st h a tw em e ti na c t u a lp r o j c c ta p p l i c a t i o n ,t l l i ss t i l d yc a np r o v i d es c i e n t i 6 c a l l y e v i d e n c c sf o rar c f e r e n c ct oc o n t i n u a li m p f o v e m c n to f t e s t i n gp r o c e s si na ne m e r p r i s e i th a sb e e nm a i n l yd i s c i i s s e da b o u tt e s t i i l gp r o c e s s r e l a t c da r e 勰,i i l c l u d i n gt e s t t e c i l n o l o 画e s ,t e s ts 仃a t e 百e s ,t e s tl i f cc y d em o d e l sa n dq u a l i t ym a i l a g e m 曲ts y s t e m s ,h k e : 1 ) e n s i l r et l l e 缸衄e w o r ko fp r o c c s si m p r o v e m e n t ;2 ) m a k et h es t r a t e g y o fp r o c c s s i m p r o v e m e n t ;3 ) a n a l y z et h ep o s i t i v e n e g a t i v ee 能c t so fp r o c e s si m p r o v e m e n t m e 如w h i l e ,s o m ep m c t i c a lm e t h o d s ,w h i c hh a v eb e e ns u c c e s s f i l l l y 叩p l i e di nt h e o r g a n i z a t i o na n dp r o j e c t ,a r ep r o p o s e do nt h eb a s i so fc o n v e n t i o n a ls o f c w a r ee n g i n e e r i n g a dt e s t i n gt h e o r i e s ,i n d u d i n g :1 ) p r 0 v i d et e s t j n gp m c e s si m p r 0 v e m e n t 丘a m e w o f k , n e c c s s a r yc o n d i t i o n sf o rs u c c e s s f l l l i m p r o v e m e n ta p p l i c a t i o n ,a sw e u 髂t h ec o n c c p to f c o n t i i l u o u si m p r 0 v e m e n tw i t hp r o p e rt a i l o r ;2 ) a a r i f yt h ei i n p l e m e n t a t i o nd b j e c t ,a i l d e n l l a i l c c 也ea c t i v j t yn l l e & d e s i 印o ft e s tp l a i l s ,t e s tc a s e s ,t e s tr e p o n s ,e t c ;3 ) i n t r o d u c e an e wm e t l l o do fm e a s l l r i n gt e s tc a s ea d e q u a c y ;4 ) d e s i g ns o m en e wa r i t h m e t i cm e t h o d s t ot r a c ka l l da n a l y z ed e f c c t sb e t t e r ;5 ) p r o v i d es t a i l d a r d so fe v a l u a t i n gi m p r o v e m e n tf o r f e f e r e n c e ,w h i c hh a v en u m b e r so fd i a 目a m st oh e l pa n a l y s e s o n 也eb a s i so ft e s t i n gt h e o r i e sa i l dl i f ec y d e sa p p l i e di na d u a lp r o j e c t s ,m e t h o d s h a v eb e e nd i s c u s s e di nv i e w so fq u a l i t ym a n a g e m e n ts y s t e ma n ds o f 研a r ee n 百n e e r i n g t h er e s u l ts h o w s :1 ) t h et e s t i n gp r o c e s si m p r o v e m e n tm e t h o d s ,w 王l i c ha r ec l o s e l y r e l e v a n tt of e a t u r e so ft h ep r o j e c t ,c a na c t u a l l yi m p r o v et h et e s t i n gq u a l i t y e h a i l c et h e p r o c e s sa b i l i t y ,a n dr e d u c et h e s t ;2 ) t h et e s t i n gp r o c e s si i n p r o v e m e n ta d i v i t i e se n l a r g e 硕士学住论文 m a s t e r st h e s i s t h ep r e d i d i o na b i l i t yo ft h eo r g a i l i z a t i o n ;3 ) i n c r e a s et h e 证d e xo fc u s t o m e rs a t i s f a c t i o n i nt h el a s tp a n so ft h i sa r t 王d e ,s o m es t u d y i n gi s s u e sa n dd i r e c t j o n sa r ed e m o n s t r a t e d a n dd i s c u s s e df u r t h e r i nt h et e s t i n gf i e l d ,i ti ss t 主1 li i la i lo n g o i n gs t u d yt h a th o wt oj u d g e t h em o s tr e a s o n a b l ea n dr e l i a b l ei n d j c a t o r s i nm e a s u r e m e n ta n ds 锄eo 瞳h e rf i e l d s ,w e s h o u l dd om o r er e s e a r c h e so nt h es o 仃w 缸ep r o c e s si m p r o v e m e n tm e t h o d s i 【e yw o r d s :s o f 时a r ct e s t :t e s t i n gi m p r o v 锄e n t ;t c s t i n gs t f a t e g y : t e s tc a s e ;d e f e c t a u t o m a t e dt e s t ;l i f ec y c i e ;m s l l r e m e n t :e s t i m a t i o n ;一s k 硕士举住论文 m a s t e r st h e s i s 华中师范大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作 所取得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本声明的法律结果由本人承担。 作者挠粥呸 日期:辨 月叼日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借 阅。本人授权华中师范大学可以将本学位论文的全部或部分内容编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 作者签名:身亵本丐 日期:年,1 月巧日 导师签名:叶倔亿 日期:。年月z 日 本人已经认真阅读“c a l i s 高校学位论文全文数据库发布章程”,同意将本人的 学位论文提交“c a l i s 高校学位论文全文数据库”中全文发布,并可按“章程”中的 规定享受相关权益。园童途塞堡銮后溢卮;旦主生;旦二笙;旦三生筮壶! 作者签名:豌、奔j 日期:搿 - 胄蟛8 导师签名:叶但盛 日期:如6 年月易日 硕士学位论文 m a s t e r st h e s i s 1 1 选题的意义 第一章绪论 随着计算机在各个领域的普及与发展,软件业的壮大和软件过程的成熟,软件 测试与软件开发一样逐渐受到重视。测试工作由早期的软件开发人员个人完成到逐 渐演变为包括拟制计划、编写用例、准备数据、执行测试、测试评估等系列活动在 内的过程集合,测试方式由单纯手工测试,发展为手工测试和自动化测试并举。由 于不论采取什么开发技术和方法,软件中都会存在缺陷,使得测试工作变得倍受关 注。随着软件危机的频频出现以及对软件本质的进一步认识,如何改善和提高软件 测试过程得到了前所未有的关注。如何正确地对待软件测试过程,不断研究和深化 软件测试过程改进方法的意义,主要体现在以下几个方面: ( 1 ) 在整个软件生命周期中,软件测试工作涉及到软件开发的全过程,必须使 测试过程尽可能的高效和有效。虽然测试工作往往被认为是软件开发中必备的步 骤,但很多时候测试没有作为一项必须进行的活动,在许多项目中,测试过程甚至 被忽略。而实际上,在软件开发之前和完成之后都必须坚持进行测试。开发之前要 了解用户需求,不断进行需求调研和评审,在开发过程中,要依据软件需求进行集 成、系统测试,而当应用程序完成后还需要进行验收测试以确保产品满足用户需求。 只有在整个生命周期中坚持测试,才能不断地提高应用程序质量。因此必须加大软 件测试在软件生命周期中的地位,不断改进测试过程,有效地开展高效的测试活动。 ( 2 ) 通过改进测试过程,提高软件产品应用质量。重视软件产品质量的投入、 从源头上提高软件质量,是保障企业竞争实力的有效手段之一。在经济全球化的时 代,强大的企业综合实力是在残酷的市场竞争中获胜的前提。现在越来越多的企业 采用e r p ( e n t e r p r i s er e s o u r c ep l a n n i n g ,企业资源计划) 、c r m ( c u s t o m e r r e l a t i o n s h i pm a n a g e m e n t ,客户关系管理) 和s c m ( s u p p l yc h a i nm a n a g e r m e n t ,供 应链管理) 等国际先进的运营系统来提高企业生产能力以及业务处理能力。然而在 使用中会经常发现这些软件系统在易用性、可靠性和稳定性上还存在许多有待改善 的地方,尤其是在高质量的软件运作体系方面有着明显缺陷。要拥有高质量的软件 应用和管理系统,企业在进行建设和规划时,必须严格管理软件测试过程,制订严 格的测试规范,才能使产品在系统上线之前进行专业的功能和性能等测试,确保应 用系统的质量和可靠性。 硕士学位论文 m a s t e r s t h e s l s ( 3 ) 帮助企业成功向国际化方向发展。随着软件行业的发展,软件企业要在国 内站稳脚跟并跨出国门,是否重视软件测试过程管理,如何提高软件测试效率和质 量已成为制约国内企业生存的核心因素。对比国外可以看到,国外软件开发机构会 把4 0 的工作花在测试上,测试费用则会占到软件开发总费用的3 0 到5 0 ,对于一 些要求高可靠性、高安全性的软件,测试费用则相当于整个软件项目开发费用的3 至5 倍。而作为国际化竞争主体的国内企业,则必须以全局眼光来全面审视自己的 核心软件竞争力,建立科学、完善的测试管理体系,使软件测试过程的改进在提升 企业整体竞争力中发挥巨大的作用。 1 2 软件测试过程改进的国内外研究动态 ( 1 ) 国外研究动态 2 0 世纪5 0 年代,英国著名的计算机科学家图灵就给出了软件测试的原始定义。 早期测试主要针对机器语言和汇编语言,设计特定的测试用例并运行被测程序,将 所得结果与预期结果进行比较,从而判断程序的正确性。测试用例一般在随机选取 的基础上根据测试人员的经验判断某些重点测试区域。但测试过程在软件开发中的 作用并没有受到应有的重视,到2 0 世纪7 0 年代以后,测试的意义才逐渐被认识, 软件测试过程的研究才开始受到重视,并在不断改进中得到更新。f p b r o o k s ”总 结了开发i b mo s 3 6 0 操作系统中的经验,阐明了管理好软件测试过程在大型系统 研制中的重要意义。1 9 7 5 年,h u a n 4 全面地讨论了测试准则、测试过程及测试数 据生成等软件测试问题。w c h e t z e l m 3 整理出版了p r o g r 鲫t e s tm e t h o d s 一书, 总结归纳了测试方法以及各种自动测试工具。e p m i l l e r “”则在测试管理、测试过 程改进和普及方面做了大量工作,把现代测试概念推向了实践。2 0 世纪7 0 年代, 软件工程的概念逐渐形成,把软件开发活动划分成需求分析、设计、编码、测 试和维护几个阶段的软件生存期的概念被广泛接受。1 9 8 0 年针对程序域错误, l w h i t e 旧1 等人提出了一种新的测试策略域测试策略,后来发展成为有效的模 块测试方法。1 9 8 6 年l j h a y e s 1 提出规格说明指导测试的方法,主张在早期开 发中就应考虑测试的需求。1 9 8 8 年h a l l ”“提出了利用z 规格说明进行软件测试数 据生成的方法。1 9 9 0 年t s a i 1 提出从关系代数查询表示的规格说明中生成测试数 据的方法。1 9 9 4 年w e y u k e r o ”对基于过程控制的形式化规格说明方法进行改进, 提出了基于布尔规格说明的测试数据生成方法。1 9 9 5 年m a r i c k 。”给出了许多软件 测试工程方面的技巧和改进,包括从规范说明寻找测试线索,借助测试需求目录产 生测试需求清单,通过指派确切的输入和期望的输出值形成测试规范,进而测试程 硕士学位论文 m a s t e r st h e s i s 序的全过程。为推进和协调软件测试的研究工作,1 9 9 9 年在美国洛杉矶召开的第 2 l 届国际软件工程会议上,软件测试及其过程作为技术专题开展了讨论“。近些 年来,国外在软件测试过程方面的理论和技术上均有了很大的发展,形成了一套较 为完善的软件测试过程技术和管理理论体系,测试方法与手段日趋成熟和多样化。 ( 2 ) 国内研究动态 软件测试在我国起步较晚,最初主要在项目组内部由开发人员进行自测。近些 年来,随着计算机在我国许多重要部门和企业的广泛使用,软件测试的研究逐渐被 重视起来,在软件测试管理、软件测试技术以及软件测试工程方法上取得了些初 步的研究成果。例如,中国科学院计算技术研究所进行的软件测试方法研究,信息 产业部电子第3 2 研究所进行的软件测试自动化管理系统的研究,北京大学计算机 科学系进行的面向对象软件测试工具、测试建模和测试数据生成技术及相关问题的 研究;华中科技大学计算机学院基于并行工程的软件测试模型研究,上海计算机软 件技术开发中心进行的软件测试管理的研究,以及北京航天航空大学软件工程研究 所进行的软件测试工程化方法的研究等。研究表明,软件测试是对软件需求分析、 设计规格说明和编码的最终验证,是软件质量保证的关键元素。软件测试的过程必 须在软件投入生产运行之前尽早开始,以便尽早地发现软件中的故障,提高软件可 靠性。在测试过程中利用自动化辅助工具可以改善测试效率。 然而,无论是传统还是最新的软件测试理论和技术,在软件测试管理、测试过 程的理解和实施方法上仍然存在着局限性,对在实际项目中实施和改进软件测试工 作方面指导性不强。因为现有的研究成果重在理论探讨,较少与具体项目挂钩,降 低了对研究实践的参考价值。此外,缺乏对测试过程与测试管理、测试技术和企业 文化之间的关系的关注,往往分开独立研究和描述。没有针对具体的试点项目进行 分析说明。同时,尽管在很多文献中谈到度量,但没有将度量与可持续的测试过程 改进进行必然关联。上述问题决定了在实旌测试过程改进的工作中,不能直接照搬 他人的成功经验。因此,本文在结合项目特色和测试过程思想的基础上,探讨了更 适合所在组织和所研究项目的软件测试过程改进方法。 1 3 主要研究内容与论文结构 在软件企业中,需要加强全过程测试管理和研究改进策略,搭建总体测试控制 架构。本文选取如何在企业中贯彻和加强软件测试过程改进的方法为研究单元,采 用软件工程学的理论和方法,并结合c m i 等质量改进模型,来研究测试过程改进 的有效方法。 硕士擎住论文 m a s t e r st h e s i s 本论文运用软件测试的基本技术以及国内外最新的研究成果,选取软件测试过 程中涉及的多个测试生命周期模型,讨论了在国内企业中推行软件测试过程改进的 可行性方法,并对测试过程改进实施过程中的经验数据和度量值的变化进行了分析 研究,从而有助于揭示企业在推行软件测试过程改进时可供参考的最佳方法,所需 付出的成本,将会获得的收益,以及对软件组织的影响规律;同时,也利用数据和 图表对进一步的改进做一些技术性的探索。 本论文共分六章,总体结构安排如下: 第一章绪论 主要阐述了论文选题的意义,概述了软件测试过程改进产生的背景以及发展现 状,从软件企业国际化的角度,介绍了加强软件测试过程改进工作对于企业发展的 深远影响。综述近2 0 年国内外学者在软件测试过程改进领域的研究成果,并对此作 了简要回顾,然后对全文的总体布局作了概括说明。 第二章研究基础 主要对软件测试的概念和相关定义进行了梳理。给出了测试目的、测试原则、 测试类型、测试用例的定义及其分类,讨论了软件测试策略的选择依据,讲述了软 件测试生命周期以及测试过程的不同模型与选择策略,并介绍了c 埘、c 删i 、i s 0 9 0 0 0 和t 删等质量规范。 第三章软件测试过程改进 主要对如何进行软件测试过程改进进行了分析,讨论了测试过程改进的框架, 以及在改进过程中需要制定的战略规划和策略选择,讲述了在测试过程改进中如何 获得组织支持,和可能遇到的障碍。 第四章软件测试过程改进实践 主要依据软件测试过程改进的策略和思想,结合项目中的实际应用,分别对各 个测试活动进行分析,并阐述了测试计划、测试用例、缺陷处理、度量收集和测试 报告的处理方法。 第五章软件测试过程改进评价 主要分析测试过程改进结果的变化趋势和评价方法,列举在测试过程改进中可 能遇到的问题,探讨促成软件测试过程改进和质量提高的主要原因。 第六章结论与进一步研究展望 在总结全文的基础上,综述了全文的特点和所做的研究工作,探讨了软件测试 过程改进的发展趋势,和在进一步研究方面的若干问题。 硕士学住论文 m a s t e r st h e s i s 2 1 软件测试技术 第二章研究基础 2 1 1 测试目的与原则 测试的目的决定了整个测试活动的方针与政策。如果测试的目的是证明程序中 没有缺陷,就会在测试过程中自然地回避可能出现故障的地方,从而极大降低测试 结果的可靠性。相反,如果测试的目的是证明程序中存在缺陷,就会在测试中力求 发现缺陷。g 1 e n i y e r s “”在其关于软件测试的著作中陈述了一系列可以服务于测试 目的的规则: ( 1 ) 测试是一个为了发现错误而执行程序的过程。 ( 2 ) 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。 ( 3 ) 一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。 事实上,测试的目标就是能够通过一组有效的测试用例系统地揭示不同类型的 错误,并且耗费最少时间与最小工作量。同时,测试结果本身无法说明软件不存在 错误和缺陷,它只能表示软件错误和缺陷曾经出现过。在进行有效的测试之前,还 需要了解软件测试的基本原则1 : ( 1 ) 所有的测试都应可追溯到客户需求。 ( 2 ) 应该在测试工作执行真正开始前较长时间就进行测试计划。 ( 3 ) 将二八原则应用于软件测试。 ( 4 ) 测试应从“小规模”开始,逐步转向“大规模”。 ( 5 ) 不需进行穷举测试,然而有必要充分覆盖程序逻辑并确保使用程序设计中 的所有条件。 ( 6 ) 为了达到最有效的测试,应该由独立的第三方团队实施测试活动。 2 1 2 软件测试的类型 黑盒测试和白盒测试是广泛使用的两种测试类型。 ( 1 ) 黑盒测试又称功能测试。黑盒测试的基本观点是:任何程序都可以看做是 从定义域映射到值域的函数。该观点将被测程序看做一个关闭的黑盒子,里面的内 容对测试人员而言是未知的。在用黑盒测试方法设计测试用例时,测试人员所使用 的惟一信息就是软件的需求浣明书,在完全不考虑程序内部结构和内部特性的情况 硕士举住论文 m a s t e r st h e s i s 下,只依靠被测程序输入和输出之间的关系或程序的功能来设计测试用例,推断测 试结果的正确性,即所依据的只是程序的外部特性。 ( 2 ) 自盒测试又称结构测试,或者基于程序的测试。自盒测试将被测程序看做 一个打开的盒子,测试人员可以看到被测的源程序,可以分析被测程序的内部构造。 此时测试人员可以完全不考虑程序的功能,只根据其内部构造设计测试用例。 ( 3 ) 黑盒测试与白盒测试的比较 黑盒测试和白盒测试是两种完全不同的测试方法,它们的出发点不同,反映了 事物的两个极端。它们各有侧重,都有坚定的理论拥护者。r o b e r tp o s t o n ”认为: “白盒测试自2 0 世纪7 0 年代以来一直在浪费测试人员的时间它不支持良 好的软件测试实践,应该从测试人员的工具包中剔除”,而e d w a r dm i l l e r ”则认 为:“如果能达到8 5 或更好的分支覆盖率,那么白盒测试能识别出的软件故障, 一般是黑盒测试能找出的故障的两倍”。事实上,黑盒测试和白盒测试在测试实践 中都非常有效而且都很实用,两者互相补充。 黑盒测试基于外部规格说明,它根据需求说明书设计测试用例,不涉及程序的 内部结构。因此,黑盒测试有两个显著的优点:第一,黑盒测试与软件具体实现无 关,所以如果软件实现发生了变化,测试用例仍然可以使用。第二,设计黑盒测试 用例可以和软件实现同时进行,因此可以压缩项目总的开发时间。然而,黑盒测试 的缺点是需求说明书无法保证其完全正确。如果程序的外部特性本身有问题或者需 求说明书的规定有误,例如说明书中规定了多余的功能或是漏掉了某些功能,黑盒 测试则无法进行判断。另一方面,白盒测试只根据程序的内部结构进行测试,而不 考虑其外部特性。白盒测试要求对被测程序的代码实现一定程度的覆盖。测试人员 可以严格定义要测试的确切内容,明确提出要达到的测试覆盖率,以减少测试的盲 目性。如果要求被测软件“做了所有它该做的事,而没有做一点它不该做的事“, 就需要把黑盒测试与白盒测试结合起来使用。 2 1 3 测试用例设计 测试用例是软件测试的核心。每个项目都需要一套优秀的测试方案和测试设计 方法,来保证以最少的人力和资源投入,在最短的时间内完成测试并发现软件系统 的缺陷,保证软件的优良品质,因此它是测试工作的指导,是软件测试的必须遵守 的准则,更是软件测试质量稳定的根本保障。 测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方 法、技术和策略,其内容包括测试目标、测试环境、输入数据、测试步骤、预期结 顾士学住论文 m a s t e r st h e s l s 果、测试脚本等,并形成文档”3 。编制测试用例需要遵循以下具体做法: ( 1 ) 测试用例文档模板 编写测试用例文档时应有文档模板,须符合内部的规范要求。测试用例文档将 受制于测试用例管理软件的约束。软件产品或软件开发项目的测试用例一般以该产 品的软件模块或子系统为单位,形成一个测试用例文档。 ( 2 ) 测试用例的设置 早期的测试用例类似功能清单,是按功能设置用例。后来逐步演变为按功能、 路径混合模式设置测试用例。按功能测试是最简捷的,按用例规约遍历测试每一功 能。而路径分析最大的优点是在于可以避免漏测试。但路径分析法也有局限性,比 如一个稍微复杂的模块常常会有几十到上百条路径,因此需要根据实际情况进行选 择。 ( 3 ) 设计测试用例 测试用例可以分为基本事件、各选事件和异常事件。基本事件的测试用例应包 含所有需要实现的需求功能,覆盖率达l o o 。设计备选事件和异常事件的用例,则 可以采用常用的基本方法:等价类划分法、边界值分析法、错误推测法、因果图法、 逻辑覆盖法等。在实际工作中,需要灵活运用各种基本方法来设计完整的测试用例。 2 1 4 软件测试覆盖准则 软件测试覆盖准则是用来判定测试用例是否充分的重要依据。测试覆盖分为逻 辑覆盖、功能覆盖和需求覆盖等,其中,逻辑覆盖准则是以程序内部的逻辑结构为 基础设计的白盒测试用例,要求对被测程序的逻辑结构有清楚的了解。逻辑覆盖又 可分为语句覆盖、判定覆盖、条件覆盖、判定条件覆盖及路径覆盖等。 语句覆盖要求设计若干测试用例,运行被测程序,使程序中的每个可执行语旬 至少被执行一次。与其他几种逻辑覆盖相比较,语句覆盖是比较弱的覆盖准则。 判定覆盖要求设计若干测试用例,运行被测程序,使得程序中每个判断的取真 分支和取假分支至少执行一次,即判断的真假值均要被检测。判定覆盖又称为分支 覆盖。 条件覆盖要求设计若干测试用例,执行被测程序,使得程序中每个判断的每个 条件的可能取值至少被执行一次。 判定条件覆盖要求设计足够的测试用例,执行被测程序,使得判断中每个条 件的所有可能取值至少被执行一次,同时每个判断的所有可能判断结果也至少被执 行一次。 硕士学住论文 m a s t e r st h b s i s 路径覆盖要求设计足够多的测试用例,覆盖程序中所有可能的路径。在实际问 题中,要在测试中覆盖所有的路径是不可能实现的,只能把覆盖的路径数压缩到一 定限度内,有选择地测试程序中有代表性的路径。 此外,还有数据流测试覆盖准则,包括定义覆盖、引用覆盖、定义一引用覆盖 准则等;面向对象的类覆盖和方法覆盖准则”1 ;以及针对黑盒测试的功能覆盖、需 求覆盖和场景覆盖准则等。 2 2 软件测试策略 2 2 1 测试阶段划分 软件测试是在软件投入运行前,对软件需求分析、设计说明和编码进行确认, 在软件生存期中占据着重要位置。程序中的故障并不一定是由编码引起,也可能是 由详细设计、概要设计阶段,或者需求分析阶段的问题引起,即使针对源程序进行 测试,发现故障的根源也可能属于开发前期的各个阶段。解决问题、排除故障也必 须追溯到前期的工作。软件工程界普遍认为:在软件生存期的每一阶段都应进行评 测,检验本阶段的工作是否达到了预期的目标,尽早地发现并消除故障,以免因故 障延时扩散而导致后期测试困难。“。因此,软件测试应贯穿于软件定义与开发的整 个期间。测试阶段主要包括:单元测试、集成测试、确认测试、系统测试和验收测 试等,可以针对不同的测试过程作出相应的裁减。 ( 1 ) 单元测试 单元测试是在软件开发过程中进行的最低级别的测试活动,其测试的对象是软 件设计的最小单位。在传统的结构化编程语言中( 比如c 语言) ,单元测试的对象 一般是函数或子过程。在类似c + + 这种面向对象的语言中,单元测试的对象可能是 类,也可能是类的成员函数。单元测试的原则同样也可以扩展到第四代语言( 4 g l ) 中,而单元被典型地定义为一个菜单或显示界面。单元测试一般在编码之后进行, 由于每个模块在整个软件中并不是孤立的,在对每个模块进行测试时,需要考虑它 和周围模块之间的相互联系。为模拟这一联系,在进行单元测试时,必须设置若干 个辅助测试模块,即驱动模块和桩模块。 ( 2 ) 集成测试 当每个模块都能单独工作后,需要将这些模块组装起来验证是否正常。程序在 某些局部反映不出的问题,很可能在全局上暴露出来,影响到功能的正常发挥。因 此,在每个模块完成单元测试以后,需要按照设计的程序结构图,将它们组合起来, 8 进行集成测试。集成测试是按设计要求把通过单元测试的各个模块组装在一起,检 测与接口有关的各种故障。非增式集成测试法是独立地测试程序的每个模块,然后 再把它们组合成一个整体进行测试;增式集成测试法先把下一个待测模块组合到已 经测试过的那些模块上去,再进行测试,逐步完成集成。 ( 3 ) 确认测试 集成测试完成以后,分散开发的模块被连接起来,构成了一个完整的程序,其 中各模块之间存在的种种问题己被消除,于是进入了确认测试阶段。所谓确认测试, 是对照软件需求说明书,对软件产品进行评估以确定其是否满足软件需求的过程。 在软件开发过程中或完成以后,为了对它在功能、性能、接口以及限制条件等方面 做出切实的评价,就应进行确认测试。 ( 4 ) 系统测试 软件只是计算机系统的一个重要组成部分,软件开发完成以后,还应与系统中 其他部分联合起来,进行一系列系统联调测试,以保证系统各组成部分能够协调地 工作。系统测试实际上是针对系统中各个组成部分进行的综合性检验,很接近臼常 测试实践。系统测试的目标不是要找出软件故障,而是要证明系统的性能。一般认 为:独立测试机构在测试过程中查错积极性高并且有解决问题的专业知识“。因此, 系统测试最好由独立的测试机构完成。 ( 5 ) 验收测试 验收测试是将最终产品与最终用户的当前需求进行比较的过程,是软件开发结 束后软件产品向用户交付之前进行的最后一次质量检验活动,它解决开发的软件产 品是否符合预期的各项要求,用户是否接受等问题。验收测试不只检验软件某方面 的质量,还要进行全面的质量检验并决定软件是否合格。因此,验收测试是一项严 格的、正规的测试活动,并且应该在生产环境中进行。如果软件是按合同开发的, 在合同中规定了验收标准,则验证测试由签订合同的用户进行。如果产品不是按合 同开发的,开发组织可以采用其他形式的验收测试a l p h a 测试和b e t a 测试。 a 1 p h a 测试和b e t a 测试都是在指定的时间内以生产方式运行并操作软件。 a 1 d h a 测试一般在开发公司内,由最终用户进行。被测试的软件由开发人员安排在 可控的环境下进行检验并记录发现的故障和使用中的问题。b e t a 测试则一般在开发 公司之外,由经过挑选的真正用户群进行,它是在开发人员无法控制的环境下,对 要交付的软件进行的实际应用性检验。在测试过程中用户要记录遇到的所有问题, 并且定期向开发人员通报测试情况。a l p h a 测试和b e t a 测试都要求仔细挑选用户, 要求用户有使用产品的积极性,能提供良好的硬件和软件配置等。 硕士学位论文 m a s t e r l st h e s ,s 2 2 2 验证和确认 验证是对需求说明书、设计规格说明和代码之类的产出物进行评审的过程,可 应用到开发过程中所有产出物上,以确保该阶段的产品与期望的一致。确认是在开 发过程中或结束时进幸亍的评估系统或组成部分的过程,目的是判断系统是否满足规 定的要求,包括实际软件或仿真模型的运行,是“基于计算机的测试”。验证和 确认是为捕获不同类型的软件故障而设置的过滤器,它们相互补充,以保证最终软 件产品的正确性、完善性和一致性。 软件包括程序以及开发、使用和维护程序所需的所有文档。程序只是软件产品 的一个组成部分,表现在程序中的故障,并不一定是由编码所引起的。实际上,软 件需求分析、设计和实施阶段都是软件故障的主要来源。因此,软件测试不仅包含 对代码的测试,而且包含对软件文档和其他非执行形式的测试。验证测试就是针对 开发过程中的任何中间产品进行的测试。按照i e e e a n s i 的定义,验证测试是为确 定某一开发阶段的产品是否满足在该阶段开始时提出的要求而对系统或部分系统 进行评估的过程。所谓验证,是指确定软件开发的每个阶段、每个步骤的产品是否 正确无误,是否与上游阶段的产出物相一致,对诸如软件需求说明书、设计规格说 明和代码之类的产品进行评估、审查和检查的过程,属于静态测试。如果是针对代 码,就是指代码评审,或者称为代码走查。另一种称之为确认的测试则只能通过运 行代码来完成。按照i e e e a n s i 的定义,确认测试是在开发过程中或结束时,对系 统或部分系统进行评估以确定其是否满足需求说明书的过程。所谓确认,是指确定 最后的软件产品是否正确无误,包括实际软件或仿真模型的运行,是动态测试。从 广义上讲,测试= 验证+ 确认。确认测试包括前述的单元测试、集成测试、确认测试、 系统测试和验证测试等。确认和验证互相关联,但也有明显的区别。相应的验证测 试计划和确认测试计划涉及不同的内容。总之,确认和验证互相补充,保证最终软 件产品的正确性、完全性和一致性。 ( 1 ) 验证是对软件产品进行评审或人工检查的过程。 验证的基本方法有:审查、走查、单人复审、多人复审等,它们有许多相似之 处,但也 不尽相同,通常审查是最正规的方式。具体的验证活动包括计划评审、需求评审、 架构设计评审、代码走查、测试用例评审、测试报告评审等。 正式评审、技术评审以及软件评审是审查的几种不同说法。审查以会议的形式 进行,利用集体的智慧查找软件产品中存在的问题,从而保证软件产品的质量。软 件审查的对象可以是任何重要的工作产品,例如,软件需求、概要设计、详细设计 硕士举住论文 m a s t e r st h e s i s 等阶段的成果以及源程序代码、测试计划和测试用例等。审查的目标是为了哉出软 件中存在的问题不仅是出错的地方,还包括遗漏或多余的地方。审查要遵守一 套固定的规则,比如设定要审查的工作量,提前预审的时间以及正式评审会的时间 安排等,其重要性在于使评审人员了解自己的作用及预期的目标,这样有助于使审 查工作进展顺利。参加评审的人员包括需求设计人员、开发人员、测试人员和第三 方同行专家,以3 至6 人为宜,这样可以使会议参加者听到更多的不同声音。每 一个参审人员都应了解自己的责任和义务,为审查做好准备,并积极参与审查工作。 审查过程中找出的问题大部分是在预审期间发现的,评审会上进行确认。审查小组 必须做出总结审查结果的书面报告,诸如发现了多少问题,在哪里发现的,以便于 开发成员进行修改。 走查不像审查那么正式,准备工作一般由主持者负责,参加人员只是简单地参 加会议,在会议前不需要做更多的准备工作。走查的目标是:熟悉材料、发现软件 故障。走查的会议只有主持人必须事先准备。主持人通常是待评审材料的作者。走 查的输入是被检查的材料以及可使用的标准等。走查的输出是走查报告。因为主持 人是作者,其他参加人员没有多少负担,使得走查工作的覆盖面可以比审查大一些, 从而给更多的入提供了一个熟悉了解材料的机会。有时,走查的目的不是为了发现 软件故障,而只是为了熟悉材料,进行交流。走查对象可能是“继承”过来的,如 果能发现一些问题当然好,但主要目的是使自己更加熟悉材料,了解产品。由于走 查的主持人是作者本人,使得检查的客观性受到一定影响,这是走查工作的不足。 单人复审和多人复审通常是在编写代码的程序员和充当审查者的其他一、两个 程序员或测试人员之间进行,这个小团体只是在一起走读代码或其他材料,寻找问 题和失误。这种方式最为灵活,同时也是要求最低的一种验证方式。 ( 2 ) 确认测试 确认测试以需求说明书中的规定作为检验尺度,在开发过程中或结束时,对系 统或组成部分进行评估,确认开发的软件是否满足需求说明书规定的所有功能和性 能,文档资料是否完整、人机界面和其他方面是否令用户满意,例如可移植性、兼 容性、故障恢复能力及可维护性等。 确认测试活动包含的任务有单元测试、集成测试、系统测试、确认测试、验收 测试以及综合起来的各种测试

温馨提示

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

评论

0/150

提交评论