SOPDCodeV10AQTime工具使用.docx
- 文档编号:28195452
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:12
- 大小:162.64KB
SOPDCodeV10AQTime工具使用.docx
《SOPDCodeV10AQTime工具使用.docx》由会员分享,可在线阅读,更多相关《SOPDCodeV10AQTime工具使用.docx(12页珍藏版)》请在冰豆网上搜索。
SOPDCodeV10AQTime工具使用
AQTime使用说明
版本历史
版本/状态
作者
参与者
起止日期
备注
1.0
高林
2009-05-13
创建
1简介4
2Delphi环境设置4
2.1ComPiler面板4
2.2Linker面板5
2.3Packages面板6
3AQTime使用方法7
3.1代码覆盖率测试(Coverageprofiler)7
3.1.1帮助发现未执行到的功能,为再次执行做准备:
7
3.1.2帮助发现特殊情况下才能走到的功能,以再次评判软件引入此功能是否有必要8
3.1.3帮助发现废码;8
3.1.4加载被测软件(以InvestManage.BPL为例):
8
3.2性能检测(Performanceprofiler)12
3.2.1加载被测软件(以InvestManage_bpl.dll为例):
12
3.3内存检测(Allocationprofiler)13
3.3.1加载被测软件(以InvestManage_bpl.dll为例):
13
1简介
AQTime是AutomatedQA旗下的产品,该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息。
AQTime能实时/静态地分析软件的执行效率和代码性能,发现软件项目客户端和服务器端的瓶颈所在、内存泄漏、消耗资源的代码及未经验证的算法。
并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器、图形化的调用层次结构一直到源代码浏览等内容。
能够分析Delphi/BCB/VC/VB/GCC等工具开发的软件产品,此外,它有专门ForVS.NET的版本。
AQTime是专业Windows开发者在开发过程中消除臆测的完全方案,使开发者在完成项目时开发出坚如磐石的程序。
通过AQTime无可匹敌的报告系统和测试分析架构,开发这不仅可以得知其项目中确实存在bug和瓶颈,而且会知道具体到哪个模块、类、线程、代码行出了问题,从而快速消除错误。
AQTime的特色在于它不仅是一款调试工具,还是一款性能优化工具。
另外,还支持与基于SCCAPI的版本控制软件集成使用。
2Delphi环境设置
2.1ComPiler面板
●去掉Optimization(代码优化)选项
●选择StackFrames(为所有过程函数强制生成调用堆栈)选项
●选择Debuginformation(在DCU文件中生成调试信息)选项
●选择UseDebugDCUS(编译时链接带有调试信息的VCLDCU文件)选项
2.2Linker面板
●选择Detailed(生成完整的MAP文件,包含模块、单元、过程等地址信息)选项。
●选择IncludeTD32debuginfo(将调试信息生成到可执行文件)选项。
2.3Packages面板
如果希望使用AllocationProfiler(资源分配测试方案),则去掉Buildwithruntimepackages;也可以不去掉该选项,但是必须使用AddMoudle把下列BPL添加进来:
VCL50.BPL-Delphi5
VCL60.BPL-Delphi6
VCL70.BPL-Delphi7
VCL90.BPL-Delphi2005forWin32
3AQTime使用方法
3.1代码覆盖率测试(Coverageprofiler)
3.1.1帮助发现未执行到的功能,为再次执行做准备:
软件中有些功能可能是相对比较隐蔽的,在编写测试用例时也可能没有涉及到此功能,如果没有覆盖率分析的话,那么此功能就可能不会被发现,这就造成覆盖不全面,为软件留下隐患。
那么通过覆盖率分析就可以发现这些隐含的软件功能,可以针对这些功能重新设计必要的测试用例。
3.1.2帮助发现特殊情况下才能走到的功能,以再次评判软件引入此功能是否
有必要
这些特殊情况包括:
异常处理、故障处理、特殊保护、特定情况下的功能处理等等,在软件测试的过程中这些情况往往是无法模拟的,这些无法覆盖到的功能有的可能是并不需要的,也就是说某些处理可能永远都无法走到,那么软件引入这些处理就是没有必要了。
3.1.3帮助发现废码;
通过AQtime覆盖率的分析就可以发现所有的永远都不会执行到的代码,但是与程序无关的代码却不一定能够全部发现,因为这些代码是有可能被执行到的,例如程序的调试代码。
这两者都应该在软件的后续版本中被删除掉,保留这些代码只会为软件的安全带来隐患,只是后者的排查难度比较大,需要进行全面的代码审查。
3.1.4加载被测软件(以InvestManage.BPL为例):
1.点击‘AddModule’,选择InvestManage.BPL,然后打开。
2.选择分析器:
‘分析器选择‘下拉框,选择’CoverageProfiler‘
3.在Setup属性页的工具栏中的“ViewBy”下拉框中,我们选择“SourceFile”
4.新加一个“Areas”:
在“Areas”区域中的空白处点击鼠标的右键,系统弹出一个浮动菜单,在菜单中点击“AddArea…”菜单项,此时系统出现“AddArea”对话框,接着,在对话框中的“Name”框中输入任意的字符,在“Type”中选择“Including”,“Level”中选择“Line”,点击“OK”按钮;新建的Area出现在“Areas”区域中
5.在“Areas”区域中系统有两个默认的Area:
“ProfileEntire.NETCodebyRoutines”和“FullCheckbyRoutines”,请确认没有选择二者
6.将被分析的源文件加载到新建的Area中
7.运行被测软件:
在工具栏中点击绿色的“Run”按钮或直接按F5键
8.执行结果的保存与合并:
我们的测试不可能一次全部做完,中间必有停顿,每做一次AQtime就会保存一次测试结果,当次数比较多时可能保存的结果就比较多了,这时AQtime的合并功能就显得非常重要了。
测试结果保存在Report属性页中的Explorer窗口中,其中有三个根节点“LastResults”(最近的测试结果)、“SavedResults”(按了Explorer窗口工具栏上的保存按钮后保存的结果)和“MergedResults”(合并后的结果),这三个节点下的结果都可以合并,合并后的结果自动保存在“MergedResults”节点下。
具体合并操作方法为:
按住Ctrl键,用鼠标左键点击要合并的结果,然后放开Ctrl键,再在被选择的结果上点击右键,系统出现浮动菜单,选择“Merge”项,系统开始合并
9.分析测试结果:
在所有的测试结果中都有三个子节点“Routines”、“Modules”和“SourceFiles”。
“Routines”是对函数覆盖分析的结果保存,“Modules”是整个软件总的覆盖率的统计,“SourceFiles”是针对在Area中加载的所有源文件的覆盖率的统计,我们分析的重点是“Routines”。
在合并的测试结果中展开“Routines”节点,双击“AllThreads”子节点,此时右边的“Report”窗口中便会出现所有的函数的覆盖率统计表格。
在表格中双击一个函数,在AQtime的底边窗口中的“Editor”属性页中会看到相应的代码,属性页的左边会显示代码的调用情况——调用次数和标记。
RoutineName-方法名称
HitCount-方法执行时被记录的次数。
TotalLines-方法中总的代码行数,如果没有选择Line测试级别的话,将不会有统计结果。
(注意代码的行数统计包括方法的BeginEnd,也就是说一个空的过程的代码行数也会有2行)
LinesUncovered-方法中未被执行的代码行数
%Covered-代码覆盖率=(TotalLines-LinesUncovered)/TotalLines
Mark-该方法在运行期间是否被运行过
3.2性能检测(Performanceprofiler)
3.2.1加载被测软件(以InvestManage_bpl.dll为例):
1.点击‘AddModule’,选择InvestManage_bpl.dll,然后打开。
2.选择分析器:
‘分析器选择‘下拉框,选择’PerformanceProfiler‘
3.在Setup属性页的工具栏中的“ViewBy”下拉框中,我们选择“SourceFile”
4.新加一个“Areas”:
在“Areas”区域中的空白处点击鼠标的右键,系统弹出一个浮动菜单,在菜单中点击“AddArea…”菜单项,此时系统出现“AddArea”对话框,接着,在对话框中的“Name”框中输入任意的字符,在“Type”中选择“Including”,“Level”中选择“Line”,点击“OK”按钮;新建的Area出现在“Areas”区域中
5.运行被测软件:
在工具栏中点击绿色的“Run”按钮或直接按F5键
6.分析测试结果:
Time-方法执行花费的总时间,不包括方法中调用的子方法所花费的时间。
TimewithChildren-方法执行花费的总时间,包括子方法所花费的时间
SharedTime-SharedTime=Time/TimewithChildren
3.3内存检测(Allocationprofiler)
3.3.1加载被测软件(以InvestManage_bpl.dll为例):
1.点击‘AddModule’,选择InvestManage_bpl.dll,然后打开。
2.选择分析器:
‘分析器选择‘下拉框,选择’PerformanceProfiler‘
3.在Setup属性页的工具栏中的“ViewBy”下拉框中,我们选择“SourceFile”
4.新加一个“Areas”:
在“Areas”区域中的空白处点击鼠标的右键,系统弹出一个浮动菜单,在菜单中点击“AddArea…”菜单项,此时系统出现“AddArea”对话框,接着,在对话框中的“Name”框中输入任意的字符,在“Type”中选择“Including”,“Level”中选择“Line”,点击“OK”按钮;新建的Area出现在“Areas”区域中
5.运行被测软件:
在工具栏中点击绿色的“Run”按钮或直接按F5键
6.分析测试结果:
Classes:
ClassName-类名称,如果是通过内存管理函数分配的内存类名为:
VCLnativememory,如果选择了CheckMemoryBounds(内存边界检查),类名也有可能为:
MemoryOverwriteError
TotalCreated-程序运行期间创建的内存总数目
LiveCount-当前还有多少数目内存未释放
LiveSize-当前还有多大内存未释放
TotalSize-程序运行期间创建的内存总大小
Objests:
ObjectName-对象名称,对象名称的命名规则为:
ClassName+period+number,如:
TFont.503代表:
第503个被创建的TFont对象。
Size-内存泄漏的大小
Root-为True代表对象可能属于一个全局变量、本地变量或者函数的参数;为False代表对象是另一个对象的属性
ReferencesTo-当前对象共关联了多少个其他对象
Address-对象地址
Get#-当运行过程中使用了Run-GetResults手工获取报告时,Get#代表当前报告属于第几次GetResults所获得的报告
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOPDCodeV10AQTime 工具 使用