现代软件测试的分类与比较_第1页
现代软件测试的分类与比较_第2页
现代软件测试的分类与比较_第3页
现代软件测试的分类与比较_第4页
现代软件测试的分类与比较_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章白盒测试文章来源:安博测试空间技术中心 主要内容 测试的分类与比较 白盒测试的重点以及相应对策 白盒测试的方法 白盒测试的覆盖准则 白盒测试的工具 代码的持续集成和测试文章来源:安博测试空间技术中心 1. 测试的分类与比较1.1 测试方式白盒测试:将程序的执行表现与编码意图作比较 关心软件内部设计和程序实现,主要测试依据是设计文档静态质量分析覆盖测试分析RUNTIME问题检测代码执行性能黑盒测试: 不关心软件内部,只关心输入输出,主要测试依据是需求文档测试用例被测程序源程序分析覆盖情况分析执行路径需求需求说明说明产生产生被测程序被测程序测试结果测试结果输出输出比较比较测试用例测试用例文章

2、来源:安博测试空间技术中心 单元测试阶段的白盒测试 代码静态质量分析 编程规则检查 覆盖测试分析文章来源:安博测试空间技术中心 代码静态质量分析 依据ISO/IEC 9126标准、国标、国军标,采取度量统计的方法能够分析程序的某些质量因素 通过对软件进行度量,结合适当的质量模型,可以给出具有参考价值的判断结果,尤其在软件可维护性方面 进行代码静态质量分析所依据的度量理论 McCabe度量法:是由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法。 HalStead度量法文章来源:安博测试空间技术中心 McCabe度量法 基于图论,进行程序复杂度度量V(G)=E-n+2p E为图

3、G中的边数,n为节点数,P为连通分量个数 V(G)值过大,程序不易理解与维护文章来源:安博测试空间技术中心 用McCabe度量法检查代码的可维护性文章来源:安博测试空间技术中心 Halstead度量法 Halstead度量法以程序中出现的操作符和操作数为计算对象, 给出源程序后,根据程序中的这些参数,按公式可求得程序工作量的估值,其中用到以下程序参数: nl 程序中运算符出现的种类; n2 程序中运算对象出现的种类; N1 程序中运算符的总数; N2 程序中运算对象的总数。 根据这几个参数,我们可以估计程序的长度、程序量、语言抽象级别和程序工作量。这些公式为: 程序的长度: N=N1 N2 程

4、序量程序量:V (N1 N2)log2(n1 n2 ) 语言抽象级别: L (2 * n2)(nl * N2) 程序工作量:E=VL文章来源:安博测试空间技术中心 静态分析过程配置编译环境信息源文件质量模型扫描分析度量元度量元度量元质量准则质量准则质量因素静态度量结果文件静态分析构造文章来源:安博测试空间技术中心 静态质量分析(示例)文章来源:安博测试空间技术中心 编程规则检查进行编程规则的检查,达到增加程序的可理解性、降低维护成本的目的 编码规则 针对程序指令、运算符、代码结构、声明等方面制定规则并检查,如: 为了保证程序模块的结构化,规定不得使用GOTO语句 命名规则 对程序中局部变量、全

5、局变量、类等的命名制定规则并检查,以利于程序的理解、维护文章来源:安博测试空间技术中心 覆盖测试分析衡量软件被测试执行的程度 在尽可能多地执行程序的路径,进行逻辑覆盖的同时,考察程序执行表现是否异常,尤其是某些复杂的和正常情况下不易执行的路径。 覆盖测试级别 通常从低到高分别是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖等 对“安全关键”软件,依据RTCA/DO-178B标准进行MCDC覆盖测试:文章来源:安博测试空间技术中心 “安全关键”软件的MCDC覆盖测试 针对“安全-关键”软件的RTCA/DO-178B标准此标准中最严格的为A系统级,与“异常行为能够造成或者有助于系统功

6、能故障从而导致出现悲惨飞行器事故发生的条件”的软件相对应。RTCA/DO-178B标准推荐了MCDC覆盖测试方法,并且规定A系统级软件必须进行MCDC覆盖测试 进行MCDC覆盖测试,要求达到以下两点标准:被测程序中,部件的入口与出口必须至少被调用一次,程序中判断的每一个分支必须至少被执行一次 对于程序中通过逻辑运算(AND,OR,等)组成判断的基本布尔条件,每个条件必须取遍所有可能的值且每一个条件对判断的结果具有独立的作用,也就是说,判断结果随某个单独的条件的变更而变更文章来源:安博测试空间技术中心 覆盖测试分析过程配置编译环境信息源文件插装插装后源文件连接交叉编译目标模块RTOS支持包通信方

