45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:AQTime教程的详细介绍

AQTime教程的详细介绍

2016-08-28 16:53:36 来源:www.45fan.com 【

AQTime教程的详细介绍

AQTime教程
1简介
AQTimeMemProof都是AutomatedQA旗下的产品,AQTimeMemProof提供了更丰富强大的功能。该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器、图形化的调用层次结构一直到源代码浏览等内容。AQTime的特色在于它不仅是一款调试工具,还是一款性能优化工具。另外,还支持与基于SCC API的版本控制软件集成使用。
2使用方法
本文只针对DELPHI,其他开发语言可以参照。
2.1 下载
AQTime是一个商业软件,你可以在官方网站上下载试用版本:
下载地址http://www.automatedqa.com/products/aqtime/index.asp
本文使用的是AQTime 4.92 版本
2.2 安装
直接运行安装即可
2.3 准备
MemProof一样,要求目标程序带有完整的调试信息。打开工程选项(Project-Options
1Compiler面板
l 去掉Optimization(代码优化)选项
l 选择Stack Frames(为所有过程函数强制生成调用堆栈)选项
l 选择Debug information (DCU文件中生成调试信息)选项
2Linker面板
l 选择Detailed生成完整的MAP文件包含模块、单元、过程等地址信息选项
l 选择Include TD32 debug info(将调试信息生成到可执行文件)选项
该选项会导致可执行文件体积增大,但不会影响运行效率以及内存占用,建议在正式发布时不要带上该选项。
3Packages面板
如果希望使用Allocation profiler 资源分配测试方案
去掉 Build with runtime packages
也可以不去掉该选项但是必须使用Add Moudle把下列BPL添加进来
VCL50.BPL Delphi 5.
RTL60.BPL Delphi 6.
RTL70.BPL Delphi 7.
RTL90.BPL Delphi 2005 for Win32.
2.4 面板简介
Event View 事件浏览查看运行过程中的事件
Moniter 监视面板监视运行期间各个模块的内存使用情况
Disassembler 汇编代码面板,查看汇编代码
Editor 代码浏览窗口,如果无法浏览代码,会出现路径配置,选择好代码的路径即可浏览
Details 详细信息窗口查看比报告中更详细的内容
Call Graphic 图表方式显示方法调用情况
Call Tree 树方式显示方法调用情况
PE Reader PE文件浏览窗口
2.5 开始
选择FileNew Project From Moudle 打开待测试的程序选择一种测试方案开始测试。AQTime共有五个大类共八种不同的测试方案,下面一一介绍:
2.5.1 Allocation(资源测试)
测试资源分配释放情况,检查内存泄漏。共有两个测试方案:Allocation Profiler(内存使用剖析) Resource profiler(系统资源使用监测)
2.5.1.1 Allocation Profiler(内存使用剖析)
2.5.1.1.1 说明
跟踪程序执行过程中对内存资源的使用情况,按类、对象检测并显示程序中对内存资源使用情况,确定明显或潜在的内存泄露来源, 避免由此造成的程序崩溃。AQTime会跟踪TObject继承下来的对象的创建和删除,以及通过内存管理函数
· GetMem, ReallocMem, FreeMem
· GetMemory, ReallocMemory, FreeMemory
· SysGetMem, SysReallocMem, SysFreeMem
分配和释放的内存。
注意这个方案不会跟踪使用WINAPI创建和释放的内存
 
2.5.1.1.2 测试结果报告
测试结果报告中有类和对象两种统计报告:
类统计报告:

 

Class Name
Total Created
Live Count
Live Size
Total Size
TFont
8
1
36
288
Class Name 类名称如果是通过内存管理函数分配的内存类名为VCL native memory如果选择了Check Memory Bounds内存边界检查),类名也有可能为Memory Overwrite Error
Total Created 程序运行期间创建的内存总数目
Live Count 当前还有多少数目内存未释放
Live Size 当前还有多大内存未释放
Total Size 程序运行期间创建的内存总大小
 
