版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期当前位置:软件的生存周期第13章软件编程与测试13.1软件编程 13.1.1编程语言的选择(自学) 13.1.2编程风格(自学)13.2软件测试 13.2.1软件测试概述 13.2.2软件测试方法 13.2.3软件测试过程13.1软件编程学习目标:1、掌握:一般的编码原则2、了解:程序效率与质量评价学习要点:
程序设计语言的分类、特点和选择,编程的风格、效率。
相关概念编码 把软件设计的结果用某种计算机语言编写成计算机能够识别的程序,是软件实现的一个重要环节。良好的编码风格
有助于编写可靠、易维护的程序,编码风格在很大程度上决定程序的质量,但不影响机器执行程序的速度。(源程序文档、数据说明、语句结构、输入输出)源程序文档符号的命名(规范、容易理解);程序的注释;书写格式。程序的注释一般分为序言性注释。位于程序模块的开头。功能性注释。位于源程序当中。程序的效率 指程序的执行速度及程序占用的存储空间。通用的规则尽量将函数写得简短。变量声明的位置离使用的位置越近越好。不要使用宏(macro)去创建你自己的编程语言。不要使用goto。不要让右括号与对应的左括号之间的距离超过一个显示屏。编码风格:让错误的代码显而易见需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期当前位置:软件的生存周期13.2软件测试学习目标:
1.熟悉软件测试的概念、原则、方法。
2.掌握软件测试技术(白盒、黑盒测试)。
3.熟悉软件测试过程、软件测试步骤。学习要点:
软件测试的概念、原则、方法,白盒、黑盒测试、软件测试步骤。13.2软件测试学习内容: 13.2.1软件测试概述
13.2.2软件测试方法
13.2.3软件测试过程软件测试的重要性每1000行源代码中会有30-80个错误;被广泛测试过的软件仍然每1000行有0.5-3个错误;一个错误越晚被发现,其修复的成本越高。13.2.1软件测试概述软件测试的重要性◆软件测试是软件开发过程中非常重要的一个环节*对软件需求分析、设计规格说明书以及编码的最后复审。*其工作量往往占软件开发总工作量的40%以上。*软件测试是确保软件质量的一种有效(可操作)手段。*软件测试横跨了两个阶段: ·单元测试——编码阶段
·综合测试——测试阶段错误是不可避免的。软件测试是在软件开发过程中保证软件质量、提高软件可靠性的最主要的手段之一。1.软件测试的定义、目的和任务定义:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并应用这些测试用例去运行程序,发现程序错误的过程。测试的目的和任务测试的目的: 是以最少的人力、物力和时间投入,尽可能多地发现软件中的各种错误。测试的任务: 通过在计算机上执行程序,暴露程序中潜在的错误。
注意:软件测试中没有发现错误是否意味着软件没有错误?=>测试不充分,潜在错误未能发现。软件测试的特点(1)软件测试的开销大 按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。(2)不能进行“穷举”测试 只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的:PXYZ程序P有两个整型输入量X、Y,输出量为Z,在32位机上运行。所有的测试数据组(Xi,Yi)的数目为:232*232=264。若1毫秒执行1次,共需5亿年。软件测试的特点(3)软件测试难度大 根据上述分析,既然不能进行“穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择—“高效的测试用例”什么是“高效的测试用例”?如何选择“高效的测试用例”?讨论的主要问题!!!2.软件测试的基本原则(了解)
测试的基本原则(1)不要抱有“软件不会有错或查不出错”的幻想。(2)设计测试用例时,应给出测试的预期结果
测试用例={输入数据+预期结果}(3)对合理的和不合理的输入数据都进行测试。(4)应检查程序功能是否完备、是否多余。(5)测试人员不应由编程者(对程序印象深刻、熟悉程序功能、艺术设计)来承担。(6)测试完后,应该完整地保留所有的测试文件。
3.软件测试的特性1.挑剔性对于被测程序就是要“吹毛求疵”,为证明程序有错的目的去测试。2.复杂性搞好一个大型程序的测试,其复杂性不亚于对这个程序的开发。
3.不彻底性程序测试只能证明错误的存在,但不能证明错误不存在。4.经济性
选择典型的测试用例,以便使用尽可能少的测试用例,发现尽可能多的程序错误。测试的特性示例例:穷举测试与选择测试
穷举测试—输入一切可能的数据,让程序都执行一遍(事实上是不可能的)选择测试--选择一些有代表性的、典型的数据作为测试用例,进行有限的测试。结论:(1)所有可能输入的数据都检查一遍是不可能的。(2)所有的路径都走一遍是不可能的.因此,降低测试成本(一般占整个开发成本的1/3左右),选择测试用例时应注意遵守“经济性”的原则。4.软件测试文档(自学)13.2.2软件测试方法测试方法分类:程序测试静态测试走查(程序不执行)办公桌检查动态测试(程序执行)黑盒测试白盒测试静态分析代码审查代码会审(自动方式)(人工方式)测试技术的分类图1、静态分析(测试)技术
1)按照测试过程是否在实际应用环境中来分,有静态分析与动态测试:静态分析(测试)技术
不执行被测软件,人工对软件进行阅读和检查程序的静态结构,找出编译不能发现的错误。
主要方法:
·代码会审--对源程序进行审查。
·走查--阅读程序,扮演“计算机”运行,数据要简单。2、动态测试技术
动态测试技术
动态测试
--上机测试包括:①设计测试用例②执行被测程序③分析执行结果并发现错误
动态测试方法:
·白盒测试·黑盒测试说明:动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结构和性能的正确性的测试。
动态测试方法白盒测试(逻辑结构测试):思想已知程序内部工作流程,通过测试检验程序内部动作是否按规格说明书的规定正常运作。依据针对程序的内部逻辑结构设计测试用例。特点完全了解程序的结构和处理过程。透明的白盒子玻璃盒测试设计测试用例动态测试方法黑盒测试(功能测试):思想根据已知程序的功能和性能(而不是内部细节),通过测试检验每个功能和性能是否正常。依据程序的功能和性能描述。特点知道程序的功能和性能,完全不考虑程序的内部结构和处理过程。黑盒子13.2.2软件测试方法设计测试用例:针对特定功能或组合功能设计测试方案。测试用例的选择既要考虑一般情况,也应考虑极限情况以及最大和最小的边界值情况。定义:测试用例={测试数据+期望结果}{}:表示重复
它表明:测试一个程序要使用多个测试用例,而每一个测试用例都应包括一组测试数据和一个相应的期望结果。测试结果={测试数据+期望结果+实际结果}黑盒测试法白盒测试法等价分类法边值分析法错误猜测法因果图法语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径测试*常用的设计测试用例的方法(1)
黑盒测试方法
黑盒测试
—又称功能测试或数据驱动测试
—根据程序的功能或程序的外部特性来设计测试用例。
黑盒测试主要是为了发现以下几类错误:
·是否有不正确或遗漏了的功能?
·在接口上,输入能否正确地被接受?
·能否输出正确的结果?
·是否有数据结构错误或外部信息(例如数据文件)
访问错误?
·性能上是否能够满足要求?
·是否有初始化或终止性错误?黑盒测试方法包括:
·等价分类法
·边界值分析法
·错误猜测法
·因果图法(1)
黑盒测试方法黑盒测试方法:1)等价分类法1)等价分类法
:把被测程序的输入数据的可能值分成若干个“等价类”。(合理假定:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同)
设计等价类测试用例的步骤:
①划分等价类。有效等价类(合理等价类)无效等价类(不合理等价类)②选择测试用例给每个等价类编号。设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复。设计一个新的测试用例,使其仅覆盖一个无效等价类。重复。测试用例选择的原则:
·有效等价类的测试用例尽量共用。
·无效等价类必须每类一例。
划分等价类的规则(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。
例:输入值是学生成绩,范围是0~1000
100有效等价类0≤成绩≤100无效等价类成绩>100无效等价类成绩<0(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。(3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。(4)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。(5)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。划分等价类的规则黑盒测试方法:2)边界(缘)值分析法把测试值选在输入域和输出域等价类的边界上。(等于、稍小于、稍大于)测试边界线测试临近边界的合法数据,以及刚超过边界的非法数据。注:越界测试通常简单地加1或很小的数(对于最大值)和减1或很小的数(对于最小值)。黑盒测试方法:2)边界(缘)值分析法例:
A按照输入值范围的边界。例如:输入值的范围是-1.0至1.0,则可选择用例:–1.0、1.0、-1.001、1.001。
B按照输入/输出值个数的边界。例如:输入文件可有1-255个记录,则设计用例:文件的记录数为0个、1个、255个、256个。
C输出值域的边界。例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。边界值分析法与等价分类法区别(1)边界值分析在某等价类中以边界情况(等于、刚刚大于、刚刚小于)作为主要目标,而等价分类法则任取值/典型值作为测试数据。(2)边界值分析法边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。比等价分类法代表性更广,发现错误的能力也越强。黑盒测试方法:2)边界(缘)值分析法黑盒测试方法:3)错误猜测法
基本思想:凭经验或直觉推测可能的错误,列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。常测试数据中的:缺省值/空白/空值/零值/无黑盒测试方法:4)因果图法因果图:形式化语言,组合逻辑网络图。 把输入条件视为“因”,把输出或程序状态的改变视为“果”,将黑盒看成是从因到果的网络图。采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出关系。基本思想: 利用因果图导出高效的测试用例,它适合于检查程序输入条件与输出条件之间的因果关系。黑盒测试方法:4)因果图法因果图的基本符号:0-表示“不出现” 1-表示“出现”恒等 若a为1,则b为1;否则b为0。
“非”函数若a为1,则b为0;否则b为1。
“或”函数若a或b为1,则d为1;否则d为0。
“与”函数若a与b同为1,则d为1;否则d为0。abababd∨abd∧(2)
白盒测试白盒测试
:又称结构测试或逻辑驱动测试根据程序内部结构设计测试用例:逻辑覆盖测试。(逻辑覆盖标准,测试判定框)路径测试。(程序执行路径的考察)白盒测试法主要进行如下的检查对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等等。逻辑覆盖测试重点考察是流程图中的判定框逻辑覆盖测试包括:弱1.语句覆盖
2.判定覆盖
3.条件覆盖
4.判定/条件覆盖强5.条件组合覆盖逻辑覆盖测试1)语句覆盖 选择测试用例,使得每一个语句至少能被执行一次。左图期望的执行?ace说明:语句覆盖是最弱的逻辑覆盖测试数据?A=2,B=0,X=3开始结束FTFTA>1ANDB=0A=2ORX>1X:=X/AX:=X+1abcde逻辑覆盖测试2)判定覆盖(又称分支覆盖):
设计若干个测试用例,每个判定的取“真”和“假”分支至少经历一次。图中期望通过路径?ace和abd(或acd和abe)选择输入数据为
A=3,B=0,X=1,沿acd执行
A=2,B=1,X=3,沿abe执行开始结束FTFTA>1ANDB=0A=2ORX>1X:=X/AX:=X+1abcde逻辑覆盖测试3)条件覆盖:
设计若干个测试用例,每个判定的每个条件的可能取值至少执行一次。即:
A>1,A<=1,B=0,B≠
0 A=2,A≠2,X>1,X<=1测试数据:A=1,B=0,X=4沿路径abe执行A=2,B=1,X=1沿路径abe执行开始结束FTFTA>1ANDB=0A=2ORX>1X:=X/AX:=X+1abcde逻辑覆盖测试4)判定/条件覆盖:
设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定也都取到各种可能的结果。 同时满足判定覆盖和条件覆盖。测试数据:A=2,B=0,X=4沿路径ace执行A=1,B=1,X=1沿路径abd执行开始结束FTFTA>1ANDB=0A=2ORX>1X:=X/AX:=X+1abcde逻辑覆盖测试各种组合:(1)A>1,B=0;(2)A>1,B≠0;(3)A<=1,B=0;(4)A<=1,B≠
0;(5)A=2,X>1;(6)A=2,X<=1;(7)A≠
2,X>1;(8)A≠2,X<=1。5)条件组合覆盖:
设计足够的测试用例,使得每个判定条件的各种可能组合至少执行一次。测试数据:A=2,B=0,X=4,覆盖1),5);A=2,B=1,X=1,覆盖2),6);A=1,B=0,X=2,覆盖3),7);A=1,B=1,X=1,覆盖4),8)。开始结束FTFTA>1ANDB=0A=2ORX>1X:=X/AX:=X+1abcde发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次2判定覆盖每一判定的每个分支至少执行一次3条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次4判定/条件覆盖同时满足判定覆盖和条件覆盖的要求5(强)条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次
逻辑覆盖测试的5种标准
6)关于覆盖标准的讨论从上表中可见:(1)语句覆盖发现错误的能力最弱,一般不单独采用,条件组合覆盖最强。(2)判定覆盖与条件覆盖的差别在于:前者把判定看成一个整体,后者则着眼于其中的一个条件(当一个判定只含一个条件时,判定覆盖也就是条件覆盖)。(3)条件组合覆盖在5种覆盖中发现错误的能力最强。从上表可知,凡满足条件组合覆盖的测试数据,也必然满足其余4种覆盖标准。
13.2.3软件测试过程(策略)1.单元测试2.集成测试3.确认(验收)测试4.系统测试软件测试的过程软件开发从高抽象层次向低层次抽象过渡软件测试阅读有关资料,熟悉系统,编写测试计划,设计测试用例从低层次抽象向高层次抽象过渡软件测试的层次(大型软件系统的测试基本上由下述4个步骤组成)单元测试:测试程序中每个模块是否有错误(白盒)。集成测试:测试软件总体结构是否有错误(黑盒+部分白盒)。确认测试:测试软件是否满足用户需求(黑盒)。系统测试:将软件系统与其他部分(数据库、硬件)集成后测试。需求分析概要设计详细设计编码单元测试集成测试确认测试软件开发过程软件测试过程软件开发和测试活动间的关系示意图软件测试的过程软件开发从高抽象层次向低层次抽象过渡软件测试阅读有关资料,熟悉系统,编写测试计划,设计测试用例。从低层次抽象向高层次抽象过渡软件测试过程(策略)
软件测试步骤:测试过程按4个步骤进行,即单元测试、集成(组装)测试、确认测试和系统测试。单元测试单元测试单元测试被测模块被测模块集成测试软件设计信息已测试的模块确认测试已集成的模块软件需求信息系统测试已确认的软件可交付的软件系统其他元素编码阶段测试阶段验收阶段软件测试过程
·单元(模块)测试--分别测试每个模块(编码阶段)。软件测试过程·集成(组装)测试--将模块组合起来测试(软件设计阶段)。·确认(验收)测试--验证软件是否满足需求规格说明书的要求(需求分析阶段)。·系统测试--将开发的软件与硬件与其它系统元素综合起来一起测试。1.单元测试
单元测试(模块测试)策略依据:详细设计描述方法:白盒测试技术(1)单元测试内容(依据测试用例)①模块接口②局部数据结构③重要的执行路径④错误处理通路⑤影响以上各项的边界条件1.单元测试
单元测试(模块测试)策略(1)单元测试内容(依据测试用例)模块模块接口局部数据结构重要执行路径出错处理通路边界测试数据能否正确通过模块。I/O参数值的个数、类型、次序、格式是否正确,I/O文件属性、操作是否正确等。局部数据的完整性和正确性。数据说明是否正确、一致,变量及其初值定义是否正确等。错误处理措施的有效性。检查“错误处理程序”本身的错误。程序容易在边界条件上出错。边界条件常包括循环边界,最大最小值、控制流中等于、大于、小于的比较值等。模块的基本路径测试。重要路径通常是指完成模块功能的主要路径,一般是控制结构。(2)单元测试过程
编译(或汇编)→代码复审→动态测试应紧接在编码之后人工测试和计算机测试实施人员:编码者单元的设计者
单元测试报告1.单元测试
1.单元测试
(3)单元测试的测试环境术语:驱动模块和桩模块
·代替上级模块的——称为驱动模块(driver)
·代替下级模块的——称为桩模块(stub)
驱动模块——相当于所测模块的主程序。它提供程序执行的入口,能够准备测试数据,提供给所测模块,接受输出测试模块返回的数据(输出实测结果)。桩模块——用以代替所测模块调用的子模块。注:桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。被测模块驱动模块桩模块桩模块桩模块2.集成测试集成测试(组装测试)方法要采用黑盒测试技术+部分白盒测试。
目的是按设计要求把通过单元测试的各个模块组装在一起之后进行测试,以便发现与接口有关的各种错误和隐患。
任务根据软件结构制定有效的集成测试策略和实施步骤。根据软件的应用领域和功能要求设计测试用例
2.集成测试内容:重点测试模块接口部分。因存取全局(公用)数据引起的块间干扰。不一致的文件与数据结构。不适当的模块调用顺序。出错处理上的错误等。集成测试分为(模块组织方式):非渐增式测试渐增式测试。2.集成测试模块组织方式有两种:
(1)非渐增式组装测试
--一次把所有的模块组装在一起,对整个程序进行测试。
(2)渐增式组装测试
--先进行模块测试,然后将这些模块逐步组装成较大的系统,每连接一个模块进行一次测试。
渐增式测试又可区分为:
·自顶向下集成
·自底向上集成
·混合式集成
2.集成测试
设计驱动模块或桩模块,对每一个新组装的子系统进行测试,对发现问题较多的子系统或模块应该用白盒法作回归测试。2.集成测试(1)自顶向下测试
——从顶层模块(主控模块)开始,沿着软件的结构图逐步下移,每次只增加一个新的模块。
注:需要设计桩模块
按照移动路线的差异,又可分为:
·深度优先·广度优先
①深度优先的结合方法
--先要组装在软件结构的一条主控制通路上的所有模块。②广度优先的结合方法--沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。集成测试以上图为例,模块测试组装顺序(深度优先)是:
M1-M2-M5-M8-M6-M3-M7-M4以上图为例,模块测试组装顺序(广度优先)是:
M1-M2-M3-M4-M5-M6-M7-M8
被测软件系统结构图M1M2M4M5M6M7M8M3集成测试2)自底向上测试是从软件结构最低层的模块开始组装和测试。需要设计驱动模块。不需要桩模块。集成测试3)混合方式测试要点:
·对软件结构中较上层模块使用自顶向下方法
·对软件结构中较下层和关键算法模块使用自底向上方法3.确认(验收)测试
确认(验收)测试
(黑盒测试)又称为有效性测试或功能测试。其任务是验证系统的功能、性能等特性是否符合需求规格说明。选择测试人员选择测试用例实际运行测试软件计划用户文档开发文档源程序文本支持环境有效性测试软件配置审
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投资顾问面试考核题及答案详解
- 特殊群体急救资源可及性提升方案
- 深度解析(2026)《GBT 18932.10-2002蜂蜜中溴螨酯、44-二溴二苯甲酮残留量的测定方法 气相色谱质谱法》
- 生产项目管理经理的招聘面试题集
- 劳务输出项目可行性分析报告范文(总投资13000万元)
- 教育顾问面试题集及应对策略
- 深度解析(2026)《GBT 9002-2017音频、视频和视听设备及系统词汇》
- 京东物流策划部面试题及策略性答案
- 会计事务所审计师面试问题及答案
- 关于华能集团对副总经理的考核制度分析
- JT-T-961-2020交通运输行业反恐怖防范基本要求
- MOOC 物理与艺术-南京航空航天大学 中国大学慕课答案
- 银行案件复盘分析报告
- 分析方法转移方案课件
- 无创呼吸机面部压疮预防措施
- 全国高校黄大年式教师团队推荐汇总表
- 员工管理规章制度实施细则
- 社会心理学(西安交通大学)知到章节答案智慧树2023年
- 《安井食品价值链成本控制研究案例(论文)9000字》
- GB/T 4135-2016银锭
- GB/T 33084-2016大型合金结构钢锻件技术条件
评论
0/150
提交评论