TestComplete的性能记录方法(2)

发表于:2014-09-24来源:uml.org.cn作者:陈能技点击数: 标签:TestComplet
下面脚本则使用的是slAQtime对象来访问AQTime: procedure TestAQtime; var p : array[0..2] of OleVariant; i, FileName : OleVariant; begin p[0] := slAQtime.P4_AllocationProfiler; // Allocati

  下面脚本则使用的是slAQtime对象来访问AQTime:

procedure TestAQtime;
var
p : array[0..2] of OleVariant;
i, FileName : OleVariant;
begin
p[0] := slAQtime.P4_AllocationProfiler; // Allocation Profiler
p[1] := slAQtime.P4_CoverageProfiler; // Coverage Profiler
p[2] := slAQtime.P4_PerformanceProfiler; // Performance Profiler

// Opens your application in AQtime
FileName := 'C:\MyProjects\MyApplication\MyApp_exe.aqt';
slAQtime.SetAQtimeProject(FileName);

for i := 0 to 2 do
begin
try
// Starts profiling in AQtime 4
slAQtime.RunAQtime4(p[i]);
{ To start profiling in other versions of AQtime,
use the following methods --
AQtime 3.x:
slAQtime.RunAQtime3(slAQtime.P3_VCLClassProfiler);
AQtime 2.x:
slAQtime.RunAQtime2(slAQtime.P2_VCLClassProfiler);
AQtime .NET Edition 1.2x:
slAQtime.RunAQtimeNET(slAQtime.PNET_StatisAnalysis); }
except
// Posts an exception message to the test log
Log.Error(ExceptionMessage);
end;

// Your code goes here...

// Wait until the profiling is over
// (we call RunAQtime4 method in a loop)
slAQtime.DoWaitFinish;
end;
end;

  通过调用操作系统的Perfmon对各种性能参数进行监控Perfmon是操作系统自带的性能监控工具,它能通过添加各种计数器,对各种性能参数进行记录。在TC中通过调用命令行的方式启动和停止Perfmon。具体方法如下:

  首先在Perfmon中加名为perf_log的计数器日志,这里需要记录的是记事本的相关资源使用情况:

  Process(NotePad): % Processor Time、Elapsed Time、Working Set

  然后在TestComplete中调用命令行方式操作Perfmon(注意Perfmon的命令行工具叫logman),通过设定logman的命令行运行参数来启动(start perf_log)和停止(stop perf_log)Perfmon的计数器日志。

//开始记录
TestedApps.logman.Params.SimpleParams.CommandLineParameters:='start perf_log';
TestedApps.logman.Run();

//添加你的操作

//结束记录
TestedApps.logman.Params.SimpleParams.CommandLineParameters:='stop perf_log';
TestedApps.logman.Run();

  通过TC提供的秒表对象记录时间

  TC的log里面会对每个GUI动作的时间进行记录,但是记录的是时刻,要后期计算才能得到每个GUI操作的消耗时间,而且有些非GUI的操作时间无法记录,因此有必要寻找更精确、更方便的操作时间记录方式,而TC本身就提供一个叫StopWatch的秒表对象,可以方便地记录脚本的执行时间。

//Start开始计时
StopWatchObj := HISUtils.StopWatch;
StopWatchObj.Start();

//执行你的操作

// Stop结束计时,通过StopWatch的ToString方法直接获取到经过的时间
StopWatchObj.Stop();
Log.Message('TimerRoutine finished.');
Log.Message('Execution time: ' + StopWatchObj.ToString());

原文转自:http://www.uml.org.cn/Test/2007083122.asp