软件工程-软件测试8.ppt_第1页
软件工程-软件测试8.ppt_第2页
软件工程-软件测试8.ppt_第3页
软件工程-软件测试8.ppt_第4页
软件工程-软件测试8.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1,软 件 测 试,2,内容介绍,一 软件测试概述 二 测试方法 三 测试用例的设计 四 测试过程 五 调试,3,防不胜防的软件错误 例:1963年, 美国, 飞往火星的火箭爆炸, 损失$ 10 million. 原因: FORTRAN循环 DO 5 I = 1, 3 误写为 DO 5 I = 1.3,软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工件量约占总工作量40%以上(对于人命关天的情况,测试相当于其它部分总成本的3 5倍)。,软件测试重要性,4,软件测试定义和目的,IEEE标准: 使用人工或自动手段运行或测定某个系统的过程,其目的是检验该软件(系统)是否满足规定的需求,或是清楚地了解预期与实际结果之间的差异。 简述为:按照特定规程,发现软件错误的过程。,5,软件测试的原则,设计测试用例时,要给出测试的预期结果。,要设计不合理输入的测试用例。,充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。,长期保存测试用例,为维护提供方便。在对程序进行修改之后,要进行回归测试。,应制订测试计划并严格执行,排除随意性。,除了检查程序是否做了应该做的工作,还要检查程序是否做了不应该做的工作。,6,注意事项,测试不能表明软件中不存在错误,它只能说明软件中存在错误。,测试员与程序员不应是同一个人。 带感情色彩 逻辑、理解错误,测试工作具有以下性质:挑剔性、复杂性、不彻底性、经济性。,7,软件测试文档,测试计划:测试项目的名称、各项测试的目的、步骤和进度、以及测试用例 测试用例测试数据期望结果 测试报告:测试项目的名称、实测结果和预期项目的比较、发现的问题等。 测试结果测试数据期望结果实际结果,8,二 测试方法,静态测试:指测试程序采用人工检测和计算机辅助静态分析的手段对程序进行检测。 动态测试:指通过运行程序发现错误。 黑盒测试和白盒测试,9,黑盒测试,黑盒测试法:测试软件的功能是否达到预期的要求。测试主要着眼于软件的外部特性。,black-box , or closed-box testing Make sure that every kind of input is submitted, and the output observed matches the output expected. Functional testing,10,白盒测试,白盒测试法:测试软件的内部结构和数据结构是否符合设计要求,测试人员需要了解软件内部结构和处理过程,对其尽可能多的逻辑路径进行测试。,white-box , or open-box, clear-box testing Use the structure of the program to test. Structural testing,11,主要问题,穷尽测试(complete test)通常是不可能的。,假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试: 可能采用的测试数据组: 232232 264 如果测试一组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。而且还应测试输入非法数据的情况。,12,穷尽测试,例:(White-box) 下图所示的程序中共有 5201014条可能的执行通路,显然,每条通路都执行一遍是不现实的。,黑盒法和白盒法都不能使测试达到彻底,为了用有限的测试发现更多的错误,需精心设计测试用例。,测试一组需1毫秒, 完成需3170年。,13,三 测试用例的设计白盒技术,逻辑覆盖:考虑程序内部有判定存在的逻辑覆盖程度。,循环覆盖:通过限制循环次数来测试含有循环结构的程序。,基本路径测试:设计测试用例保证基本路径至少通过一次。,14,1、语句覆盖,每个语句至少执行一次。,Test case : A=2 , B=0 , X=*.,问题:若AND错写为OR,或X1错写为X1,则错误无法由上例测出。,15,2、判定覆盖,在语句覆盖的基础上,每个判定的每个分支至少执行一次。,Test cases: A=3 , B=0 , X=1(TF) A=1 , B=1 , X=3(FT),问题:若AND错写为OR,仍然无法被测出。,16,3、条件覆盖,在语句覆盖的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,Test cases: A=2 , B=0 , X=4(TT) (满足A1, B=0; A=2, X1) A=1, B=1, X=1(FF) (满足A1, B0; A 2, X1),问:条件覆盖 ? 判定覆盖,答: 不一定。 反例: A=2, B=0, X=1(TT) (满足A1, B=0; A=2, X 1) A=1, B=1, X=4(FT) (满足A1, B0; A 2, X 1 ),4、判定/条件覆盖: 即判定覆盖条件覆盖,OR,17,5、条件组合覆盖,每个判定表达式中条件的各种可能组合都至少出现一次。,全部可能的条件组合为: A1, B=0 A1, B 0 A1, B=0 A1, B 0 A=2, X1 A=2, X 1 A 2, X1 A 2,X 1,Test cases: 1. A=2, B=0, X=4 (T T) 2. A=2, B=1, X=1 (F T) 3. A=1, B=0, X=2 (F T) 4. A=1, B=1, X=1 (F F) ,问题:没有测试到(T F)路径的情形,18,6、路径覆盖,每条可能的路径都至少执行一次,若图中有环,则每个环至少经过一次。,Test cases: A=1 , B=1 , X=1 (F F) A=1 , B=1 , X=2 (F T) A=3 , B=0 , X=1 (T F) A=2 , B=0 , X=4 (T T),全部可能的条件组合为: A1, B=0 A1, B 0 A1, B=0 A1, B 0 A=2, X1 A=2, X 1 A 2, X1 A 2,X 1, ,满足路径覆盖未必满足条件组合覆盖。,19,逻辑覆盖,实际应用:以条件组合覆盖为主,补充部分用例,以达到路径覆盖标准 。,20,循环覆盖,单循环:设允许执行循环的最大次数为n。设计测试用例如下: 1、跳过循环; 2、只执行循环一次; 3、执行m次,mn; 4、执行n-1次、n次、n+1次。,嵌套循环: 1、置外循环处于最小循环计数值,对内层进行单循环测试; 2、由里向外,进行下一层的循环测试。,21,基本路径测试,基本路径测试是在程序流程图的基础上,通过分析由控制构造的环路复杂性,导出基本路径集合,设计测试用例保证这些基本路径至少通过一次。,程序图:是反映控制流程的有向图,其小圆圈称为结点,代表流程图中的处理,有向箭头代表控制流向,称为边或路径。,(1)一个边必须终止于一个结点,在选择分支的汇合处即使没有语言也应该有汇聚点。,22,转换程序图时的注意事项,(2)如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。,23,基本路径测试步骤,Path1:111 2:1234 510111 3:12367 910111 4:1 2368 910111,1、导出程序流程图的拓扑结构程序图 2、计算程序图的环路复杂性:平面图中区域的个数+1 3、确定只包含独立路径的基本数据集; 4、设计测试用例,确保基本路径集合中每条路径至少执行一次。,假定判断内没有复合的条件,314,M-N+2P=11-9+2=4 弧数(11);结点数(9);强连通分量(1),24,基本路径测试举例,int GetMax(int n, int data ) int k=0; for ( int j=1; j datal k ) k=j; return k; ,2,1,3,4,5,6,7,8,环路复杂性3,基本数据集: 1238 1234567238 123467238,测试用例: N=1,data=2 N=2,data=2,4 N=2,data=4,2,25,设计测试用例黑盒技术,等价类划分法 边界值分析法 错误推测 因果图,26,等价类划分法,它将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。 使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。,27,划分等价类,根据每一个输入的条件,找出两个(合理的等价类和不合理的等价类)或更多的等价类。,若已划分的等价类中各元素在程序中的处理方式不同,则进一步划分。,如果规定了输入数据必须遵循的规则,可确定一个合理等价类,(符合规则)和若干个不合理等价类。,如果规定了输入数据的一组值,而且程序对不同的输入值做不同的处理,则每个允许的输入值是一个合理等价类,此外还有一个不合理等价类(任何一个不允许的输入值 )。,28,选取测试用例,为每个等价类编号。 设计一个新的测试用例,它能包括尽可能多的尚未包括的合理的等价类,重复这步,直到包括了所有合理等价类 。 设计一个新的测试用例,它能包括且仅包括一个尚未包括的不合理的等价类,重复这一步,直到包括了所有不合理等价类。,29,2、确定测试用例:为合理等价类:197505 覆盖158 为不合理等价类:1975kl 覆盖2;19755 覆盖3; 1975005 覆盖4;195712 覆盖6;200501 覆盖7; 197500 覆盖9;197518 覆盖10。 共8个测试用例。,例如:某一报表处理系统,要求输入处理报表的日期限制在1958年1月至1980年12月。年月由6位数字字符组成,前四位代表年,后两位表示月。用等价类划分法设计测试用例。 1、划分等价类并编号:,2,1,3,4,5,6,7,8,9,10,30,边界值分析法,经验表明:程序往往在处理边界情况时发生错误 。边界情况指输入等价类和输出等价类边界上的情况。 使用边界值分析法设计测试用例时,一般与等价类划分结合起来,将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。,总共用了11个测试用例。通常,边界值分析法比等价类划分法发现错误的能力更强。但是对边界的分析与确定比较复杂,要求测试人员具有更多的经验和创造性。,32,错误推测法、因果图,错误推测法:根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例。,因果图:通过画因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。它能有效的检测输入条件的各种组合可能会引起的错误。,33,综合策略,通常先用黑盒法设计基本的测试用例,然后用白盒法补充一些必要的测试用例。,注: 即使用上述综合策略设计测试方案,仍不能保证发现一切错误。例如Lucent公司其软件能达标运行的成功率为 80%。,在任何情况下都应使用边界值分析法。 必要时用等价类划分法补充一些测试用例。 再用错误推测法补充测试用例。 检查上述测试用例的逻辑覆盖程度,如未满足所要求的覆盖标准,再添加测试用例。 如需求说明中含有输入条件的组合情况,则一开始就可使用因果图法。,34,四 测试过程,软件测试过程概述 软件测试过程中的工作流 软件测试步骤及与各开发阶段的关系 单元测试 集成测试 确认测试和系统测试,35,软件测试工作流,36,软件测试工作流,软件配置:软件需求规格说明、软件设计规格说明、源代码等; 测试配置:测试计划、测试用例、测试程序等; 测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。 测试结果分析:比较实测结果与预期结果,评价错误是否发生。 排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。 修正后的文档再测试:直到通过测试为止。,37,软件测试的步骤,38,测试与软件开发各阶段的关系,软件开发过程是一个自顶向下,逐步细化的过程。测试过程是依相反顺序安排的自底向上,逐步集成的过程。,39,单元测试测试内容,1、模块接口测试:主要检查数据能否正确地通过模块。例:形参/实参是否匹配等、文件是否先打开后使用、文件是否关闭。,5、边界条件:如输入/输出数据的等价类边界,选择条件和循环条件的边界,复杂数据结构的边界等都应进行测试。,4、错误处理:预见出错条件、设置适当的出错处理、一旦出错,保证逻辑上正确性。,3、重要的执行路径:如:算数运算优先次序不正确、精度不够、不同的数据类型比较、浮点数精度误差造成比较不等、多循环或少循环一次、不能终止的循环等。,2、局部数据结构:如未赋初值、变量名截短。,40,单元测试测试方法,单元测试在编码阶段进行。需要构造“测试环境”的额外开销:编写驱动模块和桩模块。,测试环境,驱动模块的作用是用来模拟被测模块的上级调用模块,只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。,桩模块用来代替被测模块所调用的模块。它的作用是返回被测模块所需的信息。,41,集成测试(组装、联合),在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统而进行的测试。,非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行的测试。,渐增式测试:逐个把未经测试的模块组装到已经测试过的模块上去,进行集成测试,每加入一个新模块进行一次集成测试,直至所有模块组装完毕。,42,渐增式测试的方法,自顶向下结合:从主控模块开始,沿控制层次向下,或先深度,或先宽度地逐一将模块组合起来,优点:较早发现高层模块接口、控制方面的问题;不需要设计驱动模块。缺点:需要建立桩模块(很困难);算法和I/O在底层、较晚才能发现问题。,43,渐增式测试的方法,自底向上结合:从程序模块结构的最底层模块开始组装和测试。,各有优缺点,互为补充。一般低层模块使用自底向上结合的方法组装成子系统,然后由主模块开始自顶向下对各子系统进行集成测试。,优点:建立驱动模块比桩模块容易;算法和I/O在首先得到测试;多个模块并行测试。 缺点:主要的控制最后才能测试,影响范围大。,44,两种方式比较,非渐增式方法把单元测试和集成测试分两个不同阶段完成,而渐增式方法把它们合在一起,同时完成。,非渐增式方法需要更多的工作量,因为每个模块都要驱动模块和桩模块。,非渐增式方法开始可以并行测试所有模块,能充分利用人员。,渐增式方法比较彻底,但占用时间较多。,渐增式方法有利于排错,发现错误往往和最近加进来的模块有关,而非渐增式方法很难判断哪一部分接口出错。,渐增式方法可以较早发现接口之间错误。,45,确认测试(有效性测试),任务:验收软件的有效性(

温馨提示

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

评论

0/150

提交评论