(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf_第1页
(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf_第2页
(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf_第3页
(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf_第4页
(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf_第5页
已阅读5页,还剩77页未读 继续免费阅读

(计算机应用技术专业论文)基于正交对的分布式软件测试研究与实现.pdf.pdf 免费下载

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

文档简介

基于正交对的分布式软件测试研究与实现 摘要 摘要 随着人们对软件产品质量要求的不断提高,作为保障软件质量重要手段的软件测 试技术逐渐被重视和应用。为提高软件测试的水平,实现软件测试的规范化,本文对 软件测试进行了深入探讨和研究,分析了常用测试方法的测试依据和各自特点,对一 些主要的软件测试技术进行了比较和总结。为解决测试用例生成这一关键问题,本课 题将正交拉丁方理论引入软件测试,提出了基于正交对的测试用例的具体设计方案, 用以产生优化的测试集合:然后基于此方案开发了一个实用软件工具s t c g ,运用该 工具设计测试用例。最后,结合实际软件项目“恒信协同工作平台”的验收测试, 探讨了如何构建高效的分布式软件测试管理平台,以及应用正交对的测试用例生成方 法设计出功能覆盖度高的用例,以发现系统中存在的功能缺陷。 实践表明,通过构建高效的分布式软件测试管理平台,能够在较短的时间内有效 地找出软件产品的缺陷和尽可能多地发现系统隐患,并能成功避免很多无效或低效的 重复测试。在软件测试过程中,测试用例的设计十分关键,由于基于正交对的测试用 例设计具有“均匀分散、整齐可比”的特点,在所生成的测试用例中,每个输入参数 的每个值域与其它参数的值域都有一次对应,这样运用较少的测试用例就能实现对软 件较全面的测试,因而是一种解决多参数测试问题卓有成效的方法。 本文就软件测试技术以及第三方评测机构对于软件研发项目的用户验收测试进 行了有益的探索和研究,通过具体的实践,为软件产品的成功投入应用提供了科学的 依据和保障。 关键词:软件测试,正交对,测试用例,分布式测试 作者:董蕾 指导教师:吕强 a b s t r a c t w i t ht h ed e m a n d so fi m p r o v i n gs o f t w a r ep r o d u c t q u a l i t y , s o f t w a r e t e s t i n gi sg r a d u a l l ys t r e s s e da n da p p l i e da st h ei m p o r t a n tm e a n sf o rs o f t w a r e q u a l i t ya s s u r a n c e t h ep a p e rm a k e st h ed e e pd i s c u s s i o na n dr e s e a r c ho n s o f t w a r et e s t i n g ,t h ed e t a i l e da n a l y s e so nt h er e s p e c t i v ec h a r a c t e r i s t i c so fe a c h t e s tm e t h o d s ,a n dt h ep a r t i c u l a rc o m p a r i s o n so fm a i ns o f t w a r et e s tt e c h n i q u e i no r d e rt oc r e a t eb e t t e rt e s tc a s e ,t h ep a p e ri n t r o d u c e st h eo r t h o g o n a ll a t i n s q u a r ec o n c e p ta n dp u t sf o r w a r dp a i r - w i s et e s t i n gb a s e do nt h eo r t h o g o n a l a r r a y st h e o r y c o m b i n i n gw i t ht h ec h e c kt e s to f h e n g x i nw o r k i n gp l a t f o r m 2 0 ”,t h ep a p e rm a i n l yf o c u so nh o wt od e v e l o pa ne f f e c t i v ed i s t r i b u t e dt e s t m a n a g e m e n tp l a t f o r m ,a n dh o wt oc r e a t eaf u n c t i o n a lt e s tc a s eb yp a i r - w i s e t e s t i n gs oa st of i n dt h ef u n c t i o nb u g p r a c t i c et e l l st h a tt h ee f f e c t i v ed i s t r i b u t e dt e s tm a n a g e m e n tp l a t f o r mc a n f i n dt h eb u ga n dh i d d e np r o b l e ms h o r t l y ,a n da v o i dm a n yi n v a l i d a t eo r l e s s e f f e c t i v et e s tr e p e t i t i o n t e s tc a s ed e s i g ni sv e r yi m p o r t a n ti ns o f t w a r e t e s t w i t ht h e c h a r a c t e r i s t i c s o f “u n i f o r m i t y a n dd e c e n t r a l i z a t i o n o r d e r l i n e s sa n d c o m p a r a b l e ”,p a i r - w i s et e s t i n gp r o v e s t ob eaf r u i t f u l m u l t i - f a c t o rs o l v e rt om a x i m i z et e s t i n gr e s u l t sw i t hm i n i m i z ee f f o r t s ,i nw h i c h e v e r yl e v e lo fe v e r yi n p u tf a c t o rc o r r e s p o n d so n c et ot h el e v e lo fo t h e rf a c t o r s t h ep a p e rc i t e sac u s t o m e rc h e c kt e s tt e s t e db yat h i r d - p a r t ys o f t w a r e t e s t i n go r g a n i z a t i o n t h ep r a c t i c ep r o v e st h a tas u c c e s s f u lt e s tc a ng u a r a n t e e b e t t e ra p p l i c a t i o no f t h es o f t w a r ep r o d u c t s k e y w o r d s :s o f t w a r et e s t i n g ,p a i r - w i s eo r t h o g o n a lt e s t i n g ,t e s tc a s e , d i s t r i b u t e dt e s t w r i t t e nb yd o n gl e i s u p e r v i s e db yl vq i a n g 。y ;9 5 6 7 1 二 苏州大学学位论文独创性声明及使用授权声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工 作所取得的成果。除文中已经注明引用的内容外,本论文不含其他个人或集体已 经发表或撰写过的研究成果,也不含为获得苏州大学或其它教育机构的学位证书 而使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确 方式标明。本人承担本声明的法律责任。 研究生签名 学位论文使用授权声明 日期:匹:l ! :塑 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文合作部、 中国社科院文献信息情报中心有权保留本人所送交学位论文的复印件和电子文 档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质 论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以 公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权苏州大 学学位办办理。 研究生签名日期:堑! ! :! 导师签名:驰日期:盘! :型 基于正交对的分布式软件测试研究与实现 引言 引言 随着信息技术的飞速发展以及知识经济时代的到来,计算机的应用 已经渗透到国民经济和国防建设的各个部门,甚至人类活动的各个领域, 软件产品的质量也成为人们共同关注的焦点。不论软件的生产者还是软 件的使用者,都生存在竞争的环境中。软件开发商为了在激烈的竞争中 占有软件市场,必须把产品质量作为企业的重要目标之一。用户为了提 高工作效率、确保业务的顺利开展,当然也希望选用优质的软件。但在 软件的整个开发过程中,面对如此大规模、高复杂度的软件系统,人不 可避免地会出现错误,而且有时这些错误在短时间内还不容易发现。因 此,为了提高软件质量,提高开发软件的效率,人们需要采取一种手段, 能迅速检测并纠正软件中的错误。在这一背景下,以软件测试为中心的 软件质量保障技术在软件生产实践中得到了迅速的发展,软件测试已成 为软件生产中必不可少的质量保障手段。 软件测试是一项十分艰巨的任务。一方面,软件自身的特点决定了 软件测试的难度。作为一种逻辑运算的抽象组合,软件要满足千差万别 和千变万化的越来越复杂的应用需求,这使得软件功能繁多、复杂而庞 大;另一方面,从技术的角度来看,软件测试是对创造力和智力具有极 大挑战性的任务。因此,软件测试理论和技术都需要不断地发展,以适 应不断发展和改进的软件开发方法。 从目前情况来看,软件测试还存在着一些普遍问题,如手工测试、 单机测试比较普遍,测试流程不规范,缺少必要的测试跟踪和评估手段, 软件测试方法未能真正运用于实际的工程项目中等。软件测试是一项严 谨的工作。随着当今软件规模和复杂性的日益增加,进行专业化高效软 件测试是非常必要的,也是至关重要的,同时也是保证软件质量的重要 途径之一。 本文首先对软件测试技术进行综述,分析和总结已有的软件测试技 , jf;、u,i-日- 引言基于正交对的分布式软件测试研究与实现 术。然后针对测试用例生成这一软件测试过程中的关键性工作,介绍了 正交拉丁方的基本概念和构造方法,提出基于正交对的测试用例设计方 案,并介绍了软件实现的主要功能模块。最后,结合一个具体的软件项 目,构建了分布式软件测试管理平台,并基于正交对测试用例设计方案 开发一个实用工具进行测试用例设计,完成了测试全过程。 本论文研究课题来源于苏州软件园评测中心对软件项目“恒信协同 工作平台v 2 0 ”的验收测试。这是一个即将产品化的电子政务软件。经 过测试,成功找出了该软件产品存在的缺陷和系统隐患,同时避免了很 多无效或低效的重复测试。 本文组织结构如下:第一章首先介绍了课题背景、软件测试的概念、 研究现状、目前存在的问题以及本课题的研究内容。第二章阐述了软件 测试的技术和测试流程,并对主要的软件测试技术进行了分析和比较。 第三章介绍了正交拉丁方的概念和构造方法,在此基础上给出基于正交 对的软件测试用例的设计思想,提出具体的测试用例生成方案并进行软 件实现。第四章论述了分布式软件测试管理平台的构建,应用该平台以 及所设计的正交对测试用例方法对一个具体的软件项目进行验收测试。 第五章对目前的研究工作予以总结,并指出需要进一步完善的地方及今 后的研究方向。 基于正交对的分布式软件测试研究与实现 第一章概述 1 1 选题背景 第一章概述 进入2 1 世纪以来,软件测试作为软件质量保障的一项重要手段在软 件生产实践中比以往得到了更快发展【l 】,软件测试已成为软件生命周期中 不可缺少的重要阶段。其原因在于: 1 当今软件系统的规模变得越来越大,结构也越来越复杂,而从头 开始构建的大系统数量在急剧地减少,系统整合现象越来越普遍,软件 测试变得越来越重要。据统计,在软件工程开发过程中,软件测试的工 作量占软件开发总工作量的4 0 以上 2 】,而在软件开发的总成本中,用在 测试上的开销要占3 0 到5 0 。在软件再生工程中,软件测试的工作量 和成本在软件开发总工作量和总成本中占有的比例还要大【3 】。如图1 1 所 示,软件测试阶段成为软件工程( 再生工程) 中工作量最大的阶段。 一次工程 再生工程 图1 1 软件开发过程各阶段在一次工程和再生工程中工作量的比例 2 任何一个产业要规模化发展,必然走向专业化的分工与协作。软 件产业、信息产业也不例外。欧美、日本软件外包市场的扩大、印度软 件产业的崛起正是专业化分工与协作的结果。立足于以最少的成本和最 节约的资源来获得高质量的软件产品,软件外包已经成为世界软件业发 展的一种趋势【4 】。这种大规模异地乃至国际化的软件开发方式增大了管理 和质量保证的难度,打破地域限制的分工与协作增大了沟通的难度,有 1 第一章概述基于正交对的分布式软件测试研究与实现 效的软件测试己成为过程管理中保证项目质量的一个重要因素。 因此,对于刚刚走向工程化、产业化的中国软件产业而言,软件测 试已不再仅作为软件产品成型之后的附加活动,而是软件生产必不可少 的质量保证手段。一个软件系统在正式投入运行前,如何对其进行合理 和完备的测试已成为开发商和用户共同关注的焦点。 1 2 软件测试的概念 软件测试的研究可以追溯到6 0 年代,发展至今已有4 0 多年的历史, 但对于什么是软件测试,由于强调的方面不一致,所以一直未能达成共 识。主要有以下三种观点芦6 】【7 】: ( 1 ) i e e e 在1 9 8 3 年将软件测试定义为“使用人工或自动手段运行或 测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清 预期结果与实际结果之间的差别”,该定义明确地提出了软件测试以检验 是否满足需求为目标。 ( 2 ) m y e r s 则认为软件测试“是为了发现错误而执行程序的过程”, 明确提出了“寻找错误”是测试目的。 ( 3 ) 从软件质量保证的角度看,软件测试是一种重要的软件质量保 证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从 而达到证实软件内在质量的目的。 上述三种观点实际上是从不同的角度理解测试,是将测试置于不同 的环境下得出的结论。实质上,软件测试不仅是测试程序,而是在软件 投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软 件质量保证的关键步骤。 1 3 研究现状 l - 3 1 国内外研究现状 在早期的软件开发中,人们很少注意到测试的重要性。早在5 0 年代, 基于正交对的分布式软件测试研究与实现 第一章概述 人们刚开始开发较大型软件时,从几个大型软件项目的失败中就意识到 了软件危机的存在。1 9 6 8 年,在北大西洋公约组织( m 虹o ) 的学术会 议上提出了“软件工程”的概念 8 】。把软件工程分为需求分析、设计、编码、 测试和维护几个阶段的软件生存期的概念被人们广泛接受。同时,在软 件开发的实践中,人们还认识到,在完成编码以后经过测试发现错误并 加以改正的代价要比在开发初期发现并排除软件错误所付出的代价大得 多。1 9 7 2 年6 月在美国北卡罗来纳大学召开了首届软件测试正式技术会 议,成为软件测试技术发展中的一个里程碑。 7 0 年代中期,j b g o o d e n o u g h 和s l g e t h a r t 首先提出了软件测试的 理论,从而把软件测试这一实践性很强的学科提高到理论的高度,被认 为是软件测试技术发展过程中具有开创性的工作。此后w e h o w d e n 、 o s t r a n d 、g e l l e r 以及g e r h a r t 进一步总结原有的测试理论并加以完善,使 软件测试成为有理论指导的实践性学科。 在软件测试理论发展的同时,国内外研究学者相继提出了各种测试 方法,如程序插装、路径测试、系统功能测试、代数测试、符号测试、 程序变异测试( 强变异、弱变异) 、错误驱动测试、程序扰动测试、数据流 测试、层次度量等方法。 自七十年代以来,国内外许多组织和学者在软件测试方面进行了大 量的研究工作,形成了一些经典的软件测试理论、技术和软件测试流程 管理规范。美国的i e e e 、a c m 等组织制订了一系列软件测试规范,美 国卡内基梅隆大学的软件工程研究所、美国马里兰软件可靠性实验室、 南澳大利亚计算机信息软件工程学院等在传统的面向过程的软件测试、 图形用户界面测试、面向对象的软件测试等方面取得了许多显著的研究 成果。n s t l 、s q a 、m a c a b e 、s o f t w a r e r e s e a r c h 等公司开发了许多 著名的软件测试工具。在测试用例自动生成方法上,t s a i 等提出了从关 系代数查询表示的规格说明中自动生成测试用例的方法 9 】,w e y u k e r 等提 出了基于布尔规格说明的测试数据自动生成方法 1 们,工具c o n d a t a 采用 基于协议规格语言( p s l ) 、结合多种不同的测试方法( 等价类划分等) 生成 e 第一章概述基于正交对的分布式软件测试研究与实现 测试数据】。 在我国,专门从事软件测试技术研究有:中国软件评测中心、北京 大学软件工程实验室、北京航空航天大学软件工程研究所、航天工业总 公司2 0 4 所、国防科工委系统所和总参6 1 所等单位。中国软件评测中 心是国家级第三方计算机软件产品检测机构,对软件从功能、兼容性、 可扩充性、性能、安全稳定性等多个方面进行全面测试。北京大学软件 工程实验室致力于黑盒测试技术研究,研制了青鸟软件测试平台。北京 航空航天大学在c 语言和a d a 语言测试、航空技术研究所在嵌入式软 件模拟测试、西北工业大学在c l i e n t s e r v e r 系统的测试方面进行了许多 研究工作,并研制了一系列的软件测试工具。 1 3 2 现阶段存在的问题 虽然软件测试对提高软件质量有非常重要的意义,而且测试在整个 生存周期中所花费的成本往往超过5 0 ,但是与软件工程的其它研究方 向相比,无论是投入的人力还是取得的研究成果,都是大大落后的。目 前国内的软件测试不如国外做得好,而要想让中国的软件产业走向国际 化,就必须提高国内软件产品的质量,使它能够经得住用户和市场的考 验。这就要从最基本的测试做起,改进产品生产过程,提高产品质量。 目前普遍存在的问题有: ( 1 ) 由于严格的产品上线时间,软件测试时间相对较短; ( 2 ) 总体测试水平相对较低,手工测试、单机测试比较普遍; ( 3 ) 程序员自己测试自己程序的情况仍普遍存在; ( 4 ) 企业未足够重视测试重要性,且投入的资源严重不足; ( 5 ) 测试流程不规范、文档不足,缺少必要的测试跟踪和评估手段。 ( 6 ) 软件测试方法未能真正运用于实际的工程项目中,理论与实践 没有结合。 在测试用例的选择方面,人们已意识到选取合适的测试用例是十分 关键的工作,直接关系到测试的效率,并试图从四个方面描述测试用例 6 基于正交对的分布式软件测试研究与实现第一章概述 的质量:有效性、仿效性、经济性和修改性。问题是怎样在这四个方面进 行平衡。如果每个测试用例可以测试很多内容,那么执行、分析和调试 的开销可能就很大,每次软件修改后需要对测试用例进行大量维护,因 此高仿效性有可能导致经济性和修改性降低。现有的一些方法或工具由 于过于追求覆盖率而忽略了软件的功能意义,这样就造成所生成的测试 用例中有相当一部分测试了重复功能,或者没有实际测试意义。理想的 测试技术和方法不仅要保证测试用例具有发现缺陷的高仿效性,而且还 要保证测试用例设计得经济有效。 总之,软件测试作为软件工程学科的一个分支,涉及到概率论、图 论、数值分析、运筹学等多个学科领域,是一项难度较大的研究工作。 我国的软件产品测试技术研究起步于“六五”时期,与国际先进水平相比 差距很大,从事软件测试技术研究和测试工作的组织和企业较少,尤其 是能够担任第三方软件测试的组织和企业更少。因此,开展这方面研究 工作具有良好的理论和现实意义。 1 4 本课题的研究内容 针对上述问题,为提高软件测试的水平,实现软件测试的规范化, 本课题就如何构建高效的分布式软件测试管理平台展开研究,并将测试 用例生成作为其中的一个研究重点。课题的研究结合第三方评测机构对 于软件研发项目的用户验收测试来进行。该软件研发项目的用户方为苏 州工业园区信息中心,开发方为苏州南大苏富特软件公司,用户方委托 苏州软件园评测中心对外包的软件研发项目进行验收测试。该软件名称 为“恒信协同工作平台v 2 0 ”,是一个典型的即将产品化的电子政务软件。 结合实际验收测试过程,本课题主要研究了下列内容: ( 1 ) 将正交拉丁方理论引入软件测试,设计基于正交对的测试用例 生成的具体方案,用以产生优化的测试集合; ( 2 ) 基于上述方案开发一个实用软件工具s t c g ,运用该工具设计 测试用例; 7 第一章概述 基于正交对的分布式软件测试研究与实现 ( 3 ) 构建分布式软件测试管理平台对实际软件项目进行测试。 通过本课题的研究,成功避免了很多无效或低效的重复测试,在指 定的时间内,通过投入较少的人力物力,有效地找出了该软件产品的缺 陷,为该软件产品的成功投入应用提供了科学、实用的依据和保障。 1 5 本章小结 本章介绍了课题的选题背景以及软件测试的基本概念,分析了国内 外研究现状和现阶段存在的问题,并说明了本课题的主要研究内容。由 于软件测试是一项难度较大的工作,开展这方面的研究将具有良好的理 论意义和现实意义。 基于正交对的分布式软件测试研究与实现 第二章软件测试相关技术研究 第二章软件测试相关技术研究 2 1 软件测试目的和原则 2 1 1 软件测试的目的 基于不同的立场,存在着两种完全不同的测试目的: ( 1 ) 从用户的角度出发,希望通过软件测试暴露软件中隐藏的错误 和缺陷,以考虑是否接受该产品。 ( 2 ) 从软件开发者的角度出发,则希望测试成为表明软件产品中不 存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对 软件质量的信心。 软件测试的目的决定了如何去组织测试。如果测试的目的是为了尽 可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是 以前出错比较多的位置。如果测试目的是为了给最终用户提供具有一定 可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到 的商业假设。 , g l e n f o r dj m y e r s 在t h e a r to f s o i t w a r et e s t i n g ) ) 一书中认为【6 j : ( 1 ) 软件测试是为了发现错误而执行程序的过程; ( 2 ) 测试是为了证明程序有错,而不是证明程序无错误; ( 3 ) 一个好的测试用例在于能发现至今未发现的错误; ( 4 ) 一个成功的测试是发现了至今未发现的错误的测试。 由此可见,软件测试的目的是以最少的时间和人力找出软件中潜在 的各种错误和缺陷,而不是为了演示软件的正确功能。如果成功地实施 了测试,就能发现软件中的错误,测试的附带收获是能够证明软件的功 能和性能与系统的需求规格说明相符。此外,实施测试收集到的测试结 果也为系统可靠性分析提供了依据。因此,测试并不仅仅是为了要找出 错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理 第二章软件测试相关技术研究 基于正交对的分布式软件测试研究与实现 者发现当前所采用的软件过程的缺陷, 帮助我们设计出有针对性的检测方法, 2 1 2 软件测试的原则 以便改进。同时,这种分析也能 改善测试的有效性。 测试是一项非常复杂的、创造性的和需要高度智慧的挑战性的工作。 测试一个大型软件所要求的创造力,事实上可能要超过设计该软件所要 求的创造力 1 2 1 。软件测试中很重要的一方面是人的心理问题,以及一些 显而易见但至关重要的原则: ( 1 ) 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右 铭。 由于用户需求的复杂性和不确定性、软件的复杂性和抽象性、软件 开发各阶段工作的多样性,加上软件开发各种人员的配合差异性等因素, 使得开发的每个环节都有可能产生错误。所以不应把测试仅仅看做是软 件开发的一个独立阶段,而应树立起把软件测试贯穿到软件开发各个阶 段的信念,坚持软件开发的阶段评审,以期尽早发现错误,提高软件质 量,并且这也是降低软件成本的一个重要措施。 ( 2 ) 测试用例应由输入数据和与之对应的预期输出结果组成。 一个测试用例不仅仅是一个输入数据,只有把输入数据和预期的输 出结果结合起来才构成一个完整的测试用例。若对测试输入的数据没有 给出预期的程序输出结果,那么就减少了检验实测结果的基准,由于人 们的心理作用,可能把实际上是错误的结果当成是正确的。 ( 3 ) 程序员应避免检查自己的程序。 测试工作需要严格的作风、客观的态度和冷静的情绪。从心理学上 讲,人们常常由于各种原因具有一种不愿否定自已工作的心理。这一心 理状态就成为测试自己程序的障碍,而且由于思维定势,也难于发现自 己的错误。所以,从工作效率来看,由别人来测试自己编写的程序,可 能会更客观、更有效,并更容易取得成功。 ( 4 ) 设计测试用例时,应当包括合理的输入条件和不合理的输入条 1 n 基于正交对的分布式软件测试研究与实现第二章软件测试相关技术研究 件。 程序测试时,人们有一种倾向,常常只注意输入预期是合理的数据, 而忽视不合理的输入数据。事实上,软件投入运行后,用户往往会不遵 循合理的输入要求,而进行了一些非法的输入( 如按错键、使用不合法 命令等) ,如果系统不能对此意外输入做出正确反应,系统将很容易产生 故障,甚至造成系统的瘫痪。因此,为了提高程序的可靠性,不仅要考 虑合理的输入数据,同时也应考虑不合理的输入数据。合理的输入数据 可用来验证程序的正确性,而不合理的数据( 通常指异常的、临界的、 可能引起问题变异的输入数据) 往往比用合理的输入数据进行测试能发 现更多的错误。 ( 5 ) 充分注意测试中的群集现象。 程序中的错误似乎是成群出现的m 】。p a r e t o 原理表明,测试发现的错 误中的8 0 很可能是由程序中的2 0 的模块造成的。该原理描述的即是 测试过程中的错误群集现象。因此,一段程序中已发现的错误数越多, 则其中存在错误的概率也越大,这种现象已为许多程序的测试实践所证 实。为了提高测试效率和测试投资的效益,如果发现某程序模块比其他 模块有更多的错误倾向时,则应当花费较多的时间和代价测试这个程序 模块。 ( 6 ) 严格执行测试计划,排除测试的随意性。 测试计划包括:所测试软件的功能、输入和输出、测试内容、各项 测试的进度安排、资源要求、测试资料、测试工具、测试用例的选择、 测试的控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测 试的规定以及评价标准等。 ( 7 ) 应当对每一个测试结果做全面的检查。 这是一条最明显的原则,但常常被忽视。有些错误的征兆在输出实 测结果时已经明显地出现了,但如果不仔细、不全面地检查测试结果, 就会使这些错误被遗漏。所以必须对预期的输出结果明确定义,对实测 结果仔细分析检查,抓住症候,暴露错误。 第二章软件测试相关技术研究 基于正交对的分布式软件测试研究与实现 ( 8 ) 妥善保存所有的测试数据( 文件) 。 测试数据( 文件) 包括:测试计划、测试用例、预期的结果、出错 统计和最终分析报告。测试数据尤其测试用例的设计要耗费很大的工作 量,如果用完随之丢弃,以后一旦程序改进需要重新测试时,将要重复 上述全部工作。因此,保存这些测试资料,将有助于系统的可靠性分析、 评价,也能为软件的后期维护工作带来方便。 总之,软件测试是一门交叉学科,测试是一项非常复杂、需要有创 造性和高度智慧的任务。现在的软件测试仍然处于发展阶段,是当前软 件人员研究的重要课题。 2 2 软件测试的分类 软件测试技术纷繁复杂,针对具体的软件开发方法和不同的软件生 命周期,不同的应用领域都有不同的测试技术【1 5 】【1 6 】: 从是否需要执行被测程序的角度,可分为静态测试( s t a t i c t e s t i n g ) 和动态测试( d y n a m i ct e s t i n g ) 。 从测试是否针对系统的内部结构和具体实现算法的角度,可分为白 盒测试( w h i t e - b o x t e s t i n g ) 和黑盒测试( b l a c k - b o x t e t i n g ) 。 2 2 1 静态测试和动态测试 静态测试的基本特征是在对软件进行分析、检查和测试时不实际运 行被测程序。按照进行静态测试的正式程度及其在软件生产质量管理和 质量控制中的作用,可分为工程测试、正式测试、审核测试和检查性测 试。静态测试可用于对各种软件文档的测试,常用于软件开发过程的早 期阶段,主要有结构化走通( w o r k t h r o u g h ) 和f a g a n 检查等方法。 动态测试的基本特征是通过运行软件来检验软件的动态行为和运行 结果的正确性,包括被测程序、测试数据和软件需求规约三个基本要素。 根据动态测试在软件开发过程中所处的阶段及其作用,可分为单元测试、 集成测试、系统测试、验收测试和回归测试,贯穿于整个软件开发过程 1 7 基于正交对的分布式软件测试研究与实现第二章软件测试相关技术研究 的各个阶段。 2 2 2 白盒测试 白盒测试又称结构测试( s t r u c t u r a lt e s t i n g ) 、逻辑驱动测试 ( l o g i c d r i v e n t e s t i n g ) 或基于程序的测试( p r o g r a m - b a s e d t e s t i n g ) 。它把测 试对象看作一个打开的盒子,允许测试人员利用程序内部逻辑结构及有 关信息,设计或选择测试用例,通过在不同点检查程序的状态,对程序 所有逻辑路径进行测试,确定实际结果是否与预期结果一致。白盒测试 主要是对软件的过程性细节做细致的检查9 测试者可以完全不考虑程序 的功能,主要对程序模块进行如下检查: ( 1 ) 保证一个模块中的所有独立执行路径至少测试一次; ( 2 ) 对所有逻辑判定取值 t r u e 和“脚s e 的两种情况都至少测试一 次: ( 3 ) 在循环边界和运行界限内执行循环体; ( 4 ) 测试内部数据结构的有效性。 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天 文数字。如图2 1 所示,这是一个小程序的流程图,它包括了一个执行 2 0 次的循环。 图2 1 白盒测试中的穷举测试 该程序包含的不同执行路径数达5 2 0 条,假设对每一条路径进行测 试需要1 毫秒,一年工作3 6 5 x 2 4 小时,则要想把所有路径测试完需要3 1 7 0 第二章软件测试相关技术研究基于正交对的分布式软件测试研究与实现 年。可见,彻底的白盒测试( 穷举测试) 虽然能够揭露程序中所有隐藏 错误,但是实施起来是不现实的。为了节省时间和资源,提高测试效率, 就必须有选择地设计测试用例,以达到最佳的测试效果。白盒测试方法 就是研究如何用最少的测试用例最大限度地发现软件中的错误,目前主 要有程序结构分析、逻辑覆盖、域测试、符号测试、基本路径测试、程 序插装以及程序变异等方法。 1 逻辑覆盖 逻辑覆盖测试( l o g i cc o v e r a g et e s t i n g ) 以程序内部逻辑结构为基础, 要求测试人员对程序的逻辑结构十分清楚,其设计测试用例的原则是充 分检测程序中的各个逻辑元素。由于覆盖测试的目标不同( 所谓的“覆盖” 主要体现在对各个逻辑元素测试的充分性) ,可分为语句覆盖、判定覆盖、 条件覆盖、判定一条件覆盖以及路径覆盖。 ( 1 ) 语句覆盖:每一条可执行语句至少覆盖一次; ( 2 ) 判定覆盖:设计若干个测试用例,运行所测程序,使程序中每 个判断的取真分支和取假分支至少执行一次; ( 3 ) 条件覆盖:设计足够多的测试用例,运行所测程序,使程序中 每个判断的每个条件的每个可能取值至少执行一次; ( 4 ) 判定条件覆盖:设计足够多的测试用例,运行所测程序,使程 序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能 的判断结果也至少执行一次; ( 5 ) 路径测试:设计足够多的测试用例,运行所测程序,要覆盖程 序中所有可能的路径。 2 基本路径测试 基本路径测试( b a s i sp a t ht e s t i n g ) 由t o mm c c a b e 于1 9 7 6 年提出, 它是在程序控制流图的基础上,通过分析控制构造的环形复杂性,导出 基本可执行路径集合,从而设计测试用例的方法。该方法适用于模块的 详细设计及源程序,主要步骤如下: ( 1 ) 以详细设计或源代码为基础,导出程序的控制流图; 1 4 基于正交对的分布式软件测试研究与实现第二章软件测试相关技术研究 ( 2 ) 计算得到的控制流图g 的环形复杂性v ( g ) ; ( 3 ) 确定线性无关路径的基本集合; ( 4 ) 生成测试用例,确保基本路径集中每条路径的执行( 测试人员 可以选择数据以便在测试每条路径时适当设置判定节点的条件) 。 3 程序插装 程序插装( p r o g r a mi n s t r u m e n t a t i o n ) 是指在程序中设置断点或打印 语句,在执行过程中了解程序的一些动态特性。这就相当于在运行程序 以后,一方面检验测试结果数据,另一方面借助插入语句给出的信息了 解程序的动态执行特性。在程序的特定部位插入记录动态特性的语句, 最终是为了把程序执行过程中发生的一些重要历史事件记录下来。例如, 记录在程序执行过程中某些变量值的变化情况、变化范围等。 2 2 3 黑盒测试 黑盒测试又称功能测试( f u n c f i o n a lt e s t i n g ) 、数据驱动测试 ( d a t a d r i v e nt e s t i n g ) 或基于规格说明的测试( s p e c i f i c a t i o n - b a s e d t e s t i n g ) 。该方法是在完全不考虑程序内部结构和内部特性情况下进行的 软件测试。测试者只能依据软件需求规格说明书,通过程序输入输出之 间的关系、程序的功能等来准备测试数据或设计测试用例。它是一类面 向用户观点的测试技术,所依据的是程序的外部特性和知识积累。黑盒 测试是为了确认每个实现了的功能是否符合用户的功能需求,不涉及程 序的内部实现,主要发现以下类型的错误: ( 1 ) 功能错误或遗漏; ( 2 ) 界面错误; ( 3 ) 数据结构或外部数据库访问错误; ( 4 ) 性能不满足要求; ( 5 ) 初始化或终止错误。 黑盒测试方法主要有基于图的测试方法、等价类划分、边界值分析、 比较测试、错误推测法、因果图和功能图等。 1s 第二章软件测试相关技术研究 基于正交对的分布式软件测试研究与实现 2 2 3 1 等价类划分 等价类划分( e q u i v a l e n c ep a r t i t i o n i n g ) 是一种典型的黑盒测试方法, 它把所有可能的输入数据,即程序的值域划分成若干部分,然后从每一 部分选取少数有代表性的数据作为测试用例。使用这一方法设计测试用 例要经历划分等价类和选取测试用例两步。 1 划分等价类 可按两种不同情况进行划分: ( 1 ) 有效等价类:对于程序的规格说明来说,是合理的、有意义的 输入数据构成的集合。利用它可以检验程序是否实现了规格说明预先规 定的性能和功能。 ( 2 ) 无效等价类:对于程序的规格说明来说,是不合理的、无意义 的输入数据构成的集合。利用它可以检查程序中功能和性能的实现是否 不符合规格说明的要求。 划分等价类的原则如下: ( 1 ) 输入条件规定了取值范围或值的个数,则可确定一个有效等价 类和两个无效等价类; ( 2 ) 若输入条件规定了输入值的集合或规定了必须如何的条件,则 可确定一个有效等价类和一个无效等价类; ( 3 ) 若输入条件是一个布尔量,则可确定一个有效等价类和一个无 效等价类; ( 4 ) 若规定了输入数据的一组值,且需对每个输入值分别进行处理, 则可为每一个输入值确立一个有效等价类,此外确立一个无效等价类, 它是所有不允许的输入值的集合: ( 5 ) 若规定了输入数据必须遵守的规则,则可确立一个有效等价类 ( 符合规则) 和若干个无效等价类( 从不同角度违反规则) 。 2 生成测试用例 在确立了等价类之后,建立等价类表,列出所有划分出的等价类, 再按以下原则选择测试用例: 基于正交对的分布式软件测试研究与实现 第二章软件测试相关技术研究 ( 1 ) 为每一个等价类规定一个唯一的编号; ( 2 ) 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效 等价类。重复这一步,直到所有的有效等价类都被覆盖为止; ( 3 ) 设计一个新的测试用例,使其仅覆盖一个尚未覆盖的无效等价 类。重复这一步,直到所有的无效等价类都被覆盖为止。( 之所以要这么 做,是因为某些程序中对某一输入错误的检查往往会屏蔽对其它输入错 误的检查,因此必须针对每一个无效等价类分别设计测试用例。) 2 2 3 2 边界值分析 边界值分析( b o u n d a r yv a l u ea n a l y s i s ) 是等价类划分方法的补充。 人们从长期的测试经验得知,大量的错误发生在输入或输出范围的边界 上,而不是在输入范围内部。因此针对各种边界情况设计测试用例,可 以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边 界情况:通常选择输入等价类与输出等价类的边界;其次,应当选取正 好大于、刚刚大于、以及刚刚小于边界的值作为测试数据,而不是选取 等价类中的典型值或任意值。在软件的每一个部分不断寻找边界是极为 重要的,发现的边界愈多,则找出更多软件缺陷的可能性就愈大。 2 2 3 3 因果图 如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描 述对应多种条件的组合相应产生多个动作的形式来设计测试用例,这就 需要利用因果图( c a u s e e f f e c tg r a p h i n g ) 。该方法最终生成的是判定表, 适合于检查程序输入条件的各种组合情况,基本步骤如下: ( 1 ) 分析规格说明描述中,哪些是原因( 输入条件和输入条件的等 价类) ,哪些是结果( 输出条件) ,并给每个原因和结果赋予一个标识符; ( 2 ) 分析规格说明描述中的语义,找出原因与结果之间、原因与原 因之间对应的关系,根据这些关系画出因果图; ( 3 ) 由于语法或环境限制,有些原因与原因之间、原因与结果之间 的组合情况不可能发生。为表明这些特殊情况,在因果图上用一些记号 1 7 第二章软件溅试相关技术研究基于正交对的分布式软件测试研究与实现 标明约束或限制条件; ( 4 ) 因果图转换成判定表; ( 5 ) 判定表的每一列拿出来作为依据,设计测试用例。 2 2 4 白盒测试与黑盒测试的对比 表2 1 白盒测试与黑盒测试的比较 比较项目自盒测试黑盒测试 根据程序的内部结构,比如语 根据用户看到的规格说明,即 句的控制结构、模块间的控制 针对命令、信息、报表等用户 测试依据界面及体现它们的输入数据 结构以及内部数据结构等进 与输出数据之间的对应关系, 行测试。 特别是针对功能进行测试。 优点 能对程序内部的特定部位进 行覆盖测试。 能站在用户立场上进行测试 特 点1 、无法检验程序的外部特性; l 、不能测试程序内部特定部 缺点2 、无法对未实现规格说明的 位; 2 、如果规格说明有误,则无 程序内部欠缺部分进行测试。 法发现 逻辑覆盖、域测试、符号测试、 基于图的测试方法、等价类划 方法举例基本路径测试、程序插装、程 分、边界值分析、比较测试、 错误推测法、因果图、功能图 序变异等。 等。 表2 i 为白盒测试与黑盒测试的比较。从该表可以看出,两种方法各 有优缺点,任何一种测试方法都是不完备的。黑盒测试是以用户为观点, 从输入数据与输出数据的对应关系出发进行测试,完全不涉及程序的内 部结构。那么如果外部特性本身有问题或规格说明书的规定有误,用黑 盒测试方法是发现不了的。而白盒测试则与之相反,只根据程序的内部 结构进行测试,从不考虑外部特性。如果程序机构本身有问题,比如程 序逻辑有错误或者有遗漏,就无法发现。因此,为了实现软件测试目标, l r 基于芷交对的分布式软件测试研究与实现第二章软件测试相关技术研究 更好的发现软件错误,在实际进行测试时,应将二者结合起来使用,构 成互补关系,共同优化软件测试过程。 2 3 软件测试的管理和流程 2 3 1 软件测试的组织和管理 软件测试技术固然重要,但是随着软件开发规模的增大、复杂程度 的增加,以寻找软件中错误为目的的测试工作就显得更加困难。因此, 为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对 测试工作的组织和管理就显得尤为重要 1 7 】。 测试管理需要从整个测试生命周期考虑【l8 】:测试计划一测试设计 一测试开发一测试执行一测试评估。 1 测试计划的制定 测试计划就是定义一个测试项目的过程,以便能够正确地度量和控 制测试。即从测试的角度对被测软件进行功能、特性的细化和展开。它 不仅是软件开发后期测试的依据,也是软件质量保证的重要文档。测试 计划必须明确规定在每一次测试中系统的每一项功能和特性所必须完成 的基本测试项目及测试标准,确定测试范围和评价准则,此外,还应该 包括选取什么样的测试策略、对测试工作量的估计、测试所需的人力资 源和系统资源等。一般而言,软件测试计划可分为3 个层次:概要测试 计划、详细测试计划以及测试人员的测试实施计划,分别对应于测试模 型的不同阶段。 2 测试用例的设

温馨提示

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

最新文档

评论

0/150

提交评论