白盒测试与代码质量.ppt
白盒测试,第一章、白盒测试与代码质量,几个问题,对测试过的软件有足够信心吗?系统测试覆盖了多少代码?某些难执行到的异常处理分支测试到了吗?实验室里无法难模拟出真实的测试环境,怎么办?,2,本章学习目标,了解白盒测试的目的了解白盒测试和黑盒测试的联系掌握白盒测试的策略了解使用LogiScope度量代码质量,3,隐藏的错误,使用一个经过运算处理后的数据作为除数进行运算:,float Div=sqrt(2)*sqrt(2)-2;float mod=0.0;.if(Div=0)printf(”除数为0,退出”);return;else mod=BeDiv/Div;,4,内容进度,白盒测试白盒测试的目的白盒测试和黑盒测试的联系白盒测试的策略代码质量代码度量使用LogiScope度量代码质量代码检查工具,5,白盒测试,又称透明盒测试、逻辑驱动测试是测试被测单元内部如何工作的一种测试方法允许测试人员根据程序内部逻辑结构及有关信息来设计测试用例,对程序的逻辑结构进行测试可覆盖全部代码、分支、路径和条件等,6,白盒测试目的,保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。,7,白盒测试和黑盒测试比较,8,白盒测试的策略,桌前检查(Desk Check)单元测试(Unit Testing)同行评审(Peer Review)代码评审(Code Review)代码走查(Walkthrough)静态分析(static analyse),9,白盒测试对测试人员的要求,做白盒测试需要开发部门提供的资料了解软件语言了解软件开发技术有开发经验最好掌握白盒测试工具掌握白盒测试用例设计方法掌握开发人员编程中容易出现的问题,不断积累经验,10,内容进度,白盒测试白盒测试的目的白盒测试和黑盒测试的联系白盒测试的策略代码质量代码度量使用LogiScope度量代码质量代码检查工具,11,软件质量,软件质量GBT16260-1996(idt ISOIEC9126:1991)信息技术软件产品评价质量特性及其使用指南功能性:适合性、准确性、互操作性、依从性、安全性;可靠性:成熟性、容错性、易恢复性;易用性:易理解性、易学性、易操作性;效率:时间特性、资源特性;可维护性:易分析性、易改变性、稳定性、易测试性;可移植性:适应性、易安装性、遵循性、易替换性;常用指标缺陷率(缺陷密度):每千行源代码的缺陷数,每个功能点或其他单元中的缺陷数可靠性(运行n小时失效次数):运行小时的实效次数,平均无失效时间或者规定的时间段内无故障运行的概率顾客满意度,12,影响软件质量的因素,13,影响软件质量的因素,1、数据质量管理可分为人工比对、程序比对、统计分析三个层次2、编程质量管理层次可分为黑盒测试、灰盒测试、白盒测试、编译检查、编程规范、编程逻辑、编程优化3、文档质量管理层次包括文档规范、文档语法、文档语义、文档逻辑、文档美学、文档优化 4、措施质量管理层次包括质量检查、质量保证、预防不合格品、完美无缺5、项目管理质量包括组织资源、组建团队、设定目标、确定范围、确定优先级、管理风险、建立沟通机制等内容,其层次分为通用术语、通用过程、单一方法、基准比较、持续改进 6、过程质量管理层次,质量概念,不仅涵盖产品,还包括企业的整个运营过程,贯穿产业链的各个环节7、企业质量环境层次企业质量环境是有关创建和管理质量环境的管理,包括质量规划、资源组织、提供相关工具等,其层次可分为质量形象、质量制度、质量战略、质量文化、企业文化、全社会质量意识8、标准层次,谁掌握了标准的使用,谁掌握了标准的制定权,谁就可以抢占先机9、人员质量是所有工作质量的基础。要提高工作质量,就要以人为本,根本的问题是提高人的质量,14,代码质量对软件质量的贡献,代码是软件产品中的重要部分代码质量反映软件质量其它非代码因素也起着关键作用文档(设计、帮助、用户手册等),15,制约程序员编写高质量代码的因素,对需求和设计的理解不透彻对软件业务流程不熟悉没有开发经验对开发工具或开发语言不熟悉受情绪因素的影响等因素其它非代码因素也起着关键作用,16,如何提高代码质量,17,编码规范和标准,坚持标准和规范的原因可靠性可读性/可维护性移植性,18,代码审查单,代码审查单,19,代码质量度量,程序复杂性:费用、周期、错误,代码行度量法,McCabe度量法,Halstead软件科学法,结构度量,20,代码度量-代码行度量,21,Windows的代码行复杂度,22,代码度量-Halstead软件科学法,程序=运算符化+运算元结构度量 Halstead公式N=N1+N2=n1log2(n1)+n2log2(n2)N1=运算符出现的总次数N2=运算元出现的总次数n1=不同运算元的个数n2=不同运算符的个数,23,代码度量-Halstead软件科学法,例:FORTRAN语言写出的交换排序的例子。因此:预测的词汇量Hn1log2n1+n2log2n210log210+7log27 52.87实际的词汇量NN1+N228+2250程序的词汇表nn1+n210+717,24,代码度量-结构度量,扇入:调用该模块的模块计数;扇出:该模块所调用的模块计数;使用扇入、扇出来评价软件设计具有大扇入和大扇出的模块可能是不良设计。这种模块可能未能正确分解并需要重新设计。程序复杂性与扇出的平方成正比,25,McCabe度量法,26,辅助分析工具,PC-lint:代码规则走查工具,CodeWizard:C/C+代码分析工具,McCabe:软件质量度量方法,TestBed:源代码检查工具,Logiscope:源代码规则检查工具,27,28,辅助分析工具,Logiscope代码检查工具,29,本章内容总结,白盒测试的作用白盒测试的策略白盒测试与黑盒测试的联系提高代码质量的方法运用代码编写规范、代码检查单代码质量度量的方法使用LogiScope,30,