• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件单元测试工具Numega

发布: 2010-9-27 13:39 | 作者: 网络转载 | 来源: 领测软件测试网采编 | 查看: 185次 | 进入软件测试论坛讨论

领测软件测试网

4:MILY: 宋体">该窗口中显示的数据与你在窗口3中的选择相对应,显示了各个函数的测试覆盖情况。用鼠标双击某一个函数,会显示该函数的源代码,TrueCoverage用不同的颜色标识执行过的和未被执行过的代码,如下图所示:

10.jpg

4-4 TrueCoverage用不同颜色标识执行过的和未被执行过的代码

    TrueCoverage 默认情况下,用绿色代表已执行的代码,用红色代表未被执行的代码,用黑色代表不可执行的代码(你可以通过选择TrueCoverage的 [program/setting]菜单命令,在启动的对话框中的setting标签页中进行设置,来改变这种默认情况)。通过这些信息,我们可以有针对性的增加、修改用例,来提高测试覆盖率。

4.2 对内联函数的处理

内联函数虽然具有函数的形式,但其机制与函数完全不同,所以,在用TrueCoverage统计测试覆盖率时,对内联函数需要采用不同的处理方式。

默认情况下,TrueCoverage是不会统计内联函数的执行覆盖率的。如果你需要得到内联函数的覆盖率数据,则需要进行一些额外的设置,具体方法是,在VC++的集成环境中选择[TrueCoverage/TrueCoverage Setting...]菜单命令,弹出如下对话框:

11.jpg

4-5 内联函数设置

选中“Instrument inline function”复选框,点击OK。

然后选择[TrueCoverage/Rebuild All with TrueCoverage] 菜单命令,重新进行编译连接,对于这个可执行程序,TrueCoverage在其执行过程中就能够记录内联函数的覆盖率数据了。

4.3 TrueCoverage与BoundsChecker的结合使用

TrueCoverage与BoundsChecker可以结合起来使用。在[BoundsChecker]和[TrueCoverage]菜单下,都有一个[Rebuild with BoundsChecker and TrueCoverage]项,通过这一菜单命令编译连接生成的可执行文件,在程序运行结束后,能同时得到TrueCoverage和BoundsChecker(FinalCheck)的检测结果。

但这里有一个限定,那就是:必须由BoundChecker打开该exe程序执行,或是在VC++集成开发环境中通过Debug来运行该exe。这样在执行完程序后,能同时得到TrueCoverage和BoundsChecker(FinalCheck)的检测结果,如果你通过TrueCoverage来执行程序,则只会得到TrueCoverage检测结果。这一点请注意。

4.4 其他

BoundsChecker一样,要使用TrueCoverage,一定要有被测程序的源代码。如果没有源码,TrueCoverage无法统计覆盖率。

除了可以在VC++的集成环境中使用TrueCoverage外,从 [开始菜单] 中启动TrueCoverage,然后打开经TrueCoverage编译连接生成的可执行文件,也可以进行覆盖率的统计,操作方法与集成到VC++集成开发环境中TrueCoverage的操作方法一样,在此不再赘述。

TrueCoverages的使用介绍到此结束了,该工具对于我们进行测试覆盖率统计、补充测试用例的工作很有用处。




5 TrueTime

如何提高代码的运行效率,是开发过程中的一个重要问题。一个应用程序运行速度慢,但不容易找到究竟是在哪里出了问题,所以查找出性能瓶颈的位置是调整代码性能的关键。TrueTime 就是一个对应用程序的运行性能进行分析,查找程序性能瓶颈的工具。

TrueTime 能够收集、显示应用程序运行性能的相关数据,这些数据包括每个模块(EXE、DLL、OCX等)的运行性能,每一个函数的运行性能,对于有源代码的部分,TrueTime还可以给出每一行代码的运行性能。通过这些数据,我们可以确定系统的性能瓶颈,进一步优化程序的性能。

