软件测试技术基础(第二章程序结构静态分析)_第1页
软件测试技术基础(第二章程序结构静态分析)_第2页
软件测试技术基础(第二章程序结构静态分析)_第3页
软件测试技术基础(第二章程序结构静态分析)_第4页
软件测试技术基础(第二章程序结构静态分析)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

软件测试技术基础

(FoundationofSoftwareTestingTechnology)

第二章程序结构静态分析

主讲教师:实践辅导教师:主要内容代码审查代码走查桌面检查同行评审控制流分析数据流分析信息流分析2今天,不是每一个测试人员都阅读代码,但是研究代码确是一种测试方法,被广泛接受。以下因素影响是否采用阅读代码作为测试工作的一部分程序的大小和复杂性开发团队的大小开发期限团队文化和背景3人工测试人工测试可以在程序代码编写完,基于计算机的测试没有开始以前进行。两种主要的人工测试方法是:代码审查(codeinspections)走查(walkthrough)人工测试技术的重要性错误发现得越早,改正错误的成本越低,正确改正错误的可能性也越大;程序员在开始基于计算机的测试时似乎要经历一个心理上的改变。压力会急剧增长,且要“尽可能快地修正这个缺陷”。由于这些,所以,程序员在改正某个基于计算机测试发现的错误时所犯的失误,可能要比改正早期发现的问题时所犯的失误会更多一些的。4代码审查(codeinspections)人员一个代码检查小组通常是由四人组成,一人发挥着协调作用一人是该程序的编码人员一人是其他成员通常是程序的设计人员一人是测试专家。5代码审查所谓的代码审查,其实就是以组为单位阅读代码,是一系列规程和错误检查技术的集合。该过程通常将注意力集中在发现错误上,而不是纠正错误。内容检查代码和设计的一致性检查代码对标准的遵循、可读性检查代码的逻辑表达的正确性检查代码结构的合理性6代码审查步骤:第一步:小组成员提前阅读设计规格书、程序文本等相关文档第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题第三步:跟踪与报告7代码审查在代码审查过程中,一个重要的部分是需要对照一份编程错误列表,来分析程序是否存在常见的错误。错误列表

错误列表在很大程度上是独立于编程语言的可以把自己使用的编程语言中特有的错误,以及代码检查发现的错误补充到这份错误列表中去8代码审查错误列表的总的构架。该列表共分为八个部分:数据引用错误数据声明错误运算错误比较错误控制流程错误输入/输出错误接口错误其他检查。

每一部分中细分了很多项9代码审查在代码审查的时间和地点上的选择上,应避免所有的外部干扰;

代码审查会议的理想时间应在90-120分钟之内;

大多数的代码审查都是按每小时大约阅读150行代码的速度进行;

对大型软件的审查应安排多个代码检查会议同时进行,每个代码审查会议处理一个或几个模块或子程序。10代码审查代码审查附带的几个有益的作用程序员通常会得到编程风格、算法选择及编译技术等方面的反馈信息;其他参与者也可以通过接触其他程序员的错误和编程风格而同样受益匪浅;代码检查还是早期发现程序中最易出错部分的方法之一,有助于在基于计算机的测试过程中将更多的注意力集中在这些地方。11代码走查(walkthrough)人员三到四人最好一人是这段代码的作者(可做会议主持)一个类似于检查中的仲裁人一个人担当秘书的角色(记录所有发现的错误)一个人担当测试人员的角色最佳人员组合一位极富经验的程序员;一位程序设计语言专家;一位程序员新手(可以给出新颖、不带偏见的观点);最终将维护程序的人员;一位来自其他不同项目的人员;一位来自该软件编程小组的程序员。12代码走查代码走查就是对软件文档进行书面检查。它通过人工模拟执行源程序的过程,检查软件设计的正确性。人工模拟也像计算机执行那样,可以仔细推敲、校验和核实每一步的执行结果,进而确定其执行逻辑、控制模型、算法和使用参数与数据的正确性。步骤第一步:小组成员提前阅读设计规格书、程序文本等相关文档第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题

第三步:跟踪与报告

