当前位置:首页 期刊杂志

基于LDRA Testbed的软件完整性静态测试方法研究

时间:2024-07-28

王玮

(南京航空航天大学计算中心,江苏 南京 211106)

基于LDRA Testbed的软件完整性静态测试方法研究

王玮

(南京航空航天大学计算中心,江苏 南京 211106)

根据软件测试工具LDRA Testbed的特点,本文提出了一种基于LDRA Testbed的软件完整性静态测试方案。该方案策略性选取四种测试方法,详细描述了每种方法的测试过程,输入项和输出项。实际运用中表明此方案极大提高了测试效率和测试规范性。

静态测试;测试方法;LDRA Testbed

那么如何进行文档分析呢?文档分析的检查内容可以根据具体的测试内容进行调整,最终形成文档审查单。测试人员按照文档审查单中的每一检查项,对被审查文档逐项分析。若发现有不符合项,则在问题报告中列出。文档审查单主要内容可以包括:

(1)文档是否符合对应的编写标准;

(2)文档中是否存在需求未描述的功能;

(3)文档和上层文档中对术语、简称等名词的描述是否一致;

(4)软件需求描述文档是否与用户需求对应;

(5)软件设计文档是否与软件需求描述文档和软件接口描述文档对应;

(6)软件设计文档是否说明了软件结构、输入/输出、资源配置、性能要求、兼容性分析、异常处理等;

(7)软件接口描述文档是否说明各个接口的用途和等级;

(8)软件接口描述文档是否说明了接口的值域和精度;(9)用户手册描述是否简明清晰;

(10)用户手册是否说明了软件输入,同时给出预期输出;

(11)用户手册是否说明了终止软件操作;

(12)用户手册是否说明了软件错误信息的含义及异常处理方法。

2.2 计算机辅助静态分析

静态测试的第二个阶段是计算机辅助静态分析。这一阶段的输入项是被测试的源代码,测试过程是利用专用软件测试工具辅助静态分析,对被测试的源代码进行特性分析,从代码中提取一些信息,以便检查代码逻辑的各种错误和可疑的程序构造,如错误地使用局部变量和全局变量、不匹配的参数、潜在的死循环以及不会执行到的代码等[2]。

软件测试工具的应用可以提高测试的质量、测试的效率、减少测试过程中的重复劳动、实现测试自动化。软件测试工具的种类众多,其中LDRA Testbed功能强大而且全面,能够实现汇编语言、C/C++、Fortran、Ada等语言的静态和动

1.引言

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件复杂度的增加,可能导致软件结构不合理,代码编写不规范,存在代码缺陷。在软件开发或测试过程中引入静态测试,有利于开发人员更好了解系统,坚持编码质量标准,判定系统的复杂性,发现更多的代码缺陷[1]。本文将软件测试方法和软件测试工具LDRA Testbed有效结合,提出一种基于LDRA Testbed的静态测试完整方案。

2.静态测试

静态测试是指无需执行被测代码,而是采用人工检测和专用软件测试工具辅助静态分析的手段对代码进行检测,主要检查代码和设计是否一致,代码是否遵循编码规范,代码的逻辑表达是否正确,代码结构是否合理性等方面。

据统计,静态测试比动态测试更快速有效,可以发现30%~70%的逻辑设计和编码错误,静态测试完成的质量越高,将会极大减少整个测试的总工作量。因此,如何进行高质量的静态测试显示十分重要。本文根据各种静态测试方法的特点和专用软件测试工具的功能进行策略组合,将静态测试分为4个阶段,文档分析、计算机辅助静态分析、代码审查和评审,详细描述4个阶段的测试内容和输出结果,使之构成完整的静态测试方案。

2.1 文档分析

静态测试的第一个阶段是文档分析。这里的文档是指与代码对应的软件需求描述文档、软件设计文档、软件接口描述文档、用户手册等。这些软件开发文档作为这个测试阶段的输入项;测试过程主要通过人工测试,即不依靠计算机人工审查文档;审查结果和测试过程中发现的文档异常或缺陷最终生成的问题报告,作为这个测试阶段的输出项。本项测试的目的是通过分析对文档的完整性、一致性和准确性进行检查。态测试。在静态测试方面,LDRATestbed提供强大的包括编码规则检查在内的静态分析功能和全面的静态分析报告,用户可以选择行业认可的标准,如MISRA C、DERA、AV C++等。提供软件质量的度量,以可视化的方法了解代码的复杂性,提供详细的函数调用关系和程序控制流程图,自动生成报告,提供软件质量文档。提供接口分析、识别潜在的错误程序变量,对所有过程参数以及函数的全局变量和返回值进行分析。

LDRA Testbed的静态分析是在对源代码的语法分析的基础上进行的,源代码可以是单个文件也可以是完整的一个工程。对于多个文件,LDRATestbed创建的文件集合有两种属性可以设置,GROUP对集合中每个文件单独进行分析。SYSTEM在静态分析和复杂性分析过程中,依次对集合中每个文件进行分析,分析的结果用于后续的系统/集成测试,优化全局的数据流和交叉引用。因此,GROUP得到的是各个源文件的分析结果,而SYSTEM得到的是文件集合整体的一个分析结果[3]。