7、式任务属性设置交叉编译RTOS支持模块可执行模块下载运行覆盖信息文章来源:安博测试空间技术中心 集成测试阶段的白盒测试 代码审查静态质量分析(侧重于调用关系、继承关系)在集成测试过程中考察函数间的调用关系、类之间的继承关系是否合理 函数之间的调用关系是否合理采用以下指标进行计算:调用的路径数、相对调用关系中的层次数、层次复杂性、结构复杂性、系统可测性(由相对调用关系中的深度、广度综合决定)编程规则检查 覆盖测试分析(侧重于模块间调用关系上的覆盖): 考察模块间的调用关系是否成立,同时是对模块间接口数据流的测试 RUNTIME问题检测文章来源:安博测试空间技术中心 软件运行时(RUNTIME)问

8、题 软件运行时(RUNTIME)问题表现 软件运行时(RUNTIME)问题危害 普遍存在 操作系统环境 软件开发环境长期运行过程中暴露;出现条件可能不固定。程序异常中断、退出;严重破坏系统环境;影响可靠性。RTOS(嵌入式软件实时操作系统) 、Windows、UNIX、Linux;C/C+的指针、堆栈等内存相关问题;Java的线程相关问题;文章来源:安博测试空间技术中心 通过测试尽量消除软件运行时问题 依据 编码质量问题; 软件故障外在表现:随机发生,无规律 引入故障内在原因:客观存在,不变黑盒测试充分性技术白盒测试充分性技术软件运行时错误检测技术?文章来源:安博测试空间技术中心 2.白盒测试

9、的重点以及相应对策模块模块出错处理出错处理模块接口模块接口局部数据结构局部数据结构边界条件边界条件执行路径执行路径调用参数调用参数全局量定义一致性全局量定义一致性 数据定义、数据定义、使用使用循环边界循环边界输入边界输入边界重要路径重要路径关键路径关键路径 非合理输入非合理输入系统异常系统异常文章来源:安博测试空间技术中心 2.白盒测试的重点以及相应对策 2.1模块接口测试 检查进出模块的数据是否正确 Checklist: 模块的实际输入与定义的输入是否一致 个数、类型、顺序 模块中对于非内部/局部变量是否合理使用 使用其他模块时,是否检查可用性和处理结果 使用外部资源时,是否检查可用性并及时

10、释放资源 内存、文件、硬盘、端口等 其他文章来源:安博测试空间技术中心 2.白盒测试的重点以及相应对策 2.2模块局部数据结构测试 检查局部数据结构能否保持完整性 Checklist: 变量从来没有被使用 可能别的地方使用了错误的变量名 变量没有初始化 错误的类型转换 数组越界 非法指针 变量或函数名称拼写错误 使用了外部变量或函数 其他文章来源:安博测试空间技术中心 2.白盒测试的重点以及相应对策 2.3、模块边界条件测试 检查临界数据是否正确处理 Checklist: 普通合法数据是否正确处理 普通非法数据是否正确处理 边界内最接近边界的(合法)数据是否正确处理 边界外最接近边界的(非法)

11、数据是否正确处理 其他文章来源:安博测试空间技术中心 2.白盒测试的重点以及相应对策 2.4、模块独立执行通路(路径)测试 检查由于计算错误、判定错误、控制流错误导致的程序错误 Checklist: 死代码 错误的计算优先级 精度错误 比较运算错误 赋值错误 表达式的不正确符号 、=;=、=、!= 循环变量的使用错误 错误赋值 其他文章来源:安博测试空间技术中心 2.白盒测试的重点以及相应对策 2.5、模块内部错误处理测试 检查内部错误处理设施是否有效 Checklist: 是否检查错误出现 资源使用前后 其他模块使用前后 出现错误,是否进行错误处理 抛出错误 通知用户 进行记录 错误处理是否

12、有效 在系统干预前处理 报告和记录的错误真实详细 其他文章来源:安博测试空间技术中心 3.白盒测试的方法 3.1逻辑覆盖方法 3.2路径测试 3.3数据流测试文章来源:安博测试空间技术中心 3.1逻辑覆盖方法1、语句覆盖: 设计若干测试用例,使程序中的每个可执行语句至少执行一次。2、判定覆盖:设计若干测试用例,使程序中的每个判断真假的分支至少遍历一次。3、条件覆盖:设计若干测试用例,使程序中的每个条件的可能取值至少满足一次。4、判定/条件覆盖 选择足够的测试用例,使得同时满足判定覆盖和条件覆盖5、条件组合覆盖 选择足够的测试用例,使得程序中每一个分支判断中的每一个条件的每一种可能组合结果都至少

13、被执行一次。6、路径覆盖 选择足够的测试用例,使得程序中所有的可能路径都至少被执行一次。语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖文章来源:安博测试空间技术中心 3.2路径测试路径分析: 路径表达式和路径数 基本路径测试 有关循环的测试考虑 测试用例生成文章来源:安博测试空间技术中心 有关循环测试 目标:检查循环结构的有效性 循环分类: 简单循环 嵌套循环文章来源:安博测试空间技术中心 循环测试策略 简单循环:(循环最大次数n) 跳过整个循环 只循环一次 循环两次 循环m次,m=常量时,使A在常量边界各一次,避免常量写错,检查差1的错误. 变量在不同测试用例中使用不同的值,避免

