【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“Genesis项目测试流程设计与分析 - 硕士论文”一文,供大家参考学习!
大连理工大学 硕士学位
论文Genesis项目测试流程设计与分析 级别:硕士 专业:软件工程 指导教师:郭禾 20081130 大连理工大学专业学位硕士学位
论文 摘 要 软件测试在现如今的软件越来越被重视,因为软件越来越复杂。
软件质量已经和企业的发展密切相关了。
本文结合群硕公司一个特殊项目的软件测试流程,特别是测试用例的设计做一个分析总结。
首先对目前业界比较标准的软件测试的定义作一个阐述,作为其后章节的引用,也对业界目前对软件测试的看法做一个系统地分析总结。
本文的第二部分对一个已经结束第一阶段项目的整体做一个简单介绍,本文的重点是对测试用例的选择和生成技术做详细地分析研究。
测试用例的选择和生成是软件测试一个重要的研究领域,测试用例的质量将直接决定软件测试的科学性和有效性,本文在此部分具体阐述如何在需求变化以及文档缺失的情况下选择和组合适当的方法产生最有效的测试用例,以达到高覆盖率,例如如何使用用例产生的流图组合产生最优测试用例等等,并对测试用例在回归测试中的作用做详细地分析,并对回归测试的过程作了详细地阐述。
最后,结合当前系统的性能问题对整个Genesis的负载测试和性能进行测试设计和执行。
本文的目的是通过群硕公司一个实际项目的测试流程来得出如何在当前这种高节奏,高产出以及不重视文档的情况下设计有效的测试用例,杜绝将测试行为更多地依赖于随机行为,使执行测试流程的结果能够监测的提高软件质量。
关键词:软件测试;回归测试;负载测试;性能测试 Genesis项目测试流程设计与分析 Test Flow Design and Analysis in Genesis Proj ect Abstract Now software testing in the software more and more attention,because也e software has become increasingly sophisticated.Software Qualit),and the development of enterprises havebeen closely relation.This paper group company of a large special items of software testingprocess,particularly the design to be a test case analysis concluded. First of all,compared to the current industry standard software for a test on the definition,as the subsequent chapters of the quote,also present in the software industry’S views to test asystem to analyze and summarize.In this paper,the second part of the end of the first phase ofa project as a simple,and the third,fourth,as part of the focus of this paper,and the choice oftest case generation technology to do a detailed analysis and research.The selection and testcase generation software testing is an important area for researc也test case will directlydetermine the quality of software testing more scientific and effective,the paper in this part ofthe specific on how changes in demand and in the case of missing documents and chooseHave the appropriate combination of the most effective method of test case,so as to achievelli曲coverage,such as how to use the use of the flow chart of the optimal combination of atest case,and SO on,and the test case in the role of regression testing to do a detailed analysisand the regression testing process described in detail.Finally,a part of the current softwaretesting and test methods in the current proj ect of the misunderstanding and problems by theirown solutions. The purpose ofthis paper is a large group(From Augmentum)through a practical projecthow the testing process to come to this in the current high tempo,high—yield and not to attachimportance to document the circumstances to design effective test case,the test will put anend to acts more dependent on the random,So that the results of the implementation of testingprocedures to monitor the improvement of software quality.Key Words:Software Testing;Regression Testing;Load Test;Performance Test —II— 大连理工大学学位
论文独创性声明 作者郑重声明:所呈交的学位
论文,是本人在导师的指导下进行研究工作所取得的成果。
尽我所知,除文中已经注明引用内容和致谢的地方外,本
论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请学位或其他用途使用过的成果。
与我一同工作的同志对本研究所做的贡献均已在
论文中做了明确的说明并表示了谢意。
若有不实之处,本人愿意承担相关法律责任。
学位
论文题目: 鱼鱼!呈三竖三垦望塑!主茎!垄塑塑盐圭坌堑作者签名: 妄逝 日期:上盟年上∑月兰.-日 大连理工大学硕士研究生学位
论文 大连理工大学学位
论文版权使用授权书 本人完全了解学校有关学位
论文知识产权的规定,在校攻读学位期间
论文工作的知识产权属于大连理工大学,允许
论文被查阅和借阅。
学校有权保留
论文并向国家有关部门或机构送交
论文的复印件和电子版,可以将本学位
论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印、或扫描等复制手段保存和汇编本学位
论文。
大连理工大学专业学位硕士学位
论文 引 言 软件测试随着市场开始成熟,主要原因是人们对软件作用期望价值越来越高,软件的质量、性能、可靠性等方面逐渐成为人们关注的焦点。
本文将对一个特定情况下如何进行软件测试的设计进行分析与研究。
这是一种什么情况呢?就是在一个文档不足的情况下进行软件测试的工作。
这种情况在公司的运作中往往出现在一个项目时间紧张,需求经常变化的工程中。
在秉承客户就是一切的今天,我们能够做的就是研究如何在没有详细
文档和明确需求的情况下,展开测试的工作。
软件测试的行为从有电脑软件的那一天就开始存在,但是关于软件测试的理论一直没有被明确,直到1979年,被尊为测试之父的Glenford J.Myers出版《The Art ofSoftwareTesting))一书,提出“软件测试的目的是证明错误”【1〕这一概念,为软件测试指明了方向,从这之后,软件测试的理论、方法得到了长足的进步,从令一种角度来说,我们现有的理论只是对Glenford Myers先生理论的深层延伸罢了。
中国软件起步在90年代,经过十几年的发展,已经和国际上的开发模式接轨,基本上和国际上流行的技术和框架同步。
软件测试整个行业在中国是在2000年之后才被大家所重视,并没有和软件开发同步发展,也就是说发展相对滞后,在测试方便,我们可以说我们比国际上有接近10年的差距。
当我们开始使用软件测试的理论来指导我们的工作流程的时候,SOA的发展和中国软件的迅猛发展(公司项目进度的紧迫性)对软件测试的流程发起了挑战。
传统而一成不变的测试流程已经不能适应现在软件行业的发展,所以本文将对其中的一种情况进行流程的分析。
在过去的20年,软件测试的书籍虽然层出不穷,但是并没有对固有理论有实质性的推动,例如软件测试的经典书籍((Software Testing))的作者Ron Patton虽然对整个软件测试做了系统的总结,但是所有的概念以及理论也并没有有长足的发展,而针对一些具体条件下的测试例如SOA模式,更多的仅仅是网络上一些软件测试从业者和爱好者的个人研究,并无一种框架或者流程提供参考。
本文讲对如何讲测试的理论应用到实际项目中做一次分析总结。
Genesis项目测试流程设计与分析 1 软件测试 1.1软件的概念 什么是软件?这个问题并没有经典的定义。
我们几乎每天都在使用各种各样的软件,例如Windows等等,它们是我们再熟悉不过的产品,但是却没有一个确切的定义。
目前被承认的定义为:软件(Software)是计算机中与硬件(Hardware)相结合的一部分,包括程序(Program)和
文档。
其中,程序指的是能够实现某种功能的指令的集合,例如Java程序、VB程序等等;文档指的是软件在开发、使用和维护过程中产生的图文集合,如《系统需求规格说明书》、《用户手册》、Readme,甚至是一些软件市场的宣传材料,包装文字和图形等等【2】。
1.2软件的分类1.2.1按功能划分 系统软件:能够直接操作底层硬件、并为上层软件提供支撑的软件,如操作系统软件,各种硬件驱动程序等。
这类软件需要我们结合底层硬件加以测试。
应用软件:能够为用户提供某种特定的应用服务的软件,如Office系列。
这类软件是目前软件测试重点,本文所依赖的软件(Genesis)就是此类软件。
i1.2.2按技术架构划分 单机版软件:直接在单个
计算机上安装并运行的软件。
这类软件相对比较简单,不需要考虑
网络传输。
C/S结构软件:C指的是客户端,S指的是服务端,这种软件是基于局域网或互联网的,需要我们有一台服务器来安装服务器端软件,每台客户端都需要安装客户端软件。
B/S结构软件:B指的是浏览器,S指的是服务器端,这种软件同样是基于局域网或互联网的,它与C/S结构软件的区别就在于不需要安装客户端,只需要有浏览器即可。
1.2.3按照用户划分 产品软件:目标用户是大众用户,而不是某一特殊群体。
它针对的是大众消费者,而不是固定的某一类用户。
项目
软件:目标用户是具体用户。
大连理工大学专业学位硕士学位
论文1.2.4按照开发的规模划分 按照软件开发的参与人数以及开发时间来划分,参与人数为10人以下,开发周期不超过4个月称为小型软件;参与人数100人以下,开发时间为1年以下称为中型软件;参与人数100人以上,开发时间一年以上称为大型软件。
1.3软件测试的概念 测试的英文单词Test来源于拉丁语TESTUM,原意是罗马人使用的一种陶罐,在当时用它来评估稀有金属矿石材料的质量。
可见,测试和产品质量有紧密联系的【3】。
1.3.1软件测试的定义 从软件测试发展的40多年来看,什么是软件测试一直未能达成共识。
根据侧重点的不同,主要有以下三种观点: (1)IEEE在1983年将软件测试定义为“使用人工或自动手段运行或测定某个
系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”,该定义明确地提出了软件测试以检验是否满足需求为目标【2】。
(2)Myers则认为软件测试“是为了发现错误而执行程序的过程II】”,明确提出了“寻找错误”是测试目的。
(3)从软件质量保证的角度看,软件测试是一种重要的软件质量保证活动,其动机是通过一些
经济、高效的方法,捕捉软件中的错误,从而带到保证软件的目的。
以上3种观点是从不同的角度理解软件测试,是将测试置于不同的环境下得出的结论。
事实上,在公共出版的刊物中,有多种不同的关于软件测试的定义,根据这些定义可以认为软件测试是一个在可控环境种执行软件的过程,目的就是为了验证软件是否按照预期运行。
1.3.2软件测试的生命周期 软件测试生命周期的模型如图1.1。
把测试的生命周期分为几个阶段。
前3个阶段是引入程序错误阶段,也就是开发过程中的修去规格说明、设计、编码阶段,此时极易引入错误或者导致开发过程种其它阶段产生的错误。
然后是通过测试发现错误的阶段,这需要通过一些适当的测试技术和方法来共同完成。
后3个阶段是清楚程序错误的阶段。
其主要任务是进行缺陷分类、缺陷隔离和解决缺陷。
其中在修复旧缺陷的时候很可能引入新的错误,导致原来能够正确执行的程序出现新的缺陷。
在软件测试生命周期的每个阶段都要完成一些确定的任务,在执行每个阶段任务的时候,可以采用行之有效的结构分析技术和适当的辅助工具:在结束每个阶段的任务是 Genesis项目测试流程设计与分析 都要进行严格的技术审查和管理复查。
最后提交最终软件配置的一个或几个成分(文档 或程序)。
图1.1软件测试生命周期 Fig.1.1 Software testing life cycle1.3.3软件测试模型 通常情况下,测试过程包括确定要测试什么(测试范围和条件)以及产品如何被测试(制作测试用例),建立测试环境,执行测试,最后再评估测试结果,检查是否达到已完成测试的标准,并
报告进展情况等活动。
由此看出,软件测试不仅仅是执行测试,而是一个包含很多复杂活动的过程,并且这些过程应该贯穿于整个软件开发过程。
如果你把测试设计放在最后阶段,就会错过发现构架设计和业务逻辑设计中存在的眼中问题的时机,到时候修复这些缺陷讲很方便,因为缺陷已经扩散到系统中去了,所以这样的错误将很难寻找和修复,并且代价更高。
于是这就出现了很多软件测试模型。
‘ (1)V模型 如图1.2所示,在传统开发过程中,仅仅吧测试过程作为在需求分析、概要设计及编码之后的一个阶段。
如:在瀑布模型中,认为测试只是在很多重要开发活动完成后的首位工作,而不是主要过程。
V模型对次进行了改进,不再把测试看做是一个事后弥补行为,而是一个同开发过程同样重要的过程。
该模型最早由己故的Paul Rook在20世纪 大连理工大学专业学位硕士学位
论文80年代后期提出的,在英国国家计算中心文献中发布,在欧洲尤其是英国被普遍接受,并把它当作瀑布模型的替代品。
1 2 V F 图嘻 1l 2 V 罴 V模型描述了一些不同的测试级别,并说明了这些级别所对应的生命周期中不同的阶段。
其中,左边下降的部分是开发过程各个阶段,与此相应的右边上升的部分是测试过程的各个阶段。
V模型的价值主要在于它非常明确的表明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间的对应关系。
(2)W模型 由于原始
问题的复杂性、软件的复杂性和抽象性、软件开发各个阶段工作的多样性以及各个层次人员之间
工作的配合关系等因素,使得开发的每一个环节都可能产生错误。
如果坚持对各个阶段进行技术评审们,就能够尽早发现和预防错误。
如图1.3所示为软件测试模型,它说明了软件测试与开发的这种同步性。
Genesis项目测试流程
设计与分析 与V模型相比,在W模型中我们很容易就能够看出测试伴随着整个软件开发周期, 测试的对象不仅仅是程序还包括需求和设计。
图1.3 W模型 Fig.1.3 Wmodel1.4软件测试的目的 测试人员在作测试工作之前必须首先明确目的,才能够更好地完成测试工作。
大部分人认为软件测试的目的是验证程序,这种说法显然是错误的。
研究表明,发现并纠正程序中的错误的费用占整个开发费用的40%~80%。
因此,软件公司投入大量的资金不仅仅是为了“验证程序正确运行”,而是因为程序无法正确运行,要找出软件中存在的大量缺陷【引。
在程序交付测试前,大多数的编程人员都能找出和纠正超过99%的错误。
但是实际上他们还没有发现足够多的错误,软件测试的工作就是找出那剩下的1%。
测试的目的就是为了软件发布之前发现软件缺陷,从而提高软件质量。
一6一 大连理工大学专业学位硕士学位
论文 {。
5软件测试的漂灵l1.5.1 尽早地和不断地进行软件测试 各种统计数据显示,软件开发过程中发现缺陷的时闻越晚,修复它所花费的戒本就越大。
因此在需求分析阶段就应该有测试的介入。
因为软件测试的对象不仪仅是
程序编码,应该对软件开发过程中产生的所有产品进行测试。
IBM的研究结果还表明,缺陷存在放大的趋势【6】。
比如:在需求阶段漏过的一个错误,可能会因此引起靛个设计错误。
一般丽言,不同阶段n值不同。
经验表赐从概要设计到详细设计的错误放大系数大约是1.5,从详细设计到编码阶段的错误放大系数大约为3。
图1.4表示了缺陷放大模型的大致状况。
放大n倍 放大n2倍 放大n,倍 ,。
。
____…_。
。
’’‘__…、,——。
_’_’’—。
。
……”…气,……’—。
。
‘‘……”’’’’一、,—’1。
’。
”…“1’…。
‘。
气 | 需求阶段卜一概要设计阶段卜_详垂蒌设计除段卜叫 编码阶段 | 、·___o_-_______·-●ll_-______,、_·-_____l·l_·II__--__●-__·-,’___-●___●·_●__-___--_·--●_-,、---_l______________-___l__一 图1.4缺陷放大模型 Defects lager model Fig。
1.4 由此可见,问题发现的越早,解决问题的代价越小,这是软件开发过程中的黄金法燹|j。
1.5,2不可能完全地测试 对一个程序进行完全测试就是一位着测试结束之后,再也不会发现其它的软件错误了。
实际上这是不可能的,只能是测试人员的美好愿望。
首先,不可能测试程序对所有可能输入的璃疲。
其次,不可熊测试到程序每一条可能的执行路径。
而且,无法找如所有的设计错误和采用逻辑来证明程序的正确行。
因此,我们要对实际情况对测试的程度和范围进行有效控制,协调开发与测试的关系,投入最少的成本获得最大的回报。
总之,测试的宗旨是:尽可能多地发现错误,并不是发现所有的错误(4J。
1.5.3增量测试 无论是传统的软件测试还是面向对象的软件测试都要遵循着从d,N大的原则,圜为只有这样,当错误发生的时候我们才能够更方便的隔离和定位错误。
通常把单元测试作为最小的软件测试粒度。
也就是说,只有当每个模块都通过了单元测试之后,才可以吧 Genesis项目测试流程设计与分析 它们集成到一起进行集成测试;然后,再结合软件需求对已集成的软件进行确认测试; 最后,结合系统的其他元素对以确认的软件进行系统测试。
1.5。
4避免测试自己的程序 在测试过程中我们要避免一些人为和主观因素的干扰。
我们知道,软件测试和开发 是互为相反的行为过程,两者有着本质的不同。
在程序员宪成大量的设计和编码之后,让绝否定自己所做的工作是菲常不易的,可以说缀少有入能有这样的心态。
另外一个原 因就是系统需求的错误不容易发现,如果程序员检查自己的
代码,那么他对系统需求的理熊缺乏客观性,往往存在着对闻题叙述或说明的误解,不难想象带有错误认识的程序员是很难发现自己程序存在的问题的。
{。
5。
5设计瘸密的测试愚例 软件测试的本质就是针对要测试的内容确定一组测试用例。
测试用例至少应该包括如下几个基本信息: (1)在执行测试用例之前,应满足的前提条件。
(2)输入(合理、不合理的)。
(3)预期输出(包括结果和实际输战)。
这一部分,将在第3章作详细分析。
1.5。
8注意错误集中的现象 在软件测试的过程中,常发生软件缺陷集中的现象,因为当我们在某一部分发现了很多错误时,应该进一步仔细测试是否还包含了更多翦软件缺陷。
1。
5.7确认BUG的有效性 由于BUG之间会有关联,那么当程序员修复了一个BUG之后,与其关联的BUG很可能就会自动关闭了,或者在测试人员发现BUG之后和提交给程序员之前的这段时闻,BUG已经被程序员发现并修复。
因此,有时候测试人员提交的BUG并不是真正的 。
BUG。
测试过程的不规范和对设计理解的歧义都是无效BUG的来源。
除此之外,无效BUG还可能是因为工具或方法使用错误,无效的运行环境以及人为因素或者其他原因造成。
在软件开发过程中,发现BUG是一个过程,确认BUG的有效性则是另外一个过程,在测试的过程中之所以要有确认的过程,是为了防止失效的BUG浪费有限的时间资源和人力资源。
一8一 大连理工大学专业学位硕士学位
论文{。
5。
8合理安排测试计划 合理的测试计划有助于测试工作顺利有序地进行,因此要求在对软件进行测试之前所傲的测试计划中,应该结合多种针对性强的测试方法,列出所有可使用的资源,建立一个正确的测试目标,本着严谨、准确的原则,周到细致地做好测试前期的准备工作,避免测试的随意性。
尤其是要尽量科学合理地安排测试时间,并留出~定的机动时间,防止意外情况的发生,以免出现测试时间不够用,甚至使很多测试工作不能正常进行的情况,尽量降低测试风险。
1.5,9回归测试 错误关联是一种常见的现象,是指某个错误因为其他错误而出现或消失。
此时,若想关闭某个错误必须先关闭它父类错误。
这些错误之闻存在着单纯的依赖或者复杂的多重依赖关系,如图1.5所示。
多重依赖 图1.5回归测试关系 Fig。
1.5 Regression testing relations 程序员在修正BUG时,完全有可能引入一处或多处错误,使得应用程序不能正常运行。
另外,当需求变更时,对现有系统也具有类似的波及效直,导致一个或更多个错误的产生。
因此当应用程序有所改动时,需要进行多次回归测试以保证错误被正确关闭,并且保证应用程序中原先能正常运行的部分仍然工作正常。
Genesis项目测试流程设计与分析1.5.10测试结果的统计和分析 在得出的测试结果中存在着大量正确的以及错误的输.