51Testing软件测试论坛

标题: 新一代的性能测试工具Netgend介绍:性能测试结果统计 [打印本页]

作者: appsectesting    时间: 2013-11-28 22:19
标题: 新一代的性能测试工具Netgend介绍:性能测试结果统计
在性能测试中,测试结果的统计是非常重要的。例如,下面的这些结果统计指标就可以对被测服务器的性能表现,给用户一个大概的判断。

    max concurrent connections        最大并发用户连接数
    transaction rate                        业务交易速度
    latency                                        时延
    bandwidth                                    带宽
    ...


        在这篇博客中,我们将介绍一下在Netgend的JavaScript上实现的结果统计信息的一些新特点,

用户定义计数器
        对于HTTP交易(http transaction),有时侯只看HTTP请求得到了响应是不够的,我们需要看到HTTP响应是否全部为 response 200 OK。 在有些情况下甚至是只看Response 200 OK回应也是不够的,例如,当你尝试提交一个登录某网站的表单,你得到200 OK的回应, 但响应文本会告诉你登录不成功。你怎么能通过查看统计来获取到这样的信息呢?
        我们的用户定义计数器可以帮你解决这个问题。在Netgend的Javascript脚本中,你可以定义这个“登陆成功”的计数器。

http.POSTData = "user=${username}&pass=${password}";  
action(http,"http://www.example.com/login?");  
if (contains(http.replyBody, /Welcome/)) {  
   stats("success");  
}  


        上述简单的逻辑会检查出response响应中是否包含“welcome”, 并且对所有回应这个字段的Response进行计数统计。你可以把它添加到你的脚本中,并且可以在GUI见面上看到这个统计图表。如果你发现你的Request请求命令曲线和这个“登陆成功”计数器曲线重合,说明你的所有登陆请求都成功了。
        这个功能非常有用。如果你正在测试一个非HTTP协议,它没有明确的交易(Transaction)成功定义。 你可以使用用户定义计数器,以了解服务器对请求的响应情况。

用户定义时延
         除了计数器统计项目,我们通常还需要测量不同的延迟,包括:
•        TCP connection latency,  
   ----TCP连接时延
•        First HTTP response latency (the time between request and first packet in response)
   ----第一个HTTP包响应延迟(请求包和第一个响应数据包之间的时间)
•        Last HTTP response latency (the time between request and last packet in response)
   ----最后一个HTTP包响应延迟(请求包和最后一个响应数据包之间的时间)


        然而,有些时候我们可能需要测量一系列的操作。例如,某门户网站可能需要多个HTTP交易,如果我们要测量它的总时延该怎么办?
        用户定义时延可以帮你解决这个问题。你只需要在你的运行脚本里再添加两行:
               start = currentTick;  
                //do a bunch of operations here  
               stats("latency", currentTick - start);  

  
        在这里,变量“ currentTick ”里包含系统时时提供的最新时间戳。
        有了这多加的两行,在统计窗口里除了系统自带的时延统计项以外,还将显示上述用户定义的时延 。

动态速率调整
          在进行性能测试的时候,我们有时会以一个较低速率开始,然后递增速率,比如:每 Y秒种,速率增加X。 通常这样设置是可行的。但在某些情况下,用户希望最好可以手动调整速率,尤其是在当我们不了解被测系统容量的时候:
    1 如果速率增加太慢,基于延迟和其他统计指标的反馈,我们一般会愿意增加递增速率。但我们会经常犹豫:是把测试停下来设置更快的递增速率重新测试? 还是耐心地等待速度缓慢地攀升?
    2 如果速率增加太快,系统的延迟会开始增长并变得很糟糕,同时我们的速率还在不断增加。我们只能停止测试,重新设置。

        在Netgend平台,我们支持动态调整速率。 你可以以一定的速率开始测试,并基于系统状态的反应来手动调整速率,如果延迟正常并且交易成功率还不错(我们还有用户定义的”登陆成功” 计数器☺),你可以手动增加一个自己设置的速率增量。 否则,你可以降低速率,从而通过这个测试测出系统的最大能力和临界点。
        当然,如果你已经提前被告知了系统的最大容量后,也可以建立一个自动的速率递增模式(比如每Y秒增加为X的速率 )去验证这个最大容量,这个当然也支持。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2