软件工程-软件测试.ppt

上传人:小飞机 文档编号:6027885 上传时间:2023-09-16 格式:PPT 页数:50 大小:267KB
返回 下载 相关 举报
软件工程-软件测试.ppt_第1页
第1页 / 共50页
软件工程-软件测试.ppt_第2页
第2页 / 共50页
软件工程-软件测试.ppt_第3页
第3页 / 共50页
软件工程-软件测试.ppt_第4页
第4页 / 共50页
软件工程-软件测试.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《软件工程-软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程-软件测试.ppt(50页珍藏版)》请在三一办公上搜索。

1、1,软 件 测 试,2,内容介绍,一 软件测试概述二 测试方法三 测试用例的设计四 测试过程五 调试,3,防不胜防的软件错误 例:1963年,美国,飞往火星的火箭爆炸,损失$10 million.原因:FORTRAN循环 DO 5 I=1,3 误写为 DO 5 I=1.3,软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工件量约占总工作量40%以上(对于人命关天的情况,测试相当于其它部分总成本的3 5倍)。,软件测试重要性,4,软件测试定义和目的,IEEE标准:使用人工或自动手段运行或测定某个系统的过程,其目的是检验该软件(系统)是否满足规定的需求,或是清楚地了解预

2、期与实际结果之间的差异。简述为:按照特定规程,发现软件错误的过程。,5,软件测试的原则,设计测试用例时,要给出测试的预期结果。,要设计不合理输入的测试用例。,充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。,长期保存测试用例,为维护提供方便。在对程序进行修改之后,要进行回归测试。,应制订测试计划并严格执行,排除随意性。,除了检查程序是否做了应该做的工作,还要检查程序是否做了不应该做的工作。,6,注意事项,测试不能表明软件中不存在错误,它只能说明软件中存在错误。,测试员与程序员不应是同一个人。带感情色彩逻辑、理解错误,测试工作具有以下性质:挑剔性、

3、复杂性、不彻底性、经济性。,7,软件测试文档,测试计划:测试项目的名称、各项测试的目的、步骤和进度、以及测试用例测试用例测试数据期望结果测试报告:测试项目的名称、实测结果和预期项目的比较、发现的问题等。测试结果测试数据期望结果实际结果,8,二 测试方法,静态测试:指测试程序采用人工检测和计算机辅助静态分析的手段对程序进行检测。动态测试:指通过运行程序发现错误。黑盒测试和白盒测试,9,黑盒测试,黑盒测试法:测试软件的功能是否达到预期的要求。测试主要着眼于软件的外部特性。,black-box,or closed-box testingMake sure that every kind of inp

4、ut is submitted,and the output observed matches the output expected.Functional testing,10,白盒测试,白盒测试法:测试软件的内部结构和数据结构是否符合设计要求,测试人员需要了解软件内部结构和处理过程,对其尽可能多的逻辑路径进行测试。,white-box,or open-box,clear-box testingUse the structure of the program to test.Structural testing,11,主要问题,穷尽测试(complete test)通常是不可能的。,假设一个

5、程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的测试数据组:232232 264 如果测试一组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。而且还应测试输入非法数据的情况。,12,穷尽测试,例:(White-box)下图所示的程序中共有 5201014条可能的执行通路,显然,每条通路都执行一遍是不现实的。,黑盒法和白盒法都不能使测试达到彻底,为了用有限的测试发现更多的错误,需精心设计测试用例。,测试一组需1毫秒,完成需3170年。,13,三 测试用例的设计白盒技术,逻辑覆盖:考虑程序内部有判定存在的逻辑覆盖程度。

6、,循环覆盖:通过限制循环次数来测试含有循环结构的程序。,基本路径测试:设计测试用例保证基本路径至少通过一次。,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

7、=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

8、)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,逻辑覆盖,实际应用:以条件组合覆

9、盖为主,补充部分用例,以达到路径覆盖标准。,20,循环覆盖,单循环:设允许执行循环的最大次数为n。设计测试用例如下:1、跳过循环;2、只执行循环一次;3、执行m次,mn;4、执行n-1次、n次、n+1次。,嵌套循环:1、置外循环处于最小循环计数值,对内层进行单循环测试;2、由里向外,进行下一层的循环测试。,21,基本路径测试,基本路径测试是在程序流程图的基础上,通过分析由控制构造的环路复杂性,导出基本路径集合,设计测试用例保证这些基本路径至少通过一次。,程序图:是反映控制流程的有向图,其小圆圈称为结点,代表流程图中的处理,有向箭头代表控制流向,称为边或路径。,(1)一个边必须终止于一个结点,在

