白盒测试-软件技术

上传人:飞*** 文档编号:51643340 上传时间:2018-08-15 格式:PPT 页数:108 大小:832.50KB
返回 下载 相关 举报
白盒测试-软件技术_第1页
第1页 / 共108页
白盒测试-软件技术_第2页
第2页 / 共108页
白盒测试-软件技术_第3页
第3页 / 共108页
白盒测试-软件技术_第4页
第4页 / 共108页
白盒测试-软件技术_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《白盒测试-软件技术》由会员分享,可在线阅读,更多相关《白盒测试-软件技术(108页珍藏版)》请在金锄头文库上搜索。

1、软件测试技术白盒测试1白盒测试(White Box Testing)n软件测试人员可以访问 程序员的代码,并通过 检查代码来测试,可以 看到盒子里面以及里面 是如何运作的。被测试的软件2n贯穿程序的独立路径数是天文数字。但即使每条 路径都测试了仍然可能有错误。n第一,穷举路径测试决不能查出程序违反了设计 规范,即程序本身是个错误的程序。n第二,穷举路径测试不可能查出程序中因遗漏路 径而出错。n第三,穷举路径测试可能发现不了一些与数据相 关的错误。 3讨论n白盒测试也通常被认为是单元测试与集成测试的 统称,但这个概念是相对的,与当前项目遵循的研 发流程有关,某些流程把白盒测试划分为单元测试 与集

2、成测试,而另一些流程,把白盒测试划分为模 块单元测试、模块系统测试、多模块集成测试,还 有一些流程把单元测试与集成测试混为一体,统称 为持续集成测试。 4采用白盒测试方法必须遵循以下几条原则n保证一个模块中的所有独立路径至少被使用一次n对所有逻辑值均需测试true和falsen在上下边界及可操作范围内运行所有循环n检查内部数据结构以确保其有效性n在上下边界及可操作范围内运行所有循环5白盒测试的其它称呼n玻璃盒测试(Glass Box Testing)n透明盒测试(Clear Box Testing)n开放盒测试(Open Box Testing)n结构化测试(Structured Testin

3、g)n基于代码的测试(Code-Based Testing)n逻辑驱动测试(Logic-Driven Testing)6本次课程的主要内容n为什么要进行白盒测试n静态白盒测试n动态白盒测试7从一个比喻开始n假设有一台的面包机,从上面倒入面粉与水,开动机器后 从下面出来的就是烤好了的面包,这个机器的功能比较单一 ,接口很清晰,输入是面粉与水,输出是面包。现在假定这 个面包机多年未用,内部都生锈了,现在要清洗它,类似于 我们开发的软件,软件有Bug,那得通过测试来清理。n那如何更快速的清洗这台面包机呢?有两种洗法,一是拿 水从上往下灌,这是系统测试的方法。另一种是拆开来洗, 拆开机器后,拿抺布沾点

4、清洁剂,把各零件的坑坑槽槽擦洗 一遍,然后组装回来,再用水从上往下冲一遍,拆开来洗是 白盒方法,组装回来用水冲是黑盒方式,相当于白盒测试之 后再追加一次系统测试。8n无疑,上面第二种方法是正确的,我们的前提是:清洗多 年未用的面包机,铁锈够多,如果洗不干净,造出的面包都 是致癌物质。当然,清洗面包机还只能算简单劳动,清理软 件中的Bug要复杂得多,一个if语句有两条分支,一个while 循环判断也是两条分支,还有break、continue、return等 ,想想看,一个1万行规模的软件能有多少个分支!一个分 支就是一条坑坑槽槽,而且软件Bug还具备动态特性,不是 静止的明摆在哪儿。n所以,软

5、件的白盒测试不可或缺,因为遗留Bug的影响很 大,就像面包机没洗净留铁锈会致癌,还因为软件系统远比 面包机复杂,不拆开来怎么能洗干净!9白盒测试是高效测试 n第一个误解:白盒测试太低效,不值得去做 针对一个功能点的测试,若将 问题发现、定位与解决都计算 进去,单元测试效率最高,是 集成测试的2倍,是系统测试 的3倍。 10白盒测试是高效测试 n第二个误解:决策者并未认清一个bug若遗留到 下一阶段须多付出多少代价 11白盒测试能彻底解决编码阶段引入的问题 n一个案例,在某交换机产品的系统测试中,发现 ISDN话机拨打某新业务号码时,在特定线路上,若 一位一位的拨至18位,不会有问题,但如果先拨

