软件测试140901_第1页
软件测试140901_第2页
软件测试140901_第3页
软件测试140901_第4页
软件测试140901_第5页
已阅读5页,还剩473页未读 继续免费阅读

下载本文档

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

文档简介

1、软件测试软件测试Software testingSoftware testing 软件学院软件学院 段喜龙段喜龙 20 2014.914.922课程安排:课程安排:w 学时分配:学时分配:64学时(学时(32+32)w 教材:软件质量保证与测试技术教材:软件质量保证与测试技术w联系方式:联系方式:2544700241QQ.com33第一部分第一部分 基础篇基础篇第第1章章 软件测试背景软件测试背景1.1 软件错误案例(软件错误案例(when software attacks)1.2 软件缺陷(软件缺陷(whats?why comes?and its cost)1.3 软件测试员(软件测试员(j

2、ob and qualification)1.1 1.1 软件错误案例软件错误案例Software casesSoftware cases55趣事趣事(The funny)w 美国国税局(美国国税局(IRS)的尴尬的尴尬n1993年年7月月,IRS发出了近发出了近680亿美元的税单亿美元的税单w 最大方的自动柜员机最大方的自动柜员机 n2001年年1月,欧元正式流通后几天,德国的某些月,欧元正式流通后几天,德国的某些自动柜员机竟能在提款后不记入帐目!自动柜员机竟能在提款后不记入帐目! w 坏脾气的洗手间坏脾气的洗手间n2001年年6月,在英国,一个全自动的洗手间突然月,在英国,一个全自动的洗手

3、间突然出现故障出现故障,将一位老太太整整困了将一位老太太整整困了2小时小时66严重事故严重事故(The serious)w 1996年年12月,欧洲航天局(月,欧洲航天局(ESA)阿利亚娜阿利亚娜5型火型火箭在发射箭在发射39秒以后爆炸(秒以后爆炸(10年,年,70亿)亿)n原因:运算溢出错误原因:运算溢出错误w 1999年年11月,月,美国国家航空航天局(美国国家航空航天局(NASANASA)发射发射火星温度探测器失踪火星温度探测器失踪(1.25(1.25亿亿) )n原因:单位换算错误原因:单位换算错误w 千年虫问题,大约千年虫问题,大约1974w 原因:盲目的强调数据压缩原因:盲目的强调数

4、据压缩w 19831983年年9 9月月2626日,前苏联佩特罗夫避免核战日,前苏联佩特罗夫避免核战77悲剧(The tragic)w 爱国者导弹的失利(爱国者导弹的失利(1991年年2月)月)n原因:积累的时钟误差原因:积累的时钟误差w 美国海军美国海军“文森斯文森斯”号巡洋舰误击伊朗客号巡洋舰误击伊朗客机机( (1987年年4月月) )n原因:不可靠的模式识别算法原因:不可靠的模式识别算法81.2 1.2 软件缺陷软件缺陷software faultsoftware fault Defect- Defect-缺点缺点 Variance-Variance-偏差偏差 Fault- Fault-

5、缺陷缺陷 Failure-Failure-失败失败 Problem- Problem-问题问题 Inconsistency-Inconsistency-矛盾矛盾 Error-Error-错误错误 Feature-Feature-特殊特殊 Incident- Incident-毛病毛病 Bug Anomaly-Bug Anomaly-异常异常10101.2.1软件缺陷是什么?w 定义:只有符合下列定义:只有符合下列5 5个规则的软件问题,我们个规则的软件问题,我们将其定义为将其定义为软件缺陷软件缺陷(software fault)n软件未达到产品说明书标明的功能软件未达到产品说明书标明的功能n软

6、件出现了产品说明书指明不会出现的错误软件出现了产品说明书指明不会出现的错误n软件功能超出产品说明书指明范围软件功能超出产品说明书指明范围n软件未达到产品说明书虽未指出但应达到的目标软件未达到产品说明书虽未指出但应达到的目标n软件测试员认为软件难以理解、不易使用、运行速软件测试员认为软件难以理解、不易使用、运行速度缓慢、或者最终用户认为不好。度缓慢、或者最终用户认为不好。11111.2.2为什么会出现软件缺陷?w 从小程序到大项目的无数研究得出:从小程序到大项目的无数研究得出:导致软导致软件缺陷最大的原因是件缺陷最大的原因是产品说明书产品说明书(需(需求)求)w 其次的原因是设计方案的问题。其次

7、的原因是设计方案的问题。12121.2.3软件缺陷的修复费用软件缺陷的修复费用131.2.4 软件质量软件质量w软件质量是软件产品满足使用要求的软件质量是软件产品满足使用要求的程度。程度。w质量模型:质量模型:nMcCall模型模型nBoehm模型模型nISO/IEC9126模型模型1.3 1.3 软件测试员软件测试员Software testerSoftware tester15151.3.1软件测试员的工作w 软件测试员是客户的眼睛,是第一次看到软件测试员是客户的眼睛,是第一次看到软件的人,代表客户说话,应力求完美。软件的人,代表客户说话,应力求完美。w 软件测试员的目标是软件测试员的目标

8、是尽可能早的找出软件尽可能早的找出软件缺陷,并确保其得以修复缺陷,并确保其得以修复。1616The Software Job Spectrumw SDE: Software Design Engineerw SDE/T: Software Design Engineer in Testw STE: Software Test Engineerw PM: Program ManagerSDESTEDevelopmentTestingSDE/TPM1717Division of LaborWindows 2000 Product TeamTotal of 5,245 People900 Devel

9、opers1,800 TestersLargest product team in Microsoft history(at the time)18181.3.2怎样成为优秀的软件测试员w 技术能力技术能力w 探索精神探索精神w 不懈努力不懈努力w 创造力创造力w 说服力说服力w 准确的洞察力准确的洞察力w 老练稳重老练稳重w 追求完美追求完美1919第第2章章 软件测试基础软件测试基础2.1 测试原则(测试原则(principle)2.2 测试目的测试目的(purpose)2.3 测试对象(测试对象(object)2.4 测试术语(测试术语(glossary)2.5 测试方法(测试方法(me

10、thod)2.12.1测试原则测试原则principleprinciple21211.完全测试程序是不可能的w 输入量太大输入量太大w 输出结果多输出结果多w 软件实现途径太多软件实现途径太多w 软件说明书没有客观标准软件说明书没有客观标准22222.软件测试是有风险的行为软件测试是有风险的行为w 如果试图测试所有情况,费用将大幅增加,如果试图测试所有情况,费用将大幅增加,软件缺陷漏掉的数量并不会随费用上涨而软件缺陷漏掉的数量并不会随费用上涨而显著下降。显著下降。w 如果减少测试或者错误地确定测试对象,如果减少测试或者错误地确定测试对象,那么费用很低,但是会漏掉大量软件缺陷。那么费用很低,但是

11、会漏掉大量软件缺陷。(每个项目都有一个最优的测试量)(每个项目都有一个最优的测试量)23233.测试无法显示潜伏的软件缺陷测试无法显示潜伏的软件缺陷 “Program testing can be used to show the presence of bugs but never to show their absence.” Edsger W. Dijkstra, 197224244.找到的软件缺陷越多,就说明软件缺陷越多找到的软件缺陷越多,就说明软件缺陷越多w 充分注意测试中的群集现象。充分注意测试中的群集现象。经验表明,测试后经验表明,测试后程序中残存的错误数目程序中残存的错误数目与

12、该程序中已发现的错误数目成正比与该程序中已发现的错误数目成正比。There is Always One More Bug25255.并非所有软件缺陷都能修复w 没有足够的时间必须保证按时完成w 不算真正的软件缺陷w 修复的风险太大修复一个可能导致其他w 不值得修复不常出现或在不常用功能中出现的对于软件缺陷是否应该修复,其决策过程对于软件缺陷是否应该修复,其决策过程应由软件测试员、项目管理员和程序员共应由软件测试员、项目管理员和程序员共同参与。同参与。26266. 软件测试是一项讲究条理的技术专业软件测试是一项讲究条理的技术专业w 对于软件测试应严格制定并执行测试计划,对于软件测试应严格制定并执

13、行测试计划,排除测试的随意性排除测试的随意性。w 应当对每一个测试结果做全面检查。应当对每一个测试结果做全面检查。w 妥善保存测试计划,测试用例,出错统计妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。和最终分析报告,为维护提供方便。w 程序员应避免检查自己的程序。程序员应避免检查自己的程序。2.22.2测试目的测试目的purposepurpose2828基于不同的立场,存在着两种完全不同基于不同的立场,存在着两种完全不同的测试目的的测试目的w 从从用户的角度用户的角度出发,普遍希望通过软件测出发,普遍希望通过软件测试试暴露软件中隐藏的错误和缺陷暴露软件中隐藏的错误和缺陷,

14、以考虑,以考虑是否可接受该产品。是否可接受该产品。w 从从软件开发者的角度软件开发者的角度出发,则希望测试成出发,则希望测试成为为表明软件产品中不存在错误表明软件产品中不存在错误的过程,验的过程,验证该软件已正确地实现了用户的要求,确证该软件已正确地实现了用户的要求,确立人们对软件质量的信心立人们对软件质量的信心2929Myerss Testing Objectivesw Testing is a process of executing a program with the intent of finding an error.w A good test is one that has a

15、high probability of finding an as yet undiscovered error.w A successful test is one that uncovers an as yet undiscovered error.3030换言之,测试的目的是:w 以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。w 证明证明w 检测检测w 预防预防2.32.3测试对象测试对象objectobject3232测试对象w 软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。w 需求分析、概要设计、详细设计以及程序编码等各阶段所得到的,包括需求规格说明

16、、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。2.4测试术语glossaryglossary3434错误(error)w 人类会犯错误,很接近的一个同义词是过人类会犯错误,很接近的一个同义词是过错(错(mistake)。)。人们在编写代码是会出人们在编写代码是会出现过错,我们把这种过错叫做现过错,我们把这种过错叫做bug。3535缺陷(fault)w 缺陷是错误的结果。更精确地说,缺陷是缺陷是错误的结果。更精确地说,缺陷是错误的表现,而表现是表示的模式,例如:错误的表现,而表现是表示的模式,例如:叙述性文字、数据流框图、层次结构图、叙述性文字、数据流框图、层次结构图、

17、源代码等。源代码等。w 缺陷分为缺陷分为过错缺陷过错缺陷和和遗漏缺陷遗漏缺陷。 若把某些信息输入到不正确的表示中,就若把某些信息输入到不正确的表示中,就是过错缺陷;如果没有输入正确信息,则是过错缺陷;如果没有输入正确信息,则为遗漏缺陷。为遗漏缺陷。3636失效(failure)w 当缺陷执行时会发生失效。有两点需要解释:一当缺陷执行时会发生失效。有两点需要解释:一是失效只出现在可执行的表现中,通常是源代码,是失效只出现在可执行的表现中,通常是源代码,或更确切地说是被装载的目标代码;二是这种定或更确切地说是被装载的目标代码;二是这种定义只与过错缺陷有关。对于遗漏缺陷,可以通过义只与过错缺陷有关。

18、对于遗漏缺陷,可以通过有效的评审来避免其产生的失效。有效的评审来避免其产生的失效。事故(incident)n当出现失效时,可能会也可能不会呈现给用户,当出现失效时,可能会也可能不会呈现给用户,事故说明出现了与失效类似的情况,警告用户注事故说明出现了与失效类似的情况,警告用户注意所出现的失效。意所出现的失效。3737测试(测试(test)w 测试显然要处理错误、缺陷、失效和事故。测试显然要处理错误、缺陷、失效和事故。测试用例(测试用例(test casetest case)n测试用例应由测试用例应由测试输入数据测试输入数据和对应的和对应的预期预期输出结果输出结果这两部分组成。这两部分组成。OVE

19、R3838通过维恩图理解测试通过维恩图理解测试w 软件测试基本上关心的是行为,而行为与软件测试基本上关心的是行为,而行为与软件(和系统)开发人员很常见的结构视软件(和系统)开发人员很常见的结构视图无关。图无关。n结构视图关注的是结构视图关注的是它是什么它是什么,而行为视图关注,而行为视图关注的是它做什么的是它做什么。n一直困扰测试人员的难点之一,就是基本文档一直困扰测试人员的难点之一,就是基本文档通常都是由开发人员编写,通常都是由开发人员编写, 并且是针对开发人并且是针对开发人员的,因此这些文档员的,因此这些文档强调的是结构信息强调的是结构信息,而不,而不是是行为信息行为信息。3939w 考虑

20、一个程序行为全域。给定一段程序及考虑一个程序行为全域。给定一段程序及其规格说明,集合其规格说明,集合S是所描述的行为,集合是所描述的行为,集合P是用程序实现的行为。是用程序实现的行为。S S规格说明规格说明P P程序程序程序行为程序行为预期的预期的所实现的所实现的4040S S规格说明规格说明P P程序程序预期的预期的所实现的所实现的程序行为程序行为遗漏缺陷遗漏缺陷过错缺陷过错缺陷测试就是确定既被描述又被实现的程序行为的测试就是确定既被描述又被实现的程序行为的范围,同时尽量找出缺陷。范围,同时尽量找出缺陷。S和和P相交的部分是相交的部分是“正确正确”部分,即既被描述部分,即既被描述又被实现的行

21、为。又被实现的行为。4141S S规格说明规格说明P P程序程序程序行为程序行为T测试用例测试用例562143742422 2和和5 5,可能会有没有测试的已描述行为。,可能会有没有测试的已描述行为。1 1和和4 4,经过测试的已描述行为。,经过测试的已描述行为。3 3和和7 7,对应于未描述行为的测试用例。,对应于未描述行为的测试用例。2 2和和6 6,可能会有没有测试的程序行为。,可能会有没有测试的程序行为。1 1和和3 3,经过测试的程序行为。,经过测试的程序行为。4 4和和7 7,未通过程序实现的行为,未通过程序实现的行为。测试的目标:测试人员怎样才能使这些集测试的目标:测试人员怎样才

22、能使这些集合的相交区域(区域合的相交区域(区域1 1)尽可能地大。)尽可能地大。2.52.5测试方法测试方法4444从代码的特性角度从代码的特性角度( (即内部即内部) )出发出发w 单元测试(单元测试(Unit Test):最微小规模的测试,:最微小规模的测试,用以测试某个功能或代码块。典型的单元测用以测试某个功能或代码块。典型的单元测试应由程序员而非测试员来做,因为它需要试应由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。知道内部程序设计和编码的细节知识。w 功能测试(功能测试(Function Test)或或特性测试特性测试(Feature Test):):按照软件的

23、功能或特性按照软件的功能或特性逐个进行测试。逐个进行测试。覆盖测试(覆盖测试(Coverage Testing)4545w 提交测试提交测试 ( (Check-in Test) ):在开发人员对代码做在开发人员对代码做了任何修改,或者修复了某个了任何修改,或者修复了某个BugBug时,需要重新时,需要重新Check-in代码代码 ( (即将修改后的代码放大到整个大即将修改后的代码放大到整个大的系统中的系统中) )w 基本验证测试基本验证测试 ( (Build Verification Test,简称简称BVT) ):对完成的代码进行编译和连接,产生一个对完成的代码进行编译和连接,产生一个构造,

24、以检查程序的主要功能是否会像预期一样构造,以检查程序的主要功能是否会像预期一样进行工作。这是最简单而又最省时的一种测试方进行工作。这是最简单而又最省时的一种测试方法。每产生一个新的构造时都要进行测试。如果法。每产生一个新的构造时都要进行测试。如果BVTBVT通不过,表明问题很严重,开发人员需要尽快通不过,表明问题很严重,开发人员需要尽快修复出现的问题,测试人员也就不用浪费时间做修复出现的问题,测试人员也就不用浪费时间做其他测试了其他测试了4646w 回归测试(回归测试(Regression Test): : 过一过一段时间以后,再回过头来对以前修复段时间以后,再回过头来对以前修复过的过的Bug

25、Bug重新进行测试,看该重新进行测试,看该BugBug是否是否会重新出现。会重新出现。4747从用户的角度从用户的角度( (即外部即外部) )出发出发w 配置测试配置测试( (Configuration Test) ):从用户从用户的使用出发进行多方面的测试,要考虑的使用出发进行多方面的测试,要考虑到用户的多种情况,用多种配置对软件到用户的多种情况,用多种配置对软件进行测试。进行测试。w 兼容性测试兼容性测试( (Compatibility Test) ):主要主要考虑兼容性问题,比如同一个产品的不考虑兼容性问题,比如同一个产品的不同版本之间的兼容问题,不同厂家的同同版本之间的兼容问题,不同厂

26、家的同一个产品之间的兼容问题,不同类型软一个产品之间的兼容问题,不同类型软件之间的兼容问题等。件之间的兼容问题等。使用测试使用测试( (Usage testing) ) 4848w 强力测试强力测试( (StressTest):):在各种极限情况下在各种极限情况下对产品进行测试对产品进行测试 ( (如很多人同时使用该软如很多人同时使用该软件,或者反复运行该软件件,或者反复运行该软件) ),以检查产品的,以检查产品的长期稳定性。长期稳定性。w 性能测试性能测试( (Performance Test):):本项测试是本项测试是保证程序具有良好的性能。如果别人的产保证程序具有良好的性能。如果别人的产

27、品只需品只需5 5秒钟就能得出结果,而你的产品需秒钟就能得出结果,而你的产品需要要1010秒钟才能得出结果,就说明你的产品秒钟才能得出结果,就说明你的产品性能不好。性能不好。4949w 文档和帮助文件测试文档和帮助文件测试( (Documentation and help file Test): 因为用户通常是通过文档因为用户通常是通过文档和帮助文件来学习使用产品的,如果文档和帮助文件来学习使用产品的,如果文档和帮助文件存在错误,就可能会导致用户和帮助文件存在错误,就可能会导致用户无法正常使用产品。无法正常使用产品。w AlphaAlpha和和BetaBeta测试测试( (Alpha and

28、Beta Test):):在在正式发布产品之前往往要先发布一些测试正式发布产品之前往往要先发布一些测试版,让用户能够反馈出相关信息,或者找版,让用户能够反馈出相关信息,或者找到存在的到存在的BugBug,以便在正式版中得到解决。以便在正式版中得到解决。5050从区分测试用例的角度出发从区分测试用例的角度出发w 黑盒测试黑盒测试(Black Box Testing ):功能性功能性RequirementsInputOutput基于软件规格说明的测试基于软件规格说明的测试任何程序都可以看作是将从输入定义域取值映射到任何程序都可以看作是将从输入定义域取值映射到输出值域的函数。输出值域的函数。5151

29、规格说明程序测试用例对于功能性测试,不管采用什么方法,测试用例对于功能性测试,不管采用什么方法,测试用例集合完全局限在已描述行为集合内。(集合完全局限在已描述行为集合内。(基于已描基于已描述行为述行为)5252黑盒测试的优点:黑盒测试的优点:w 黑盒测试(功能性测试)与软件如何实现黑盒测试(功能性测试)与软件如何实现无关,所以如果实现发生变化,测试用例无关,所以如果实现发生变化,测试用例仍然有用;仍然有用;w 测试用例开发可以与实现并行进行,可缩测试用例开发可以与实现并行进行,可缩短项目总的开发时间。短项目总的开发时间。不足!测试用例之间可能存在严重的冗不足!测试用例之间可能存在严重的冗余,此

30、外可能还会有未测试的软件漏洞余,此外可能还会有未测试的软件漏洞5353w 白盒测试白盒测试(white box testing):结构性测试结构性测试基于覆盖全部代码、分支、路径、条件的测试。由于实现是已知的,测试人员可以严格描由于实现是已知的,测试人员可以严格描述要测试的确切内容。述要测试的确切内容。5454规格说明程序测试用例对于结构性测试,不管采用什么方法,测试用例对于结构性测试,不管采用什么方法,测试用例集合完全局限在已由程序实现的行为集合内。集合完全局限在已由程序实现的行为集合内。(基于程序行为基于程序行为)5555结构性测试的特点结构性测试的特点w 测试人员可以利用线性图论的理论,

31、严格测试人员可以利用线性图论的理论,严格描述要测试的确切内容。描述要测试的确切内容。w 在结构性测试中,测试覆盖指标能提供明在结构性测试中,测试覆盖指标能提供明确的测试范围。确的测试范围。5656从测试方式出发从测试方式出发w 静态测试:静态分析技术,不运行程序,分静态测试:静态分析技术,不运行程序,分析文档(说明书、源程序)进行测试。析文档(说明书、源程序)进行测试。w 动态测试:执行被测程序,通过执行结果分动态测试:执行被测程序,通过执行结果分析软件可能出现的错误。析软件可能出现的错误。5757从测试阶段出发从测试阶段出发w 单元测试单元测试w 集成测试集成测试w 系统测试系统测试5858

32、w编程:编写编程:编写C+、Java或或C#控制控制台程序,从键盘输入三角形三条台程序,从键盘输入三角形三条边边a、b、c,判断该三角形是什么,判断该三角形是什么三角形(等腰、等边、直角、等三角形(等腰、等边、直角、等腰直角、一般、非),假定输入腰直角、一般、非),假定输入数据均为数字,并从屏幕上输出数据均为数字,并从屏幕上输出结果,注意对非法输入数据的处结果,注意对非法输入数据的处理(输出理(输出“输入数据非法输入数据非法”)。)。59w编写编写C+、Java或或C#控制台控制台程序,从键盘输入年、月、程序,从键盘输入年、月、日的值,其中,年份的取值日的值,其中,年份的取值范围为范围为181

33、4,2014,求出该,求出该日期的下一天(假定输入数日期的下一天(假定输入数据均为数字),并在屏幕上据均为数字),并在屏幕上显示结果显示结果596060佣金问题佣金问题w 前亚利桑那洲境内的一位步枪销售商销售前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(密苏里州制造商制造的步枪机(lock)、)、枪托(枪托(stock)和枪管()和枪管(barrel)。枪机卖)。枪机卖45美元,枪托卖美元,枪托卖30美元,枪管卖美元,枪管卖25美元。美元。销售商每月至少要售出一支完整的步枪,销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可且生产限额是大多数销售商在一个

34、月内可销售销售70个枪机、个枪机、80个枪托和个枪托和90个枪管。个枪管。 6161要求要求w 根据当月的销售情况,并计算销售商的佣金如根据当月的销售情况,并计算销售商的佣金如下:下:w 不到(含)不到(含)1000美元的部分为美元的部分为10%;w 1000(不含)(不含)1800(含)美元的部分为(含)美元的部分为15%;w 超过超过1800美元的部分为美元的部分为20%。w 佣金程序生成月份销售报告,汇总售出的枪机、佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。枪托和枪管总数,销售商的总销售额以及佣金。第3章 软件测试风险管理Risk Managem

35、ent63633.1 测试风险的基本概念测试风险的基本概念w 在软件测试中,即使很小的软件系统,也在软件测试中,即使很小的软件系统,也不可能对系统的所有方面进行测试,就会不可能对系统的所有方面进行测试,就会存在测试风险,即没有安排或执行测试用存在测试风险,即没有安排或执行测试用例,但是存在用户发现缺陷的可能性。例,但是存在用户发现缺陷的可能性。n测试风险发生的可能性测试风险发生的可能性n测试风险发生后的影响测试风险发生后的影响64测试风险的分类测试风险的分类w技术风险技术风险w管理风险管理风险653.2 测试风险的识别技术测试风险的识别技术w头脑风暴法头脑风暴法w访谈访谈w风险检查表风险检查表

36、663.3 测试风险分析测试风险分析w 确定测试范围的功能点和性能属性确定测试范围的功能点和性能属性w 确定测试风险发生的可能确定测试风险发生的可能w 确定测试风险发生后产生的影响程度确定测试风险发生后产生的影响程度w 计算测试风险优先级计算测试风险优先级w 确定测试风险优先级确定测试风险优先级673.4 测试计划风险的应对措施测试计划风险的应对措施w缩小范围缩小范围w推迟实现推迟实现w增加资源增加资源w减少质量过程减少质量过程第第4章章 测试过程概述测试过程概述Testing Process694.1 常见的测试过程模型常见的测试过程模型w 瀑布模型瀑布模型w V模型模型w W模型模型w X

37、模型模型w H模型模型瀑布模型瀑布模型的核心思想是按工序将问题化简,将功能的实现与设计分开,采用机构化的分析与设计方法将逻辑实现与物理实现分开。软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试、运行维护。规定活动自上而下、相互衔接的固定次序,逐级下落。瀑布模型的重要地位瀑布模型的重要地位瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚

38、至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。瀑布模型的优点为项目提供了按阶段划分的检查点。当前一阶段完成后,您只需要去关注后续阶段。 可在迭代模型中应用瀑布模型。缺点在项目各个阶段之间极少有反馈。 只有在项目生命周期的后期才能看到结果。 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。总结传统的瀑布模型,软件测试的地位和价值并没有体现出来,测试只能作为一个事后补救工作。早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加

39、了开发的风险。测试传统模型-V模型V模型是最广为人知的测试模型由Paul Rook在世纪年代后期提出的,旨在改进软件开发的效率和效果。从左到右,描述了基本的开发过程和测试行为非常明确地标明了测试过程中存在的不同级别,描述了这些测试阶段和开发过程期间各阶段的对应关系V模型(测试与开发阶段对应关系)单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。V模型的缺陷存在局限性,仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,只针对程序进行的寻找错误的活动,忽视了测试活动对需求

40、分析,系统设计等活动的验证和确认的功能,直到后期的验收测试才被发现。W W模型模型W模型由Evolutif公司提出。W模型从V模型演化过来,实际上开发是V,测试也是与此并行的V。相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W W模型模型测试伴随整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。W模型的缺点W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作工作。这样就无法支持迭代的开发

41、模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。X模型很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点)左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。H H模型模型H H模型模型在H模型中,软件测试过程是一个独立的

42、流程,贯穿于整个产品周期,与其他流程并发地进行。H模型指出,软件测试要尽早准备,尽早执行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。软件测试可以根据被测物的不同而分层次进行。不同的测试活动可以是按照某个次序先后进行的。但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。第3章 数学背景离散数学8585w 关于集合,重要的是它使我们能够作为一关于集合,重要的是它使我们能够作为一个单位,或一个整体引用多个事物。个单位,或一个整体引用多个事物。w 例如:我们可能要引用正好有例如:我们可能要引用正好有3030天的月份,天的月份,若采用集合论表示法可以写为:若采

43、用集合论表示法可以写为: M1= = 以上表示法读做以上表示法读做“M1”是元素是元素4 4月、月、6 6月、月、9 9月、月、1111月的集合。月的集合。3.1集合论集合论(set theory)月月、月、月、119648686w 集合中的项叫做集合的元素或成员,这种集合中的项叫做集合的元素或成员,这种关系采用符号关系采用符号 表示。表示。w 因此,我们可以有因此,我们可以有 3.1.1集合成员关系集合成员关系112M月14M月如果事物是集合成员如果事物是集合成员如果事物不是集合成员如果事物不是集合成员87873.1.2集合定义集合定义w 集合定义有三种方式:简单列出集合的元集合定义有三种方

44、式:简单列出集合的元素,给出辨别规则,或通过其他集合构建。素,给出辨别规则,或通过其他集合构建。w 定义一个年份集合为:定义一个年份集合为: Y =1812,1813,1814, ,2011,2012 通过列出元素定义集合时,与元素顺序没通过列出元素定义集合时,与元素顺序没有关系有关系 8888w 也可以通过给出辨别规则来定义。也可以通过给出辨别规则来定义。 如可以把年份定为如可以把年份定为: Y =year:1812year2012 读做读做 “Y是所有是所有year的集合,使得的集合,使得year在在1812(含)(含)2012(含)之间(含)之间” 。w 当采用辨别规则定义集合时,必须保

45、证是当采用辨别规则定义集合时,必须保证是无歧义无歧义的,即定义要清晰。给出年份的所的,即定义要清晰。给出年份的所有可能取值,因此可以判断某个年份是否有可能取值,因此可以判断某个年份是否在我们的集合中。在我们的集合中。89893.1.3空集空集w 空集采用符号空集采用符号 ,在集合论中占有特殊位在集合论中占有特殊位置。空集不包含元素。置。空集不包含元素。n空集是唯一的,即不会有两个空集;空集是唯一的,即不会有两个空集;n、 都是不同的集合。都是不同的集合。w 如果集合被辨别规则定义为永远失败。那如果集合被辨别规则定义为永远失败。那么该集合就是空集。如:么该集合就是空集。如: = =yearyea

46、r:2012year18122012year18129090w 在维恩图中,集合被表示为一个圆圈,圆在维恩图中,集合被表示为一个圆圈,圆圈中的点表示集合元素。这样我们可以把圈中的点表示集合元素。这样我们可以把集合集合M1= = ,表示为表示为3.1.4维恩图维恩图4月月 11月月9月月 6月月月月、月、月、11964U U9191w 给定集合给定集合A和和B,包括并、交、补、相对补、,包括并、交、补、相对补、对称差。对称差。w 两个集合的笛卡尔积(又叫做叉积),它取两个集合的笛卡尔积(又叫做叉积),它取决于有序对偶的概念,无序和有序对偶的表决于有序对偶的概念,无序和有序对偶的表示法一般是:示法

47、一般是: 无序对偶无序对偶:(a,b) 有序对偶:有序对偶: 若若 ab 则,则,(a,b)= (b,a), 但但 3.1.5集合操作集合操作9292w 定义:两个集合定义:两个集合A和和B的笛卡尔积,是集合的笛卡尔积,是集合 AB= :xAyBAyBw 集合集合A的势是的势是A中的元素数,采用中的元素数,采用|A|表示,表示,对于集合对于集合A和和B, |AB|=|A|B|,利用笛卡利用笛卡尔积可以尔积可以描述具有多个输入变量的程序的描述具有多个输入变量的程序的测试用例测试用例。w 笛卡尔积的乘法性质,意味着这种形式的笛卡尔积的乘法性质,意味着这种形式的测试会生成大量测试用例。测试会生成大量

48、测试用例。9393w A是是B的子集,记做的子集,记做 ,当且仅当当且仅当w A是是B的真子集,记做的真子集,记做 ,当且仅当当且仅当 w A和和B是相等集合,记做是相等集合,记做A=B,当且仅当当且仅当 w 若若A的每个元素也是的每个元素也是B的元素,集合的元素,集合A是集合是集合B 的子集的子集;如果如果A和和B互为子集,则互为子集,则A和和B相等。相等。 3.1.6集合关系集合关系BABaAaBABAAB BA AB94943.1.7子集划分w “划分划分”的含义是将一个整体分为小块,使的含义是将一个整体分为小块,使得所有事物都在某个小块中,不会遗漏。得所有事物都在某个小块中,不会遗漏。

49、w 形式化的描述是:形式化的描述是: 定义:给定集合定义:给定集合B,以及以及B的一组子集的一组子集A1、A2, ,An,这些子集是这些子集是B的一个划分,的一个划分,当且仅当当且仅当A1A2An=B,且且jiAAji9595w 由于一个划分是一组子集,因此我们常常把由于一个划分是一组子集,因此我们常常把单个子集看作是划分的元素单个子集看作是划分的元素。w 这个定义的两部分对于测试人员很重要。第这个定义的两部分对于测试人员很重要。第一部分保证一部分保证B的所有元素都在某个子集中,第的所有元素都在某个子集中,第二部分保证二部分保证B没有元素在两个子集中。没有元素在两个子集中。w 划分对测试人员很

50、有用,因为划分能保证:划分对测试人员很有用,因为划分能保证:完备性和无冗余性完备性和无冗余性。当研究功能性测试,经。当研究功能性测试,经常会出现漏洞和冗余性:有些内容没有被测常会出现漏洞和冗余性:有些内容没有被测试,而另外一些内容被测试多次。试,而另外一些内容被测试多次。功能性测功能性测试的主要困难之一,就是找出合适的划分试的主要困难之一,就是找出合适的划分。96963.1.8集合恒等式集合恒等式名称名称 表达式表达式等同律等同律 A=A A=A AU =A AU =A支配律支配律 AU =UAU =U A= A=幂等律幂等律 AA =AAA =A AA =A AA =A交换律交换律 AB =

51、 BA AB = BA AB = BA AB = BA 9797名称名称 表达式表达式求反律求反律 ( (A A) )=A=A结合律结合律 A(BC)=(AB)CA(BC)=(AB)C A(BC)=(AB)C A(BC)=(AB)C分配律分配律 A(BC)=(AB)(AC)A(BC)=(AB)(AC) A(BC)=(AB)(AC) A(BC)=(AB)(AC) 摩根律摩根律 ( (AB)AB)=A=ABB ( (AB)AB)=A=ABB 9898w 所有功能性测试的基础都是函数。所有功能性测试的基础都是函数。w 定义:定义:给定集合给定集合A和和B,函数函数f是是AB的一个的一个子集,使得对于

52、子集,使得对于ai,ajA,bi,bjBB, , f(ai)=bi ,f(aj)=bj,3.2函数函数jijiaabb3.2.1定义域与值域定义域与值域n集合集合A是函数是函数f的定义域,集合的定义域,集合B是值域。是值域。 n函数的表示法:函数的表示法:f:A B或或BAf9999w 在以下定义中,首先给出函数在以下定义中,首先给出函数f:A B,并且定义并且定义集合:集合: 这个集合有时记做这个集合有时记做A在在f下的映象。下的映象。w 定义:定义: f是从是从A到到B的的上函数上函数,当且仅当,当且仅当f(A)=B; f是从是从A到到B的的中函数中函数,当且仅当,当且仅当 f是从是从A到

53、到B的的一对一函数一对一函数,当且仅当对于所有,当且仅当对于所有 ai,ajA, 3.2.2函数类型函数类型AaafbBbAfiiii对于某个)(:)(BAf)()()(jijiafafaa100100w f是从是从A到到B的的多对一函数多对一函数,当且仅当存在,当且仅当存在ai,ajA, aiaj使得使得f(ai) = f(aj);w 所有这些对于测试都很重要。中函数与上所有这些对于测试都很重要。中函数与上函数,意味着函数,意味着基于定义域还是基于值域的基于定义域还是基于值域的功能性测试,功能性测试,一对一函数要求比多对一函一对一函数要求比多对一函数要多得多的测试。数要多得多的测试。1011

54、01w 假设取假设取A、B和和C作为作为NextDate程序的日期集程序的日期集合,其中合,其中:A = =日期:日期:18121812年年1 1月月1 1日日日期日期2012012 2年年1212月月3131日日B = =日期:日期:18121812年年1 1月月2 2日日日期日期20132013年年1 1月月1 1日日C C = = A Bw 现在,现在, NextDate : A B是一个一对一的是一个一对一的上函数,上函数,NextDate : A C C是一个一对一是一个一对一 的中函数。的中函数。1021023.2.3函数合成函数合成w 假设我们有集合和函数,使得一个函数的假设我们

55、有集合和函数,使得一个函数的值域是另一个函数的定义域:值域是另一个函数的定义域: f:A B g:BC h:CD 如果出现这种情况,则可以合成函数。如果出现这种情况,则可以合成函数。w 设引用集合定义域和值域的特定元素设引用集合定义域和值域的特定元素aA、 bBB、cCC、 dDD,并假设并假设f(af(a)=)=b b、g(bg(b)=c)=c和和h(ch(c)=d)=d,则则函数函数g g和和f f的合成的合成为:为: dchbghafghafgh)()()()(1031033.3关系关系w 函数是关系的一种特例函数是关系的一种特例w 定义:给定两个集合定义:给定两个集合A和和B,关系关系

56、R是笛卡尔积是笛卡尔积AB的一个子集。的一个子集。w 给定两个集合给定两个集合A和和B,一个关系一个关系 关系关系R的的势势是:是: 一对一势一对一势,当且仅当,当且仅当R是是A到到B的一对一函数的一对一函数 多对一势多对一势,当且仅当,当且仅当R是是A到到B的多对一函数的多对一函数 一对多势一对多势,当且仅当至少有一个元素,当且仅当至少有一个元素aA在在R中的中的两个有序对偶中,即两个有序对偶中,即(a,bi)RR和和( (a,a,bj)RRBAR104104设设A是一个集合,设是一个集合,设 是定义在是定义在A上的上的一个关系,关系具有四个特殊属性:一个关系,关系具有四个特殊属性:w 自反

57、的自反的,当且仅当所有,当且仅当所有aAaA, RRw 对称的对称的,当且仅当若,当且仅当若 RR,则则 RRw 反对称的反对称的,当且仅当若,当且仅当若 、 R,R,则则 a=b a=bw 传递的传递的,当且仅当若,当且仅当若 、 R,R,则则 RR3.3.2单个集合上的关系单个集合上的关系AAR105105w 关系关系 是偏序关系,如果是偏序关系,如果R是自反、反对是自反、反对称和传递的。称和传递的。w 关系关系 是等价关系,如果是等价关系,如果R是自反、对称是自反、对称和传递的。和传递的。w 如果如果b1和和b2是在相同的划分元素中,则我们说是在相同的划分元素中,则我们说b1和和b2是相

58、关的是相关的(b1Rb2),这个关系是自反的、对称,这个关系是自反的、对称的、传递的。叫的、传递的。叫由划分归纳的等价关系由划分归纳的等价关系。w 如果从定义在一个集合上的等价关系开始,则可如果从定义在一个集合上的等价关系开始,则可根据与该等价关系相关的元素定义子集,这些子根据与该等价关系相关的元素定义子集,这些子集就构成划分,由等价关系归纳的划分,划分中集就构成划分,由等价关系归纳的划分,划分中的集合叫做等价类。的集合叫做等价类。w 因此,因此,只测试等价类中的一个元素,并假设剩余只测试等价类中的一个元素,并假设剩余的元素有类似的测试结果,可大大提高测试效率。的元素有类似的测试结果,可大大提

59、高测试效率。AARAAR举例107107NextDate问题问题w NextDate是一个有三个变量(月份、日是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都具有的那个日期。变量月份、日期和年都具有整数值,且满足以下条件:整数值,且满足以下条件:w c1. 1月份月份12w c2. 1月份月份31w c3. 1812年年2012 108108程序要求程序要求w 类类Date:year、month、day、Isleapyear()、Week()、NextDate()、PreDate()w 对该程序进行调试、测试、确

60、保没有错误,对该程序进行调试、测试、确保没有错误,记录所有测试的输入数据、输出数据记录所有测试的输入数据、输出数据OVER第4章 数学背景图论110110 4.1图图w 图图(又叫线性图又叫线性图)是一种由两个集合定义的抽是一种由两个集合定义的抽象数学结构,即一个节点集合和一个构成象数学结构,即一个节点集合和一个构成节点之间连接的边集合。节点之间连接的边集合。w 定义:图定义:图G=由节点的有限由节点的有限(并且非空并且非空) 集合集合V和节点无序对偶集合和节点无序对偶集合E组成。组成。 V=n1,n2, ,nm和和E=e1,e2, ,ep 其中每条边其中每条边ek=ni,nj, ni,njV

温馨提示

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

评论

0/150

提交评论