小型面向对象语言程序测试用例自动生成技术

小型面向对象语言程序测试用例自动生成技术

ID:36784182

大小:2.46 MB

页数:65页

时间:2019-05-15

小型面向对象语言程序测试用例自动生成技术_第1页
小型面向对象语言程序测试用例自动生成技术_第2页
小型面向对象语言程序测试用例自动生成技术_第3页
小型面向对象语言程序测试用例自动生成技术_第4页
小型面向对象语言程序测试用例自动生成技术_第5页
资源描述:

《小型面向对象语言程序测试用例自动生成技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中文摘要中文摘要软件测试是十分繁重困难的脑力劳动过程,测试工作量通常占软件开发总量的40%以上。为了既快又好地完成测试工作,开发自动测试工具是十分必要的。静态分析程序不需要执行测试的程序,它仅仅扫描被测试程序的正文,从中寻找可能导致错误的异常情况。信息流分析技术又称程序流分析技术,是一种静态分析技术,即在一个程序没有被实际运行之际,通过静态分析去发现它的一些运行行为方面的特性。信息流分析包括控制流分析和数据流分析两种,其中控制流分析侧重于对程序结构的分析,而数据流分析侧重于对变量控制结构下的定值、使用以及传播情况的

2、分析。本文中的测试用例生成器使用了工具ACCENT,ACCENT是类似于YACC(Bison)的编译器构造工具,它是在unix(linux)上开发的,其全称为“ACompilerCompilerfortheEntireClassofContext-FreeLanguages"。其功能是能自动产生某个语言的语法分析器。ACCENT对文法不加任何限制,能处理所有的上下文无关文法:YACC只能处理LALR(1)类文法。ACCENT在处理文法时不会产生任何冲突;YACC受所处理文法类的限制,可能会产生SIR或RIR冲突。A

3、CCENT产生的语法分析器分析效率略低;由YACC生成的分析器分析效率高。我们的分析对象是一种小型的面向对象程序设计语言SOOL,它是从C+十简化和修改得来。我们保留程序的主干,即保留顺序、分支、循环语句以及简单的面向对象机制,即类、继承、发消息。这里的文法是用一种类似于巴克斯范式方式给出,但它又不是纯粹的巴克斯范式。之所以表示成这种形式是在不影响其清晰性的前提下考虑到实现方便,具体地说这种文法能够为下面要介绍的工具ACCENT所识别,而且表达比较简洁。测试用例生成系统面对的是一个SOOL文本源程序(经词法分析程序

4、FLEX词法分析后生成TOKEN序列,但其结构与源程序相同),要对源程序进行分析必须将其转换成中间表示形式。抽象语法树(AGT)是用于代码生成的最一般的中间代码形式,主要用来表示语句中出现的表达式。抽象语法树可使用于语义分析、中间代码优化和代码生成等方面。因此我们建造SOOL语法树.为了对SOOL程序进行信息表分析以便生成测试用例,我们中文摘要构造一些必要的数据结构,它们是自动生成器存储信息的基本数据结构(类信息表、对象生存期表、变量信息表、函数信息表和输入变量表)、计算条件表达式所用数据结构(操作符栈和操作变量栈

5、)、嵌套函数展开所需的函数展开栈以及路径二叉树。我们生成测试用例的所采用的程序测试覆盖策略是条件组合覆盖、类覆盖以及路径覆盖策略,要实现这样的覆盖策略必须在程序中查找满足这种覆盖策略的路径。这里我们做了两步工作,第一步是在SOOL程序语法树上创建及填写存储信息的基本数据结构,包括创建及初始化类信息表、对象生存期表、变量信息表、函数信息表及输入变量表,其中类信息表记录各个类的信息以及它们之间的继承关系,对象生存期表为类中各个不同的对象建立,对象中的成员变量和成员函数都记录在其中,中间变量的信息记录在变量信息表中,成员

6、函数的详细信息记录的函数信息表中,输入变量的信息记录的输入变量表中,其中各种表均为链表。同一名称的类信息表、对象信息表及输入信息表都只有一个表,而对应于不同的作用域可以有不同的同一名称的中间变量和成员函数,因此也就有多个同名的变量信息表和函数信息表,区分它们的方法是表中的对象项不同;第二步是依据SOOL程序语法树结构,构建SOOL程序中所有可能执行路径的路径二叉树,一边对程序进行信息流分析,一边填写路径二叉树上的条件表达式。为了生成测试用例,对程序进行信息流分析的时候,我们考虑的主要方面是赋值语句和发消息语句对条件

7、表达式的影响.因此在这里发消息语句可以看作是多个赋值语句,类似地,函数返回值也可以看作是对函数的赋值语句。赋值语句的一般形式把一个表达式赋给一个中间变量,该表达式为一个链表,这一链表由算术运算符、括号以及指向变量信息表的指针、指向函数信息表的指针和指向输入变量表的指针组成,赋值的时候把这一个链表赋给这个变量,实现的时候只需修改该中间变量的变量信息表中的指针即可;同时要修改变量信息表的状态位。IF语句是产生程序执行路径分支的原因,但并不是每一个IF都会产生分支,并且由于IF语句相互影响,我们在开始建立路径二叉树的时候

8、并不确定哪些IF语句产生分支,我们的做法是对在程序块中出现的IF语句均先假定其产生分支,把IF语句中BOOL表达式作为路径二叉树上的条件表达式,假定表达式成立和表达式不成立产生两条分支,分别沿两条分支填写分支路径上的条件表达式。由于这样形成的条件表达式不一定产生分支,所以在对表达式计算和化简后要削去一些不存在的分支。中文摘要循环语句的展开较难处理,涉及的问题

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。