欢迎来到天天文库
浏览记录
ID:46574473
大小:762.00 KB
页数:77页
时间:2019-11-25
《软件工程第六讲》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第六讲结构化实现——白盒测试主讲人:杨兵几个问题对测试过的软件有足够信心吗?如何预防内存泄漏问题?系统测试覆盖了多少代码?某些难执行到的异常处理分支测试到了吗?实验室条件无法难模拟出真实的测试环境,怎么办?隐藏的错误使用一个经过运算处理后的数据作为除数进行运算:floatDiv=1.0;……if(Div==0){printf(“除数为0,退出”);return;}else{mod=BeDiv/Div;}内容进度白盒测试白盒测试的目的白盒测试和黑盒测试的联系白盒测试的策略代码质量代码度量使用LogiScope度量代码质量代码
2、检查工具白盒测试又称透明盒测试、逻辑驱动测试是测试被测单元内部如何工作的一种测试方法允许测试人员根据程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑结构进行测试可覆盖全部代码、分支、路径和条件等白盒测试和黑盒测试比较白盒测试黑盒测试联系白盒测试和黑盒测试都是软件测试的一个方面;两者有时结合起来同时进行测试,“灰盒测试”;区别需要源代码不需要源代码,需要可执行文件无法检验程序的外部特性,无法测试遗漏的需求从用户的角度出发进行测试关心程序内部结构、逻辑以及代码的可维护性关心程序的外在功能和非功能表现编码、集成测试阶
3、段进行确认测试、系统测试阶段进行白盒测试目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。白盒测试的策略桌前检查(DeskCheck)单元测试(UnitTesting)同行评审(PeerReview)代码评审(CodeReview)代码走查(Walkthrough)静态分析(staticanalyse)静态分析报告、代码质量报告白盒测试对测试人员的要求了解软件语言了解软件开发技术有开发经验最好掌握白盒测试工具掌握白盒
4、测试用例设计方法掌握开发人员编程中容易出现的问题,不断积累经验内容进度白盒测试白盒测试的目的白盒测试和黑盒测试的联系白盒测试的策略代码质量代码度量使用LogiScope度量代码质量代码检查工具软件质量软件质量要求产品中没有BUG常用指标缺陷率(缺陷密度)可靠性(运行n小时失效次数)顾客满意度软件质量反映的三个方面软件需求开发准则隐含的需求代码质量对软件质量的贡献代码是软件产品中的重要部分代码质量反映软件质量其它非代码因素也起着关键作用文档(设计、帮助、用户手册等)制约程序员编写高质量代码的因素对需求和设计的理解不透彻对软件
5、业务流程不熟悉没有开发经验对开发工具或开发语言不熟悉受情绪因素的影响等因素其它非代码因素也起着关键作用如何提高代码质量培训业务技术工具和语言审查和监督编码规范测试……..编码规范和标准坚持标准和规范的原因可靠性可读性/可维护性移植性代码审查单代码审查单代码审查单数据引用错误数据声明错误计算错误函数参数错误比较错误输入/输出错误其它检查控制流程错误代码质量度量程序复杂性:费用、周期、错误代码行度量法McCabe度量法Halstead软件科学法结构度量代码度量-代码行度量代码度量-Halstead软件科学法程序=运算符化+运算
6、元结构度量Halstead公式N=N1+N2=n1log2(n1)+n2log2(n2)N1=运算符出现的总次数N2=运算元出现的总次数代码度量-结构度量扇入:调用一给定模块的模块计数;扇出:给定模块所调用的模块计数;使用扇入扇出来评价软件设计具有大扇入和大扇出的模块可能是不良设计。这种模块可能未能正确分解并需要重新设计。McCabe度量法辅助分析工具对源代码进行分析经常需要辅助分析工具PC-lint:代码规则走查工具CodeWizard:C/C++代码分析工具McCabe:软件质量度量方法TestBed:源代码检查工具L
7、ogiscope:源代码规则检查工具Logiscope代码检查工具学习目标逻辑驱动覆盖测试语句覆盖判定(分支)覆盖条件覆盖判定条件覆盖条件组合覆盖路径测试覆盖逻辑覆盖测试用例设计技术逻辑驱动覆盖基本路径覆盖循环语句覆盖逻辑驱动覆盖测试针对程序的内部逻辑结构设计测试用例通过运行测试用例达到逻辑覆盖目的是最传统最经典的白盒测试技术要求测试人员对程序的逻辑结构非常清楚例子代码先看下面代码:voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=xy-1;//语句块1j=
8、sqrt(k);}if((x==4)(y>5)){j=xy+10;//语句块2}j=j%3;//语句块3}辅助方法-流程图x>3&&z<10x==4y>5入口语句块1语句块2语句块3出口abcde画出模块的流程图发现问题辅助设计测试用例语句覆盖概念语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一
此文档下载收益归作者所有