关闭

基于模型的软件测试

发表于:2013-2-20 15:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨朝红等    来源:51Testing软件测试网采编

  (5)不良习惯模型。该模型主要是由于程序员编写代码的不好习惯造成的一些错误。包括文件的空输入,垃圾回收的问题,类、方法和域的命名问题,方法调用,对象序列化,域初始化,参数传递和代码安全性问题等。

  (6)代码国际化模型。该模型主要是在语言进行国际化的过程中,可能造成本地设置和程序需求不符的情况,造成匹配错误。

  (7)易诱骗代码模型。该模型主要指代码中容易引起歧义的、迷惑人的编写方式。比如无意义的比较,永远是真值的判断,条件分支使用相同的代码,声明了却未使用的域等,即那些混淆视听,无法正常判断程序的真正意图的代码。

  3、检测方法

  测试过程从源代码输入开始,经历预编译、词法分析、语法分析与语义处理、抽象语法树生成、控制流图生成和IP 扫描等几个步骤,最后自动生成IP报表。检测流程如图1所示。

图1 测试过程

  各个操作步骤的功能如下:

  (1)预处理。由于源程序中存在宏定义、文件包含和条件编译等预处理命令,因此在进行词法分析前必须进行预编译,将宏进行展开,这样有利于变量的查找。

  (2) 词法分析。将预编译阶段产生的中间代码进行分解,形成各种符号表,为语法分析作准备。符号表的结构主要有:标识符表、类型表、关键字表、常数表、运算符表和分界符表。

  (3)语法分析和语义处理。这一步主要是将输入字符串识别为单词符号流,并按照标准的语法规则,对源程序作进一步分析,区分出变量定义、赋值语句、函数等等。语法分析的结果是生成语法树,并提供对外的接口。此外,通过语法树可以生成程序的控制流图和变量的定义使用链,为下一步的故障查找作准备。

  (4)抽象语法树生成。语法分析和语义处理之后生成抽象语法树,源程序中的所有语句都作为抽象语法树的结点。抽象语法树是后续操作的基础,含有后续处理所需的各种信息,如语句类型,变量名称及类型等。

  (5)控制流图生成。在抽象语法树的基础上生成控制流图,描绘程序结构。生成的控制流图必须反映源程序的结构。

  (6)IP扫描。IP扫描是测试过程的关键步骤,首先定义测试模型,然后在控制流图上遍历对测试模型进行匹配,从而生成IP报表。工具所能检测的故障的集合取决于定义的测试模型集合。

  (7)人工确认。由于误报的存在,因此需要对生成的IP进行人工确认。对IP进行人工判定是基于模型的软件测试技术的测试资源主要消耗步骤。我们的经验表明,一个有经验的软件测试工程师8h可以处理100~200个IP。

  4、结束语

  面向模型的软件测试技术是测试效率很高测试方法,是目前其他测试方法无法替代的。随着软件模型类型的逐步增多,测试算法的逐步成熟,以该方法为基础所开发的测试系统必然会在市场上广泛流行。当然,它也不能替代已有的其他测试技术,因为软件中的故障仅靠该方法测试是不行的。在美国,面向模型的测试服务是软件测试市场的主流方向之一,Reasoning 公司以及Klocwork 等公司目前已经开发了C++/ Java的多个不同版本,建立很多测试服务企业。在我国,该技术的研究则刚刚开始,但已经收到了很好的效果。

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号