值得一提的是,TrueTime 在收集应用程序运行性能数据时,使用了一种叫做“Quantum”的技术。“Quantum”技术能够将你测试的应用程序所包含的线程的运行时间,与操作系统中同时运行着的其他应用程序的线程的运行时间区分开来计算,也就是说,TrueTime只会计算花费在你的应用程序的线程上的时间片。这样一来,在同一台计算机上对同一应用程序的性能测试结果,不会因为在该计算机系统中所运行的程序的多少而改变。所以,只要程序运行的硬件条件不发生改变, TrueTime的测试结果也基本不会变化,所以TrueTime对应用程序性能测试的结果是可复现的。

TrueTime安装成功后,在你的VC++集成开发环境中,会多出一个名为TrueTime的菜单,如下图所示:

12.jpg

5-1 TrueTimeVC++集成开发环境中添加的菜单

这说明,TrueTime已经完好的集成到VC++集成开发环境中了。

下面开始介绍TrueTime的具体使用步骤。

5.1 使用TrueTime

TrueTime使用步骤:

1在VC++集成开发环境中打开你所要测试的项目。

2 为TrueTime构造一个文件夹 ,具体方法是:

首先,点击[ Build/Configurations...]菜单命令。

其次,在弹出的对话框中点击 Add 按钮。

然后,在Configuration 编辑框中添入你为TrueTime创建的构造文件夹的名称,这个名称是任意的。比如我们取名为TrueTime。

最后,在 Copy settings from组合框中选中 XXX—Win32 Debug项,然后点击OK按钮,接着点击Close按钮。

现在,我们为TrueTime构造好了一个文件夹。

3 点击[Build/Set Active Configuration…] 菜单命令,选中你刚才为TrueTime创建的文件夹, 然后点击OK按钮。

4 选中[TrueTime/Rebuild All with TrueTime] 菜单命令,用TrueTime的编译连接器对程序重新进行编译连接。TrueTime对程序进行编译连接生成的中间文件、可执行程序,都会被放到你为 TrueTime创建的文件夹下。在这个编译连接过程中,TrueTime向可执行程序中插入了一些信息,这也就是TrueTime能够记录程序运行性能的原因。

5点击[TrueTime/Run with TrueTime] 菜单命令,TrueTime被启动,接着你的程序也被启动并执行起来。

这时,按照事先制定好的测试用例,执行测试用例。TrueTime会记录下被执行到的程序代码的性能数据。

TrueTime界面中有一个工具条,它的外观与我们在TrueCoverage中说到的那个工具条完全一样,实现的功能也基本一样,只是在TrueCoverage中,它控制的是覆盖率,在这里,它控制的是性能数据。我们现在来对它做一下说明。如下所示:

13.jpg

5-2 运行控制工具条

这个工具条在程序运行起来后,会由不可用状态变为可用状态。工具条上各按钮功能为:

按钮1:如果在程序的运行过程中你按下了该按钮,则性能统计只计算到此,虽然还可以继续操作程序,但此时对程序的任何操作都不再计入到性能统计中去了。

按钮2:如果在程序的运行过程中你按下了该按钮,则TrueTime会马上显示截止到目前为止的性能统计情况。之后你可以继续操作程序,TrueTime会继续在后台记录程序的性能数据

按钮3:如果在程序的运行过程中你按下了该按钮,则TrueTime会清除在这之前所记录的性能数据,使各项性能数据为零。你可以继续操作,TrueTime在后台从零开始重新记录程序的性能数据。

6当你退出程序时,TrueTime会显示本次操作过程中被执行到的模块、函数、代码行的执行性能数据。要想对程序开始一次新的性能统计,点击TrueTime 中的[Program / Start]菜单命令即可。

TrueTime检测结果的界面如下:

14.jpg

5-3 TrueTime的运行界面

区域1:

列出了多次运行应用程序后,得到的多个性能检测结果。双击某一项,会在区域2、区域3中显示应用程序在这一次运行过程中的详细性能数据。

区域2:

该窗口中显示的数据与你在区域1中选中的某一次性能检测相对应。窗口中显示的数据以模块(exe、dll等)为单位,列出了程序在某一次执行过程中,各模块的性能数据。对于各模块更为详细的性能数据,显示在区域3中。