对象统计报告:

 

Object Name
Size
Root
References To
Address
Get#
TFont.503
60
False
0
0x02CA1D9C
1
Object Name 对象名称对象名称的命名规则为Class Name + period + numberTFont.503 代表503个被创建的TFont对象。
Size 内存泄漏的大小
Root True代表对象可能属于一个全局变量、本地变量或者函数的参数;为False代表对象是另一个对象的属性
References To 当前对象共关联了多少个其他对象
Address 对象地址
Get# 当运行过程中使用了Run-Get Results手工获取报告时Get#代表当前报告属于第几次Get Results所获得的报告。(笔者多次使用Get Results后,所有结果依然为1,奇怪~~)
2.5.1.2 Resource profiler(系统资源使用监测)
2.5.1.2.1 说明
跟踪程序运行期间对操作系统资源(fonts, brushes, bitmaps, and other graphic components, registry, COM objects, print spooler, etc.)的使用情况如某时间片内,程序本身开销的系统资源、因这些资源带来的内存和CPU开销、来自于这些资源使用中出现的错误使检测者很容易获知在程序运行期间与之相关系统资源的分配和使用情况。
2.5.1.2.2 测试结果报告
测试结果报告中有类、对象和错误三种统计报告:
类统计报告:

 

Module Name
Class Name
Live Count
Total Created
Live Size
Total Size
Image
PROJECT1.EXE
TLS
3
13
0
0
 
Module Name 分配这块资源的模块
Image 资源类型的图标
注:其他类型在上面已经介绍过了,不再重复。后面也遵照这条说明
对象统计报告:

 

Module Name
Class Name
Object Name
Get#
Image
PROJECT1.EXE
TLS
TLS.13
1
 
2.5.2 Coverage(覆盖率测试)
覆盖率测试,共有一个测试方案:Coverage profiler(代码覆盖率分析)
2.5.2.1 Coverage profiler(代码覆盖率分析)
2.5.2.1.1 说明
代码覆盖率分析,测试出代码在运行过程中的执行情况。它提供routine line两种级别,可以帮助查找出程序中的无用代码。
2.5.2.1.2 测试级别
AQTime共有3种测试级别routine, line class。不同的测试方案中支持的级别不同routine, line 之在Performance Coverage中支持class只在Allocation中支持。其他测试方案则不支持测试级别的选择。选择测试方案可以在Areas面板中选择。
Routine 按方法以方法或函数为单位
Line 按行以代码行为单位
Class 按类以类为单位
2.5.2.1.3 测试结果报告
测试报告中有三种类型:方法、模块和源码文件。每种类型按照线程划分报告,每个线程有一个报告结果。
方法统计报告:

 

Routine Name
Hit Count
Total Lines
Lines Uncovered
% Covered
Mark
TForm1::FormCreate
1
5
0
100.00 %
 
Routine Name 方法名称
Hit Count 方法执行时被记录的次数。这个属性不一定完全等于这个方法被运行的次数如果测试过程中选择了Run-Disable Profiles停止记录的话Hit Count将不会增加计数而是增加Skip Count计数所以一个方法的完整运行次数应该等于Hit Count Skip Count
Total Lines 方法中总的代码行数,如果没有选择Line测试级别的话,将不会有统计结果。(注意代码的行数统计包括方法的Begin End,也就是说一个空的过程的代码行数也会有2行)
Lines Uncovered 方法中未被执行的代码行数
% Covered 代码覆盖率=(Total LinesLines Uncovered/ Total Lines
Mark 该方法在运行期间是否被运行过
模块统计报告:

 

Module Name
Hit Count
% Covered
Project1.exe
25209
75.00 %
源码文件统计报告:

 

<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 142pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width=
File Name
Hit Count
% Covered

本文地址:http://www.45fan.com/a/question/68935.html
Tags: 教程 AQTime
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部