本文挡介绍了测试工具Logiscope的使用方法,包括以下内容:
1 安装、配置Logiscope。
2 Logiscop三大功能Audit、RuleChecker、TestChecker的使用。
3 其它相关问题。
Logiscope 有三项独立的功能,以3个独立的工具的形式出现,即Audit、RuleChecker、TestChecker,它们之间在功能上没有什么联系,彼此较为独立。在“Logiscope 的使用”这一部分,我会首先介绍一下如何安装、配置Logiscope,然后分三部分,分别就Audit、RuleChecker、TestChecker 三个工具做详细的介绍。
有一点需要说明的是,Logiscope可以检测多种语言实现的代码,但在本文中,我只以C++语言为例。其它语言的操作过程基本类似。
好了,下面就开始吧!
首先需要将Logiscope的license服务安装在一台机器上,我安装的机器名为test-server。此时,要在自己的机器上使用Logiscope,按以下的步骤操作:
1、在你的机器上安装好Logiscope。安装过程中没有什么特殊的要求,只需按照安装程序的提示,一步步的操作即可。
确保安装过程正确无误,并保证你的机器可以和提供Logiscope的license服务的机器联网后,进行下面的操作。
2、在你的计算机上,用鼠标右键单击“我的电脑”图标,选择“属性”菜单项。在弹出的对话框中选中“高级”标签页,如图所示:
图2-1 系统特性
3、单击“环境变量”按钮,在弹出的对话框中,选中“系统变量”列表框中的“LM_LICENSE_FILE”这一项。单击“编辑”按钮,如图所示:
图2-2 环境变量
4、此时会弹出新的对话框。在该对话框的“变量值”编辑框中,添入Logiscope为你提供的license号,以此来取代原来的值,如图所示:
图2-3 编辑环境变量
5、依次点击“确定”按钮,退出各个对话框。
OK,现在Logiscope可以在你的机器上正常运行了。
下面,我们就开始介绍Audit、RuleChecker、TestChecker这三项功能的使用。首先是Audit。
“Audit”——审查、检查的意思,Audit的功能与它的名字也很吻合,它用于审查代码的质量。
使用Audit来审查代码的质量分为两个步骤:首先是建立被测程序的Audit项目,然后是分析Audit给出的质量审查结果。下面对这两个步骤分别进行介绍。
生成被测程序的Audit项目有两种方法。
2.1.1.1 在Logiscope studio中建立Audit项目
一种方法是:在Logiscope的集成环境Logiscope studio中,建立被测程序的Audit项目,这是推荐的方法。步骤如下:
1、在开始菜单中,启动“Logiscope studio”,进入Logiscope studio环境。Logiscope studio启动后,如下图所示:
图2-4 Logiscope studio环境
2、点击[File|New]菜单项,弹出如下图所示的对话框:
图2-5 新建项目
在对话框中,选中“Project”标签页,在列表框中我们选择“C++ Audit Project”这一项,然后在“Project”编辑框中添入你要建立的这个Audit项目的名字(可以取任何你喜欢的名字),再在“Locatior”编辑框中,选择一个存放将要生成的Audit项目的文件目录。最后点击“确定”按钮。
3、此时会弹出如下图所示的对话框:
图2-6 新建项目向导
在对话框的“Application root” 编辑框中,添入你所要检测的源程序文件所在文件夹的路径,其它均采用默认设置,然后点击“下一步”按钮。
4、弹出如下图所示的对话框:
图2-7 新建项目向导
在该对话框中,使“Choose a parser”组合框保持“MFC”默认选项,在“Choose a quality”编辑框中,添入我们所设计的质量模型文件的存放路径(Logiscope默认选择的是LogiscopeHOME\Logiscope\Ref\Logiscope.ref下的这个质量模型文件),Logiscope要依照该文件对被审查的代码进行检测。在“Choose a Logiscope”编辑框中为生成的Logiscope中间结果文件选择一个存放路径,一般使用当前提供的默认路径即可,最后点击“下一步”按钮。
5、弹出如下图所示的对话框:
图2-8 新建项目向导
这个对话框,是在向你汇报将要生成的Audit项目的相关情况,没有什么需要编辑、设置的地方。点击“完成”按钮。至此,生成了一个Audit项目,显示窗口如下:
图2-9 新建项目结束
在该窗口中,选择[ Project | Build ]菜单项,Audit开始对被测代码进行检测。Build执行结束后,代码质量的检测结果也就产生了,进行保存。
2.2.1.2 在Visual Studio中建立Audit项目
除了上面这个建立被测代码Audit项目的方法外,你也可以在VC6.0的集成环境中建立被测程序的Audit项目(但有时会发生出错,所以,建议你还是在Logiscope studio中建立被测程序的Audit项目)。
在VC6.0的环境中建立Audit项目的步骤如下:
启动VC6 .0,打开你要检测的项目,选择[ Tools | Build Quality Results ]菜单项,Build结束后,选择[ Tools | Viewer ]菜单项,此时,Logiscope被启动, Audit对代码质量的检测结果会显示在你的面前。
注意:只有你已经将Logiscope的功能集成到VC6.0的开发环境中去,才可以使用这个方法。将Logiscope功能集成到VC6.0开发环境中的方法为:Logiscope安装成功后,点击开始菜单,启动“程序 | Telelogic Tau Logiscope | Utilities | Visual Integration”,在弹出的对话框中点击“Install”按钮即可。
前面已经讲述了建立被测程序Audit项目的方法,既然检测结果已经得到了,我们现在就说一下如何查看、分析Audit对被测程序的这些检测结果。
选择[ Browse | Quality | Factor Level ]菜单项,Logisciop会显示Audit对所检测源程序质量水平的评价结果,评价结果包括系统的质量、类的质量、函数的质量。如下图所示:
图2-10 质量水平
选择[Browse | Quality | Criteria Level ]菜单项,Logisciop会显示Audit对所测源程序的各项质量标准的检测结果,具体包括:系统的质量标准、类的质量标准、函数的质量标准。如下图所示:
图2-11 质量标准
选择[ Browse | Quality | Quality Report ]菜单项,可生成网页风格的系统质量评价报告。如下图所示:
图2-12 质量评价报告
以上这些是Audit对被测试代码在质量因素级、质量标准级上的检测信息,关于系统、类、函数在质量度量级上的检测信息,需要选择[ Project | Start Viewer ]菜单项,通过启动“Logiscope Viewer”来进行查看。我们现在就启动“Logiscope Viewer”来看一下。
Logiscope Viewer被启动后,界面如下所示:
图2-13 Viewer
Viewer中的列表控件中,显示了系统中的全部函数。选中某个函数后,通过点击下面这个工具条上的按钮,可以查看Audit为我们提供的对函数的各种分析信息。工具条及工具条上各个按钮的功能如下:
图2-14 函数分析信息工具条
点击工具条上的相应按钮,会分别显示如下的信息:
点击函数流程图按钮,会显示函数的流程图:
图2-15 函数流程图
此时,选择[ Options | Full Reduction ]或[ Options | Step-by-Step Reduction ]菜单项,可对流程图进行结构化的转换,选择[ Options | Initial ]还原。
点击函数度量元按钮,会显示函数的度量元检测结果:
图2-16 函数度量元
点击函数质量标准按钮,会显示函数质量标准的检测结果:
图2-17 函数质量标准
点击函数调用关系按钮,会显示函数之间的调用关系的检测结果:
图2-18 函数调用关系
点击系统度量元按钮,会显示系统度量元的检测结果:
图2-19 系统度量元
以上显示了函数域、系统域的情况,我们还可以查看各个类的情况。在Viewer中点击[File | New ]菜单项,在弹出的对话框中选中“Class Workspace”, 如下图所示,点击确定按钮。
图2-20 新建Class Workspace
这时,界面显示如下:
图2-21 Class Workspace
窗口的列表框中列出了系统中所有的类。选中某个类后,点击下面这个工具条上的按钮,可以查看关于该类的各种分析信息。工具条及各个按钮的功能如下:
图2-22 Class Workspace工具条
点击工具条上的各个按钮,会分别显示如下的信息:
点击类度量元按钮,会显示类度量元的检测结果:
图2-23 类度量元
点击类质量准则按钮,会显示类质量准则的检测结果:
图2-24 类质量准则
点击类派生关系按钮,会显示父类、子类之间的派生关系:
图2-25 类派生关系
点击类使用关系按钮,会显示类与类之间的使用关系:
图2-26 类使用关系
好了,到这里,关于Audit的内容基本介绍完了。
如果你没有学习过软件质量模型方面的知识,可能会对上面所说到的软件质量因素、软件质量标准、软件质量度量元等这些概念比较陌生,那么你应该找一本软件工程方面的书,仔细的看一下软件质量模型这一部分的内容。
你除了需要了解软件质量保证的相关知识外,也应该对Logiscope的测试机理有一定的了解,关于这部分内容,你可以参见我写的另2篇文章——《Logiscope测试机理》、《Logiscope-Audit质量因素、质量标准》。
最后,你也应该了解Audit为我们提供的各个软件质量度量元的具体含义,关于这部分内容,你可以参见我写的《Logiscope-Audit函数度量元》、《Logiscope-Audit类度量元》、《Logiscope-Audit系统度量元》这3篇文章。
这些内容你都掌握之后,就应该多进行实际的操作。
怎么样?Audit就到这了,如果你准备好了,下面我们就开始学习RuleChecker。
RuleChecker是Logiscope的另一个功能,它是一个静态、白盒性质的测试工具,用来检查代码书写规范性。
使用RuleChecker来检查代码的规范性分为两个步骤:首先是建立被检测代码的RuleChecker项目,然后是分析RuleChecker给出的代码书写规范性检测结果,得出报告。下面对这两个步骤分别进行介绍。
介绍两种建立RuleChecker项目的方法。
2.3.1.1 在Logiscope studio中建立RuleChecker项目
建立步骤:
1、启动Logiscope studio,进入Logiscope studio的环境后,点击[ File | New ]菜单命令。
2、 弹出对话框,如下图所示:
图2-27 新建RuleChecker项目
选中“Project”标签页后,在列表框中我们选择“C++ RuleChecker Project”这一项,然后在“Project”编辑框中添入你要建立的这个RuleChecker 项目的名字(你可以取任何你喜欢的名字),再为“Locatior”编辑框选一个存放将要生成的RuleChecker 项目的文件目录。最后点击“确定”按钮。
3、弹出对话框,如下图所示:
图2-28新建RuleChecker项目向导
在“Application root” 编辑框中添入你所要检测的源程序文件的存放路径。然后点击“下一步”按钮。
4、弹出对话框,如下图所示:
图2-29新建RuleChecker项目向导
使“Choose a parser”组合框保持默认选项,在“Choose a Configuration file”编辑框中添入我们所设计的规则集文件(如果不设置,则Logiscope为我们默认选中TestChecker提供的规则集文件,该文件的路径在“LogiscopeHOME\Logiscope\data\audit_c++\RuleChecker.cfg”),其它均采用默认值即可。点击“下一步”按钮。
5、弹出对话框,如下图所示:
图2-30新建RuleChecker项目向导
这是在向你汇报将要生成的RuleChecker项目的一些情况,点击“完成”按钮,生成一个RuleChecker项目,显示如下:
图2-31 RuleChecker界面
选择[ Project | Build ]菜单命令,RuleChecker开始扫描程序代码。Build执行成功之后,检测结果也就产生了。
2.3.1.2 在Visual Studio中建立RuleChecker项目
除了上面的方法外,你也可以在VC6.0的环境中建立RuleChecker项目,但比在Logiscope studio中多一些限制(我建议你还是在Logiscope studio中建立被测程序的RuleChecker项目)。
在VC6.0的环境中建立RuleChecker项目的步骤如下:
启动VC6.0,打开你要检测的程序的.dsw文件,选择[Tools | Check Rules ]菜单命令,RuleChecker开始扫描程序代码,检测代码的书写规范性。操作执行成功之后,选择[ Tools | viewer ]菜单命令,Logiscope被启动,检测结果会显示在你的面前。
注意:只有你已经将Logiscope的功能集成到VC6.0的开发环境中去,才可以使用这个方法。将Logiscope功能集成到VC6.0开发环境中的方法为:Logiscope安装成功后,点击开始菜单,启动“程序 | Telelogic Tau Logiscope | Utilities | Visual Integration”,在弹出的对话框中点击“Install”按钮即可。
上面介绍了如何建立被检测代码的RuleChecker项目,并生成检测结果。检测结果有了,现在说一下如何查看检测结果。
选择[ Browse | Rule | Rule Violations ]菜单命令,RuleChecker会在树状视图中列出代码中所有违反编码规范的地方,如下图所示:
图2-32 RuleChecker界面
在树状视图中共有三个文件夹——Violated Rules文件夹、Clean Rules文件夹、Ignored Rules文件夹。其中,Violated Rules文件夹罗列出了代码未遵守的编码规范;Clean Rules文件夹罗列出了代码遵守的编码规范;Ignored Rules文件夹罗列出了在本次检测中忽略的编码规范。各文件夹展开后,如下图所示:
图2-33 树状视图
我们主要看的就是Violated Rules这个文件夹中的内容。展开Violated Rules文件夹后,显示了在代码中未遵守的各项编码规范,每个规范都以一个交通灯的图标显示。用鼠标双击这个图标,RuleChecker会显示对这条编码规范的解释,如下图所示:
图2-34 编码规范解释
用鼠标单击图标将其展开,会列出违反该项编码规范的源文件的文件名,再向下展开,会显示在该文件中违反该编码规范的代码的行号,如下图所示:
图2-35 违反编码规范的位置
用鼠标双击这个行号,RuleChecker会显示源文件,并将光标定位到违反该规范的代码行处,如下图所示:
图2-36 定位违反编码规范的代码
对RuleChecker检测信息的查看,基本就是这些。还有值得说一下的是,我们可以人工的开启、关闭某些编码规范。方法是:点击[Prtoject | Settings...]菜单命令,启动如下的一个对话框:
图2-37 开启、关闭某些编码规范
注意到对话框最下面的那个列表框了吗?列表框中列出了RuleChecker提供的所有编码规范,当其前面的复选框是选中状态时,则该规范在 RuleChecker检测过程中生效,当其前面的复选框是未选中状态时,则该规范在RuleChecker检测过程中不生效。你可以根据具体情况,使某些前面生效,或不生效。设置完成后,点击“确定”按钮,保存设置。然后选择[ Project | Build ]菜单命令,重新让RuleChecker扫描代码。Build结束后,与你设置相符的检测结果产生,查看的方法和前面是一样的。
点击[ Browse | Rule | Rule Violations Report ]菜单命令,会生成RuleChecker的检测报告。如下图所示:
图2-38检测报告
报告是以网页的形式提供的,查看起来很方便。报告分两部分。第一部分分别以源文件为单位和以编码规范为单位,将检测结果以表格的形式显示了出来。第二部分,给出了所有编码规范的解释说明。
RuleChecker 的使用介绍到这里就结束了,这个工具并不难,掌握起来还是比较简单的,我们主要付出精力的地方,就是对RuleChecker提供的规则集中各条规则的制定,如果你想了解这方面的内容,可以查看我写的另1篇文章《RuleChecker编码规范全文》。
TestChecker是一个白盒、动态测试工具,用于统计被测试程序的测试覆盖率。TestChecker重点统计的覆盖率是边覆盖率,也叫判定到判定的覆盖。
使用TestChecker统计被测试程序的测试覆盖率分为两个步骤:
首先是建立被测程序的TestChecker项目;
然后,在TestChecker环境中运行被测程序,执行测试用例,TestChecker会给出执行测试用例后的覆盖率。
下面对这两个步骤分别进行介绍。
要建立一个TestChecker项目,需要在两方面进行操作,一个是在Visual Studio环境中,一个是在Logiscope Studio环境中。下面介绍建立一个TestChecker项目的步骤。
2.4.1.1 在VC6.0中进行设置
1 )用VC6.0打开你要测试项目的.dsp或.dsw文件。
2 )VC6.0启动后,选择[ Build | Configurations ]菜单命令。
3 )点击“Add”按钮,在项目中添加一个名为“Logiscope”的文件夹。如图所示:
图2-39 添加文件夹对话框
4 )点击“OK”按钮,最后的结果如下:
图2-40 配置文件夹对话框
点击“Close”按钮退出对话框。
5 )选择[ Build | Set Active Configuration ]菜单命令,选中“Logiscope”这一项,如图:
图2-41 设置当前文件夹对话框
点击“OK”按钮退出对话框。
6 )选择[ Project | Settings ]菜单命令。我们要在VC6.0的Settings中进行一些设置。
7 )设置“C/C++”标签页。
选中“C/C++”标签页,在“Category”组合框中选中“Preprocessor”,在“Additional include directories”编辑框中添入你电脑上Logiscope的Include文件夹的路径,该文件夹的路径为:Logiscope安装目录\Logiscope\instr\include。在我电脑上的设置结果如下图所示:
图2-42 Setting对话框
8) 设置“LINK”标签页。
切换到“LINK”标签页,在“Object/library modules”编辑框中添入 vlgtc.lib。如下图所示。
图2-43 Setting对话框
然后,在“Category”组合框中选中“Input”,在“Additional library path”编辑框中为上面这个lib文件指定路径,路径为“Logiscope安装目录\Logiscope\instr\lib”。在我电脑上的设置情况如下图所示:
图2-44 Setting对话框
点击“OK”按钮。
9 )选择 [ Project | Export Makefile… ] 菜单命令,
图2-45 生成.mak文件对话框
选中列表框中的项目后,点击“OK”按钮。
10 )选择[ File | Save All ] ,保存我们所做的一切设置。
至此,在VC6.0中对被测程序的设置全部完成了。退出VC6.0,启动“Logiscope studio”,进入Logiscope studio环境,开始插装被测程序。
2.4.1.2在Logiscope Studio中插装被测程序。
1 )启动Logiscope Studio后,选择[File | New ]菜单命令,弹出下面的对话框:
图2-46 新建TestChecker项目对话框
在“Projects”列表框中选中“C++ TestChecker Project”,在“Project”编辑框中为你要建立的TestChecker项目取一个名字(可以取任何你喜欢的名字)。在“Location”编辑框中,为这个新建立的TestChecker项目指定一个存放路径。点击“确定”。
2)弹出下面的对话框:
图2-47 新建TestChecker项目向导
在“Application root”编辑框中,指出你所要测试项目的.dsw文件的路径。点击“下一步”。
3)弹出下面的对话框:
图2-48 新建TestChecker项目向导
对话框中的各项内容全部采用默认的设置,点击下一步。
4)弹出下面的对话框:
图2-49 新建TestChecker项目向导
在 “Choose a make command ”编辑框中写入makelog.bat。点击下一步。
5)弹出下面的对话框:
图2-50 新建TestChecker项目向导
点击完成,会有如下的显示:
图2-51 建立TestChecker项目
6) 删除resource.h文件。
在 “workspace view” 中,用鼠标左键选中resource.h文件,按delete键将其删除。
图2-52 删除resource.h文件
7 )编写makeLog.bat文件。
在与被测试项目的.dsw文件同一目录下,新建一个文本文件,在文件中写入如下的内容:
call C:\program files\microsoft visual studio\vc98\bin\vcvars32.bat
nmake /A /F ABCD.mak CFG=ABCD - Win32 Logiscope
(注意:所有的字符都应为英文字符)
其中:
第一行的“C:\program files\microsoft visual studio\vc98\bin\vcvars32.bat”,指定的是VC6.0安装目录下的vcvars32.bat文件的路径,如果你的vcvars32.bat不是安装在这个目录下,请你用你的vcvars32.bat文件的安装路径替换这个路径。
第二行的ABCD,要替换为你所测的项目的名字。
在确保该文件的内容正确后,保存文件,并将文件重命名为makeLog.bat。
8) 选择[ Project | Bulid ]菜单命令,TestChecker开始编译连接程序代码,生成可执行程序。
9)执行了上一步的操作后,会在你所测项目的Logiscope文件夹下生成一个exe文件。选择[ Project | Settings ]菜单命令,在弹出的对话框中选中“TestChecker”标签页。如下图所示:
图2-53 TestChecker Setting对话框
在“Executable for test”编辑框中选中TestChecker生成的.exe文件。最后的设置结果如下:
图2-54 选中可执行文件
点击确定。
10) 到此为止,一个TestChecker项目就全部建立完成了,确实很烦琐啊!
TestChecker项目建好了,现在可以运行程序,执行测试用例,进而统计覆盖率了。
在“Logiscope Studio”中选择[ Project | Start TestChecker ]菜单命令,启动TestChecker。TestChecker启动后如下图所示:
图2-55 TestChecker界面
下面是TestChecker工具条中几个重要的按钮:
图2-56 TestChecker工具条
操作这三个按钮可以建立、运行测试用例。
点击按钮1,会新建一个测试用例组。一个测试用例组可容纳多个测试用例。
点击按钮2,会在一个测试用例组中新建一个测试用例。
点击按钮3,运行新建的测试用例。
按照测试用例事先制定好的操作步骤,执行测试用例。在执行完测试用例,退出被测试的程序后,TestChecker会给出执行该测试用例后,程序的覆盖情况,以及对总覆盖率的提高情况。如下图所示:
图2-57 覆盖率情况
在树状视图中,双击某一个测试用例,会显示运行该测试用例后,各个函数的覆盖情况。如下图所示:
图2-58 函数覆盖情况
选择[ View | DDP SPY ]菜单命令,会显示到目前为止总的覆盖率,即所有测试用例的覆盖率之和。如下图所示:
图2-59 总体覆盖情况
在每次执行完一个测试用例后,别忘了保存覆盖率统计文件。
如果几个人共同测试一个应用程序的不同部分,那么,这几个人可以分别在自己的机器上建立TestChecker项目,独立运行自己的测试用例,并将覆盖率的结果保存成文件。最后,这几个人的测试用例可以合并到一处,得出应用程序总的测试覆盖率。
除了以上在TestChecker中可获得的信息外,我们可以在Viewer中,以更为直观的方式查看每个函数的覆盖情况。下面我们就去看一下。
保存所有操作,退出TestChecker,如果弹出下面的对话框:
图2-60 是否重新加载TestChecker项目文件
这是在询问你是否加载最新的TestChecker项目文件,点击“是”。
在Logiscope studio中点击[ Project | Start Viewer ],启动Viewer。如下图所示:
图2-61 Viewer界面
在列表框中选择一个函数,在下面这个工具条中,
图2-62 Viewer工具条
点击按钮1,会显示当前选中函数的流程图,接着你再选中[Options | DDP Numbers ]、[ Options | Coverage ]这两个菜单项,在函数流程图中会显示目前该函数的覆盖情况,如下图所示:
图2-63 以流程图形式显示覆盖情况
其中,黑色的实线边代表已被测试覆盖过的路径,红色的虚线边代表还未被测试执行到的路径,数字是不同判断边的编号。这样的显示是不是非常直观、清晰?
点击工具条上的按钮2,会显示如下的数据:
图2-64 以文本形式显示覆盖情况
其中,第一列显示的是不同测试用例的名字,最后一列显示的是执行该测试用例后,函数达到的覆盖率,中间的若干列,与前面我们看的那个流程图中的数字编号是相对应的,表示函数流程图中的各条边,当该条边被执行过时,显示“1”,还未被执行时,显示“0”。这个窗口中提供的数据,与前面那个流程图提供的数据是完全相同的,只是在流程图中,是以图形的形式显示,在这里,是以文本的形式显示。
在“Logiscope Studio”中,选择[ Browse | Test | Test Report ]菜单命令,会生成网页风格的测试覆盖率统计报告。如下图所示:
图2-65 测试覆盖率报告
报告主要分三部分。第一部分将系统中所有的函数,按其覆盖率的多少,划分成不同的分组;第二部分,列出了每一个函数的覆盖率的详细信息;第三部分给出了所有源文件的清单。
以上就是对TestChecker功能的介绍。通过TestChecker提供的数据,可以了解到我们为测试程序所制定并执行的测试用例,到底覆盖了程序多少的执行路径,这给我们进一步补充测试用例提供了重要的信息。
好了,Logiscope的全部功能就是这些。今天就到这里吧!