区域3:

该窗口中显示的数据与你在区域2中的选择相对应,显示了模块中各个函数的性能数据。在区域3中有三个标签页——Function List标签页、Source标签页、Session Summary标签页。每个标签页中都列出了一组性能数据。其实要使用TrueTime,也就是要了解这些性能数据的含义。下面按照标签页对各项性能数据的含义进行解释:

Function List标签页

Function List标签页中,用鼠标左键双击某一个函数,会弹出一个对话框,如下图所示:

15.jpg

5-4 性能数据查看对话框

通过该对话框,能够查看该函数的父函数(调用该函数的函数)、子函数(被该函数调用的函数)的性能信息。

Function List标签页列出了选定模块所包含的函数的性能数据,这些数据包括:

Function Name——函数名称。

% in Function——这是一个百分比,分子为该函数执行的时间,分母为系统从开始运行到结束的时间。

% with Children —— 这是一个百分比,分子为该函数执行的时间,其中包括在该函数中又调用的子函数的运行时间,分母为系统从开始运行到结束的时间。

Called——函数在本次的执行过程中被调用的次数。

Image——函数所在的模块名称(模块指EXE、DLL、OCX等)。

% in Image——这是一个百分比,分子为该函数执行的时间,分母为该函数所在的模块(EXE、DLL、OCX)运行的时间。

Average——函数多次运行时的平均执行时间,其中不包括该函数调用的子函数的运行时间。

First——函数第一次执行所耗费的时间。

Minimum——函数的多次执行中,耗费时间最短的那一次所用的时间。

Maximum——函数的多次执行中,耗费时间最长的那一次所用的时间。

Average with Children——函数被多次执行时,平均执行时间,其中包括该函数调用的子函数运行的时间。

Real——函数的平均执行时间,包括该函数调用的子函数所运行的时间,除此之外,还包括了花费在系统中同时运行着的其他应用程序的线程所耗费的时间。

Address——函数的入口地址。

Source标签页

Source标签页列出了选定模块的指定源文件所包含的各行程序代码的性能数据,这些数据包括:

Count——该行代码在测试过程中被执行的次数。

% of Function——这是一个百分比,分子为该行代码执行的时间,分母为该函数执行的时间。

% With Children——这也是一个百分比,分子为该行代码执行的时间,分母为系统从开始运行到结束的时间。

Time——在系统的运行过程中,该行代码运行时间的累计和。

Functions——该行代码调用的函数的数量。

Line#——代码所在行的行号。

Source——源代码。

Session Summary标签页

Session Summarye标签页列出了该次性能统计的概要信息,内容很好理解,在此就不详细介绍了。

TrueTime为性能数据提供了四种不同的单位,分别是:CPU时钟周期、微妙、毫秒、秒。我们可通过TrueTime中的[View/Scale]菜单项进行设置,如下:

16.jpg

5-5 性能数据单位设置菜单

在菜单中选中哪一项,性能数据就会以该时间单位显示。

5.2 其他

TrueTime可以收集没有源码部分(比如第三方的DLL、OCX等)的运行性能数据,但如果我们想获得某一个模块的详细运行性能数据,还是需要该模块的源代码。

除了可以在VC++集成环境中使用TrueTime外,从 [开始菜单] 中启动TrueTime,然后打开经TrueTime编译连接生成的可执行文件,也可以进行性能数据的收集,操作方法与集成到VC++集成开发环境中TrueTime的操作方法一样,在此不再赘述。

TrueTime的介绍到此就结束了。





6 结束

至此,NuMega for Visual C++的三个子功能——BoundChecker、TrueCoverage、TrueTime的使用方法,都已经介绍完毕。现在我们应该做的就是使用NuMega去测试程序,在实践中进一步深入了解这个白盒测试工具

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123
软件测试论坛

软件测试技术相关文章

软件测试技术文章排行榜
软件测试技术分类最新内容
关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网