LDRA Testbed提供了很多静态分析选项,如图1所示,包括主要静态分析、复杂度分析、静态数据流分析、交叉索引分析、信息流分析等,测试人员可以根据具体的测试内容和测试要求进行裁剪。

图1LDRATestbed静态分析选择框

LDRATestbed的静态分析主要输出内容包括以下几点:

(1)LDRATestbed提供详细的函数调用关系和程序控制流程图,如图2所示。函数调用关系图反映了函数之间的层次关系,可以通过扇入/扇出数衡量函数调用关系的复杂度。程序控制流程图表示函数的控制流结构,图中节点表示源代码,点击节点可以调出相应的源代码,节点间的分支跳转用连线表示。控制流节点和程序的顺序结构密切相关,控制流节点数是反映程序复杂性的一个因素,过多的控制流结点意味着需要对程序的结构进行改进,以提高程序的可读性和减小程序的复杂度[3]。

图2 LDRATestbed函数调用关系图和程序控制流程图

(2)LDRATestbed Code Review Report,依据用户设定的编码标准对源代码进行分析,验证其中是否存在违反编码规则的地方并生成分析报告,如图3所示,包含源代码行数、编码规则描述和具体的编码标准。

图3 LDRATestbed代码检测报告

(3)LDRATestbed Quality Review Report,比较直接地反应被测试源代码的质量,可以提供复杂度分析的总体结果,包括代码清晰性、可维护性和可测试性的度量结果,如图4所示。同时也提供控制流结点、圈复杂度、代码可达性、循环深度、LCSAJ密度、注释、Halstead软件科学度量、程序结构化验证等复杂度度量元的详细结果。

图4 LDRATestbed质量检测报告

另外,LDRATestbed还提供静态数据流,交叉索引,信息流和数据对象分析的文本报告,测试人员必须结合源代码认真仔细地分析测试结果,检查源代码是否符合编码规则,识别潜在的错误程序变量,对所有过程参数以及函数的全局变量和返回值进行分析,检查代码的结构、复杂度和其它一些因素是否符合可配置的质量模型,尽可能地发现问题。LDRA Testbed生成的各项分析报告和检查发现的问题报告是这一阶段的输出项。

2.3 代码审查

静态测试的第三个阶段是代码审查。这一阶段的输入项是被测试的文档和源代码,本项测试的目的是发现被测试的源代码中的逻辑设计错误和编码错误。在前两个阶段的基础上,要求测试人员必须认真仔细地阅读文档和源代码,适当准备一些有代表性的测试用例,沿代码的逻辑逐步审查代码。

审查的内容包括:检查代码和需求的一致性;检查代码和设计的一致性;检查代码对编码标准的遵循、可读性;检查代码的逻辑表达的正确性;检查代码结构的合理性;检查代码算法的正确性;检查变量使用的正确性;检查代码的可维护性。

测试人员在代码审查过程中尽可能地提出问题报告,作为这一阶段的输出项。

2.4 评审

静态测试的第四个阶段是评审。前期测试的所有输出项作为被评审的材料,是这一阶段的输入项。本项测试的目的是检查并确认所有已发现的问题,最终修改问题。

评审前,由主持者确认评审的先决条件是否满足,例如,被评审的材料是否完整、会议人员是否确定、会议日期和场地是否确定。参与评审的人员主要包括测试人员、开发人员等,每次评审的参加人数不宜过多,建议3~7人。如果被评审的材料内容较多,可根据需要分成若干模块,举行多次会议进行评审。

评审中,主持者向评审者征集问题,要让每个评审者都发表意见,逐行或逐项讨论被评审材料。对于提出的每个问题,主持者要归纳缺陷类型,经讨论达成一致意见后把问题记录在会议记录中。在检查了所有发现的问题后,评审者表决本次会议的结论意见。结论意见分三种:接受、修改但不再评审和修改后再次评审。

评审后,将评审结果以及静态测试的所有输出项提交给开发人员,开发人员完成修改后,测试人员进行回归测试,确认所有问题已正确修改,静态测试工作结束。

3.结束语

软件静态测试方法和测试工具众多,但是任何一种方法或工具都不能涵盖所有静态测试的要求。本文提出的软件静态测试方案,将测试方法和工具的结合,以最少的人力和时间尽可能多地发现潜在的各种错误和缺陷,提高了测试效率,缩短了软件开发周期,提高软件质量和可靠性。该方案明确、具体、可操作性强,在实际运用中已经取得了较好的效果。

[1]胡丹瑞.基于LDRATestbed的软件静态测试研究与实现[J].计算机安全,2012,(6):69-71.

[2]邱小玲.浅谈软件测试的方法[J].IT技术论坛,2008,(17):93-100.

[3]LDRATestbed技术说明,上海创景计算机系统有限公司.

Research on Static Test Method of Software Integrity Based on LDRATestbed

Wang Wei
(Computer Center,Nanjing University ofAeronautics&Astronautics,Nanjing 211106,Jiangsu)

According to the characteristics of software testing tool LDRA Testbed,this paper presents a scheme of static test of software integrity based on LDRA Testbed.This scheme strategically selects the four testing methods,and describes the test process of each kind of method,the input and output items in details.Practical application shows that this scheme greatly improves the test efficiency and test standard.

static test;test method;LDRATestbed

王玮,女,安徽淮南人,硕士,助理工程师,研究方向:软件工程、计算机技术与应用。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!