6、完 号码再成组发送,会导致系统死机。这是一个导致 死机的致命问题,最后定位出问题所在:呼叫处理 的某段代码判断有误,本应小于18的判断,错写成 小于等于18。 这个问题本该在单元测试去发现,由于单元测试没做,问题就 遗留到系统测试,庆幸的是没把它遗留到网上,否则问题就大 了。我们从另一个角度去反思,这个问题是特定线路下的特定 终端,按特定方式拔打特定业务才暴露,在系统测试好不容易 把它揪出来,但类似的其它问题呢? 12不同阶段的测试发现问题的特点各不相同 n单元测试阶段,容易发现逻辑问题、边界条件( 如上例“小于18”的错误)、变量未初始化、内存越 界等问题 n集成测试容易发现接口错误、任务配

7、合问题等 n系统测试容易发现业务流程问题、界面操作问题 等 13V模型中软件开发过程与测试行为的对应关系 单元测试针对编码阶段引入的问题 集成测试与功能测试针对软件设计中引入的问题 验收测试针对需求与规格。单元测试不要或缺的重要原因是:编码阶段引入的问题占很高比例 ,不进行单元测试就难以保证系统最终的稳定性。14本次课程的主要内容n为什么要进行白盒测试n静态白盒测试n动态白盒测试15静态白盒测试n静态白盒测试是在不执行的条件下有条理地仔细 审查软件设计、体系结构和代码,从而找出软件缺 陷的过程。n好处:尽早发现软件缺陷。 为黑盒测试员提供思路。16n审查n要审查的代码模块的准则n为什么要坚持编

8、码标准和规范n国家和国际标准获得途径n通用代码审查清单数据引用错误;数据声明错误;计算错误;比较错误;控制流程错误;子程序参数错误; 输入/输出错误;其他检查。17静态白盒测试-审查审查是正式、严格、具有深度的技术评审, 以便尽可能准确地确定问题之所在。 审查过程的目的:n在软件开发过程中尽可能早地发现问题。n确保对需要重做部分达成一致意见。n验证任何重做部分满足预先定义的准则。18静态白盒测试一次审查一般需要5人至7人,这些角色是: 主审员:协调本次审查并主持讨论。 责任人:负责被审查的产品。 讲解员:在审查会上讲解被审查的产品。 审查员:审查产品。 记录员:记录在审查会议上讨论的问题。 经

9、 理:责任人的管理者。19静态白盒测试选择要审查的代码模块的准则:n对于正确操作产品起关键作用的模块。n复杂度较高的模块n与过去发生错误率较高的模块功能类似的模块。n相对较新的或缺乏经验的软件程序师编写的模块 。20静态白盒测试为什么要坚持编码标准和规范?n可靠性。n可读性/维护性n移植性21静态白盒测试大多数计算机语言和信息技术的国家和国际标准可 以通过以下途径获得:n国际工程协议(IEC):www.iec.orgn国际标准化组织(ISO):www.iso.chn信息技术标准国家委员会(NCITS):www.ncits.orgn计算机械联合会(ACM):www.acm.orgn电子电气工程学

10、会(IEEE):www.ieee.org22静态白盒测试-通用代码审查清单n数据引用错误;n数据声明错误;n计算错误;n比较错误;n控制流程错误;n子程序参数错误;n输入/输出错误;n其他检查。23静态白盒测试-数据引用错误n是否引用了未初始化的变量?n数组和字符串的下标是整数值吗?n是否在应该使用常量的地方使用了变量?n变量是否被赋予不同类型的值?n为引用的指针分配内存了吗?n一个数据结构是否在多个函数或者子程序中引用 ,在每一个引用中明确定义结构了吗?24静态白盒测试-数据声明错误n所有变量都赋予正确的长度和类型了吗?n变量是否在声明的同时进行了初始化?n存在声明过、但从未引用或者只引用过

11、一次的变 量吗?n在特定模块中所有变量都显示声明了吗?25静态白盒测试-计算错误n计算中是否使用了不同数据类型的变量?n计算中是否了解和考虑到编译器对类型或长度不 一致的变量的转换规则?n在数值计算过程中是否可能出现溢出?n除数/模是否可能为零?n变量的值是否超过有意义的范围?n对于包含多个操作数的表达式,求值的次序是否 混乱,运算优先级对吗?26静态白盒测试-比较错误n比较得正确吗?n存在分数或者浮点值之间的比较吗?如果有,精 确问题会影响比较吗?n每一个逻辑表达式都正确表达了吗?逻辑计算如 期进行了吗?求值次序有疑问吗?n逻辑表达式的操作是逻辑值吗?27静态白盒测试-控制流程错误n如果程序

