书签 分享 收藏 举报 版权申诉 / 119
上传文档赚钱

类型ch52白盒测试课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4984998
  • 上传时间:2023-01-30
  • 格式:PPT
  • 页数:119
  • 大小:1.29MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《ch52白盒测试课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ch52 测试 课件
    资源描述:

    1、概览n在本章中,我们将学习:结构性白盒测试概述 程序结构分析 逻辑覆盖 结构性测试案例 课程目录n结构测试结构测试概述概述 n程序结构分析 n逻辑覆盖 n结构测试案例分析n结构测试工具结构性测试(1)n程序实现是已知的,是测试人员能够根据功能实际实现的方式来标识测试用例,又称“白盒测试”、“透明盒测试”。结构性测试(2)方法A覆盖的区域比方法B覆盖的区域大,但两种方法的覆盖区域只能在程序实现部分功能性测试与结构性测试比较n单独使用都有其局限性;n最好的方法:结合两种方法。功能性测试功能性测试结构性测试结构性测试只利用规格说明标识测试用例只利用程序源代码标识测试用例如果程序实现了未描述的行为,功

    2、能测试无法意识到。如果已描述的行为未能实现,结构性测试无法意识到。冗余度大,可能会有漏洞具有覆盖率指标结构测试定义 n把测试对象看做一个透明的盒子n白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法n白盒测试或逻辑驱动测试n基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件结构测试特点n可以构成测试数据使特定程序部分得到测试n有一定的充分性度量手段n可获得较多工具支持n通常只用于单元测试结构测试的方法静态测试方法:n程序结构分析代码走查代码审查控制流分析数据流分析信息流分析动态测试方法:n逻辑覆盖语句覆盖分支覆盖条件覆盖分支-条件覆盖路径覆盖代码覆盖率n采用白

    3、盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度n最彻底的白盒法是覆盖程序中的每一条路径,但这往往无法实现n采用其它一些标准来量度覆盖的程度,并希望覆盖程度尽可能高些课程目录n结构测试概述 n程序结构分析程序结构分析 n逻辑覆盖 n结构测试案例分析n结构测试工具使用静态测试静态测试包括代码审查和代码走查,此方法是软件测试的有效手段静态测试技术特点n是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。静态测试在主机上完成,不需目标系统支持,测试的主要内容有编程标准验证、数据流分

    4、析技术、质量度量信息、代码结构可视化显示、测试外壳的创建。由此看出,静态测试只是对代码进行扫描分析,检测它的语法规则复杂度等是否符合要求,主要是为软件的质量保证提供依据,以提高软件的可靠性和易维护性n静态测试可以手工、自动;静态测试技术特点n静态测试不必动态地执行程序,也就不必要进行测试用例设计和结果判读等工作;n静态测试可以由人工进行,充分发挥人的逻辑思维优势。n静态测试试是不需要特别条件,容易开展。桌面检查n桌面检查由程序员阅读自己所编的程序。n存在一下问题:心理上的原因,没有发现错误的欲望;人存在思维定势;如果对功能理解错误,不容易纠正;n相当于调试程序。代码走查与代码审查nCode I

    5、nspection&Walkthrough:是由若干程序员与测试员组成一个小组,集体阅读并讨论程序或者用“脑”执行并检查程序的过程。n分两步走:预先做准备工作;举行会议并讨论;代码走查与代码审查的优点n避免了桌面检查的问题;n一旦发现错误,就可以定位错误的位置和性质,调试所需要化的代价低;n一次能够揭示一批错误,而不是一个错误;n避免了动态调试的一些问题;代码走查与代码审查的优势n能够有效地发现30%70%的逻辑设计和编码错误;nIBM统计使用代码审查的方法,错误的检测效率高达全部查处错误的80%nMyers的研究发现代码审查和代码走查平均查处全部错误的38%。n研究表明:使用代码走查与代码审

    6、查发现某类错误比用计算机测试更有效,而对另一类错误情况正好相反。n代码走查与代码审查与计算机测试是相互补充的,缺少任何一种方法都会使错误的检测率损失。代码审查n代码审查测试内容包括:检查代码和设计的一致性;检查代码对标准的遵循、可读性;检查代码的逻辑表达的正确性;检查代码结构的合理性;n代码审查是由一组程序和错误检查技术组成,并且以代码审查组的方式进行。代码审查组n代码审查组由4个人组成,1个组长,组长的条件:称职的程序员;但不是被测程序的编写者;不需要对所检查的程序很熟悉;要有较强的组织协调能力和语言能力;n组长的职责:分配资料;安排计划;主持会议;纪录并保存被发现的错误;代码审查组n其余成

    7、员:资深的程序员程序编写者;专职测试人员;代码审查过程n准备:组长将程序目录和设计说明书分发给小组成员。成员熟悉材料;被测试程序的设计和编码人员想审查组详细说明所准备的材料;特别是代码的功能和功能间的关系;n程序阅读:审查组人员仔细阅读代码和相关资料,对照代码审查单标出明显的缺陷及错误。代码审查过程n跟踪及报告:会后将发现的错误登记报表并交给程序开发人员;如果发现错误较多或发现重大错误,在改正后,组长要再次组织审查会议;n审查会议要限制在1.5小时2小时以内。n审查过程所需要的主要技术是代码审查单,通常将程序设计及编码中可能发生的各类错误分类,对没一类尽可能多地列举出典型错误。发现新的错误及时

    8、补充道代码审查表中。代码审查单的示例n数据引用错误是否引用了未赋值或未初始化的变量?所有的数组引用,其下标值是否在各自的相应的维数定义界内?所有的数组引用,下标是否整数值?所有引用的指针或变量是否已经分配了内存?在检索操作或用下标引用数组时,是否存在“差1”错误?代码审查单的示例n数据说明错误所有变量是否都显式地说明了?是否每个变量都赋与正常的长度、类型和存储分类?变量的初始化和她的存储类是否无矛盾?n计算错误:是否使用过非一致数据类型的变量进行运算?是否存在混合运算?赋值语句的目标变量是否比其右边的表达式小?代码审查单的示例n代码审查还包括编程风格、标准、规范的符合性方面的内容。n在错误登记

    9、表中应标明所查处的错误类型、错误类别、错误的严重程度、错误的原因等。nMyers将错误分为8类:数据引用错误;数据说明错误;计算错误;比较错误;控制流错误;界面错误;输入/输出错误;其他错误;有效地阅读程序n仔细阅读需求、设计等文档,了解软件的整体物理意义、应用背景、在大系统中的地位。n阅读结构化代码:追踪通过每个子程序的主要逻辑行,然后开始跟踪第二条路径,相当于深度优先;按排列顺序跟踪代码,相当于广度优先;代码走查n代码走查就是在项目实施的过程中,在每一个模块单元编程结束,程序员对自己编写的代码测试完毕后,由另外一位程序员(一般情况下为同一项目组)对该程序员的代码和运行程序进行代码走查和运行

    10、功能的检查。代码走查的目的n规范代码的编写;n提高代码的稳定性与效率;n增进其他程序员对本模块的了解;n提高程序员的编程水平;检查内容 n程序代码是否符合公司和项目组的编程规范,程序的注释是否便于理解,命名是否清晰、合理、明确;n运行代码如果有界面,其界面规格是否符合项目组制定的统一界面风格;n对用户的提示信息是否简单,清晰,准确;n代码走查人员必须能够看懂代码及代码编写人的思路。n程序所判断的路径是不是永远也走不到的路径;n循环中的死循环;n需要预先预留空间的数据容器(如:一般的数组在初始化时就已经分配了足够的空间,即使用不了,它所占用的空间也不能用做它用);n一些需要关闭的对象(如:文件处

    11、理中的流,数据库处理中的连接);n对象编程中的类,方法和变量的保护属性(public,protected,private);n程序中的无用代码最好删除;进入系统实现阶段项目经理指定模块编程人员及代码走查人员编程人员模块实现编程人员模块实现编程人员单元测试编程人员测试完成后,书写代码走查申请单,提交项目经理。A项目经理或其委派人员书写单元测试报告项目经理委派代码走查人员开始代码走查,编程人员予以配合。代码走查完毕后,代码走查人员书写代码走查报告单,提交项目经理。项目经理检查项目经理对代码走查中发现的问题安排编程人员予以改正进入下一阶段A代码走查步骤n本模块编写人在本模块的功能测试完成并优化代码后

    12、,向项目经理提供本模块所涉及到的所有代码的清单,填写代码走查申请单,并向项目经理申请做本模块的代码走查;n项目经理指派人员进行某模块的代码走查,走查过程中遇到问题时应该和编写人协商解决,走查结束后,代码走查人员应进一步对本模块进行功能测试,完成后提交项目经理并说明走查的情况,填写代码走查报告单;n项目经理对代码走查和模块功能做20%的抽查;n提交单元测试报告,向测试组申请功能测试或系统测试。代码走查报告单项目名称:项目名称:XXXXXX模块名称:模块名称:XXXXXX走查人:走查人:XXX提交日期:提交日期:XXXXXX 代码列表代码列表:编号:应该和“代码走查申请单”中的对应部分的编号相一致

    13、;走查项的通过可以用打勾来表示,如果有未通过项则需说明原因走查项说明:项1-代码是否符合编码规范 项2-代码是否符合项目规定的界面风格 项3-代码中出现的提示信息是否明了 项4-走查人是否清楚编写人的思路 项5-此部分代码测试运行是否通过 代码走查报告单编编号号项项1项项2项项3项项4项项5未通过项及原因未通过项及原因 控制流分析 n非结构化程序会给测试、排错、和程序的维护带来许多困难n要求写出的程序结构良好n检查程序的控制结构成为十分有意义的工作程序流程图 1325控制流图12435abcdef控制流图n节点标有编号的圆圈 程序流程图中矩形框所表示的处理 菱形表示的两个甚至多个出口判断 多条

    14、流线相交的汇合点 控制流图n控制流线或弧 箭头 与程序流程图中的流线一致,表明了控制的顺序 控制流线通常标有名字控制流图矩阵 acbdef1234512345控制流图矩阵n便于机器表示和处理控制流图 n连接弧的节点的号码决定了矩阵中元素的位置n注意控制流的方向(行-列)n两个节点没有弧线,所对应的位置也就没有元素程序结构的基本要求 n写出的程序不应包含:转向并不存在的标号 没有用的语句标号 从程序入口进入后无法达到的语句 不能达到停机语句的语句 目前对这四种情况的检测主要通过编译器和程序分析工具来实现。可以利用控制流图分析出来,是否存在以上情况。例如:1-2-3、4-4-5(结束)数据流分析

    15、n查找引用未定义变量等程序错误 n查找对以前未曾使用的变量再次赋值等数据流异常的情况 n常见的错误表现形式错拼名字名字混淆语句丢失数据流n如果程序中某一语句执行时能改变某程序变量V的值,则称V被该语句定义n如果一语句的执行引用了内存中变量V的值,则称V被该语句引用n例如:X=Y+Z;-X被定义,Y和Z被引用if YZ then return;-Y和Z被引用控制流图与数据流表1234106758911节点被定义变量被引用变量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10ZZ11ZZ的值被送给外部环境例如:假定某个变量的值在使用以前被错误的改写了(对输出没有任何作

    16、用),这个语句就会被发现信息流分析n通过对输入数据、输出数据、语句之间的关系的分析来检查程序错误n信息流分析用来分析,是否存在无用的语句。n整除算法例子n输入:in_m是被除数,in_n是除数n输出:out_q是商,out_r是余数整除算法例子nout_q=0;nout_r=in_m;nWhile(out_r=in_n)n n out_q+;n out_r=out_r in_n;n 信息流关系图in_min_n12345out_q out_r12345out_q out_rin_mIn_n(1)输入变量影响语句(2)语句影响到输出变量(3)输入影响到输出信息流分析n能够列出对输入变量的所有可能

    17、的引用n在程序的任何指定点检查其执行可能影响某一输出变量值的语句n输入输出关系提供一种检查,看每个输出值是否由相关的输入值,而不是其他值导出课程目录n白盒测试概述 n程序结构分析 n逻辑覆盖逻辑覆盖 n结构测试案例分析n结构测试工具使用覆盖准则 n测试到什么地步可以结束测试?覆盖准则被测小程序 if(A 1&B=0)X=X/A;if(A=2|X 1)X=X+1;被测程序段流程图A 1&B=0aA=2|X 1X=X/AFTbcX=X+1TeFd逻辑覆盖测试方法 n语句覆盖 n分支覆盖 n条件覆盖 n分支-条件覆盖 n路径覆盖 语句覆盖 n原理:如果语句中有错误,仅靠观察不执行可能发现不了n在测试

    18、时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次 n若干个-尽量少 n语句覆盖、程序段覆盖、程序块覆盖语句覆盖率n语句覆盖率已执行的可执行语句占程序中可执行语句总数的百分比n复杂的程序不可能达到语句的完全覆盖n语句覆盖率越高越好语句覆盖测试用例 n达到语句覆盖100%的测试用例(路径ace)A=2 B=0 X=3n未达到语句覆盖100%的测试用例(路径abe)A=2 B=1 X=3语句覆盖的优点n检查所有语句n结构简单的代码的测试效果较好n容易实现自动测试n代码覆盖率高 n如果是程序块覆盖,则不涉及程序块中的源代码 语句覆盖不能检查出的错误n条件语句错误“A

    19、1&B=0”-“A 0&B=0”n逻辑运算(&、|)错误“A 1&B=0”-“A 1|B=0”“U=A2”-“U=A1”语句覆盖不能检查出的错误n循环语句错误循环次数错误跳出循环条件错误语句覆盖不能检查出的错误n循环语句例子for(i=0;i3)statement;语句覆盖率的问题n能达到很高的语句覆盖率n语句覆盖率看似很高,却有严重缺陷 if(x!=1)statements;else statement;99句1句测试用例x=2语句覆盖率99%50%的分支没有达到分支覆盖n设计若干测试用例,运行被测程序,使得程序中每个判断的真假分支至少经历一次n又称判定覆盖nwhile语句、switch语句

    20、、异常处理、跳转语句等等同样可以使用分支覆盖来测试n分支覆盖率已取过“真”和“假”两个值的判定占程序中所有条件判定个数的百分比分支覆盖测试用例 路径ace A=2 B=0 X=3 路径abd A=1 B=0 X=1 路径acd A=3 B=0 X=3路径abe A=2 B=1 X=2或分支覆盖的利弊n分支覆盖要比语句覆盖查错能力强一些:执行了分支覆盖,实际也就执行了语句覆盖n分支覆盖与语句覆盖存在同样的缺点 不能查出条件语句错误不能查出逻辑运算错误不能查出循环次数错误不能查出循环条件错误条件覆盖n设计若干测试用例,执行被测程序以后,要使每个判断中的每个条件的可能取值至少满足一次条件覆盖分析n第

    21、1个判断应考虑 A 1,记为T1 A 1,记为T4 X 1,B=0,记为T1,T2(2)A 1,B!=0,记为T1,F2(3)A=1,B=0,记为F1,T2(4)A 1,记为T3,T4(6)A=2,X 1,记为F3,T4(8)A!=2,X 0)5 6 If(iType=0)7x=y+2;8 else9 If(iType=1)10 x=y+10;11 else12 x=y+20;13 14 基本路径测试方法(续)n画出控制流图:如右图所示n计算环形复杂度:10(条边)-8(个节点)+2=4n导出独立路径(用语句编号表示)路径1:414 路径2:46714 路径3:4691013414 路径4:4

    22、691213414467910121314路径覆盖的利弊n实现了所有路径的测试,发现错误能力强n某些条件错误可能无法发现n路径数庞大,不可能覆盖所有路径n用例数量的增加循环测试路径覆盖n0次循环检查跳出循环 n1次循环检查循环初始值 n2次循环检查多次循环 nm次循环检查某次循环 n最大次数循环、比最大次数多一次、少一次循环检查循环次数边界 简化循环路径n循环使路径数量急剧增长n简化无论循环的形式和实际执行循环体的次数多少,只考虑循环一次和0次n两种情况进入循环体一次跳出循环体循环程序流程图CBCB(1)(2)简化循环路径图n(1)和(2)都可简化为(3)CB最少测试用例数计算n对于具体的程序

    23、,至少要设计多少测试用例?n估算最少测试用例数帮助执行测试有助于估算测试的时间结构化程序与N-S图n结构化程序是由3种基本控制结构组成顺序型选择型(条件分支)重复型(循环)n测试时考虑的结构顺序型选择型(条件分支)程序结构与测试用例数并行串行程序结构与测试用例数n当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构n对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例n对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径最少测试用例数计算实例n计算最少测试用例数最少测试用例数计算实例最少测试用例数计算实例测试覆盖准则nFoster的

    24、ESTCA覆盖准则错误敏感测试用例分析(Error Sensitive Test Cases Analysis)问题ESTCA覆盖准则n对于分支A(,=,=,=)B,测试时应选择AB的情况分别测试一次n对于分支A(,C时,选择A=C小正数当AC时,选择A=C小正数n对于测试用例取值,在每个测试用例中尽量不同的值或符号覆盖率要求n对单元测试来说,语句覆盖和分支覆盖是最基本的要求n由于程序中错误(异常)处理工作的重要性以及其结构相对简单,要求错误处理要做到路径覆盖n对质量要求高的软件单元,可根据情况提出条件覆盖、分支-条件覆盖以及路径覆盖要求课程目录n结构测试概述 n程序结构分析 n逻辑覆盖 n结构测试案例分析结构测试案例分析n结构测试工具使用结构测试案例n求最小值 求数组中的最小值 k=i;for(j=i+1;j=n;j+)if(Aj Ak)k=j;程序流程图 k=i;j=i+1j=n?Aj 1)&(B=0)X=X/A;if(A=2)|(X1)X=X+1;课后习题第三题:计算下列程序片段的环形复杂度,使用逻辑覆盖测试方法测试。Void DoWork(int x,int y,int z)int k=0,j=0;if(x3)&(z5)j=x*y+10;j=j%3;Thanks!谢谢!

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ch52白盒测试课件.ppt
    链接地址:https://www.163wenku.com/p-4984998.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库