14、变量名写错,避免应该使用变量的地方却使用了常量 优缺点 围绕发生问题的区域进行测试,提高了错误的发现率 寻找错误的广度不够文章来源:安博测试空间技术中心 4.2、LCSAJ 背景 Linear Code Sequence And Jump线性代码序列与跳转 Woodward LCSAJ:一组顺序执行的代码,以控制流跳转为结束点.程序的起点是程序的第一行或者控制流可以跳达的点;第一个LCSAJ的起点是程序的第一行,最后一个LCSAJ的终点是程序的结束.一条程序路径可能由一个、两个或多个LCSAJ构成。 LCSAJ路径:首尾相连,从程序头到尾的一连串LCSAJ 层次结构 1层:语句覆盖 2层:分支

15、覆盖 LCSAJ覆盖:每个LCSAJ在测试中至少经历一次 两两LCSAJ覆盖:每个首尾相连LCSAJ在测试中至少经历一次 n+2层(n为自然数):每n个首尾相连的LCSAJ组合都要覆盖文章来源:安博测试空间技术中心 5.白盒测试工具5.1常见的白盒测试工具简介白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。i. 静态测试工具静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系

16、统的调用关系图等。静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件。ii. 动态测试工具动态测试工具与静态测试工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行。动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify系列。文章来源:安博测试空间技术中心 Parasoft JtestParasoft C+testParasoft SOA testParasoft .testPar

17、asoft CodewizardParasoft Insure+Parasoft DataRecon Compuware Numega devpartner studioCompuware DevPartnerJavaEditionCompuware BoundsCheckerCompuware SmartCheckCompuware DBPartner Empirix Bean-test AutomatedQA AQtimeAutomatedQA QESatJava文章来源:安博测试空间技术中心 Unitware Visual UnitGimpel Software PC-lintMacab

18、e MacabeBorland Optimizeit SuiteQuest Software JProbe SuiteQuest Software Application assurance suiteQuest Software Sql optimizerej-technologies JProfilercyrano workbenchTeleLogic LogiscopeTeleLogic rulecheckSegue SilkPerformer Component Test Edition IBM rational PurifyplusIBM rational Rational Test

19、 Realtime文章来源:安博测试空间技术中心 开源 junit开源 cactus开源 Hansel开源 TestNG开源 StrutsTestCase开源 JFCUnit开源 Httpunit开源 Dunit开源 cppunit开源 Nunit开源 Xunit开源 JTR文章来源:安博测试空间技术中心 Linux平台工具 MallocDebugLinux平台工具 ValgrindLinux平台工具 KcachegrindLinux平台工具 dmallocLinux平台工具 ElectricFenceLinux平台工具 LeakTracerLinux平台工具 memprofLinux平台工具

20、 ccmallocLinux平台工具 mprofLinux平台工具 yamdLinux平台工具 njamdLinux平台工具 mpatrol 文章来源:安博测试空间技术中心 5.1 Compuware DevPartner Studio 快速发布高可靠应用软件 减少产品推向市场所需时间 确保产品具有高可靠性与优化的性能 “自动化” 增加软件产量与提高产品性能与质量的有效手段文章来源:安博测试空间技术中心 “自动化” 代码检查(Reviewing source code) 错误检测(Automation error detection) 调谐性能(Tune Performance) 识别未测代码

21、(Locating untested code) 分布式应用问题检测文章来源:安博测试空间技术中心 代码检查 Visual Basic, Visual Basic .NET ,C# 源源代码代码 基于工业标准与实践经验检测潜在错误基于工业标准与实践经验检测潜在错误 建立编码规则,保持开发组织内部一致性建立编码规则,保持开发组织内部一致性文章来源:安博测试空间技术中心 Code Review文章来源:安博测试空间技术中心 错误检测 C/C+指针、内存错误指针、内存错误 泄露错误泄露错误 API与与OLE错误错误 验证验证ActiveX控件使用正确性控件使用正确性文章来源:安博测试空间技术中心 Bounds Checker文章来源:安博测试空间技术中心 性能调谐 多进程性能数据采样与监视多进程性能数据采样与监视 代码行、函数运行信息收集代码行、函数运行信息收集 代码运行性能检查代码运行性能检查文章来源:安博测试空间技术中心 True Time文章来源:安博测试空间技术中心 识别未测代码 衡量测试工作充分性衡量测试工作充分性 代码行、函数级别显示代码执行覆盖情况代码行、

温馨提示

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

评论

0/150

提交评论