13代码走查缺点功能性测试很难实现有太多的条件有太多的测试用例14代码审查和代码走查的共同之处方法:组成一个小组来阅读或直观检查特定的程序;并在“头脑风暴会”上要形成统一的目标:找出错误,但不必找出改正错误的方法。换句话说,是测试,而不是调试。该组开发人员(三至四人为最佳)是对代码进行审核,其中参加者当中只有一人是程序编写者;也可以说它是对过去桌面检查过程的改进。优点:一旦发现错误,就可以在代码中对其进行精确定位,这就降低了调试的成本;还通常可以发现成批的错误,这样就可以一同得到修正,这也优于机器测试,因为后者只能暴露出错误的某个表症。效果:通常是能够有效地查找出30%-70%的逻辑设计和编码错误,但不能有效地查找出高层次的设计错误。地位:是与计算机的测试互补的,缺少其中任何一种错误检查的效率都会降低。15代码审查和代码走查的共同之处该处的错误发现率,并不是说所有错误中多达70%可能会被找出来,而是讲这些方法在测试过程结束时,可以有效地查找出多达70%的已知错误。应始终记住的是:程序中的错误总数始终是未知的。否则就会浪费大量的精力跟人力,也会在经济效益上或多或少有一些损失的就经验而言,修改一个现存的程序比编写一个新程序更容易产生错误,这依据于以每写一行代码的错误数量来计的。16桌面检查桌面检查可视为由单人进行的代码检查或代码走查;并由一个人阅读程序,对照错误列表检查程序,对程序推演测试数据。由此,我觉得桌面检查可以说是上述两种方法的一个内核或者说是雏形吧。所以也可知其效率是相当低的。

17同行评分需指明:其该方法与测试并无关系,因为其目标并不是为了发现错误的,只是它与代码阅读的思想有一定的关联而已。定义上:同行评分是一种依据程序整体质量、可维护性、可扩展性、易用性和清晰性对匿名程序进行评价的技术。不难看出,该技术的目的是为程序员提供自我评价的手段。其小组成员的构成为:一位管理员,负责担任该评分过程的管理工作;6-20名参与者,并要保持匿名性,且要具备相似的背景。评分的资料:由参与者自己挑出两个由自己编写的程序以供评审,其中一个应是自认为能代表其自身能力的最好作品;另一个是自认为质量较差的作品。18代码走查19控制流分析

非结构化程序会给测试、排错、和程序的维护带来许多困难要求写出的程序结构良好检查程序的控制结构成为十分有意义的工作20程序流程图

132521控制流图12435abcdef22控制流图程序的控制流图:符号○为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。23控制流图节点标有编号的圆圈

程序流程图中矩形框所表示的处理

菱形表示的两个甚至多个出口判断

多条流线相交的汇合点

24控制流图控制流线或弧箭头

与程序流程图中的流线一致,表明了控制的顺序

控制流线通常标有名字25控制流图矩阵

acbdef123451234526控制流图矩阵便于机器表示和处理控制流图

连接弧的节点的号码决定了矩阵中元素的位置注意控制流的方向两个节点没有弧线,所对应的位置也就没有元素27程序结构的基本要求写出的程序不应包含:转向并不存在的标号

没有用的语句标号

从程序入口进入后无法达到的语句

不能达到停机语句的语句

28数据流分析

查找引用未定义变量等程序错误

查找对以前未曾使用的变量再次赋值等数据流异常的情况

常见的错误表现形式错拼名字名字混淆语句丢失29数据流如果程序中某一语句执行时能改变某程序变量V的值,则称V被该语句定义如果一语句的执行引用了内存中变量V的值,则称V被该语句引用例如:X=Y+Z;ifY>Zthenreturn;30控制流图与数据流表1234106758911节点被定义变量被引用变量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10ZZ11Z31信息流分析通过对输入数据、输出数据、语句之间的关系的分析来检查程序错误整除算法例子输入:in_m是被除数,in_n是除数输出:out_q是商,out_r是余数32整除算法例子out_q=0;out_r=in_m;While(out_r>=in_n){out_q++;out_r=out_r–in_n;}33信息流关系图√√√√√√√in_min

温馨提示

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

评论

0/150

提交评论