版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-程序分析技术软件测试方法和技术由安博测试空间技术中心/提供软件测试方法和技术董瑞志/nature_dongEmail: hello_uMSN: nature_dong联系电话容提要程序分析的视角文本视角句法视角功能视角计算流视角程序分析技术故障插入变体分析数据流分析控制流分析程序切片程序插装文本视角从文本的视角来看,一个程序被看作是字符或记号的序列。 文本视角提供的信息是物理的、基本的。它一般不对文本内容的语法和语义进行分析,而只对文本本身的基本内容进行分析。例如,分析文本的规模、行数、词汇数、词汇频度等内容。文本视角是其他视角分析的基础。 句法视角一个程序可以被看
2、成一个分层结构,它可以被分解到子程序, 再被分解到语句组,然后被分解到语句等等, 直到符号层。在这个分解中,每个最基本的元素以及元素间的组合关系是由程序语言的语法决定的。这种视角被称为句法视角。功能视角程序可以被看成是一个功能集,功能被认为是对一个有序对(x,y)集合的指示。其中y是由程序在输入x处阻塞而产生的输出。用输入x执行程序和观察它的输出(如果有的话)是一种分析技术,该技术提供了程序在给定输入上的直接证据。 计算流视角 一个程序可以被看成一个有限 计算集 的表示。一个计算是当程序执行特定输入时产生的数据状态的轨迹。通过一次执行来促使一个程序的计算流被完整分析,可以服务于估计在代码中遗留
3、缺陷的数量、测试数据捕捉缺陷的能力和程序隐藏缺陷的可能性。 变体分析变体分析 ( 变异分析 ) 使用故障插入来分析测试数据的属性。带有插入错误的程序称为一个变体或变异。变体分析在程序测试中的应用是相当广泛的,并且是一个相当重要的技术,可以用于验证测试的充分性。 To be continue变体分析故障插入是一个统计的方法, 用于评价遗留在一个程序中的故障数量和种类。首先, 故障被插入到一个程序中, 然后, 程序被测试 , 并且发现故障的数量可用来估计还没有被发现故障的数量。 主要目的是为了评价系统的哪些模块、哪些代码是危险模块、危险代码, 容易出问题, 从而评价系统的容错能力。 控制流分析程序
4、流程图:程序流程图是一种程序控制结构的图形表示方式。在程序流程图上的处理框内常常标明了处理要求或条件。To be continue控制流分析控制流图:为了更加突出控制流的结构,需要对程序流程图做些简化,这种简化了的流程图称为控制流图,即流图。 To be continue控制流分析控制流图中的符号: 节点:以标有编号的圆圈表示,代表程序流程图中矩形框所表示的处理、菱形表示的分支及多选择结构点。 控制流线:以带箭头的直线或弧表示,与程序流程图中的数据流线是一致的,表明了控制的顺序。控制流线通常标有名字,如图中所标的a、b、c等。To be continue控制流分析为便于表示和处理控制流图,可以
5、把控制流图表示成矩阵的形式,称为控制流图矩阵。控制流矩阵:nxn,n为控制流图中节点数量。To be continue控制流分析控制流图矩阵数据流分析数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化。数据流分析方法在确认系统中也得到成功的运用,用以查找如引用未定义变量等程序错误,以及用来查找对未曾使用的变量再次赋值等数据流异常的情况。数据流分析重要性在程序测试中,找出这些错误是很重要的。因为这常常是常见程序错误的表现形式,如错拼名字、名字混淆或是丢失了语句。 数据流分析的两个概念变量定义:如果程序中某一语句执行时能够改变某个变量V的值,则称V是被该语句定义的。变
6、量引用:如果程序中某一语句的执行引用了内存中变量V的值,则说该语句引用变量V。 数据流分析案例例如:1.语句 X:Y十Z定义了X,引用了Y和Z;2.语句 if YZ then goto exit引用了Y和Z。3. 输入语句 READ X定义了X。4. 输出语句 WRITE X 引用了X。 To be continue数据流分析案例每个语句定义和引用的变量的列表。To be continue数据流分析程序中有两个错误:语句2使用了变量W,而在此之前并末对其定义。语句5、6使用变量V,这在第一次执行循环时也未对其定义过。 程序中还包含两个异常:语句6对Z的定义从未使用过。语句8对W的定义也从未使用
7、过。 程序切片对于给定的一个程序行为的子集 , 通过切片技术把程序减小到一个最小化形式 , 并且 仍旧能产生给定的行为。这个简化后的程序就称为切片 。To be continue程序切片对于一个中等复杂的程序来说 , 要进行比较完整的测试其成本是非常高的。那么使用切片技术 , 可以把一个规模较大且较复杂的程序转换成多个使用一定切片标 准而获得的切片程序 , 这些切片相对原来的程序来说 , 要简单且易于测试。 程序插装 程序插装是一种基本的白盒测试手段,在软件测试中有着广泛的应用。 To be continue程序插装什么是程序插装?程序插装方法简单地说是借助在被测程序中插入检查点的方法,来实现
8、白盒测试的目的。To be continue程序插装的目的通过测试这些检查点的信息,可以了解执行过程中程序的动态特性,如程序的实际执行路径,或是特定变量在特定时刻的取值。 To be continue程序插装从这一思想发展出的程序插装技术能够按用户的要求,获取程序的各种信息,成为测试工作的有效手段。通过程序插装技术我们可以了解一个程序在某次运行中所有可执行语句被覆盖(或称被经历)的情况,或是每个语句的实际执行次数。To be continue程序插装的应用测试覆盖率和测试用例有效性度量; 断言检测;数据流异常检测;路径智能分解To be continue用于测试覆盖率和测试用例有效性度量的程序
9、插装可能的测试覆盖度量:程序中每个语句至少被执行一次 ;在流程图中的每个分支至少被经过一次 ;每个可能被执行的路径至少被经过一次。 可能途径:在控制流中确定一个点集;在程序中的这些点上插入软件计数器;用一组测试用例测试这个程序;检查计数器的值以确定获得的覆盖率的范围。To be continue程序插装计数器的实现可以使用一个已命名的子程序或子 过程。 To be continue.程序插装以计算整数x和整数Y的最大公约数程序为例。To be continue.程序插装图中虚线框并不是原来程序的内容,而是为了记录语句执行次数而插入的。虚线框语句形式为: C(i) C(i)十1 i1,2,6To
10、 be continue.程序插装程序从入口开始执行,到出口结束。凡经历的计数语句都能记录下该程序点的执行次数。如果我们在程序的入口处还插入了对计数器C(i)初始化的语句,在出口处插人了打印这些计数器的语句,就构成了完整的插装程序。经过插装的程序便能记录并输出在各程序点上语句的实际执行次数。 To be continue.程序插装插装后的程序:To be continue.程序插装经过插装的程序,一方面可检验测试的结果数据,另一方面还可借助插入语句给出的信息了解程序的执行特性。所以,我们有时把插入的语句称为“探测器”或“探针”,借以实现“探查”或“监控”的功能。 To be continue.
11、程序插装在应用程序插装方法时,需要考虑的问题:探测哪些信息; 在程序的什么部位设置探测点;需要设置多少个探测点。 需要结合具体程序分析。需要考虑如何设置最少探测点,达到测试的目的。 To be continue.程序插装实践表明,程序插装方法是应用很广的技术,特别是在完成程序的测试和调试时非常有效。 To be continue用于断言检测的程序插装 在程序的特定部位插入某些用以判断变量特性的语句, 使这些语句在程序执行中得以证实, 从而使程序的运行特性得以证实。把插入的这些语句称为断言。断言是程序插装技术的一个典型使用。 程序员必须在程序的正确位置放人正确的断言, 这不是一件容易的事情。 北京测试空间科技发展有限公司是注册于北京市海淀区高新技术园的软件企业,目前主要业务范围包括软件测试管理工具研发、软件测试项目外包和软件测试专业技术人才培养及派遣。在软件测试管理工具研发领域已成功开发具有自主知识产权的STMP管理软件。在软件测试项目外包领域已建立广泛的业务渠道,服务客户包括北大软件工程中心、东软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变位机课程设计
- 基于RAG问答系统性能提升课程设计
- 小学数学二年级下册应用题专项练习(每日一练共48份)
- 高二责任担当主题班会教学设计
- 正视转折·厚植根基-2025-2026学年高一上学期期中家长会备考参考
- 八年级“情绪过渡期”:家校协同守护青春心理韧性家长会(教学设计)
- 小学五年级安全教育班会讲义-《识汛避险护青苗筑牢2026安全堤》
- 高中年级《“粮”心觉醒:新时代高中生的光盘责任与全球行动》主题班会教学设计
- 《北方与南方:基于区域认知与综合思维的深度备考》(高中地理一轮复习讲义)
- 高中二年级主题班会“青春舞台·个体与群像的璀璨交响”教学设计
- 2024~2025学年江苏省泰州市兴化市统编版六年级下册期末毕业考试语文试卷
- 门窗厂安全生产管理制度
- 2025年中国品牌在东南亚市场的崛起报告-增长机遇及对区域竞争者的影响-欧睿国际
- 河道治理工程质量管理制度
- 中学实验技能赛方案
- T/CNSS 018-2023预包装食品血糖生成指数标示规范
- 2025内蒙古赤峰林西县招聘社区工作者74人备考考试试题及答案解析
- 城市污水管网沿线绿化与恢复方案
- 新疆保密管理办法
- 肝性脑病合并糖尿病护理
- 方太电烤箱KQD50F-C2说明书
评论
0/150
提交评论