12、包含beginend和 do while 等语句 组,end是否对应?n程序、模块、子程序和循环能否终止?n可能存在永远不停的循环吗?n循环可能从不执行吗?28静态白盒测试-子程序参数错误n子程序接受的参数类型和大小与调用代码发送的 匹配吗?n如果子程序有多个入口点,引用的参数是否与当 前入口点没有关联?n常量是否当作形参传递,意外在子程序中改动?29静态白盒测试-输入/输出错误n软件是否严格遵守外部设备读写数据的专用格式 ?n文件或者外部不存在或者未准备好的错误情况有 处理吗?n软件是否处理外部设备未连接、不可用,或者读 写过程中存储空间占满等情况?30静态白盒测试-同行审查n仅在编写代码的

13、程序员和充当审查者的其他一两 个程序员和测试员之间进行。保证审查的高效率, 注意审查的4个关键要素:确定问题;遵守规则;审查准备;编写报告。31静态白盒测试的小结n代码评审n同行审查n检查单32本次课程的主要内容n为什么要进行白盒测试n静态白盒测试n动态白盒测试基本路径测试逻辑覆盖(逻辑驱动)n语句覆盖n判定覆盖n条件覆盖n判定/条件覆盖n组合覆盖n路径覆盖33一些相关概念n语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程 序,使得每一条可执行语句至少执行一次;n判定覆盖(也称为分支覆盖):设计若干个测试用例,运行所 测程序,使程序中每个判断的取真分支和取假分支至少执行一次 ;n条件覆盖

14、:设计足够多的测试用例,运行所测程序,使程序中 每个判断的每个条件的每个可能取值至少执行一次;n判定-条件覆盖:设计足够多的测试用例,运行所测程序,使 程序中每个判断的每个条件的所有可能取值至少执行一次,并且 每个可能的判断结果也至少执行一次,换句话说,即是要求各个 判断的所有可能的条件取值组合至少执行一次;n条件组合测试:设计足够多的测试用例,运行所测程序,使程 序中每个判断的所有可能的条件取值组合至少执行一次;n路径测试:设计足够多的测试用例,运行所测程序,要覆盖程 序中所有可能的路径。 34下面以例子进行分析讲解 void DoWork(int x,int y,int z) int k=

15、0,j=0;if(x3) /语句块2j=j%3; /语句块3 35画出上面函数的流程图如下:36语句覆盖为了说明简略,分别对各个判断的取真、取假分支编号为 b、c、d、e。 为了测试语句覆盖率只要设计一个测试用例就可以把三个 执行语句块中的语句覆盖了。 测试用例输入为: x=4、y=5、z=5 程序执行的路径是:abd 该测试用例虽然覆盖了可执行语句,但并不能检查判断逻 辑是否有问题,例如在第一个判断中把 8 else 9 if(1= =iType) 10 x=y+10; 11 else 12 x=y+20; 13 14 55第一步:画出控制流图c/c+语句中的控制语句表示含义如下: 图中的每

16、一个圆称为流图的结点,代表一条或多条语句。 流图中的箭头称为边或连接,代表控制流。 为了说明流图的用法,我们采用过程设计表示法,此处, 流程图用来描述程序控制结构。可将流程图映射到一个相应 的流图(假设流程图的菱形决定框中不包含复合条件)。在流 图中,每一个圆,称为流图的结点,代表一个或多个语句。 一个处理方框序列和一个菱形决测框可被映射为一个结点, 流图中的箭头,称为边或连接,代表控制流,类似于流程图 中的箭头。一条边必须终止于一个结点,即使该结点并不代 表任何语句(例如:参见if-else-then结构的符号)。由边和结 点限定的范围称为区域。计算区域时应包括图外部的范围。 任何过程设计都要被翻译成控制流图。 56画出其程序流程图和对应的控制流图如下:57程序设计中遇到复合条件时,生成的流图变得更为复 杂。当条件语句中用到一个或多个布尔运算符(逻辑OR,AND ,NAND,NOR)时,就出现了复合条件。下图为语句IF

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号