自定义测试结果的分析—Analysis API
新版本的LoadRunner中,Analysis模块暴露了新的API集,可以用于提取和分析负载测试数据。通过这些API,我们可以自己编写程序,从测试结果中创建analysis session、分析analysis session中的原始数据,提取关键session的度量数据。
这样的话,我们可以自己编写程序执行Analysis的某些功能,提取数据给外部的其他程序或软件使用。例如,我们可以让analysis session的创建和分析在无人值守的情况下进行、自己定义测试数据的提取和分析方法。
在LoadRunner9.5的安装目录的\SAMPLES\AnalysisAPI目录下,提供了一个样例程序。
通过创建.NET项目,加入Analysis.Api.dll 、Analysis.ApiSL.dll 和Analysis.ApiLib.dll这3个DLL就可以使用LoadRunner的Analysis API了。例如下面的C#代码用于创建LrAnalysis这个主对象并打开一个Session:
/*
Create main object
The first action in an application is to create a main object.
*/
public void CreateAnalysisApiObject()
{
LrAnalysis analysisApi;
analysisApi = new LrAnalysis();
//an object for easy access
Session currentSession = null;
currentSession = analysisApi.Session;
//Here we can start work with API. See other "How to…topics
}
如果想打开一个已经有的session文件,则可以参考下面的代码:
/*
Open session
The following code shows how to open asession from an existing LRA file.
For more information about the analysisApi object, see "Create main object".
For more information about RunTimeErorrs, see "Set RunTimeErrors to "Silent mode".
*/
public bool OpenSession(string filename)
{
//open session from specified .lra file
//You must setup RunTimeErrors object to "Silent mode"
bool result = analysisApi.Session.Open(filename);
if (result)
{
try
{
//work with opened session
}
finally
{
//You must always close opened session
analysisApi.Session.Close();
}
}
return result;
}
打开Session后,就可以参考API的对象模型来编写程序操作Session中的对象了。
如果想把测试结果中的图表导出到excel文件,则可以使用API中的Exporters,例如下面的代码所示:
/*
Export to CSV
The following code shows how to export Graph, Series, or Dictionarie into a CSV file.
*/
public void SaveGraphToFile(Graph graph, string graphFilename,
IBaseDictionary dict, string dictFilename,
Series series, string seriesFilename)
{
analysisApi.Exporters.CSV.ExportGraph(graph, graphFilename);
analysisApi.Exporters.CSV.ExportDictionary(dict, dictFilename);
analysisApi.Exporters.CSV.ExportSeries(series, seriesFilename);
}
小结
从初步的试用结果来看,LoadRunner9.5提供的Protocol Advisor这个新功能对于性能测试新手来说会比较有用。
负载测试可以说是一门高深的"模拟学",对真实使用环境的模拟越逼真,你的负载测试就越成功。要想比较真实地模拟广域网的环境,WAN Emulation这个功能对于大型跨地域的网络应用系统的负载测试而言必不可少。
而对于Secure Channels所提供的创建安全测试通讯环境的机制而言,则见仁见智了,个人认为对于那些负载测试需要在生产环境中进行,或者需要暴露在公网中进行并且对于安全保密而言比较关键的应用系统的测试还是比较有用的。
Analysis API是我比较喜欢的一个新特性,它提供了灵活的、可定制的测试结果分析能力,给了我们创建自己的Analysis Session分析报告的机会。