10、选择分支的汇合处即使没有语言也应该有汇聚点。,22,转换程序图时的注意事项,(2)如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。,23,基本路径测试步骤,Path1:1112:12345101113:123679101114:1 2368910111,1、导出程序流程图的拓扑结构程序图2、计算程序图的环路复杂性:平面图中区域的个数+13、确定只包含独立路径的基本数据集;4、设计测试用例,确保基本路径集合中每条路径至少执行一次。,假定判断内没有复合的条件,314,M-N+2P=11-9+2=4弧数(

11、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,基本数据集:12381234567238123467238,测试用例:N=1,data=2N=2,data=2,4N=2,data=4,2,25,设计测试用例黑盒技术,等价类划分法边界值分析法错误推测因果图,26,等价类划分法,它将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。

12、使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。,27,划分等价类,根据每一个输入的条件,找出两个(合理的等价类和不合理的等价类)或更多的等价类。,若已划分的等价类中各元素在程序中的处理方式不同,则进一步划分。,如果规定了输入数据必须遵循的规则,可确定一个合理等价类,(符合规则)和若干个不合理等价类。,如果规定了输入数据的一组值,而且程序对不同的输入值做不同的处理,则每个允许的输入值是一个合理等价类,此外还有一个不合理等价类(任何一个不允许的输入值)。,28,选取测试用例,为每个等价类编号

13、。设计一个新的测试用例,它能包括尽可能多的尚未包括的合理的等价类,重复这步,直到包括了所有合理等价类。设计一个新的测试用例,它能包括且仅包括一个尚未包括的不合理的等价类,重复这一步,直到包括了所有不合理等价类。,29,2、确定测试用例:为合理等价类:197505 覆盖158为不合理等价类:1975kl 覆盖2;19755 覆盖3;1975005 覆盖4;195712 覆盖6;200501 覆盖7;197500 覆盖9;197518 覆盖10。共8个测试用例。,例如:某一报表处理系统,要求输入处理报表的日期限制在1958年1月至1980年12月。年月由6位数字字符组成,前四位代表年,后两位表示月

14、。用等价类划分法设计测试用例。1、划分等价类并编号:,2,1,3,4,5,6,7,8,9,10,30,边界值分析法,经验表明:程序往往在处理边界情况时发生错误。边界情况指输入等价类和输出等价类边界上的情况。使用边界值分析法设计测试用例时,一般与等价类划分结合起来,将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。,总共用了11个测试用例。通常,边界值分析法比等价类划分法发现错误的能力更强。但是对边界的分析与确定比较复杂,要求测试人员具有更多的经验和创造性。,32,错误推测法、因果图,错误推测法:根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错

15、误的测试用例。,因果图:通过画因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。它能有效的检测输入条件的各种组合可能会引起的错误。,33,综合策略,通常先用黑盒法设计基本的测试用例,然后用白盒法补充一些必要的测试用例。,注:即使用上述综合策略设计测试方案,仍不能保证发现一切错误。例如Lucent公司其软件能达标运行的成功率为 80%。,在任何情况下都应使用边界值分析法。必要时用等价类划分法补充一些测试用例。再用错误推测法补充测试用例。检查上述测试用例的逻辑覆盖程度,如未满足所要求的覆盖标准,再添加测试用例。如需求说明中含有输入条件的组合情况,则一开始就可使用

16、因果图法。,34,四 测试过程,软件测试过程概述软件测试过程中的工作流软件测试步骤及与各开发阶段的关系单元测试集成测试确认测试和系统测试,35,软件测试工作流,36,软件测试工作流,软件配置:软件需求规格说明、软件设计规格说明、源代码等;测试配置:测试计划、测试用例、测试程序等;测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。测试结果分析:比较实测结果与预期结果,评价错误是否发生。排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。修正后的文档再测试:直到通过测试为止。,37,软件测试的步骤,

17、38,测试与软件开发各阶段的关系,软件开发过程是一个自顶向下,逐步细化的过程。测试过程是依相反顺序安排的自底向上,逐步集成的过程。,39,单元测试测试内容,1、模块接口测试:主要检查数据能否正确地通过模块。例:形参/实参是否匹配等、文件是否先打开后使用、文件是否关闭。,5、边界条件:如输入/输出数据的等价类边界,选择条件和循环条件的边界,复杂数据结构的边界等都应进行测试。,4、错误处理:预见出错条件、设置适当的出错处理、一旦出错,保证逻辑上正确性。,3、重要的执行路径:如:算数运算优先次序不正确、精度不够、不同的数据类型比较、浮点数精度误差造成比较不等、多循环或少循环一次、不能终止的循环等。,

18、2、局部数据结构:如未赋初值、变量名截短。,40,单元测试测试方法,单元测试在编码阶段进行。需要构造“测试环境”的额外开销:编写驱动模块和桩模块。,测试环境,驱动模块的作用是用来模拟被测模块的上级调用模块,只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。,桩模块用来代替被测模块所调用的模块。它的作用是返回被测模块所需的信息。,41,集成测试(组装、联合),在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统而进行的测试。,非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行的测试。,渐增式测试:逐个把未经

19、测试的模块组装到已经测试过的模块上去,进行集成测试,每加入一个新模块进行一次集成测试,直至所有模块组装完毕。,42,渐增式测试的方法,自顶向下结合:从主控模块开始,沿控制层次向下,或先深度,或先宽度地逐一将模块组合起来,优点:较早发现高层模块接口、控制方面的问题;不需要设计驱动模块。缺点:需要建立桩模块(很困难);算法和I/O在底层、较晚才能发现问题。,43,渐增式测试的方法,自底向上结合:从程序模块结构的最底层模块开始组装和测试。,各有优缺点,互为补充。一般低层模块使用自底向上结合的方法组装成子系统,然后由主模块开始自顶向下对各子系统进行集成测试。,优点:建立驱动模块比桩模块容易;算法和I/

20、O在首先得到测试;多个模块并行测试。缺点:主要的控制最后才能测试,影响范围大。,44,两种方式比较,非渐增式方法把单元测试和集成测试分两个不同阶段完成,而渐增式方法把它们合在一起,同时完成。,非渐增式方法需要更多的工作量,因为每个模块都要驱动模块和桩模块。,非渐增式方法开始可以并行测试所有模块,能充分利用人员。,渐增式方法比较彻底,但占用时间较多。,渐增式方法有利于排错,发现错误往往和最近加进来的模块有关,而非渐增式方法很难判断哪一部分接口出错。,渐增式方法可以较早发现接口之间错误。,45,确认测试(有效性测试),任务:验收软件的有效性(功能和性能达标)。手段:黑盒测试;用户参与;主要用实际数

21、据进行测试。内容:按合同规定审查软件配置;设计测试计划,使通过测试保证软件能满足所有功能、性能要求;文档与程序一致,具有维护阶段所必须的细节;严格按用户手册操作,以检查手册的完整性和正确性。分类:测试和测试,46,系统测试,作为整个基于计算机系统的一个元素,与硬件、外设、支持软件、数据、人员等结合起来进行的测试。安全测试:对非法入侵的防范能力;强度测试:对异常情况的抵抗能力;性能测试:检查整体性能;,47,五 调试,软件测试:发现软件中有错误的迹象,并不知道错误发生的位置和发生错误的原因。软件调试:在测试以后,确定错误的原因和位置,并纠正错误。它由程序员本人进行的技巧性很强的工作,需要繁重的脑

22、力劳动和丰富的经验。简单的调试方法:在程序中插入打印语句;运行部分程序;借助于调试工具;,48,归纳法调试,特殊 一般从错误症状中找出规律,推断根源。,收集数据,组织数据,研究数据间的关系,提出假设,证明假设,纠正错误,能,能,不能,不能,49,演绎法调试,普通 特殊 从假设中逐步排除、精化,从而导出错误根源。,列举可能的原因,排除不正确的假设,精化余下的假设,证明假设,收集更多数据,纠正错误,有剩余,能,不能,无剩余,50,总结,(1)深刻理解白盒,黑盒测试技术。理解测试过程中单元测试,集成测试,确认测试的任务及使用的方法。(2)掌握调试程序的方法。(3)熟练掌握的技能是:能针对某一问题采用白盒法或黑盒法进行测试用例的设计。作业P119第3题,P142第5题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号