发布新日志

  • Loadrunner实用技巧1

    2010-07-09 12:53:16

    #######################################################reg注册函数

    检查登录后的页面信息时
    web_reg_find,web_reg_save_param   //带reg的函数要放在登录语句前
    web_submit_form()
    web_find    //不带reg的函数放在登录语句后

    做关联时,记着要把reb_reg_save_param函数放在要关联的事务前面。
    ######################################################运行脚本遇到错误时继续执行下去
    Action()
    {
      lr_continue_on_error(1);           lr_continue_on_error(1)与lr_continue_on_error(0)之间代码执行出错时不停止,继续执行下面的语句。
        web_link("test",                 lr_continue_on_error(1)相当于Run-time Setting中 continue on error 打勾。
             "test=www.baidu.com",
             LAST);
      lr_continue_on_error(0);
        lr_output_message("finished linking");
       
        return 0;
    }
    #######################################################
    View->Antimated run 动态运行
    选取脚本中函数,F1显示该函数的帮助。
    #######################################################选择java Vuser协议
    Eclipse SDK

    package com.lr.test; 包名
    public class HelloWorld{
       public static void main(String[] args){
           System.out.println("Hello World");
       }
    }

    import lrapi.lr;
    import com.lr.test.*;  导入包
    public class Actions
    {

     public int init() throws Throwable {
      return 0;
     }//end of init


     public int action() throws Throwable {
            HellpWorld.main((String[])null);
            System.out.println("不调用直接写java语句");
      return 0;
     }//end of action


     public int end() throws Throwable {
      return 0;
     }//end of end
    }
    #######################################################加载dll
    1、不适合录制功能点的业务
    2、基于C++开发的业务系统
    lr_load_dll("D:\\test\\dlltest.dll");  如果dll文件在脚本的文件夹中,可直接写lr_load_dll("dlltest.dll");
    双引号中转义字符
    vuser_init()
    { lr_load_dll("D:\\test\\dlltest.dll");
      return 0;
    }
    int sum;  声明变量在Action外面(变量过多LoadRunner会报错)
    Action
    {  sum=add(100,200);
    }

    #######################################################录制SQL脚本,ODBC协议
    int 选择查询分析器  \\Mcrosoft SQL Server\80\Tools\inn\isqlw.exe
        登录
    Action  进入数据库
            查询表内容
    #######################################################

     

     

     


     

  • loadrunner录制登录密码转md5

    2010-04-06 22:54:51

    在录制用户注册登录脚本时,常常会遇到Web程序对用户密码进行MD5加密,例如下面一段脚本:
     web_submit_data("MagaRegister.aspx_2",
      "Action=http://www.feidubook.com/MagaRegister.aspx",
      "Method=POST",
      "TargetFrame=",
      "RecContentType=text/html",
      "Referer=http://www.feidubook.com/MagaRegister.aspx",
      "Snapshot=t13.inf",
      "Mode=HTML",
      ITEMDATA,
      "Name=__EVENTTARGET", "Value=", ENDITEM,
      "Name=__EVENTARGUMENT", "Value=", ENDITEM,
      "Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState4}", ENDITEM,
      "Name=topNaviId$txtUserName", "Value=", ENDITEM,
      "Name=topNaviId$txtUserPwd", "Value=", ENDITEM,
      "Name=topNaviId$ValidCodeId", "Value=", ENDITEM,
      "Name=searchType", "Value=qikan", ENDITEM,
      "Name=searchdomain", "Value=", ENDITEM,
      "Name=q", "Value=", ENDITEM,
      "Name=txtUserName", "Value=user0001", ENDITEM,
      "Name=txtUserPwd", "Value=e10adc3949ba59abbe56e057f20f883", ENDITEM, //密码123456被转为32位的MD5
      "Name=txtUserPwd2", "Value=e10adc3949ba59abbe56e057f20f883", ENDITEM,
     
    遇到此种情况时,第一种方法就是将“用户名”参数化,密码设为一样,即每个用户名的密码都为e10adc3949ba59abbe56e057f20f883
    还有一种方法就是利用MD5函数。这里介绍一种算法:
    #ifndef MD5_H
    #define MD5_H
    #ifdef __alpha
    typedef unsigned int uint32;
    #else
    typedef unsigned long uint32;
    #endif
    struct MD5Context {
            uint32 buf[4];
            uint32 bits[2];
            unsigned char in[64];
    };
    extern void MD5Init();
    extern void MD5Update();
    extern void MD5Final();
    extern void MD5Transform();
    typedef struct MD5Context MD5_CTX;
    #endif
    #ifdef sgi
    #define HIGHFIRST
    #endif
    #ifdef sun
    #define HIGHFIRST
    #endif
    #ifndef HIGHFIRST
    #define byteReverse(buf, len)    /* Nothing */
    #else
    void byteReverse(buf, longs)unsigned char *buf; unsigned longs;
    {
        uint32 t;
        do {
        t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |((unsigned) buf[1] << 8 | buf[0]);
        *(uint32 *) buf = t;
        buf += 4;
        } while (--longs);
    }
    #endif
    void MD5Init(ctx)struct MD5Context *ctx;
    {
        ctx->buf[0] = 0x67452301;
        ctx->buf[1] = 0xefcdab89;
        ctx->buf[2] = 0x98badcfe;
        ctx->buf[3] = 0x10325476;
        ctx->bits[0] = 0;
        ctx->bits[1] = 0;
    }
    void MD5Update(ctx, buf, len) struct MD5Context *ctx; unsigned char *buf; unsigned len;
    {
        uint32 t;
        t = ctx->bits[0];
        if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
        ctx->bits[1]++;
        ctx->bits[1] += len >> 29;
        t = (t >> 3) & 0x3f;
        if (t) {
        unsigned char *p = (unsigned char *) ctx->in + t;
        t = 64 - t;
        if (len < t) {
            memcpy(p, buf, len);
            return;
        }
        memcpy(p, buf, t);
        byteReverse(ctx->in, 16);
        MD5Transform(ctx->buf, (uint32 *) ctx->in);
        buf += t;
        len -= t;
        }
        while (len >= 64) {
        memcpy(ctx->in, buf, 64);
        byteReverse(ctx->in, 16);
        MD5Transform(ctx->buf, (uint32 *) ctx->in);
        buf += 64;
        len -= 64;
        }
        memcpy(ctx->in, buf, len);
    }
    void MD5Final(digest, ctx)
        unsigned char digest[16]; struct MD5Context *ctx;
    {
        unsigned count;
        unsigned char *p;
        count = (ctx->bits[0] >> 3) & 0x3F;
        p = ctx->in + count;
        *p++ = 0x80;
        count = 64 - 1 - count;
        if (count < 8) {
        memset(p, 0, count);
        byteReverse(ctx->in, 16);
        MD5Transform(ctx->buf, (uint32 *) ctx->in);
        memset(ctx->in, 0, 56);
        } else {
        memset(p, 0, count - 8);
        }
        byteReverse(ctx->in, 14);
        ((uint32 *) ctx->in)[14] = ctx->bits[0];
        ((uint32 *) ctx->in)[15] = ctx->bits[1];
        MD5Transform(ctx->buf, (uint32 *) ctx->in);
        byteReverse((unsigned char *) ctx->buf, 4);
        memcpy(digest, ctx->buf, 16);
        memset(ctx, 0, sizeof(ctx));
    }
    #define F1(x, y, z) (z ^ (x & (y ^ z)))
    #define F2(x, y, z) F1(z, x, y)
    #define F3(x, y, z) (x ^ y ^ z)
    #define F4(x, y, z) (y ^ (x | ~z))
    #define MD5STEP(f, w, x, y, z, data, s) ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
    void MD5Transform(buf, in)
        uint32 buf[4]; uint32 in[16];
    {
        register uint32 a, b, c, d;
        a = buf[0];
        b = buf[1];
        c = buf[2];
        d = buf[3];
        MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
        MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
        MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
        MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
        MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
        MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
        MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
        MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
        MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
        MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
        MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
        MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
        MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
        MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
        MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
        MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
        MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
        MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
        MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
        MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
        MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
        MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
        MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
        MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
        MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
        MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
        MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
        MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
        MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
        MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
        MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
        MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
        MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
        MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
        MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
        MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
        MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
        MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
        MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
        MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
        MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
        MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
        MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
        MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
        MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
        MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
        MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
        MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
        MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
        MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
        MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
        MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
        MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
        MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
        MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
        MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
        MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
        MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
        MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
        MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
        MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
        MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
        MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
        MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
        buf[0] += a;
        buf[1] += b;
        buf[2] += c;
        buf[3] += d;
    }
    void GetMd5FromString(const char* s,char* resStr)
    {
         struct MD5Context md5c;
         unsigned char ss[16];
         char subStr[3];
         int i;
         MD5Init( &md5c );
         MD5Update( &md5c, s, strlen(s) );
         MD5Final( ss, &md5c );
         strcpy(resStr,"");
         for( i=0; i<16; i++ )
         {
             sprintf(subStr, "%02x", ss[i] );
             itoa(ss[i],subStr,16);
             if (strlen(subStr)==1) {
                 strcat(resStr,"0");
             }
             strcat(resStr,subStr);
         }
         strcat(resStr,"\0");
    }
     
    将以上算法粘贴到记事本并保存为md5.h
    在LR里添加头文件md5.h,在globals.h里添加引用#include "md5.h"
    md5在线查询破解 www.cmd5.com
  • LoadRunner函数中文翻译2

    2010-04-06 02:37:59

     

    LoadRunner函数中文翻译系列之二--Check

    web_find

     语法:
     int web_find (const char *StepName, <Attributes and Specifications list>, char *searchstring, LAST );

    参数:
     1StepName:步骤名称,在Tree视图中出现。

    2Attributes and Specifications list

    支持的属性有:

    Frame:在多Frame的情况下,定义要查找Frame的范围。

    Expect:定义在什么情况下函数检查成功:找到了指定的搜索标准或者没有找到。例如说,可以检查指定的错误信息是否出现在web页面中。合法的值有2个:foundnotfound。默认值是“found”

    Matchcase:指定搜索是否区分大小写。

    Repeat:指定当第一次发现要查找的字符串时,搜索是否继续。当一个web页面中包含多个被查找的字符串时,此参数是非常有用的。合法的值有2个:yesno。默认值是“yes”

    Report:指定在什么情况下,VuGen在执行日志中显示此函数的检查结果。合法的值有:successfailurealways。默认值是“always”

    Onfailure:此参数决定在函数检查失败后,Vuser是否中断。参数值是abort。如果指定了Onfailure=abort,当函数检查失败时,不论在运行时设置中的error-handling是什么,脚本都会中断。

    如果没有指定Onfailure=abort,那么运行时设置中error-handling将会起作用。

    支持的特性有:RightOf, LeftOf (不支持7.x及更高版本)。

    RightOf:要查找的字符串右边的内容。

    LeftOf:要查找的字符串左边的内容。

    3Searchstring:需要查找的字符串,格式为“What=stringxyz”。此搜索不区分大小写。

    4LAST:属性列表结束符。

    返回值
     整型。 成功时返回LR_PASS(0),失败时返回LR_FAIL (1)

    说明
     此函数的作用是在HTML页面中查找指定的字符串。

    此函数只能在基于HTML录制的脚本中使用。当指定的HTML请求全部完成以后,开始执行搜索过程,比web_reg_find要慢。

    web_find函数在C语言的脚本中已经被web_reg_find所替代,web_reg_find运行速度比较快,而且在HTML-basedURL-based的录制方式中都可以使用。 C语言脚本中,web_find是向后兼容的。JavaVisual Basic脚本中不再支持它。

    运行在HTTP模式下的WAP用户都和运行在WSP回放模式下的WAP用户都不支持此函数。

    web_global_verification

     语法:
     int web_global_verification (<List of Attributes>, LAST )

    参数:
     List of Attributes

    1Text:此属性是一个非空的,以NULL结尾的字符串,表示要查找的内容。语法是”Text=string”。还可以使用text flags自定义字符串。

    2TextPfx:没有指定Text的情况下使用此属性。要查找的字符串的前缀。语法是” TextPfx =string”。还可以使用text flags自定义字符串。

    3TextSfx:没有指定Text的情况下使用此属性。要查找的字符串的后缀。语法是” TextSfx =string”。还可以使用text flags自定义字符串。

    4Search:可选项,在哪里查找字符串。可选的值是:HeadersBodyNORESOURCEAll。默认值是NORESOURCE。语法是“Search=value”

    5Fail:当字符串找不到时的处理选项:Found (默认值)或NotFoundFound表示当找到对应的字符串时发生了错误(例如“Error”)。NotFound表示当找不到字符串时发生了错误。语法是“Fail=value“

    6ID:在日志文件中标识当前函数。

    LAST:属性列表结束符。

    注:text flags/IC表示忽略大小写;/BIN表示指定的是二进制数据。

    返回值
     整型。 成功时返回LR_PASS(0),失败时返回LR_FAIL (1)

    说明
     web_global_verification属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Action函数中执行搜索不同的是,它是在之后所有的Action类函数中执行搜索的。可以搜索页面的bodyheadershtml代码或者是整个页面。

    在检测一些应用程序级别(不通过http状态码来表现)的错误时,web_global_verification是非常有用的。如果要定位通过HTTP状态码表现的错误时,使用web_get_int_property

    查找范围:all:这个HTML页面;Headers:页面的头;body:页面的体,包含所有的资源但不包含头;NORESOURCE(默认选项):仅仅包含页面的体,把包括头和资源。

    如果不知道要查找的精确的文本,或者要查找的多个文本不是完全相同的,可以使用前缀和后缀来表示。这时需要用到TextPfxTextSfx属性。这2个属性必须同时指定,一旦指定了其中一个,就不能指定Text属性了。

    注意:web_global_verificationWAP协议下不能运行。

    web_image_check

     语法:
     int web_image_check(const char *CheckName, <List of Attributes>, <"Alt=alt"|| "Src=src">, LAST );

    参数:
     1CheckName:名称,在Tree视图中出现。

    2List of Attributes

    支持的属性有:Frame(在多Frame的情况下,定义要查找Frame的范围)。

    支持的选项有:expect, matchcase, repeat, report, onfailure

    Tip:选项跟属性的区别,大部分选项都只允许设置预定义的值,其他的值都是无效的。

    3Alt:检查图象的ALT标记。不允许空值。

    4Src:检查图象的SRC标记。不允许空值。

    5LAST:参数列表结束的指示符。

    返回值
     整型。

    说明
     web_image_check检查指定的图象是否在HTML页面中出现。

    Alt或者Src两者必须有一个在参数列表中出现。如果两项都通过,那么检查成功。

    此函数仅仅支持基于HTML的脚本。

     web_reg_add_cookie

     语法:
     int web_reg_add_cookie(const char * cookie, const char * searchstring, LAST );

    参数:
     1Cookie:定义需要增加或修改的Cookie

    Cookie的参数格式为:<name>=VALUE; (required)domain=DOMAIN_NAME;(required)expires=DATEpath=PATH(default path is "/")secure

    此参数中的cookie元素和HTTP响应头中的Set-Cookie是相同的。例如“Session=1234domain=sanditon.com”,在这里,“Session”cookie的名称。

    2Searchstring:要查找的文本字符串。字符串不能为空,以null结尾。格式为“Text=string”

    3LAST:属性列表的结束符。

    返回值
     整型。 成功时返回LR_PASS(0),失败时返回LR_FAIL (1)

    说明
     web_reg_add_cookie是注册类型的函数。它首先注册一个搜索文本字符串的请求。检查动作在后续的Action函数之后进行。如果字符串被找到,就添加到cookie中。

    需要注意,尽管web_reg_add_cookie在功能上跟HTTP Set_Cookie头相似,它们还是有个明显的区别。 根据HTTP标准,domain属性在Set-Cookie头中是可选的。如果没有指定,默认的domain的值是产生cookie的服务器的host name。当使用web_reg_add_cookie函数时,服务器的hostname对于压力测试的机器来说是不可用的,所以domain属性是必选项。

    此函数在HTML-based URL-based的脚本中都可以使用。(参照录制选项的录制标签页)。此函数是在服务器内容到达客户端之前注册搜索请求的,所以当所请求的内容一到就会执行搜索操作,脚本会比较高性。

    web_reg_add_cookie是用户手动添加的,无法录制。

    web_reg_find

     语法:
     int web_reg_find (const char *attribute_list, LAST);

    参数:
     1attribute_list

    通过Name=Value对来传递参数。例如“Text=string”TextTextPfxTextSfx三个必须有一个出现。其他的属性是可选的。

    a) Text:要搜索的字符串,字符串必须非空,以NULL结尾。可以使用text flags自定义搜索字符串。

    b) TextPfx:要搜索的字符串的直接前缀。

    c) TextSfx:要搜索的字符串的直接后缀。

    d) Search:搜索的范围。可选的值是:Headers Body(在请求体中搜索)、Noresource (仅仅在HTML请求体中搜索,不包括头和资源)ALL (在请求体、头和资源中搜索),默认值是“BODY”

    e) SaveCount:匹配的个数。

    f) Fail:设置函数检查在什么状态下失败。

    g) ID:日志文件中标识此函数的一个字符串。

    h) RelFrameId:相关联的FrameId。注意:此参数在GUI级别的脚本中不受支持。

    2LAST:属性列表结束的标记符。

    返回值
     整型。 成功时返回LR_PASS(0),失败时返回LR_FAIL (1)

    说明
     web_reg_find属于注册函数,注册一个在web页面中搜索文本字符串的请求,在接下来的Action(象web_url)类函数中执行搜索。

    通过查找期望的字符是否存在来验证是否返回了期望的页面。例如,通过查找“Welcome”来检查主页是否完全打开了。也可以查找“Error”检查浏览器是否发生错误。还可以使用此函数注册一个请求来统计特定字符串出现的次数。

    如果检查失败,在接下来的Action类的函数中会报告错误。此函数仅仅注册请求,并不执行。函数的返回值只表明注册是否成功,并不表示检查的结果。

    此函数不仅能够查找text,还能查找到围绕着textstrings。不要同时指定text和前缀后缀。

    Fail,处理选项,可以是“Found“NotFound”。默认是“NotFound”

    “Fail=Found” 指示当对应的字符找到时,函数检查失败。例如,查找单词“Error”,如果找到了,说名web请求没有成功,你想把函数检查设置为失败。

    “Fail=NotFound”指示当对应的字符找不到时,函数检查失败。如果查找的是web请求成功时出现的字符串时,需要使用NotFound

    SaveCount参数指示保存到参数中的匹配的字符串的个数。使用这个属性,需要指定“SaveCount=param”。检查操作被执行后,param 的值是null结尾的数字类型的值。

    如果指定了SaveCount,且没有使用Fail参数,检查不会失败,无论需要查找的字符串是否找到。通过检查SaveCount的值确定字符串是否被找到。 <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family:

  • LoadRunner函数中文翻译1

    2010-04-06 02:08:57

    转载:www.51testing.com

    LoadRunner函数中文翻译系列之一--Action

    web_url
    语法:
            Int Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTRARES,<Lists of Resource Attributes>,LAST)

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            Name:VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            url:页面url地址。

            List of Attributes

            EXTRARES:分隔符,标记下一个参数是资源属性的列表了。

            List of Resource Attributes

            LAST:属性列表结束的标记符。

    说明
            Web_url根据函数中的URL属性加载对应的URL,不需要上下文。

            只有VuGen处于URL-based或者HTML-based(此时A script. containing explicit URLs only选项被选中时)的录制模式时,web_url才会被录制到。

            可以使用web_url 模拟从FTP服务器上下载文件。web_url 函数会使FTP服务器执行文件被真实下载时的操作。除非手工指定了"FtpAscii=1",下载会以二进制模式完成。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通过修改HTTP头可以传递给服务器一些附加的请求信息。使用HTTP头允许请求中包含其他的内容类型(Content_type),象压缩文件一样。还可以只请求特定状态下的web页面。

            所有的Web Vusers ,HTTP模式下的WAP Vusers或者回放模式下的Wireless Session Protocol(WSP),都支持web_url函数。

    web_image
    语法:
            Int web_image (const char *StepName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            List of Attributes(服务器端和客户端映射的图片):SRC属性是一定会被录制到的,其他的ALT、Frame、TargetFrame、Ordinal则是有的话会被录制到。

    1、ALT:描述图象的元素。用鼠标指向图象时,所浮出来的文字提示。

    2、SRC:描述图象的元素,可以是图象的文件名. 如: button.gif。也可以使用SRC/SFX来指定图象路径的后缀。所有拥有相同此后缀的字符串都会被匹配到。

    3、Frame:录制操作时所在的Frame的名称。

    4、TargetFrame:见List of Attributes的同名参数。

    5、Ordinal:参见Web_link的同名参数。

            List of Attributes(客户端映射的图片):

    1、AreaAlt:鼠标单击区域的ALT属性。

    2、AreaOrdinal:鼠标单击区域的顺序号。

    3、MapName:图象的映射名。

            List of Attributes(服务器端映射的图片):尽管点击坐标不属于属性,但还是以属性的格式来使用。

    1、Xcoord:点击图象时的X坐标。

    2、Ycoord:点击图象时的Y坐标。

            EXTRARES:分隔符,标记下一个参数是资源属性的列表了。

            List of Resource Attributes:参见List of Resource Attributes一节。

            LAST:属性列表结束的标记符。

    说明
            web_image模拟鼠标在指定图片上的单击动作。此函数必须在有前置操作的上下文中使用。

            在Toos—Recording Option,如果录制级别设为基于HMTL的录制方式时,web_image才会被录制到。

            web_image支持客户端(client-side)和服务器端server-side的图片映射。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通过修改HTTP头可以传递给服务器一些请求附加信息。使用HTTP头允许请求中包含内容,如同压缩文件一样。还可以只请求特定状态的web页面。

            web_image支持Web虚拟用户,不支持WAP虚拟用户。

    例子
            下面的例子模拟用户单击Home图标以回到主页(黑体部分):

    web_url("my_home", "URL=http://my_home/", LAST);

    web_link("Employees", "Text=Employees", LAST);

    web_image("Home.gif", "SRC=../gifs/Buttons/Home.gif", LAST);

    web_link("Library", "Text=Library", LAST);

    web_image("Home.gif", "SRC=../../gifs/buttons/Home.gif", LAST);

            下面的例子模拟用户在客户端映射的图片上单击:

    web_image("dpt_house.gif",

           "Src=../gifs/dpt_house.gif",

           "MapName=dpt_house",

           "AreaOrdinal=4",

           LAST);

            下面的例子模拟用户在服务端映射的图片上单击:

    web_image("The Web Developer's Virtual Library",

           "Alt=The Web Developer's Virtual Library",

           "Ordinal=1",

           "XCoord=91",

           "YCoord=17",

           LAST);

            下面是一个使用文件名后缀的例子:它指定了dpt_house.gif作为后缀,所以象../gifs/dpt_house.gif、/gifs/dpt_house.gif、gifs/dpt_house.gif、/dpt_house.gif等都会匹配到。

    web_image("dpt_house.gif",
            "Src/sfx=dpt_house.gif", LAST);

    web_link
    语法:
            Int web_link (const char *StepName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:VuGen中树形视图中显示的名称,在自动事务设置中也被用做事务名称。

            List of Attributes:支持下列的属性:

    1.      Text:超链接中的文字,必须精确匹配。

    2.      Frame:录制操作时所在的Frame的名称。

    3.      TargetFrame、ResourceByteLimit:见List of Attributes一节。

    4.      Ordinal:如果用给出的属性(Attributes)筛选出的元素不唯一,那么VuGen使用此属性来指定其中的一个。例如:“SRC=abc.gif”,“Ordinal=3”标记的是SRC的值是“abc.gif”的第3张图片。

            EXTRARES:表明下面的参数将会是list of resource attributes了。

            LAST:结尾标示符。

    说明
            模拟鼠标在由若干个属性集合描述的链接上进行单击。此函数必须在前置动作的上下文中才可以执行。

            web_link 仅仅在基于HTML的录制方式中才会被VuGen捕捉到。

            非HTML生成的资源的例子有.gif 和.jpg图像。对于List of Resource Attributes参数来说,仅仅当Recording Options--Recording --HTML-based script-- Record within the current script. step选项被选中时,它们才会被插入到代码中。

            可以通过改变HTTP头信息给服务器传递一些附加信息。使用HTTP头信息可以,允许响应体中包含其他的内容类型(Content-Type),例如压缩文件,或者只有满足了特定的状态才去请求web页。

            此函数值支持Web虚拟用户,不支持WAP虚拟用户。

    web_submmit_form
    语法:
    Int web_submit_form. (const char *StepName, <List of Attributes>, <List of Hidden Fields>, ITEMDATA, <List of Data Fields>, [ EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:Form的名字。VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            List of Attributes:支持以下属性:

    1.      Action:Form中的ACTION属性,指定了完成Form中的操作用到的URL。也可以使用“Action/sfx” 表示使用此后缀的所有Action。

    2.      Frame:录制操作时所在的Frame的名称。

    3.      TargetFrame、ResourceByteLimit:见List of Attributes的同名参数。

    4.      Ordinal:参见Web_link的同名参数。

            VuGen通过记录数据域唯一的标识每个Form。如果这样不足以识别Form,VuGen会记录Action 属性。如果还不足以识别,则会记录Ordinal 属性,这种情况下不会记录Action属性。

            List of Hidden Fields:补充属性(Serves)。 通过此属性可以使用一串隐含域来标识Form。使用下面的格式:

    STARTHIDDENS,

    "name=n1", "value=v1", ENDITEM,

    "name=n2", "value=v2", ENDITEM,

    ENDHIDDENS,

    List of Data Fields

            Data项用来标识form。Form是通过属性和数据来共同识别的。

            使用下面的格式来表示数据域列表

    "name=n1", "value=v1", ENDITEM,

    "name=n2", "value=v2", ENDITEM,

            ITEMDATA:Form中数据和属性的分隔符。

            EXTRARES:一个分隔符,标记下一个参数是资源属性的列表了。

    List of Resource Attributes:参见List of Resource Attributes一节。

    LAST:属性列表结束的标记符。

    说明
            web_submit_form. 函数用来提交表单。此函数可能必须在前一个操作的上下文中执行。在Toos—Recording Option,只有录制级别设为基于HMTL的录制方式,web_image才会被录制到。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通常情况下,如果录制了web_submit_form. 函数,VuGen会把“name”和“value”一起录制到ITEMDATA属性中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。

            例如:可以把 "Name=grpType", "Value=radRoundtrip", ENDITEM

            改为:"Name=grpType", EncryptedValue=409e41ebf102f3036b0549c799be3609", ENDITEM

            如果你完整的安装了LoadRunner,那么打开开始菜单--Mercury LoadRunner—Tools--Password Encoder,这个小工具是用来加密字符串的。把需要加密的值粘贴到Password一栏,再点Generate按钮。加密后的字符串会出现在Encoded string框中。接着点Copy按钮,然后把它粘贴到脚本中,覆盖原来显示的“Value”。

            加密的另一种方法时使用lr_decrypt函数。方法:选择整个字符串,例如“Value=radRoundtrip”(注意不要选择引号),右击鼠标,选择Encrypt string选现,脚本会变为:

    "Name=grpType", lr_decrypt("40d176c46f3cf2f5fbfaa806bd1bcee65f0371858163"), ENDITEM,

    web_submit_form支持Web虚拟用户,不支持WAP虚拟用户。

    例子:
            下面的例子中,web_submit_form. 函数的名字是“employee.exe”。此函数提交了一个请求,此请求包含雇员信息John Green。此函数没有使用属性(Attributes)是因为通过数据项已经能唯一的标识这个Form了。

    web_submit_form("employee.exe",

           ITEMDATA,

           "name=persons", "value=John Green - John", ENDITEM,

           "name=go_page", "value=Go to Page", ENDITEM,

           LAST);

    web_submmit_data
    语法:
    Int web_submit_data ( const char *StepName, <List of Attributes>, ITEMDATA, <List of data>, [ EXTRARES, <List of Resource Attributes>,] LAST ); 

    返回值
            返回LR_PASS(0)代表成功,LR_FAIL(1)代表失败。

    参数:
            StepName:步骤名称,VuGen中树形视图显示的名称。

    List of Attributes:支持以下属性:

    1.      Action:Form中的ACTION属性,指定了完成Form中的操作用到的URL。

    2.      Method:表单提交方法:POST或GET(默认是POST)。

    3.      EncType:编码方式。

    4.      EncodeAtSign:是否使用ASCII值对符号“@”编码。Yes或者 No。

    5.      TargetFrame:包含当前链接或资源的Frame。参见List of Attributes的同名参数。

    6.      Referer、Mode:参见List of Attributes的同名参数。

            ITEMDATA:数据域和属性的分隔符。

    List of Data:

            数据域列表定义了表单提交的内容。由于此请求是上下文无关的,因此数据域包含了所有的隐含域。使用Form的编码规则组织数据域。

            数据域列表可以使用下面任意一种格式:

             "name=n1", "value=v1", ENDITEM,

    "name=n2", "EncryptedValue=qwerty", ENDITEM,

            EXTRARES:分隔符,标记下一个参数将是资源属性的列表。

    List of Resource Attributes:参见List of Resource Attributes。

    LAST:结束标记符。

    说明
            web_submit_data函数处理无状态或者上下文无关的表单提交。它用来生成表单的GET或POST请求,这些请求与Form自动生成的请求是一样的。发送这些请求时不需要表单上下文。

            当VuGen设为基于URL的录制模式,或者基于HTML的录制方式但是Recording Options—HTML Advanced 下的A script. containing explicit URLs only 选项被选中时,web_submmit_data函数才会录制到。

            不论你采用URL查询的方式(GET),还是采用请求体发送(POST)的方式,此函数都指示出Form中的数据是如何发送到服务器的。

            如果VuGen处于HTTP录制模式下,此时记录Web进程时,会产生此函数。在提交Form时,如果无法生成web_submit_form函数,VuGen也会生成web_submit_data函数。

            在录制选项中,Toos—Recording Option下—Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源。只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            EncType属性给出一个内容类型,指定其做为“Content-Type”请求头的值。它指示了根据参数生成HTTP请求时使用的编码类型(不是URL-encoding就是multi-part)可以是下面的格式:

    1.      “EncType=application/x-www-form-urlencoded”

    2.      “EncType=multipart/form-data” (任何的“; boundary=”都会被默认忽略掉)

    3.      “EncType=” (空串,表明没有产生内容类型(“Content-Type”)请求头)

            任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,“application/x-www-form-urlencoded”会做为默认值来使用。其他情况下,不会产生Content-Type请求头。

            ContentType:文件类型标识符,如果“EncType”是“multipart/form-data”用来上传文件时,需要用到“ContentType”。当在ITEMDATA中的Data子句中指定了“File=Yes”,且文件也在此子句中,ContentType才适用,此时它会作为同一个子句的值来传递。

            正常情况下,“Content-Type”根据所上传文件的扩展名自动生成。例如:

    -----------------------------7d025e2b16b064e\r\n Content-Disposition: form-data; name="uploaded_file"; filename="D:\\temp\\a.txt"\r\n Content-Type: text/plain\r\n \r\n

            无论如何,对于非浏览器的程序来说是特殊的,根据文件类型生成的“ContentType”不一定是正确的。这时,通过手工指定来覆盖默认的“ContentType”。如果指定了空值,那么“Content-Type”头将不包含在文件中。

            如果没有显示的指定“ContentType”的值,当上传的文件为空时,不管文件扩展名是什么,都默认使用“application/x-unknown-content-type”做为”ContentType”的值。

            VuGen不会检查指定的ContentType是否有效。

            通常情况下,如果录制了web_submit_data 函数,VuGen会把“name”和“value”一起录制到ITEMDATA一节中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。请参考web_submit_form中相关的内容。

            所有的Web虚拟用户,运行在HTTP模式下的WAP用户,运行在WSP回放模式下的WAP用户都可以使用本函数。

    例子
            下面的例子中,web_submit_data函数使用POST方法提交了一个表单。

    web_submit_data("default.aspx",

           "Action=http://lazarus/flightnet/default.aspx",

           "Method=POST",

           "TargetFrame=",

           "RecContentType=text/html",

           "Referer=http://lazarus/flightnet/",

           "Snapshot=t7.inf",

           "Mode=HTML",

           ITEMDATA,

           "Name=grpType", "Value=radRoundtrip", ENDITEM,

           "Name=lstDepartingCity", "Value=DEN", ENDITEM,

           "Name=lstDestinationCity", "Value=LAX", ENDITEM,

           "Name=txtDepartureDate", "Value=8/19/2003", ENDITEM,

           "Name=txtReturnDate", "Value=8/19/2003", ENDITEM,

           "Name=txtQuantity", "Value=1", ENDITEM,

           "Name=radClass", "Value=1", ENDITEM,

           "Name=radSeat", "Value=1", ENDITEM,

           "Name=btnAvailableFlights", "Value=Next >", ENDITEM,

           LAST);

            下面的例子, web_submit_data函数使用POST方法提交了2个文件。

    web_submit_data("Attachments",

           "Action=http://barton.cottage@.Devonshire.uk/Attachments?YY=45434",

           "Method=POST",

           "EncType=multipart/form-data",

           "TargetFrame=",

           "RecContentType=text/html",

           "Referer=http:///barton.cottage@.Devonshire.uk/Compose?YY=20435",

           "Snapshot=t5.inf",

           "Mode=HTML",

           ITEMDATA, "Name=userFile0",

                  "Value=E:\\sense_sensibility\\Elinor.txt",

                  "File=yes",

                  "ContentType=text/html", // 覆盖了文本文件默认的“text/plain” 值。

           ENDITEM,

                  "Name=userFile1",

                  "Value=E:\\sense_sensibility\\Marianne.jpg",

                  "File=yes",

           ENDITEM,

           LAST);

    web_custom_request
    语法:
    Int web_custom_request (const char *RequestName, <List of Attributes>,

      [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            返回LR_PASS(0)代表成功,LR_FAIL(1)代表失败。

    参数:
            RequestName:步骤的名称,VuGen中树形视图中显示的名称。

            List of Attribute:支持的属性有以下几种:

    1.      URL:页面地址。

    2.      Method :页面的提交方式,POST或GET。

    3.      TargetFrame:包含当前链接或资源的frame的名称。参见List of Attributes的同名参数。

    4.      EncType:编码类型。

    5.      RecContentType:响应头的内容类型。参见List of Attributes的同名参数。

    6.      Referer:参见List of Attributes的同名参数。

    7.      Body:请求体。参见List of Attributes的同名参数。

    8.      RAW BODY:参见List of Attributes的同名参数。

    9.      BodyFilePath:作为请求体传送的文件的路径。它不能与下面的属性一起使用:Body,或者其他Body属性或Raw Body属性包括BodyBinary,BodyUnicode, RAW_BODY_START或Binary=1。

    10.  Resource、ResourceByteLimit、Snapshot、Mode:参见List of Attributes的同名参数。

    11.  ExtraResBaseDir:参见List of Attributes的同名参数。

    12.  UserAgent:用户代理,它是一个HTTP头的名字,用来标识应用程序,通常是浏览器,它呈现的是用户和服务器的交互。

            例如:头信息“User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”识别的是Window NT下的IE浏览器6.0。其他的User-Agent的值用来描述其他的浏览器,或者非浏览器程序。通常,一个应用程序中所有的请求都使用相同的用户代理,录制者作为一个运行时参数来指定(Run-Time Setting—Browser Emulation—User Agent)。不管怎么说,即使是在一个简单的浏览器进程中,仍有可能会用到直接与服务器交互的非浏览器组件(例如ActiveX控件),通常他们有着不同于浏览器的用户代理属性。指定“UserAgent”表示这是一个非浏览器的请求。指定的字符串被HTTP头“User-Agent:” 使用,在某些情况下,它同时会影响回放脚本时的行为。例如,不使用浏览器缓存,假设指定的URL属于资源等等。

            LoadRunner本身不检查指定的字符串与浏览器本身的值是否相同。

    13.  Binary:“Binary=1”表示页面请求体中的每一个以\\x##形式出现的值(在这里“##”代表2个十六进制数字),都会被替换为单字节的十六进制的值。

            如果“Binary=0”(默认值),所有的字符序列只是按照字面的值传递。

            需要注意双斜杠的用法。在C编译器中双斜杠被解释为单斜杠。如果不需要零字节,单斜杠可以在Binary不等于1的情况下使用(例如,使用\x20代替\\x20)。如果需要零字节,那么只能使用\\x00且设置 “Binary=1”,\x00在逻辑上会被截断。

    14.  ContentEncoding

            指定请求体的使用指定的方式(gzip或者deflate)进行编码(例如,压缩),相应的“Content-Encoding:” HTTP头会和此请求一起发送。这个参数适用于web_custom_request和web_submit_data。

            EXTRARES:表明下面的参数将会是List Of Resource Attributes了。 

            LAST :结尾的标示符。

    说明
            允许使用任何方法和请求体创建自定义的HTTP请求。默认情况下,当VuGen无法使用其他函数解释用户请求时,会生成此函数。

            使用Add对话框(在脚本环境下,右击鼠标,会出现快捷菜单),可以手工插入此函数。要指定特殊的HTTP头信息,需要增加web_add_header或者web_add_auto_header函数。

    RecContentType:参见List of Attributes的同名参数。

            EncType:编码类型。此参数给出一个内容类型(Content-Type),指定其做为回放脚本时“Content-Type”请求头的值,例如 “text/html”。Web_custom_request函数不处理未编码的请求体。请求体参数将会使用已经指定的编码方式。因此,如果指定了不匹配HTTP请求体的“EncType”,会引发服务端的错误。通常我们建议不要手动修改录制时的“EncType”值。

            任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当指定了“EncType=” (空值)时,不会产生“Content-Type” 请求头。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,且“Method=POST”,“application/x-www-form-urlencoded”会做为默认值来使用。其他情况下,不会产生Content-Type请求头。

            仅仅当Recording Options--Recording --HTML-based script-- Record within the current script. step选项被选中时,List of Resource Attributes才会被插入到代码中。

            所有的Web Vusers ,运行在HTTP模式或者Wireless Session Protocol (WSP) 回放模式下的WAP Vusers都支持web_custom_request函数。

    Using Binary Code

            可以使用下面的格式在web_custom_request 函数的“Body”属性中加入二进制字符串。

    \x[char1][char2]

            通过2个字符[char1][char2]来表示十六进制的值。

            例如:\x24表示16*2+4=36,它代表“$”符号,\x2B代表的是“+”符号。

            如果不足2个字符,也不是有效的十六进制字符,VuGen则会当作ASCII文本处理。所以要注意,对于不足2个字符的十六进制,要在前面补0。例如 “\x2”是无效的十六进制串,需要边为“\x02”。

            注意二进制的值是以“\\x” 的形式出现在脚本中的,也就是说在“x” 前面有2个反斜杠。这是由C语言的转义语法决定的。但是,当使用VuGen生成web_custom_request 函数时,只需要输入一个反斜杠。

            如果在web_custom_request 中使用参数化,定义参数时只需要包含一个反斜杠这是由于参数替换时是不考虑C的语法转换的。

    List of Attributes
    FtpAscii:“1”使用ASCII模式处理FTP操作;"0" 使用二进制模式。

            TargetFrame: 当前链接或资源所在Frame的名称。除了Frame的名字,还可以指定下面的参数:

    _BLANK:打开一个空窗口。

    _PARENT:把最新更改过的的Frame替换为它的上级。

    _SELF:替换最新更改过的的Frame。

    _TOP:替换整个页面。

            RecContentType:录制脚本时响应头的内容类型。例如text/html、 application/x-javascript等。当没有设置Resource属性时,用它来确定目标URL是否是可记录的资源。此属性包含主要的和次要的资源。最频繁使用的类型是 text、application、image。次要的类型根据资源不同变化很多。例如:"RecContentType=text/html":表示html文本。"RecContentType=application/msword":表示当前使用的是Msword。

            Referer: 当前页面关联的页面。如果已经显式指定了url的地址,此项可以省略。

            Resource:指示URL是否属于资源。1 是;0 不是。设置了这个参数后,RecContentType参数被忽略。“Resource=1”,意味着当前操作与所在脚本的成功与否关系不大。在下载资源时如果发生错误,是当作警告而不是错误来处理的;URL是否被下载受“Run-Time Setting—Browser Emulation--Download non-HTML resources” 这个选项的影响。此操作的响应信息是不做为HTML来解析的。“Resource=0”,表明此URL是重要的,不受发送请求(RTS)的影响,在需要时也会解析它。

            ResourceByteLimit:web页面下载资源的极限大小。当达到设置的极限后,无法下载其他资源。仅仅对需要下载的资源有效。

            下载过程:如果总计下载大小小于极限值,则正常开始下载。如果当下载时达到了设置的极限值,资源大小可知(在HTTP响应头中指定了Content-Length),这中情况下,如果只需要一个缓冲区,那么下载可以正常完成。如果需要的不止一个缓冲区,或者资源大小不可知,下载就会中断同时关闭当前连接。

            这个特性可以用来模拟用户不等待一个页面下载完成时导航到另一个页面的情况。

            ResourceByteLimit 在HTTP模式中无法使用,在Concurrent Groups(Vuser脚本中的一个区,此区中的所有函数并发执行)区中也无法使用。仅仅适用于Sockets的回放,WinInet也是不适用的。

    Snapshot:快照的文件名,关联时使用。

            Mode:两种录制级别HTML、HTTP。

            HTML级别:在当前Web界面上录制直观的HTML动作。以一步步的web_url、web_link、web_image、web_submit_form来录制这些动作。VuGen仅仅录制返回HTML页面的请求,不处理脚本和应用程序。

            HTTP级别:VuGen把所有的请求录制为web_url指令,不生成web_link、web_image、web_submit_form这些函数。这种方法更为灵活,但是生成的脚本不够直观。

            ExtraResBaseDir(目前仅适用与web_custom_request函数):根URL,放在EXTRARES组里。它是用来解析相对URL的(译者加:类似于Windows的相对路径和绝对路径)。

            URL可以是绝对路径(例如http://weather.abc.com/weather/forecast.jsp?locCode=LFPO),也可以是相对路径(例如“forecast.jsp?locCode=LFPO”)。

            真正的URL的下载是通过绝对路径进行的,所以相对URL路径必须使用根路径URL去解析。例如,使用http://weather.abc.com/weather/做为根路径来解析“forecast.jsp?locCode=LFPO”,最后的URL是:http://weather.abc.com/weather/forecast.jsp?locCode=LFPO。如果没有指定“ExtraResBaseDir”,默认的根URL是主页面的URL。

            Body(目前仅适用与web_custom_request函数):请求体。不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递。请求体可以只使用其中一个参数,也可以使用一连串的分开的参数组成多请求体。例如:

    web_custom_request(

    ……

    "BodyUnicode=REPRICE"

    "BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"

    "Body=.\r\n"

    "-dxjjtbw/(.tp?eg:ch/6--\r\n",

    LAST);

            在上面的代码中,使用了3个参数来划分请求体,一个是Unicode段,一个是二进制段,最后一个是常规的字符串。最终的请求体是这3个参数按照在函数中的顺序连接起来的值。

            还有一个很少用到的参数,Binary。它也能描述二进制请求体,但只允许函数中只有一个请求体参数。

            所有的请求体都是ASCII字符,以null结束。

            Body:表示规则的,可打印的字符串。无法表示空字节。所有的字符都以一个反斜杠表示。注意:在旧的脚本中,可以看见不可打印的字符在请求体中以16进制方式进行编码。(例如 “\\x5c”),在这种情况下,必须使用“Binary=1”来标识。空字节使用"\\00"来表示。 相反,新脚本则会把把请求体分开放在不同的参数中("Body=...", "BodyBinary=...", Body=...")。

            BodyBinary :表示二进制代码。不可打印的字符在请求体中以16进制方式\\xHH进行编码。在这里HH 表示十六进制值。空字节使用"\\00"来表示。

            BodyUnicode:美国英语, 特指拉丁 UTF-16LE(little-endian)编码。这种编码方式会在在每个字符末尾附加一个0字节,以便使字符更可读。但是在VuGen中实际的参数把所有的0字节都去掉的。但是在发送给Web 服务器之前, web_custom_request函数会重新添加0字节的。对于不可打印的字符,使用单反斜杠表示,无法表示空字节。

            注意:如果请求体大于100K,会使用一个变量来代替Body参数。变量是在 lrw_custom_body.h中定义的。

            Raw Body(目前仅适用与web_custom_request函数):请求体是作为指针传递的,此指针指向一串数据。 二进制的请求体可以使用BodyBinary 属性来发送(或者使用Body 属性来传递,前提是必须设置"Binary=1" )。无论如何,这种方法需要使用转义字符反斜杠把不可打印的字符转换为ASCII字符。为了能有一种更简便的表现原始数据的方式,Raw Body属性应运而生,可以传递指向二进制数据的指针。

            使用4个连续的参数集来表示指针,而且必须按照顺序排列:

        RAW_BODY_START

            指向数据缓冲区的指针

    (int) 长度

    RAW_BODY_END

    例子:

    char *abc= .../* a pointer to the raw data */

    web_custom_request("StepName",

                   "URL=http://some.url ",

     "Method=POST",

         RAW_BODY_START,

         "abc",

                        3,

      RAW_BODY_END,

         LAST);

            在应用中,即使设置了数据的长度为0,指针也必须有值,不能为空。

            在“Binary=1”时,不能使用上面的语法传递原始数据。

            数据缓冲区中的数据不能使用参数化。也就时说,缓冲区中的任何参数(例如 "{MyParam}")不能被正确的替代为相应的值,只会以字面值发送。

    List of  Resource  Attributes
            Web页面中的非HTML机制产生了资源列表,包含了Javascript, ActiveX, Java applets and Flash所请求的资源。VuGen's 的Recording 选项中,可以设置把这些资源录制在当前的操作中(默认是此设置)还是作为单独的步骤来录制。

            支持以下资源:

    URL

    要加载的web资源的url

    Referer

    关联的url

    ENDITEM

    每个资源的结束标记

     

            相对于把每个资源都录制为单独的步骤来说,不录制非HTML元素使脚本更加简短和可读,特别是在VuGen的Tree视图下更为突出。

            当VuGen录制过程中发现附加的资源(比如JS)时,会以列表的形式加到附加资源项中。回放脚本时,这些资源文件也是请求的一部分。可以对一些按规则变化的资源使用关联。

  • LoadRunner分析测试结果

    2009-05-06 10:10:34

    转载地址http://blog.csdn.net/Kinloloy/archive/2009/04/03/4046549.aspx

    2.3  LoadRunner分析测试结果

    要查找系统瓶颈,就必须分析LoadRunner获取的性能指标数据。在LoadRunner场景运行的同时我们获取了大量的数据,可以根据以下几种方式分析这些数据:

    1.查看Vuser Log文件,这些文件包括了场景运行过程中每个用户的跟踪数据,Vuser Log文件一般放在脚本目录中;

    2.在控制台的输出窗口查看场景的执行过程信息;

    3.使用Analysis模块分析执行结果图表;

    4.使用直接生成的图表查看原始数据——Graph Data或者Raw Data;

    5.让LoadRunner自动生成HTML或Word格式的测试报告,通过报告进行分析。

    LoadRunner 的Analysis模块是分析系统的性能指标的一个主要工具,它能够直接打开场景的执行结果文件,将场景数据信息生成相关的图表显示出来。 Analysis集成了数据统计分析功能,允许测试员对图表进行比较和合并等多种操作,分析后的图表能够自动生成测试员需要的测试报告文档。

    在运行方案时,数据将存储在结果文件中,扩展名为.lrr。Analysis是处理收集的结果信息并生成图和报告的实用程序。Analysis将活动图的显示信息和布局设置存储在扩展名为.lra的文件中。

    在运行方案时,默认情况下所有Vuser信息将存储在每个Vuser主机(每个运行场景的机器)中。方案执行之后,这些结果会自动进行整理或合并,即将所有主机的结果传输到结果目录中(一般可以使用TD或者其他质量管理工具进行缺陷管理工作,结果目录将因使用的软件和配置情况而异)。通过在控制台窗口中选择““Results”>““Auto Collate Results”(自动整理结果),并清除该选项旁边的复选标记,可以禁用自动整理。要手动整理结果,请选择“Results”>“Collate Results”(整理结果)。如果方案执行后这些结果还没有进行整理,在生成分析数据之前,Analysis将对其进行整理。

    文本框:  
图2-69 “General”选项卡场景运行完毕,在结果目录下会自动保存一个扩展名为lrr的结果文件,Analysis能够打开这个结果文件,加载该文件时自动处理lrr文件内的结果信息,并自动生成相应的结果图表.

    2.3.1  配置数据选项

    在使用Analysis分析场景结果之前,首先要明确结果文件中收集了哪些信息。默认情况下,各个Vuser的执行结果数据都是存放在各个Vuser所在的机器上的,场景执行结束后,才被系统自动整理合并后放置到结果目录下,LoadRunner是否执行这个整理合并操作是受控制台中的“Auto Collate Results”选项控制的。所以要进行相应配置,下面做一简要介绍。

    选择“Tools”>“Options”,出现配置界面,分别有“General”(常规)、“Result Collection”(结果集合)、“Database”(数据库)和“Web Page Breakdown”(网页细分)四个选项卡。

    1.“General”选项卡(如图2-69所示)

    在此页面可以设置存储和显示的日期格式,一种为欧洲日期格式(dd/mm/yyyy),另一种为美国日期格式(mm/dd/yyyy)。

    如果要选择文件浏览器打开的目录位置,有“Open at most recently used directory”(打开最近一次使用目录位置)和“Open at specified directory”(在指定目录打开文件)两种形式可供选择。

    对于存储临时文件的目录位置,可以设置在Windows 临时目录中,也可以通过输入要存放的目录位置,为保存的临时文件指定存放目录。

    Analysis摘要报告包含一个事务百分比列,默认为90%的事务响应时间(90%是一个统计响应时间的参数,表明该事务所有的运行次数中,90%的次数落在这个响应时间内),此数值如没有特殊要求不用改动。

    2.“Result Collection”选项卡(如图2-70所示)

    通过“Result Collection”选项卡可以配置 Analysis 以生成和显示摘要数据或完整数据。

    图2-70 “Result Setting”选项卡

    “完整数据”指已经过处理的可以在Analysis工具内使用的结果数据,可以存储、筛选和操纵这些数据。“摘要数据”指原始的、未处理的数据。摘要图包含常规信息(如事务名和次数),而且只支持部分筛选选项。

    在“Result Collection”选项卡中,有3项需要配置,分别为“Data Source”(数据源显示情况)、“Data Aggregation”(数据聚合方式)和“Data Time Range”(设置数据时间范围)。

    下面对“Options”对话框中的“Result Setting”选项卡进行配置说明,如图2-70所示。

    首先是选择数据源的数据显示情况,3个选项的含义分别为:

    Ÿ   Generate summary data only(仅生成摘要数据):仅查看摘要数据,Analysis不会处理数据以用于筛选和分组等高级用途。

    Ÿ   Generate complete data only(仅生成完整数据):仅查看经过处理的完整数据,不显示摘要数据。

    Ÿ   Display summary while generating complete data(生成完整数据时显示摘要数据):在处理完整数据的时候,能够查看摘要数据。在处理完整数据之后,查看处理后的完整数据。

    其次是选择数据的聚合方式,如果选择生成完整数据,Analysis将通过内置数据聚合公式或定义的聚合设置来聚合生成的数据。为了减小数据库,缩短在大方案中的处理时间,必须进行数据聚合。

    在“Data Aggregation”部分的设置默认为第一项“Automatically aggregate data to optimize performance”,使用内置数据聚合公式聚合数据、第二个选项仅对Web数据进行聚合“Automatically aggregate Web data only”、还可以自定义聚合的设置,即选择第三个选项“Apply user-defined aggregation”,单击其后面的自定义配置按钮,打开“Data Aggregation Configuration”(数据聚合配置)对话框,进行自定义聚合和粒度设置,如图2-71所示。

    在图2-71所示的对话框中,首先选择要聚合的数据类型,其中列出要聚合数据的图的类型,有事务(响应时间、每秒)、Web(每秒点击次数、吞吐量、每秒页数、HTTP返回代码)、监视器、数据点和脚本错误。在各选项前面的复选框上打钩即为选中。

    然后再选择要聚合的图属性,包括Vuser ID、组名和脚本名,如果不希望聚合失败的Vuser数据,请选择“Do not aggregate failed Vusers”(不聚合失败的Vuser)。

    图2-71  数据集合配置图

    最后对图形的显示粒度进行设置,粒度的单位为秒,最小的粒度是1秒,最大的粒度是图的时间范围的一半。在此设置后,随着图形时间范围的增大,在其他地方可以对粒度进行更改,在后面会对更改粒度的方法进行简要介绍。还可以选择专门指定Web数据的自定义粒度,默认值为5秒。

    确定后,单击“OK”按钮关闭“数据聚合配置”对话框。

    在“Result Setting”选项卡页面中最后一项“Data Time Range”就是设置数据时间范围,默认的范围为“All of the Scenario”(所有方案),即显示方案整个持续时间内的数据。单击“Apply now on active session”按钮后,将当前设置应用到当前会话中。

    3.“Database”选项卡

    默认情况下,LoadRunner 将Analysis结果数据存储在Access 2000数据库中。如果Analysis结果数据超过2GB,建议用户将它存储在SQL Server或MSDE计算机上,此时可以通过如下配置进行,如图2-72所示。

    如果选择SQL Server数据库,则需要配置一下后面的选项。在“Server Name”文本框中选择或输入运行SQL Server/MSDE的计算机的名称。在此,可以勾选“Use Windows intergrated security”(使用Windows集成安全性)复选框,这种情况下将允许用户使用Windows登录,而不必手工指定SQL Server的用户名和密码。

    Ÿ   “Logical storage location”(逻辑存储位置):输入要在其中存储永久和临时数据库文件的SQL Server/MSDE计算机上的共享目录。例如,如果SQL Server的名称是fly,则输入“\\fly\<Analysis数据库>\”。

    图2-72  数据库配置选项

    存储在SQL Server/MSDE计算机上的Analysis结果仅可以在计算机的本地LAN上进行查看。

    Ÿ   “Physical storage location”(物理存储位置):输入与逻辑存储位置对应的SQL Server/MSDE计算机上的真实驱动器和目录路径。例如,如果 Analysis数据库映射到名为fly的SQL Server,并且fly映射到驱动器D,则输入“D:\<Analysis数据库>”。

    如果SQL Server/MSDE和Analysis位于同一台计算机上,则逻辑存储位置和物理存储位置是相同的。

    Ÿ   “Test Parameters”(测试参数):如果用于Access,则允许用户连接到Access数据库并验证计算机上的“列表分隔符”注册表选项与该数据库计算机上的是否相同。

    如果用于SQL Server/MSDE,则允许用户连接到SQL Server/MSDE计算机,并查看指定的共享目录是否位于服务器上,以及在该共享服务器目录上是否有写入权限。如果有,Analysis会将共享的服务器目录与物理服务器目录同步。

    Ÿ   “Compact Database”(压缩数据库):在配置和设置Analysis会话时,包含结果的数据库可能变得零碎。因此,可能使用过多的磁盘空间。通过 “Compact database”(压缩数据库)按钮可以修复和压缩这些结果并且优化Access数据库。

    4.“Web Page Breakdown”选项卡(如图2-73所示)

    在此选项卡中选择URL的形式,可以选择单独显示每个URL(Display individual URLs)或者显示合并URL的平均值(Display an average of merged URLs),即将来自同一脚本步骤的URL合并成一个URL,然后使用合并(平均)数据点显示它。测试人员可以根据实际需求做相应的设置。

    图2-73 “Web Page Breakdown”选项卡

    文本框:  
图2-74  打开图列表2.3.2  图表分析说明

    当把各种数据结果生成分析图表时,为了更好地对结果进行分析,需要对这些分析图表进行筛选,合并或者关联,便于测试人员得到想要的数据,所以下面介绍几个常用的分析图表的技巧。

    1.打开图。除了系统提示的默认的图表外,测试人员还可以查看其他包含数据的图表。方法是:

    在如图2-74的图表列表中双击“New Graph”,弹出“Open a new Graph”对话框,对话框中所有名称为蓝色的图表均为包含数据的图表,如图2-75所示。

    左边窗口显示能够获得数据的图形列表,右边显示在左边窗口列表中所选择图形的基本信息。选中要打开的图形,单击“Open Graph”按钮,将在数据图列表中显示出该图,选择完毕后,单击“Close”按钮关闭此对话框。

    在整个分析结果界面分为三部分,如图2-76所示。在图2-76所示页面中,上面左半部分为要显示的数据名称列表,右半部分为整个场景数据的图形显示,下面则显示运行监控数据。每打开一个新图,在数据名称列表中都将添加对应的指标。

    图2-75  打开一个新图

    图2-76  分析结果页面

    2.在图形显示的区域单击鼠标右键将弹出图2-77所示的菜单,下面将对此菜单所提供的功能做一下介绍。

    (1)设置筛选条件(Set Filter/Group By)

    选择“View”(视图)>“Set Filter/Group By”(设置筛选器/分组方式),出现筛选器的对话框,例如打开事务摘要的筛选器,如图2-78所示。

       

    图2-77  图形区域的右键菜单                      图2-78  图形设置

    在图2-78所示对话框中为“Criteria”(条件)和“Values”(值)字段选择值。

    Ÿ   Criteria:选择“=”(等号)或“<>”(不等号)。

    Ÿ   Values:从“Values”列表中选择一个值。筛选条件分为三种值类型(离散、连续和基于时间)。

    ¡ 离散值是一个明确的整数值,例如“事务名”或“Vuser ID”。要求在已经包含在筛选器中的固有值中选取,不可以自定义该数值。

    注释:可以使用“Transaction Hierarchical Path”(事务父树路径)条件来筛选子事务。选择<事务名>可以筛选此事务的子事务;选择“无”可以筛选父事务;选择“未知”可以筛选所有父级未知的子事务(这种情况通常由会话期间的嵌套错误引起)。

    ¡ 连续值是一个变量维度,可以在最小值和最大值范围限制内取任何值,例如“事务响应时间”。可以在“设置维度信息”对话框中设置每个度量的维度信息。

    ¡ 基于时间的值是基于相对于方案开始时间的值。“Scenario Elapsed Time”(方案已用时间)是使用基于时间值的唯一条件。可以在“Scenario Elapsed Time”对话框中指定基于时间的值。

    Ÿ   Group By(分组方式):使用这些设置来对图显示按组排序。

    Ÿ   Available groups(可用组):选择排序所依据的组,单击右箭头可以将该组加入到“选定组”内。

    Ÿ   Selected groups(选定组):显示所有选定组的列表,结果将按这些组排序。要删除某个组,可以选择该组并单击左箭头。要更改结果分组的顺序,请选择要移动的组,并单击向上或向下箭头,直到它们按所需顺序排列。

    Ÿ   Set Default(设置默认值):设置每个筛选条件的默认条件和值。

    Ÿ   Cancel(全部清除):删除用户在对话框中输入的所有信息。

    文本框:  
图2-79  设置时间粒度(2)Set Granularity(设置或更改粒度)

    在图2-77所示的菜单单击“Set Granularity”选项,将出现图2-79所示的对话框,在此框可设置时间粒度。

    通过更改X轴的粒度(比例),可以使图便于阅读和分析。为确保可读性和清晰性,Analysis 在大于等于500秒的范围内自动调整图的最小粒度。如果要使数据库减小,可增加粒度。如果要重点关注更详细的结果,可减少粒度。

    在图2-80中,使用不同的粒度(1、5,10)来显示每秒点击次数,其中Y轴表示在粒度间隔内的每秒点击次数。对于粒度1,Y轴显示方案中每1秒期间的每秒点击次数(如图2-80(a)所示)。对于粒度5,Y轴显示方案中每5秒期间的每秒点击次数(如图2-80(b)所示)。

     

    (a)                                       (b)

    图2-80  不同的粒度每秒点击次数图

    (c)

    图2-80  不同的粒度每秒点击次数图(续)

    文本框:  
图2-81  选择查看的原始数据时间段从图2-80可以看出,粒度越低,结果越详细。例如,在图2-80中使用较低的粒度,可以看到没发生点击的间隔。使用更高粒度有助于研究整个方案中的总体Vuser行为。通过使用更高粒度来查看同一个图,可以很容易地发现,总体上大约平均每秒点击1次。

    (3)View Raw Data(查看原始数据)

    在图2-77所示的右键菜单中单击“View Raw Data”,将弹出“Raw Data”对话框。

    首先设置显示时间范围,如图2-81所示。单击“OK”按钮确定后,将在分析结果页面的数据列表区域,根据所选择的时间范围显示出原始数据,如图2-82所示。

    图2-82  显示的原始数据

    (4)Auto Correlate(自动关联图)

    在图2-77所示的右键菜单中选择“Auto Correlate”,打开“Auto Correlate”(自动关联)对话框,如图2-83所示,图中显示的数据范围为选定的度量,如不选定则显示整个运行结果的度量。

    通过“Auto Correlate”对话框中的“Time Range”(时间范围)选项卡,可以为相关联的度量图指定方案时间范围。

    首先要在“Measurement to Correlate”下拉列表中选择要关联的度量,单击“Display”按钮显示关联整个方案时间范围的值。在“Suggest Time Range by”下拉列表框中可以选择三种时间范围的方式(即Analysis自动划分方案中度量的最重要时间段),依次为:

    Ÿ   趋势:选择关联度量值变化趋势相对稳定的一段时间范围。

    Ÿ   功能:选择关联度量值变化相对稳定时间段内,选择其中一小段大体与整个趋势相似的时间范围。

    Ÿ   最佳:选择关联度量值发生明显变化趋势的一段时间范围。

    图2-83  自动关联时间范围

    指定方案时间范围也有两种方式,一种是手动填写具体的开始和结束时间,另一种是使用绿色和红色的垂直拖动条来指定起止时间。

    通过“Auto Correlate”对话框中的“Correlation Options”(关联选项)选项卡,可以设置要关联的图、数据间隔和输出选项,如图2-84所示。

    首先,要在左边的窗口(Select Graphs for Correlation)中选择希望其度量与选定度量相关联的图。然后,在“Data Interval”单组合框中选择计算关联度量轮询之间的间隔,可以设置为自动值(Automatic),还可以输入一个具体的值。最后,在 “Output”组合框中选择显示输出的级别。

    图2-84  设置自动关联选项

    (5)Comments(注释添加与编辑)

    首先,选择要添加注释的位置,选择图2-77中“Comments”菜单下的“Add Comment”(添加注释)选项,打开“Add Comments”对话框,如图2-85所示。

    在 “Text”框中输入要添加注释的内容。在“Add Comments”对话框中可以选择插入注释的位置及设置注释框的大小,还可以通过Format(格式)、Text(文本)、Gradient(渐变)和 Shadow(阴影)等选项卡,对所添加的注释进行编辑、调整和格式化。

    如果想修改或删除注释,请选中该注释,然后选择“Comments”>菜单中的“Edit Comments”选项,打开“Edit Comments”对话框,如图2-86所示。

                  

    图2-85  添加注释                               图2-86  编辑注释

    对注释进行编辑和删除,编辑完后关闭此对话框即可。

    3.在图2-75所示的数据列表区域单击鼠标右键将弹出如图2-87所示的菜单,下面简单介绍此菜单上的各选项。

    (1)Show:显示图中某个度量。

    (2)Hide:隐藏图中某个度量。

    (3)Show only selected:只突出显示所选择的度量。

    (4)Show all:显示图中所有可用的度量。

    (5)Configure measurements(设置度量):单击此项将打开“Measurement Options”(度量选项)对话框,如图2-88所示,通过该对话框可以配置度量选项(例如,设置颜色和度量比例)。

                   

    图2-87  数据列表右键菜单                         图2-88  度量选项

    在“Measurement”下拉列表内选择要配置的度量,还可以单击“Change Color”按钮改变其显示的颜色,在下面的“Scale”组合框中可以设置度量的比例,其选项依次为:

    Ÿ   Set measurement scale to(将度量比例设置为X):设置度量的比例。

    Ÿ   Set automatic scale for all measurements(为所有度量设置自动比例):使用优化的自动比例来显示图中每个度量。

    Ÿ   Set scale 1 for all measurements(为所有度量设置比例=N):将图中所有度量的比例设置为1。

    Ÿ   View measurement trends for all measurements(查看所有度量的度量趋势):按照以下公式对图中Y轴的值归一化:

    新Y值=(以前的Y值-以前值的平均值)/以前值的STD。

    (6)Show measurement description(显示度量描述):单击此项将弹出“Measurement Description”(度量描述)对话框,其中包括名称、监视器类型以及选定度量的描述,如图2-88所示。

    (7)Animate selected line(激活选定线):将选定度量显示为闪烁线。当选中此菜单项后,每当选择一个度量值后,该线形的显示有一个从粗到细的过程。

    图2-89  度量描述

    (8)Configure columns(配置列):选择此菜单将打开“Legend Column Options”(图例列选项)对话框,如图2-90所示,通过该对话框可以配置图2-76页面中“Legend”选项卡中显示的列。

    图2-90  图例列选项

    在“Legend Columns Options”对话框中可以选择要查看的列、每列的宽度以及列的排序方法。在左边的窗口(Available Columns)中显示可用于选定度量的列。默认情况下,将显示所有可用列。在右边显示所选定列的名称及长度,还可以对宽度进行修改。在“Sort By”组合框中可选择所选列的排序方式:升序(Ascending)和降序(Descending)。但在排序前应先选择度量数据进行排序所依据的列。

    4.合并图

    使用Analysis可以将同一方案的两个图的结果合并到一个图中。通过合并,可以一次比较几个不同的度量。例如,可以制作一个合并图,以已用时间的函数的形式显示网络延迟和正在运行的Vuser的数量。

    要合并图,这些图的X轴的度量单位必须相同。例如,可以合并“Web吞吐量和每秒点击次数”图,因为它们具有公用的X轴:方案的已用时间。

    首先创建合并图:在树视图中选择一个图或选择其选项卡,将其激活。选择“视图”>“合并图”,或者单击“合并图”。将打开“合并图”对话框,显示活动图的名称。

    显示X轴与当前图相同的活动图,Analysis提供三类合并方式:

    (1)叠加:重叠共用同一X轴的两个图的内容。合并图左侧的Y轴显示当前图的值。右侧的Y轴显示已合并图的值。叠加图的数量没有限制。叠加两个图时,这两个图的Y轴分别显示在图的右侧和左侧。覆盖两个以上的图时,Analysis只显示一个Y轴,相应地缩放不同的度量。

    在图2-92中,“吞吐量-每秒点击次数”图被另一个图叠加。

    (2)平铺:查看在平铺布局(一个图位于另一个之上)中共用同一个X轴的两个图的内容。在图2-93中,“吞吐量-每秒点击次数”图将被平铺(一个在另一个之上)。

    (3)关联:绘图时区分两个图彼此的Y轴。活动图的Y轴变为合并图的X轴。被合并图的Y轴作为合并图的Y轴。

    在图2-94中,“吞吐量-每秒点击次数”图彼此关联。X轴显示每秒的字节数(“吞吐量”度量),Y轴显示每秒的点击次数。

              

    图2-91  合并图                      图2-92  叠加的“吞吐量-每秒点击数”图

             

    图2-93  平铺的“吞吐量-每秒点击数”图                    图2-94  合并关联

    合并图的标题:输入合并图的标题。此标题将出现在 Analysis 窗口左窗格的树视图中。

    2.3.3  分析报告类型

    Analysis 提供了非常详尽的分析结果报告。除了前面提到的分析摘要报告(Analysis Summary)外,Analysis还提供了事务活动报告(Activity Report)、事务性能报告(Performance Reports)、HTML与Word报告等三大类报告。

    1.分析摘要报告

    分析摘要报告提供有关执行方案的一般信息。此报告始终存在于树视图中,也可选择Analysis窗口中的“Analysis Summary”选项卡获取此报告。

    摘要报告列出关于方案运行的统计信息,并提供指向下列各图的链接:正在运行的Vuser、吞吐量、每秒点击次数、每秒HTTP响应数、事务摘要和平均事务响应时间,如图2-95所示。

    在Analysis Summary页面底部,显示包含方案的事务数据的表。该数据中包含一个“90 Percent”列,指示90%的事务的最大响应时间。

    图2-95 “分析摘要报告”页面

    2.事务活动报告

    事务活动报告提供关于Vuser数量和方案运行期间执行的事务数量的信息。可用的活动报告有“方案执行报告”、“失败的事务报告”和“失败的Vuser报告”三种。

    (1)Scenario Execution Report(方案执行报告)

    方案执行报告是一种活动报告,提供关于在方案运行期间发生的主要事件的详细信息,其中包括每个Vuser的信息。在报告中可以看到每组Vuser的执行主机名称、就绪时间、开始执行时间、持续时间、终止/结束时状态等,如图2-96所示。

    在分析结果时,方案执行报告主要用于了解用户的整体情况。

    (2)Failed Transaction Report(失败的事务报告)

    失败的事务报告是一种活动报告,提供已完成但失败了的事务的开始时间、结束时间和持续时间的详细信息,如图2-97所示。

    在通过此报告查找到哪些事务在执行期间发生问题后,还可以结合应用程序的日志、数据库变化情况等对问题进一步定位。

    图2-96  方案执行报告

    图2-97  失败的事务报告(按Vuser)

    (3)失败的Vuser报告(Failed Vusers Report)

    失败的Vuser报告是一种活动报告,提供关于方案执行期间处于“错误”、“停止”或“已完成:失败”状态下的所有Vuser的详细信息,如图2-98所示。报告中的“Ready At”和“Running At”与计算机的系统时钟有关。

    图2-98  失败的Vuser报告

    与方案执行报告相比,失败的Vuser报告显示的是出现问题的Vuser的执行情况,可以进一步分析哪些用户出现问题。

    3.事务性能报告

    事务性能报告用于分析Vuser性能和事务时间。可用的性能报告有“数据点”报告、“详细的事务(按Vuser)”报告和“事务性能摘要(按Vuser)”报告三种。

    (1)“数据点”报告

    使用LoadRunner记录自己的分析数据时可以记录外部函数或变量的值。LoadRunner将使用收集的数据创建数据点图和报告。

    “数据点”报告是一种性能报告,它列出每个组的各个Vuser数据点的名称、值以及记录该值的时间,如图2-99所示。

    图2-99 “数据点”报告

    通过报告中的部分数据点,可以了解随机数的取值情况,进而深入分析程序的执行情况。

    (2)“详细的事务(按Vuser)”报告

    “详细的事务(按Vuser)”报告是一种性能报告,提供方案运行期间每个Vuser执行的所有事务的列表,以及每个事务执行时间的详细信息,如图2-100所示。

    图2-100 “详细的事务(按Vuser)”报告

    “详细的事务(按Vuser)”报告详细地描述了用户执行事务的先后顺序以及具体细节。此报告针对某一具体事务还提供如下一些值:

    Ÿ   Start time(起始时间):事务开始时的系统时间。

    Ÿ   End time(结束时间):事务结束时的实际系统时间,包括思考时间和浪费的时间。

    Ÿ   Duration(持续时间):采用以下格式的事务持续时间,时:分:秒:毫秒,该值包括思考时间,但不包括浪费的时间。

    Ÿ   Think time(思考时间):在事务期间发生延迟的Vuser思考时间。

    Ÿ   Wasted time(浪费的时间):不属于事务时间或思考时间的LoadRunner内部处理时间(主要是RTE Vuser)。

    Ÿ   Result(结果):最后的事务状态(“通过”或“失败”)。

    通过详细的事务报告分析人员就能了解每个Vuser的执行细节。

    (3)“事务性能摘要(按Vuser)”报告

    “ 事务性能摘要(按Vuser)”报告是一种性能报告,显示每个Vuser在方案运行期间执行事务所需的时间。该报告表明事务是否成功,以及每个Vuser 的最小、最大和平均时间,如图2-101所示。当方案具有多种不同类型的Vuser,并且需要具体描述每种类型的性能时,通过此报告可以查看每种类型用户的性能。

    图2-101 “事务性能摘要(按Vuser)”报告

    4.HTML与Word报告

    HTML 报告的内容与Analysis窗口中显示的报告内容相同。分析摘要报告就是典型的HTML报告。在Analysis窗口中打开结果分析文件,添加或删除图表的操作,以此来确定HTML报告的保存内容。指定报告路径和文件名后即可保存HTML报告。以后打开报告网页即打开该报告。

    在生成的Word报告中,通常以图和表的形式自动汇总并显示测试中的重要数据。此外,它还可以显示和描述当前Analysis会话中的所有图。同样,在Analysis窗口中打开的结果分析文件,通过添加或删除图表的操作,可以确定HTML报告的保存内容。

    单击菜单栏“Reports”>“Microsoft Word Reports”打开报告格式设置对话框,如图2-102所示。

    该对话框有三个选项卡:“格式”、“主内容”和“其他图”。

    (1)“格式”选项卡

    在“格式”选项卡中,可以指定报告的路径和名字,还可以输入报告标题、作者、公司徽标等信息。报告中还包含一些可选项,其含义如下:

    Ÿ   标题页:将封面附加到报告。

    Ÿ   目录:将目录附加到报告,并置于封面之后。

    Ÿ   图详细信息:显示图的详细信息,包括图筛选器和粒度。这些详细信息还显示在图下方的“描述”选项卡中。

    Ÿ   图描述:显示图的简短描述。该描述内容与 Analysis 窗口“Details”(描述)选项卡中显示的描述内容相同。

    Ÿ   度量描述:将各类型监视度量的描述附加在报告附录中。

    (2)“主内容”选项卡

    “主内容”选项卡中提供的选项能够使报告收录最重要性能数据的图表,还可以收录一份高级执行摘要以及方案信息,以提供对该测试的概述,其界面如图2-103所示。报告中包含以下几个选项:

    Ÿ   执行摘要:包括LoadRunner测试高级摘要或总结,适用于高级管理。执行摘要通常将性能数据与企业目标相比较,以非技术性语言说明重要的结果和结论,并提出建议。

     

    图2-102  Word报告“格式”选项卡界面       图2-103  Word报告“主内容”选项卡界面

    Ÿ   方案配置:定义测试的基本架构,包括结果文件的名称、控制台计划程序信息、脚本和运行时设置。

    Ÿ   用户的影响:帮助用户查看Vuser负载对性能时间的总体影响的图,此项功能最适用于分析渐进负载测试。

    Ÿ   每秒点击次数:适用于Web测试,显示在负载测试的每秒期间,Vuser在Web服务器上的点击次数。它可以帮助您根据点击次数来评估Vuser产生的负载。

    Ÿ   服务器性能:显示服务器上资源使用率的摘要图。

    Ÿ   网络延迟:显示计算机之间网络路径的延迟。

    Ÿ   Vuser负载方案:显示负载测试的每秒期间,执行Vuser脚本的Vuser数及其状态。该图有助于确定服务器在特定时刻的Vuser负载。

    Ÿ   事务响应时间:显示在负载测试的每秒期间,执行事务所花费的平均时间。该图帮助您确定服务器性能是否在设定的事务性能可接受时间范围之内。

    Ÿ   术语:对报告中特殊词汇的解释。

    (3)“其他图”选项卡

    “其他图”选项卡中的选项用于设置在报告中收录当前Analysis会话中生成的图,其界面如图2-104所示。

    图2-104  Word报告“其他图”选项卡界面

    在报告中包含以下几个选项:

    Ÿ   图注释:选择该选项,以包括Analysis窗口“用户注释”选项卡中为图输入的文本。

    Ÿ   添加:添加Analysis会话尚未生成的其他LoadRunner图。所选择的图将被生成并添加到Word报告中。

    Ÿ   删除:删除Analysis会话已经生成的其他LoadRunner图。

    Ÿ   向上:可以调整所选定内容的位置,每点击一次向上移动一项。

    Ÿ   向下:可以调整所选定内容的位置,每点击一次向下移动一项。

    Ÿ   选中选定内容:选择所选的一项内容,该项显示在蓝色框中,单击该按钮该项前的复选框显示对号,即为选中。

    Ÿ   取消选中选定内容:选择已选的一项内容,该项显示在蓝色框中,单击该按钮该项前的复选框中对号消失,即取消该内容的选择。

    配置好后单击“OK”按钮,将开始生成Word报告。

  • 网站开发测试工具

    2009-04-15 16:03:03

    转载地址:http://www.51testing.com/html/72/n-113072.html

      通常在发布新的网站、添加新功能或者升级系统之前,都需要进行测试。对程序员、设计人员和生意人来说,最糟糕的一件事情就是登陆到一个无法使用的网站,这会赶走客户,损害公司的声誉,并会导致更多的工作、更多的头痛事以及更多的利润损失。

      幸运的是,目前有很多用于网络开发测试的强大工具。这些工具可以测试所有你所需要的,从CSS确认到网站速度。所有网站的共同目标都是:确保用户和客户顺利地使用网站服务。使用下面这些工具可以作为网站开发过程的最后步骤。

      1. WebSitePulse测试工具

      网址:http://www.websitepulse.com/

      想要快速测试响应时间、文件尺寸以及链接数量吗?WebSitePulse测试工具提供了一系列快速易用的测试方法,可以给出从网站速度到链接错误等所有的情况。还提供文件大小、转移速度以及DNS的数目。

      2. 多浏览器测试工具Xenocode Browser Sandbox

      网址:http://www.xenocode.com/browsers/

      浏览器测试是网站开发中最乏味和令人沮丧的部分。设计人员和程序员在测试网站在IE6平台效果的时候经常会大呼小叫。浏览器测试中另一个困难的部分就是没有任何的开发人员能够在同一台计算机中拥有所有的浏览器来进行测试。

      进入XenoCode Brower Sandbox,它可以同时虚拟所有的常用浏览器,而不需要安装软件。遗憾的是,XenoCode Browser Sandbox在某些浏览器中运行速度很慢,并且目前还没有Mac版本。

      3. Firebug Firefox 扩展插件

      网址:http://getfirebug.com/

      这是所有的程序员最喜欢的扩展软件,Firebug是测试前端代码和CSS的最好的调试软件。如果出现任何不符合格式的图像或类型,最好的解决办法就是用Firebug检查出来。甚至可以在里面改变样式来检查网站是如何在浏览器中的渲染效果。

      4. Load Impact负载测试软件

      网址:http://loadimpact.com/

      如果一个网站正在运行病毒、Digg、Twitter和StubleUpon,一次汇聚了多种应用程序,它能够承受这种负载吗?Load Impact可以帮助回答这个问题。它在网络服务器上模拟大量的用户下载,来决定该网站是否能够承受高流量负荷。该软件拥有一个免费版本和几个付费版本。

      5. Safari Web Inspector

      网址:http://www.apple.com/safari/

      苹果公司的Safari网络浏览器的其中一个亮点就是网络监测功能。Web Inspector,仅在打开开发面板之后才可使用,它能显示类型表单、图像、网页上的脚本。虽然如此,Web Inspector最实用的部分就是它的Network功能,该功能实时地显示文件和脚本从服务器转换到浏览器的命令和速度。可以使用这款软件找出哪个脚本、文件或图像在浏览器中占用最大的空间,然后进行调整。

      6. Web Developer Firefox Extension

      网址:https://addons.mozilla.org/en-US/firefox/addon/60

      Web Developer是一款健壮的Firebox 插件,当测试一个网站的时候,所有开发人员都要参与其中。它提供了广泛的测试,包括测试受损的图片,测试多重屏幕尺寸的布局,查看cookie信息以及验证标记。对Firefox用户来说它是最终的测试工具。

      7. W3C 验证服务

      W3C是所有网站验证的标准。W3C Validator以工业标准为基础,查看网站的标记并显示错误信息。它有多种语言和种类。 下面是一些重要的验证工具:

      -W3C Markup Validation 网址: http://validator.w3.org/

      -W3C CSS Validation 网址:http://jigsaw.w3.org/css-validator/

      -W3C mobileOK Checker 网址:http://validator.w3.org/mobile/

      -W3C Link Checker 网址:http://validator.w3.org/checklink

      -W3C Feed Validation Service 网址:http://validator.w3.org/feed/

      这些工具都可以用来尽早地检测出Bug来保证网站稳定高速运行的。至少可以让开发人员意识到,除了对着IE6显示的糟糕页面大呼小叫之外,他们还有很多选择。

  • lr下载文件脚本

    2008-11-27 10:01:04

    Action()
    {
     int iflen;    //文件大小
     long lfbody;  //响应数据内容大小
     char *string;  
     web_set_max_html_param_len("60000000");  //设置最大长度

     web_reg_save_param("fcontent", "LB=", "RB=", "SEARCH=BODY", LAST); 

      //将响应信息存放到fcontent变量

     web_url("下载页面",
             "URL=http://192.168.20.160/DownLoad/DownLoad/download.aspx?  DownType=caj&Page=&Email=&FileName={NewParam}&FileTitle={NewParam}&DBCode=cmfd&Version=2.0",  //文件下载路径
      "Resource=0",
      "RecContentType=text/html",
      "Referer=http://192.168.20.160/DownLoad/DownLoad",  //可为空"Referer=",
      "Snapshot=t3.inf",
      "Mode=HTML",
      LAST);
      string=lr_eval_string("E:\\{NewParam}.caj");  //NewParam中存放着源数据文件名
      lr_message(string);
    //lr_output_message("####%s",lr_eval_string("{NewParam}"));  //输出当前参数取值

    iflen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
      if(iflen > 0)
     {
        //以写方式打开文件
        if((lfbody = fopen(string, "wb")) == NULL)
          {
            lr_output_message("文件操作失败!");
            return -1;
          }
        //写入文件内容
        fwrite(lr_eval_string("{fcontent}"), iflen, 1, lfbody);
        //关闭文件
        fclose(lfbody);
          }
         return 0;
    }
        int flen,rNum;   //定义一个整型变量保存获得文件的大小
        long filedes;    //保存文件句柄
        char filepath[512],filename[512];  //保存文件路径及文件名

        rNum = rand() % 10000000;  //生成一个随机的文件全路径名
        itoa(rNum, filename, 10);  //filename形式为随机5位数字:29224,18916,……
       
        strcpy(filepath,"E:\\");
        strcat(filepath,filename);
        strcat(filepath,".caj");
                                   //filepath为E:\\filename.caj
        lr_message(filepath);

  • 测试常用文本编辑转换工具

    2008-11-13 14:42:54

    在性能测试时,经常需要操纵大量测试数据。有时候数据并不是我们想要的那么完美。所有要找下工具批量的修改测试数据。
    1、UltraEdit-32
    功能强大,可以对纵列进行复制转换。可以将数据中雷同的数据去掉。
    2、文本整理器3.0
    专门进行文本修改,例如去掉所有空格、段首缩进、去掉段落间空行、半角转换等等。
    3、UltraCompare 6.0
    比较两文本内容差异。
    4、Excel
    可以自动生成序号及列操作。
    5、URL编(解)码工具。
    测试网页用的,例如:性能测试中的“检索词参数化”。
    http://www.baidu.com/s?kw=&sc=web&cl=3&tn=sitehao123&ct=0&rn=&lm=&ie=gb2312&rs2=&myselectvalue=&f=&pv=&z=&from=&word=%BF%C6%D1%A7
    word=%BF%C6%D1%A7 这里就是“科学”的编码。每个公司都有不同的编码器。
    6、记事本
    Ctrl+G可以查看当前光标位置所在行(取消自动换行)。 
  • loadrunner检查点

    2008-09-17 16:44:24

     

    web_reg_find
    web_global_verification
    web_reg_find 函数是注册类型函数。它将注册对 HTML 页上的文本字符串进行的搜索。注册意味着它不会立即执行搜索,仅在执行下一个操作函数(如web_url)之后,才会执行检查。注意,如果正在使用并发函数组,则
    web_reg_find 函数仅在分组结束后才会执行。该函数与 web_find 函数的不同之处在于:它并不局限于基于 HTML的脚本。

    在runtime setting->Preferences里面,把Enable image and text check选中,否则不执行该查找函数
    INSERT菜单中,选择new step—>web_reg_find()

  • 微软发布3款SQL INJECTION攻击检测工具

    2008-06-30 11:54:47

    随着 SQL INJECTION 攻击的明显增多,微软近日发布了三个免费工具,帮助网站管理员和检测存在的风险并对可能的攻击进行拦截。

        Scrawlr

        下载地址:https://download.spidynamics.com/Products/scrawlr/

        这个微软和 HP合作开发的工具,会在网站中爬行,对所有网页的查询字符串进行分析并发现其中的 SQL INJECTION 风险。Scrawlr 使用了部分 HP WebInspect  相同的技术,但只检测 SQL INJECTION 风险。Scrawlr 从一个起始 URL 入口,爬遍整个网站,并对站点中所有网页进行分析以找到可能存在的漏洞。

        Microsoft Source Code Analyzer for SQL Injection

        下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA&displaylang=en

        这款被称作 MSCASI 的工具可以检测 ASP 代码并发现其中的 SQL INJECTION 漏洞(ASP 代码以 SQL INJECTION 漏洞著称),你需要向 MSCASI 提供原始代码,MSCASI 会帮你找到存在风险的代码位置。

        URLScan 3.0

        下载地址: http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1697

        该工具会让 IIS 限制某些类型的 HTTP 请求,通过对特定 HTTP 请求进行限制,可以防止某些有害的请求在服务器端执行。UrlScan 通过一系列关键词发现恶意请求,并阻止恶意请求的执行。

  • 15款最好的Windows安全检测工具

    2008-06-25 10:50:09

    关于安全测试工具,我发现大体上你都能购买到。然而,还有一些是免费的工具,没有这些工具我会举步维艰,所以我将两种类型的工具一同与你分享。

    基于Widnows平台的电脑,有7类常见的安全测试工具,它们是:

    1. 端口扫描 (Port scanners)

    2. 网络/操作系统弱点扫描 (Network/OS vulnerability scanners)

    3. 应用程序/数据库弱点扫描 (Application/database vulnerability scanners)

    4. 密码破解 (Password crackers)

    5. 文件查找工具 (File searching tools)

    6. 网络分析 (Network analyzers)

    7. 漏洞检查工具


    SuperScan version 3  
    www.foundstone.com/resources/proddesc/superscan3.htm

    快速并且易用的端口扫描器,可以在运行的系统中寻找开放的端口和正在运行的服务,抓取banner信息包括软件的版本


    SoftPerfect Network Scanner

    www.softperfect.com/products/networkscanner

    映射MAC地址到IP地址,可以帮你定位随机的有线和无线的系统

    NetBIOS Auditing Tool (NAT)

    www.cotse.com/tools/netbios.htm

    灵巧的Windows网络共享密码的破解工具

    Winfingerprint

    http://winfingerprint.sourceforge.net

    Windows 信息列举工具,它可以搜索到补丁的等级信息,NetBIOS信息,用户信息等


    Metasploit

    www.metasploit.org

    一个强大的查找基于Windows平台弱点的工具


    Cain & Abel

    www.oxid.it

    一个很不错的混合密码破解工具


    商用:

    QualysGuard

    www.qualys.com

    强大且易用且全面的网络/操作系统弱点扫描工具,适用于上千种新老漏洞。


    GFI LANguard Network Security Scanner

    www.gfi.com/lannetscan


    一套完美的定位于Windows系统,功能强大且价格低廉的的网络/操作系统弱点扫描工具


    N-Stealth

    www.nstalker.com

    一款物美价廉的针对运行IIS的系统扫描工具


    WebInspect

    www.spidynamics.com/products/webinspect/index.html

    彻底的挖掘基于IIS,Apach等系统的Web应用程序弱点


    WinHex

    www.winhex.com/winhex/index-m.html

    查找运行程序遗留于内存中的敏感信息 -- 完全搜索类似于“密码”,“SSN”,等等之类的文本信息。以发现那些未清除干净的敏感信息

    AppDetective for MS SQL Server

    www.appsecinc.com/products/appdetective/mssql

    全面的SQL Server 数据库安全扫描工具

    Proactive Password Auditor

    www.elcomsoft.com/ppa.html

    一个效果明显且简单易用的用户密码破解工具 -- 支持Rainbow Table


    Effective File Search

    www.sowsoft.com/search.htm

    强大的文本搜索工具,适用于搜索本地文件或服务器上的共享文件。 -- 完全搜索类似于“密码”,“SSN”,等等之类的文本信息。 以发现那些未被保护的敏感信息


    EtherPeek

    www.wildpackets.com/products/etherpeek/overview

    完美的网络分析器,可以找出不怀好意的系统,未被认可的协议, 找出上层的讲话者, 以及更多


    当你装备你的安装测试工具箱时,你会发现没有一款工具是最好的。也就是说那些安全检测工具不是万能的。应用程序、操作系统和网络知识和重要经验才会是最重要的。

  • 十大Web漏洞扫描程序

    2008-06-25 10:37:37

    现在有许多消息令我们感到Web的危险性,如《看Web如何摧毁你的企业》和《微软Office安全漏洞 网民即将面临最大威胁》等文章,因此,当前如何构建一个安全的Web环境成为网管员和安全管理员们义不容辞的责任。但是巧妇难为无米之炊,该选择哪些安全工具呢?扫描程序可以在帮助造我们造就安全的Web站点上助一臂之力,也就是说在黑客“黑”你之前,先测试一下自己系统中的漏洞。我们在此推荐10大Web漏洞扫描程序,供您参考。

      1. Nikto

      这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版本,还有250多个服务器上的版本特定问题)进行全面的测试。其扫描项目和插件经常更新并且可以自动更新(如果需要的话)。

      Nikto可以在尽可能短的周期内测试你的Web服务器,这在其日志文件中相当明显。不过,如果你想试验一下(或者测试你的IDS系统),它也可以支持LibWhisker的反IDS方法。

      不过,并非每一次检查都可以找出一个安全问题,虽然多数情况下是这样的。有一些项目是仅提供信息(“info only” )类型的检查,这种检查可以查找一些并不存在安全漏洞的项目,不过Web管理员或安全工程师们并不知道。这些项目通常都可以恰当地标记出来。为我们省去不少麻烦。

      2. Paros proxy

      这是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序,可以评估Web应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通信记录程序,Web圈套程序(spider),hash 计算器,还有一个可以测试常见的Web应用程序攻击(如SQL注入式攻击和跨站脚本攻击)的扫描器。

      3. WebScarab:

      它可以分析使用HTTP 和HTTPS协议进行通信的应用程序,WebScarab可以用最简单地形式记录它观察的会话,并允许操作人员以各种方式观查会话。如果你需要观察一个基于HTTP(S)应用程序的运行状态,那么WebScarabi就可以满足你这种需要。不管是帮助开发人员调试其它方面的难题,还是允许安全专业人员识别漏洞,它都是一款不错的工具。

      4. WebInspect:

      这是一款强大的Web应用程序扫描程序。SPI Dynamics的这款应用程序安全评估工具有助于确认Web应用中已知的和未知的漏洞。它还可以检查一个Web服务器是否正确配置,并会尝试一些常见的Web攻击,如参数注入、跨站脚本、目录遍历攻击(directory traversal)等等。

      5. Whisker/libwhisker :

      Libwhisker是一个Perla模块,适合于HTTP测试。它可以针对许多已知的安全漏洞,测试HTTP服务器,特别是检测危险CGI的存在。Whisker是一个使用libwhisker的扫描程序。

      6. Burpsuite:

      这是一个可以用于攻击Web应用程序的集成平台。Burp套件允许一个攻击者将人工的和自动的技术结合起来,以列举、分析、攻击Web应用程序,或利用这些程序的漏洞。各种各样的burp工具协同工作,共享信息,并允许将一种工具发现的漏洞形成另外一种工具的基础。

      7. Wikto:

      可以说这是一个Web服务器评估工具,它可以检查Web服务器中的漏洞,并提供与Nikto一样的很多功能,但增加了许多有趣的功能部分,如后端miner和紧密的Google集成。它为MS.NET环境编写,但用户需要注册才能下载其二进制文件和源代码。

        8. Acunetix Web Vulnerability Scanner :

      这是一款商业级的Web漏洞扫描程序,它可以检查Web应用程序中的漏洞,如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专业级的Web站点安全审核报告。

      9. Watchfire AppScan:

      这也是一款商业类的Web漏洞扫描程序。AppScan在应用程序的整个开发周期都提供安全测试,从而测试简化了部件测试和开发早期的安全保证。它可以扫描许多常见的漏洞,如跨站脚本攻击、HTTP响应拆分漏洞、参数篡改、隐式字段处理、后门/调试选项、缓冲区溢出等等。

      10. N-Stealth:

      N-Stealth是一款商业级的Web服务器安全扫描程序。它比一些免费的Web扫描程序,如Whisker/libwhisker、 Nikto等的升级频率更高,它宣称含有“30000个漏洞和漏洞程序”以及“每天增加大量的漏洞检查”,不过这种说法令人质疑。还要注意,实际上所有通用的VA工具,如Nessus, ISS Internet Scanner, Retina, SAINT, Sara等都包含Web 扫描部件。(虽然这些工具并非总能保持软件更新,也不一定很灵活。)N-Stealth主要为Windows平台提供扫描,但并不提供源代码。

  • 2006年度100款最好安全工具

    2008-06-25 10:27:05

    在2000和2003年很成功的推出了安全工具调查后,Insecure.Org
    很高兴为大家带来2006年度的安全工具调查。我-Fyodor对nmap-hackers
    邮件列表中的用户进行了调查,让大家来分享他们最喜欢用的工具,结果有3243名用户提供了反馈信息。我从反馈信息中选取了大家最喜欢的前100种工具,
    并将他们进行了分类。建议安全界人士仔细阅读这份列表,并对不熟悉或未听说过的工具进行研究,相信会有很大帮助。我自己就从中发现了很多以前没有使用过但
    很好用的工具。当很多菜鸟问我“我不知道当一个黑客该从何开始”时,我就让他们来读读这篇文章。
    受访者被需要列出各种平台上的开源和商业工具。商业工具会在列表中进行标注。Nmap Security Scanner 没有参和投票,因为调查是在Nmap的邮件列表中进行的。因为受访者多为黑客的原因,所以此列表中攻击型的工具偏多一些,防守型的则少一些。

    表中每个工具都含有以下一种或几种属性:2003年调查列表中未出现的工具;相对于2003年调查列表排名升或降;需要花钱购买。但能够免费获得限制、演
    示、试用版本软件;能够工作于Linux平台之上;能够工作于OpenBSD、FreeBSD、Solaris
    或其他UNIX平台之上;能够工作于苹果Mac OS
    X平台之上;能够工作于微软Windows平台之上;提供命令行操作方式;提供图像化用户界面;在互连网上能够找到源代码。
    假如您发现列表中的工具备更新或有其他建议--或有更好的工具图标 能够发送邮件给我。假如您的工具入选此列表了,或您认为您网站的访客也许会对此列表感兴趣,欢迎您通过link banners把本文链接到您网站上。以下开始为正式列表,按受欢迎程度降序排列:
    #1 Nessus:最好的UNIX漏洞扫描工具
    Nessus
    是最好的免费网络漏洞扫描器,他能够运行于几乎任何的UNIX平台之上。他不止永久升级,还免费提供多达11000种插件(但需要注册并接受EULA-
    acceptance--终端用户授权协议)。他的主要功能是远程或本地(已授权的)安全检查,客户端/服务器架构,GTK(Linux下的一种图像界
    面)图像界面,内置脚本语言编译器,能够用其编写自定义插件,或用来阅读别人写的插件。Nessus 3 已研发完成(now closed
    source),其现阶段仍然免费,除非您想获得最新的插件。
    --------------------------------------------------------------------------------
    #2 Wireshark:网络嗅探工具
    Wireshark
    (2006年夏天之前叫做
    Ethereal)是一款很棒的Unix和Windows上的开源网络协议分析器。他能够实时检测网络通讯数据,也能够检测其抓取的网络通讯数据快照文
    件。能够通过图像界面浏览这些数据,能够查看网络通讯数据包中每一层的周详内容。Wireshark拥有许多强大的特性:包含有强显示过滤器语言
    (rich display filter language)和查看TCP会话重构流的能力;他更支持上百种协议和媒体类型;
    拥有一个类似tcpdump(一个Linux下的网络协议分析工具)的名为tethereal的的命令行版本。不得不说一句,Ethereal已饱受许
    多可远程利用的漏洞折磨,所以请经常对其进行升级,并在不安全网络或敌方网络(例如安全会议的网络)中谨慎使用之。
    --------------------------------------------------------------------------------
    #3 Snort:一款广受欢迎的开源IDS(Intrusion Detection System)(入侵检测系统)工具

    款小型的入侵检测和预防系统擅长于通讯分析和IP数据包登录(packet
    logging)。Snort除了能够进行协议分析、内容搜索和包含其他许多预处理程式,还能够检测上千种蠕虫病毒、漏洞、端口扫描连同其他可疑行为检
    测。Snort使用一种简单的基于规则的语言来描述网络通讯,连同判断对于网络数据是放行还是拦截,其检测引擎是模块化的。
    用于分析Snort警报的网页形式的引擎 Basic Analysis and Security Engine (BASE)可免费获得。
    开源的Snort为个人、小企业、集团用户提供良好的服务。其母公司SourceFire提供丰富的企业级特性和定期升级以丰富其产品线。提供(必须注册)5天免费的规则试用,您也能够在Bleeding Edge Snort找到很多免费规则。
    --------------------------------------------------------------------------------
    #4 Netcat:网络瑞士军刀

    个简单的小工具能够读和写经过TCP或UDP网络连接的数据。他被设计成一个可靠的能够被其他程式或脚本直接和简单使用的后台工具。同时,他也是个功能
    多样的网络调试和检查工具,因为他能够生成几乎任何您想要的网络连接,包括通过端口绑定来接受输入连接。Netcat最早由Hobbit在1995年发
    布,但在其广为流传的情况下并没有得到很好的维护。现在nc110.tgz已很难找了。这个简单易用的工具促使了很多人写出了很多其他Netcat应
    用,其中有很多功能都是原版本没有的。其中最有趣的是Socat,他将Netcat扩展成能够支持多种其他socket类型,SSL加密,SOCKS代
    理,连同其他扩展的更强大的工具。他也在本列表中得到了自己的位置(第71位)。更有Chris Gibson's
    Ncat,能够提供更多对便携设备的支持。其他基于Netcat的工具更有OpenBSD's
    nc,Cryptcat,Netcat6,PNetcat,SBD,又叫做GNU Netcat。
    --------------------------------------------------------------------------------
    #5 Metasploit Framework:黑掉整个星球
    2004
    年Metasploit的发布在安全界引发了强烈的地震。没有一款新工具能够一发布就挤进此列表的15强(也就是说2000年和2003年的调查没有这种
    情况),更何况此工具更在5强之列,超过了很多广为流传的诞生了几十年的老牌工具。他是个强大的开源平台,供研发、测试和使用恶意代码。这种可扩展的模
    型将负载控制、编码器、无操作生成器和漏洞整合在一起,使得Metasploit
    Framework成为一种研究高危漏洞的途径。他自带上百种漏洞,还能够在online exploit building
    demo(在线漏洞生成演示)看到如何生成漏洞。这使得您自己编写漏洞变得更简单,他势必将提升非法shellcode代码的水平,扩大网络阴暗面。和其
    相似的专业漏洞工具,例如Core
    Impact和Canvas已被许多专业领域用户使用。Metasploit降低了这种能力的门槛,将其推广给大众。
    --------------------------------------------------------------------------------
    #6 Hping2:一种网络探测工具,是ping的终极变种

    个小工具能够发送自定义的ICMP,UDP和TCP数据包,并接收任何反馈信息。他的灵感来源于ping命令,但其功能远远超过ping。他还包含一个小
    型的路由跟踪模块,并支持IP分段。此工具能够在常用工具无法对有防火墙保护的主机进行路由跟踪/ping/探测时大显身手。他经常能够帮助您找出防火墙
    的规则集,当然还能够通过他来学习TCP/IP协议,并作一些IP协议的实验。
    --------------------------------------------------------------------------------
    #7 Kismet:一款超强的无线嗅探器
    Kismet
    是一款基于命令行(ncurses)的802.11
    layer2无线网络探测器、嗅探器、和入侵检测系统。他对网络进行被动嗅探(相对于许多主动工具,例如NetStumbler),能够发现隐形网络(非
    信标)。他能够通过嗅探TCP、UDP、ARP和DHCP数据包来自动检测网络IP段,以Wireshark/TCPDump兼容格式记录通讯日志,更加
    能够将被检测到的网络分块并按照下载的分布图进行范围估计。如您所想,这款工具一般被wardriving所使用。嗯!更有warwalking、
    warflying和warskating……
    --------------------------------------------------------------------------------
    #8 Tcpdump:最经典的网络监控和数据捕获嗅探器
    在Ethereal
    (Wireshark)出现之前大家都用Tcpdump,而且很多人现在还在一直使用。他也许没有Wireshark那么多花里胡哨的东西(比如漂亮的图
    形界面,亦或数以百计的应用协议逻辑分析),但他能出色的完成很多任务,并且漏洞很少,消耗系统资源也很少。他很少添加新特性了,但经常修复一些
    bug和维持较小的体积。他能很好的跟踪网络问题来源,并能监控网络活动。其Windows下的版本叫做WinDump。Libpcap/WinPcap
    的包捕获库就是基于TCPDump,他也用在Nmap等其他工具中。
    --------------------------------------------------------------------------------
    #9 Cain and Abel:Windows平台上最好的密码恢复工具
    UNIX
    用户经常声称正是因为Unix平台下有很多很好的免费安全工具,所以Unix才会成为最好的平台,而Windows平台一般不在他们的考虑范围之内。他
    们也许是对的,但Cain &
    Abel确实让人眼前一亮。这种只运行于Windows平台的密码恢复工具能够作很多事情。他能够通过嗅探网络来找到密码、利用字典破解加密密码、暴力破
    解密码和密码分析、记录VoIP会话、解码很复杂的密码、星号查看、剥离缓存密码连同分析路由协议。另外其文档也很齐全(well
    documented)。
    --------------------------------------------------------------------------------
    #10 John the Ripper:一款强大的、简单的连同支持多平台的密码破解器
    John
    the Ripper是最快的密码破解器,当前支持多种主流Unix
    (官方支持11种,没有计算不同的架构)、DOS、Win32、BeO和OpenVMS。他的主要功能就是检测弱Unix密码。他支持主流Unix下的多
    种(3种)密码哈希加密类型,他们是Kerberos、AFS连同Windows NT/2000/XP
    LM。其他哈希类型能够通过补丁包加载。假如您希望从一些单词表开始的话,您能够在这里、这里和这里找到。
    --------------------------------------------------------------------------------
    #11 Ettercap:为交换式局域网提供更多保护
    Ettercap
    是一款基于终端的以太网络局域网嗅探器/拦截器/日志器。他支持主动和被动的多种协议解析(甚至是ssh和https这种加密过的)。还能够进行已建立连
    接的数据注入和实时过滤,保持连接同步。大部分嗅探模式都是强大且全面的嗅探组合。支持插件。能够识别您是否出在交换式局域网中,通过使用操作系统指纹
    (主动或被动)技术能够得出局域网结构。
    --------------------------------------------------------------------------------
    #12 Nikto:很全面的网页扫描器
    Nikto
    是一款开源的(GPL)网页服务器扫描器,他能够对网页服务器进行全面的多种扫描,包含超过3200种有潜在危险的文档/CGIs;超过625种服务器版
    本;超过230种特定服务器问题。扫描项和插件能够自动更新(假如需要)。基于Whisker/libwhisker完成其底层功能。这是一款很棒的工
    具,但其软件本身并不经常更新,最新和最危险的可能检测不到。
    --------------------------------------------------------------------------------
    #13 Ping/telnet/dig/traceroute/whois/netstat:基本命令

    然有很多重型的高科技网络安全工具,但是不要忘记其基础!任何网络安全人士都要对这些基本命令很熟悉,因为他们对大多数平台都适用(在Windows平
    台上whois为tracert)。他们能够随手捏来,当然假如需要使用一些更高级的功能能够选择Hping2和Netcat。
    --------------------------------------------------------------------------------
    #14 OpenSSH / PuTTY / SSH:访问远程电脑的安全途径
    SSH
    (Secure
    Shell)现在普遍应用于登录远程电脑或在其上执行命令。他为不安全网络上的两台不互信电脑间通讯提供安全加密,代替很不可靠的
    telnet/rlogin/rsh交互内容。大多UNIX使用开源的OpenSSH服务器和客户端程式。Windows用户更喜欢免费的PuTTY客户
    端,他也能够运行在多种移动设备上。更有一些Windows用户喜欢使用基于终端的OpenSSH模拟程式Cygwin。更有其他很多收费和免费的客户
    端。您能够在这里和这里找到。
    --------------------------------------------------------------------------------
    #15 THC Hydra:支持多种服务的最快的网络认证破解器
    假如您需要暴力破解一个远程认证服务,Hydra经常会是选择对象。他能够同时对30个以上的端口进行基于字典的快速破解,包括telnet、ftp、http、https、smb、多种数据库及其他服务。和THC Amap相同,此Hydra版本来自于民间组织THC。
    --------------------------------------------------------------------------------
    #16 Paros proxy:网页程式漏洞评估代理
    基于Java的网页程式漏洞评估代理。支持实时编辑和浏览HTTP/HTTPS信息,修改例如Cookie和表字段中的内容。他包含有网页通讯记录器、网页小偷(web spider)、哈希计算器和一个常用网页程式攻击扫描器,例如SQL注入和跨网站脚本等。
    --------------------------------------------------------------------------------
    #17 Dsniff:一款超强的网络评估和渗透检测工具套装
    由Dug
    Song精心设计并广受欢迎的这款套装包含很多工具。Dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf和
    webspy通过被动监控网络以获得敏感数据(例如密码、邮件地址、文档等)。Arpspoof、dnsspoof和macof能够拦截一般很难获取到的
    网络通讯信息(例如由于使用了第二层转换(layer-2 switching))。Sshmitm和webmitm通过ad-hoc
    PKI中弱绑定漏洞对ssh和https会话进行重定向实施动态monkey-in-the-middle(利用中间人攻击技术,对会话进行劫持)攻击。
    Windows版本能够在这里获取。总之,这是个很有用的工具集。他能完成几乎任何密码嗅探需要作的工作。
    --------------------------------------------------------------------------------
    #18 NetStumbler:免费的Windows 802.11嗅探器
    Netstumbler
    是广为人知的寻找开放无线访问接入点的Windows工具("wardriving")。其PDA上的WinCE系统版本名叫Ministumbler。
    此软件当前免费,但只能够运行在Windows平台上,且代码不公开。他使用很多主动方法寻找WAP,而Kismet或KisMAC则更多使用被动嗅探。
    --------------------------------------------------------------------------------
    #19 THC Amap:一款应用程式指纹扫描器
    Amap
    是一款很棒的程式,他能够检测出某一端口正在被什么程式监听。因为其独有的version
    detection特性,所以其数据库不会象Nmap相同变得很大,在Nmap检测某一服务失败或其他软件不起作用时能够考虑使用之。Amap的另一特
    性是其能够解析Nmap输出文档。这也是THC贡献的另一款很有价值的工具。
    --------------------------------------------------------------------------------
    #20 GFI LANguard:一款Windows平台上的商业网络安全扫描器
    GFI
    LANguard通过对IP网络进行扫描来发现运行中的电脑,然后尝试收集主机上运行的操作系统版本和正在运行的应用程式。我曾尝试收集到了
    Windows主机上的service
    pack级别、缺少的安全更新、无线访问接入点、USB设备、开放的共享、开放的端口、正在运行的服务和应用程式、主要注册表项、弱密码、用户和组别连同
    其他更多信息。扫描结果保存在一份可自定义/可查询的HTML报告文档中。他还含有一个补丁管理器,能够检查并安装缺少的补丁。试用版能够免费获得,但只
    能使用30天。
    --------------------------------------------------------------------------------
    #21 Aircrack:最快的WEP/WPA破解工具
    Aircrack
    是一套用于破解802.11a/b/g
    WEP和WPA的工具套装。一旦收集到足够的加密数据包他能够破解40到512位的WEP密匙,他也能够通过高级加密方法或暴力破解来破解WPA
    1或2网络。套装中包含airodump(802.11数据包捕获程式)、aireplay
    (802.11数据包注入程式)、aircrack(静态WEP和WPA-PSK破解),和airdecap(解密WEP/WPA捕获文档)。
    --------------------------------------------------------------------------------
    #22 Superscan:只运行于Windows平台之上的端口扫描器、ping工具和解析器
    SuperScan是一款Foundstone研发的免费的只运行于Windows平台之上的不开源的TCP/UDP端口扫描器。他其中还包含许多其他网络工具,例如ping、路由跟踪、http head和whois。
    --------------------------------------------------------------------------------
    #23 Netfilter:最新的Linux核心数据包过滤器/防火墙
    Netfilter
    是一款强大的运行于标准Linux核心上的包过滤器。他整合了用户空间IP列表工具。当前,他支持包过滤(无状态或有状态)、任何类型的网络地址和端口转
    换(NAT/NAPT)并支持多API层第三方扩展。他包含多种不同模块用来处理不规则协议,例如FTP。其他UNIX平台请参考Openbsd
    PF(只用于OpenBSD)或IP Filter。许多个人防火墙(personal firewalls)都支持Windows
    (Tiny、Zone Alarm、Norton、Kerio...),但都不提供上述IP列表。微软在Windows XP
    SP2中整合了一款很基础的防火墙,假如您不安装他,他就会不断地提示您安装。
    --------------------------------------------------------------------------------
    #24 Sysinternals:一款强大的很全面的Windows工具合集
    Sysinternals为Windows低级入侵提供很多很有用的小工具。其中一部分是免费的,有些还附有源代码,其他是需要付费使用的。受访者最喜欢此集合中的以下工具:
    ProcessExplorer 监控任何进程打开的任何文档和目录(类似Unix上的LSoF)。
    PsTools 管理(执行、挂起、杀死、查看)本地和远程进程。
    Autoruns 发现系统启动和登陆时加载了哪些可执行程式。
    RootkitRevealer 检测注册表和文档系统API异常,用以发现用户模式或内核模式的rootkit工具。
    TCPView 浏览每个进程的TCP和UDP通讯终点(类似Unix上的Netstat)。
    生产此软件的公司已被微软于2005年收购,所以其未来产品线特征无法预测。
    --------------------------------------------------------------------------------
    #25 Retina:eEye出品的商业漏洞评估扫描器
    象Nessus相同,Retina的功能是扫描网络中任何的主机并报告发现的任何漏洞。eEye出品,此公司以其security research而闻名。
    --------------------------------------------------------------------------------
    #26 Perl / Python / Ruby:简单的、多用途的脚本语言

    用的安全问题都能在网上找到工具解决,但使用脚本语言您能够编写您自己的(或编辑现有的)工具,当您需要解决某种特定问题的时候。快速、简单的脚本语言可
    以测试、发现漏洞甚至修复系统漏洞。CPAN上充满了类似Net::RawIP和执行协议的程式模块,能够使您的工作更加轻松。
    --------------------------------------------------------------------------------
    #27 L0phtcrack:Windows密码猜测和恢复程式
    L0phtCrack
    也叫作LC5,用来尝试通过哈希(通过某种访问方式获得的)方法破解诸如Windows
    NT/2000工作站、连网服务器、主域控制器、或活动目录密码,有时他也能够通过嗅探获得密码的哈希值。他还能够通过多种手段来猜测密码(字典、暴力破
    解等等)。Symantec公司2006年已停止了LC5的研发,但LC5
    installer的安装文档随处能够找到。免费试用版只能使用15天,Symantec已停止出售此软件的注册码,所以假如您不想放弃使用他,就必须
    找到一个和其对应的注册码生成器(key generator)。因为Symantec不再维护此软件,所以最好尝试用Cain and
    Abel或John the Ripper来代替之。
    --------------------------------------------------------------------------------
    #28 Scapy:交互式数据包处理工具
    Scapy
    是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。他提供多种类别的交互式生成数据包或数据包集合、对数据包进行
    操作、发送数据包、包嗅探、应答和反馈匹配等等功能。Python解释器提供交互功能,所以要用到Python编程知识(例如variables、
    loops、和functions)。支持生成报告,且报告生成简单。
    --------------------------------------------------------------------------------
    #29 Sam Spade:Windows网络查询免费工具
    Sam
    Spade为许多网络查询的一般工作提供了图像界面和方便的操作。此工具设计用于跟踪垃圾信息发送者,但他还能够用于许多其他的网络探查、管理和安全工
    作。他包含许多有用的工具,例如ping、nslookup、whois、dig、路由跟踪、查找器、原始HTTP网页浏览器、DNS地址转换、SMTP
    中继检查、网站搜索等等。非Windows用户能够在线使用更多其他工具。
    --------------------------------------------------------------------------------
    #30 GnuPG / PGP :对您的文档和通讯进行高级加密
    PGP是Phil Zimmerman出品的著名加密程式,能够使您的数据免受窃听连同其他危险。GnuPG是一款口碑很好的遵守PGP标准的开源应用(可执行程式名为gpg)。GunPG是免费的,而PGP对某些用户是收费的。
    --------------------------------------------------------------------------------
    #31 Airsnort:802.11 WEP加密破解工具
    AirSnort是一款用来恢复加密密码的无线LAN(WLAN)工具。Shmoo Group出品,工作原理是被动监控传输信息,当收集到足够多的数据包后开始计算加密密码。Aircrack和他很像。
    --------------------------------------------------------------------------------
    #32 BackTrack:一款极具创新突破的Live(刻在光盘上的,光盘直接启动) 光盘自启动Linux系统平台
    这款卓越的光盘自启动Linux系统是由Whax和Auditor合并而成。他以其终极多的安全和防护工具配以丰富的研发环境而闻名。重点在于他的用户模块化设计,用户能够自定义将哪些模块刻到光盘上,例如自己编写的脚本、附加工具、自定义内核等等。
    --------------------------------------------------------------------------------
    #33 P0f:万能的被动操作系统指纹工具
    P0f
    能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。P0f不增加任何直接或
    间接的网络负载,没有名称搜索、没有秘密探测、没有ARIN查询,什么都没有。某些高手还能够用P0f检测出主机上是否有防火墙存在、是否有NAT、是否
    存在负载平衡器等等!
    --------------------------------------------------------------------------------
    #34 Google:人人喜爱的搜索引擎
    Google
    当然不是什么安全工具,但是他终极庞大的数据库却是安全专家和入侵者最好的资源。假如您想了解某一公司,您能够直接用他搜索
    “site:target-domain.com”,您能够获得员工姓名、敏感信息(通常公司不对外公开的,但在Google上就难说了)、公司内部安装
    的软件漏洞等等。同样,假如您在Google上发现一个有某个漏洞的网站,Google还会提供给您其他有相同漏洞的网站列表。其中利用Google进行
    黑客活动的大师Johny Long建立了一个Google黑客数据库(Google Hacking
    Database)还出版了一本如何用Google进行黑客活动的书Google Hacking for Penetration Testers。
    --------------------------------------------------------------------------------
    #35 WebScarab:一个用来分析使用HTTP和HTTPS协议的应用程式框架

    的原理很简单,WebScarab记录他检测到的会话内容(请求和应答),使用者能够通过多种形式来查看记录。WebScarab的设计目的是让使用者可
    以掌控某种基于HTTP(S)程式的运作过程;也能够用他来调试程式中较难处理的bug,也能够帮助安全专家发现潜在的程式漏洞。
    --------------------------------------------------------------------------------
    #36 Ntop:网络通讯监控器
    Ntop
    以类似进程管理器的方式显示网络使用情况。在应用程式模式下,他能显示用户终端上的网络状况。在网页模式下,他作为网页服务器,以HTML文档形式显示网
    络状况。他是NetFlow/sFlow发射和收集器,通过一个基于HTTP的客户端界面来生成以ntop为中央的监控程式,RRD(Round
    Robin Database)(环形数据库)用来持续储存网络通讯状态信息。
    --------------------------------------------------------------------------------
    #37 Tripwire:很老的文档完整性检查器

    款文档和目录完整性检查器。Tripwire是一种能够帮助系统管理员和一般用户监控某一特定文档或目录变化的工具。能够用以对系统文档作日常(例如:每
    天)检查,Tripwire能够向系统管理员通报文档损坏或被篡改情况,所以这是一种周期性的文档破坏控制方法。免费的开源Linux版本能够在
    Tripwire.Org下载到。AIDE是UNIX平台的Tripwire替代品。或Radmind、RKHunter和chkrootkit也是很
    好的选择。Windows用户请使用Sysinternals出品的RootkitRevealer。
    --------------------------------------------------------------------------------
    #38 Ngrep:方便的数据包匹配和显示工具
    ngrep
    尽可能多的去实现GNU
    grep的功能,将他们应用于网络层。Ngrep是一款pcap-aware工具,他允许指定各种规则式或16进制表达式去对数据负载或数据包进行匹配。
    当前支持TCP、UDP、以太网上的ICMP、PPP、SLIP、FDDI、令牌环(Token Ring)和空接口(null
    interfaces),还能理解类似Tcpdump和snoop等相同形式的bpf过滤器逻辑。
    --------------------------------------------------------------------------------
    #39 Nbtscan:在Windows网络上收集NetBIOS信息
    NBTscan是一款在IP网络上扫描NetBIOS名称信息的工具。他通过给指定范围内任何地址发送状态查询来获得反馈信息并以表形式呈现给使用者。每一地址的反馈信息包括IP地址、NetBIOS电脑名、登录用户、MAC地址。
    --------------------------------------------------------------------------------
    #40 WebInspect:强大的网页程式扫描器
    SPI Dynamics' WebInspect应用程式安全评估工具帮您识别已知和未知的网页层漏洞。他还能检测到Web服务器的配置属性,连同进行常见的网页攻击,例如参数注入、跨网站脚本、目录游走等等。
    --------------------------------------------------------------------------------
    #41 OpenSSL:最好的SSL/TLS加密库
    OpenSSL
    项目的目的是通过开源合作精神研发一种健壮的、能够和同类型商业程式媲美的、全功能的,且开源的应用于SSL v2/v3(Secure
    Sockets Layer)和TLS v1(Transport Layer
    Security)协议的普遍适用的加密库工具集。本项目由世界范围内的志愿者们维护,他们通过互连网联络、计划和研发OpenSSL工具集及其相关文
    档。
    --------------------------------------------------------------------------------
    #42 Xprobe2:主动操作系统指纹工具
    XProbe是一款远程主机操作系统探查工具。研发者基于和Nmap相同的一些技术(same techniques),并加入了自己的创新。Xprobe通过ICMP协议来获得指纹。
    --------------------------------------------------------------------------------
    #43 EtherApe:EtherApe是Unix平台上的模仿etherman的图像界面网络监控器
    包含连接层、IP和TCP三种模式,EtherApe网络活动图通过不同颜色来标识不同协议。主机和连接的图像大小随通讯情况而变化。他支持以太网、FDDI、令牌环、ISDN、PPP和SLIP设备。他能够实施过滤网络通讯,也能够抓取网络通讯快照文档。
    --------------------------------------------------------------------------------
    #44 Core Impact:全自动的全面入侵检测工具
    Core
    Impact可不便宜(先准备个上万美元吧),但他却是公认的最强的漏洞检测工具。他有一个强大的定时更新的专业漏洞数据库,他能够轻易的黑掉一台计算
    机,并以他为跳板再去作别的事情。假如您买不起Core Impact,能够看看比较便宜的Canvas或免费的Metasploit
    Framework。当然,三个同时用是最好的了。
    --------------------------------------------------------------------------------
    #45 IDA Pro:Windows或Linux反编译器和调试器

    编译器是一块很重要的安全研究方向。他能够帮您拆解微软的补丁,以了解微软未公开并悄悄修补的漏洞,或直接以二进制的方式对某个服务器进行检测,以找出为
    何某个存在的漏洞不起作用。反编译器有很多,但IDA Pro是遵守二进制包事实标准(de-facto
    standard)的恶意代码和漏洞研究分析工具。这个图像化的、可编程的、可扩展的、支持多处理器的反编译器现在有了一个和Windows一模相同的
    Linux(命令行模式)版本。
    --------------------------------------------------------------------------------
    #46 SolarWinds:网络发现/监控/攻击系列工具
    SolarWinds生产和销售了许多专业的系统管理工具。安全相关的包括许多网络发现扫描器、一个SNMP暴力破解器、路由器密码解密器、TCP连接重置程式、最快最易用的一个路由器配置下载和上传程式等等。
    --------------------------------------------------------------------------------
    #47 Pwdump:一款Windows密码恢复工具
    Pwdump能够从Windows主机中取得NTLM和LanMan哈希值,无论系统密码是否启用。他还能显示系统中存在的历史密码。数据输出格式为L0phtcrack兼容格式,也能够以文档形式输出数据。
    --------------------------------------------------------------------------------
    #48 LSoF:打开文档列表
    这是一款Unix平台上的诊断和研究工具,他能够列举当前任何进程打开的文档信息。他也能够列举任何进程打开的通讯socket(communications sockets)。Windows平台上类似的工具备Sysinternals。
    --------------------------------------------------------------------------------
    #49 RainbowCrack:极具创新性的密码哈希破解器
    RainbowCrack
    是一款使用了大规模内存时间交换(large-scale time-memory
    trade-off)技术的哈希破解工具。传统的暴力破解工具会尝试每一个可能的密码,要破解复杂的密码会很费时。RainbowCrack运用时间交换
    技术对破解时间进行预计算,并将计算结果存入一个名叫"rainbow
    tables"的表里。预计算确实也会花费较长时间,但相对暴力破解来说则短多了,而且一旦预计算完成破解开始,那么破解所需要的时间就很很短了。
    --------------------------------------------------------------------------------
    #50 Firewalk:高级路由跟踪工具
    Firewalk使用类似路由跟踪的技术来分析IP数据包反馈,以确定网关ACL过滤器类型和网络结构。㊣ COPY BY TTIAN.NET ㊣ 这款经典的工具在2002年十月由scratch重写。这款工具的大部分功能Hping2的路由跟踪部分也都能实现。
    --------------------------------------------------------------------------------
    #51 Angry IP Scanner:一款很快的Windows IP 扫描器和端口扫描器
    Angry IP Scanner能够实现最基本的Windows平台上的主机发现和端口扫描。他的体积很的小,他还能够通过挂载插件(a few plugins)来获得主机其他信息。
    --------------------------------------------------------------------------------
    #52 RKHunter:一款Unix平台上的Rootkit检测器
    RKHunter是一款检测例如rootkit、后门、漏洞等恶意程式的工具。他采用多种检测手段,包括MD5哈希值对比、rootkits原始文档名检测、文档权限检测,连同LKM和KLD模块中的可疑字符串检测。
    --------------------------------------------------------------------------------
    #53 Ike-scan:VPN检测器和扫描器
    Ike
    -scan是一款检测IKE(Internet Key
    Exchange)服务传输特性的工具,IKE是VPN网络中服务器和远程客户端建立连接的机制。在扫描到VPN服务器的IP地址后,将改造过的IKE数
    据包分发给VPN网中的每一主机。只要是运行IKE的主机就会发回反馈来证实他存在。此工具然后对这些反馈数据包进行记录和显示,并将他们和一系列已知的
    VPN产品指纹进行对比。Ike-scan的VPN指纹包含来自Checkpoint、Cisco、Microsoft、Nortel和
    Watchguard的产品。
    --------------------------------------------------------------------------------
    #54 Arpwatch:持续跟踪以太网/IP地址配对,能够检查出中间人攻击
    Arpwatch是LBNL网络研究组出品的一款经典的ARP中间人(man-in-the-middle)攻击检测器。他记录网路活动的系统日志,并将特定的变更通过Email报告给管理员。Arpwatch使用LibPcap来监听本地以太网接口ARP数据包。
    --------------------------------------------------------------------------------
    #55 KisMAC:一款Mac OS X上的图像化被动无线网络搜寻器

    款Mac OS
    X下很流行的搜寻器和Kismet功能差不多,但和Kismet不同的是Kismet是基于命令行的,而KisMac有很漂亮的图像化界面,在OS
    X上出现得也比Kismet早。他同时还提供映射、Pcap兼容格式数据输入、登录和一些解密、验证破解功能。
    --------------------------------------------------------------------------------
    #56 OSSEC HIDS:一款开源的基于主机的入侵检测系统
    OSSEC
    HIDS的主要功能有日志分析、完整性检查、rootkit检测、基于时间的警报和主动响应。除了具备入侵检测系统功能外,他还一般被用在SEM/SIM
    (安全事件管理(SEM: Security Event Management)/安全信息管理(SIM:Security Information
    Management))解决方案中。因其强大的日志分析引擎,ISP(Internet service
    provider)(网络服务提供商)、大学和数据中央用其监控和分析他们的防火墙、入侵检测系统、网页服务和验证等产生的日志。
    --------------------------------------------------------------------------------
    #57 Openbsd PF:OpenBSD数据包过滤器

    其他平台上的Netfilter和IP
    Filter相同,OpenBSD用户最爱用PF,这就是他们的防火墙工具。他的功能有网络地址转换、管理TCP/IP通讯、提供带宽控制和数据包分级控
    制。他更有一些额外的功能,例如被动操作系统检测。PF是由编写OpenBSD的同一批人编写的,所以您完万能够放心使用,他已经过了很好的评估、设计
    和编码以避免暴露其他包过滤器(other  packet  filters)上的类似漏洞。
    --------------------------------------------------------------------------------
    #58 Nemesis:简单的数据包注入
    Nemesis
    项目设计目的是为Unix/Linux(现在也包含Windows了)提供一个基于命令行的、小巧的、人性化的IP堆栈。此工具套装按协议分类,并允许对
    已注入的数据包流使用简单的shell脚本。假如您喜欢Nemesis,您也许对Hping2也会感兴趣,他们是互补的关系。
    --------------------------------------------------------------------------------
    #59 Tor:匿名网络通讯系统
    Tor
    是一款面向希望提高其网络安全性的广大组织和大众的工具集。Tor的功能有匿名网页浏览和发布、实时信息、irc、ssh连同其他一些TCP协议相关的功
    能。Tor还为软件研发者提供一个可研发内置匿名性、安全性和其他私密化特性的软件平台。在Vidalia能够获得跨平台的图像化界面。
    --------------------------------------------------------------------------------
    #60 Knoppix:一款多用途的CD或DVD光盘自启动系统
    Knoppix
    由一系列典型的GNU/Linux软件组成,能够自动检测硬件环境,支持多种显卡、声卡、SCSI和USB设备连同其他外围设备。KNOPPIX作为一款
    高效的Linux光盘系统,能够胜任例如桌面系统、Linux教学光盘、救援系统等多种用途,经过这次在nmap中调查证实,他也是一款很小巧的安全工
    具。假如要使用更专业的Linux安全系统请看BackTrack。
    --------------------------------------------------------------------------------
    #61 ISS Internet Scanner:应用程式漏洞扫描器
    Internet Scanner是由Christopher Klaus在92年编写的一款开源的扫描器工具。现在这款工具已演变成了一个市值上亿美元生产无数安全产品的公司。
    --------------------------------------------------------------------------------
    #62 Fport:Foundstone出品的加强版netstat
    Fport
    能够报告任何本地机上打开的TCP/IP和UDP端口,并显示是何程式打开的端口。所以用他能够快速识别出未知的开放端口连同和其相关的应用程式。他只有
    Windows版本,但现在很多UNIX系统上的netstat也提供同样的功能(Linux请用'netstat -pan')。SANS
    article有Fport的使用说明和结果分析方法。
    --------------------------------------------------------------------------------
    #63 chkrootkit:本地rootkit检测器
    chkrootkit
    是一款小巧易用的Unix平台上的能够检测多种rootkit入侵的工具。他的功能包括检测文档修改、utmp/wtmp/last日志修改、界面欺骗
    (promiscuous interfaces)、恶意核心模块(malicious kernel modules)。
    --------------------------------------------------------------------------------
    #64 SPIKE Proxy:HTTP攻击
    Spike
    Proxy是一款开源的以发现网站漏洞为目的的HTTP代理。他是Spike Application Testing
    Suite的一部分,功能包括自动SQL注入检测、 网站爬行(web site crawling)、登录列表暴力破解、溢出检测和目录游走检测。
    --------------------------------------------------------------------------------
    #65 OpenBSD:被认为是最安全的操作系统
    OpenBSD
    是将安全作为操作系统首要任务的操作系统之一,甚至有时安全性级别要高于易用性,所以他骄人的安全性是不言而喻的。OpenBSD也很重视系统的稳定性
    和对硬件的支持能力。也许他们最伟大的创举就是创造了OpenSSH。
    OpenBSD用户对此系统之上的[pf](OpenBSD上的防火墙工具,本列表中第57位有介绍)也褒奖有佳。
    --------------------------------------------------------------------------------
    #66 Yersinia:一款支持多协议的底层攻击工具
    Yersinia
    是一款底层协议攻击入侵检测工具。他能实施针对多种协议的多种攻击。例如夺取生成树的根角色(生成树协议:Spanning Tree
    Protocol),生成虚拟CDP(Cisco发现协议:Cisco Discovery
    Protocol)邻居、在一个HSRP(热等待路由协议:Hot Standby Router
    Protocol)环境中虚拟成一个活动的路由器、制造假DHCP反馈,连同其他底层攻击。
    --------------------------------------------------------------------------------
    #67 Nagios:一款开源的主机、服务和网络监控程式
    Nagios
    是一款系统和网络监控程式。他能够监控您指定的主机和服务,当被监控对象发生任何问题或问题被解决时发出提示信息。他的主要功能有监控网络服务
    (smtp、pop3、http、nntp、ping等等)、监控主机资源(进程负载、硬盘空间使用情况等等)、当发现问题或问题解决时通过多种形式发出
    提示信息(Email、寻呼机或其他用户定义的方式)。
    --------------------------------------------------------------------------------
    #68 Fragroute/Fragrouter:一款网络入侵检测逃避工具集
    Fragrouter
    是一款单向分段路由器,发送(接收)IP数据包都是从攻击者到Fragrouter,将数据包转换成分段数据流发给受害者。很多入侵检测系统都不能重建一
    段被视为一个整体的网络数据(通过IP分段和TCP流重组),详情请见这篇文章(this classic
    paper)。Fragrouter能够帮助骇客在逃避入侵检测后发起基于IP的攻击。他是Dug
    Song出品的NIDSbench套装中的一部分。Fragroute是Dug song出品的另一款和Fragrouter相似的工具。
    --------------------------------------------------------------------------------
    #69 X-scan:一款网络漏洞扫描器

    款多线程、支持插件的漏洞扫描器。X-Scan主要功能有全面支持NASL(Nessus攻击脚本语言:Nessus Attack
    scrīpting
    Language)、检测服务类型、远程操作系统类型(版本)检测、弱用户名/密码匹配等等。最新版本能够在这里获取。请注意这是个中文网站(原文为英
    文,所以原文作者提醒英文读者这是个中文网站)。
    --------------------------------------------------------------------------------
    #70 Whisker/libwhisker:Rain.Forest.Puppy出品的CGI漏洞扫描器和漏洞库
    Libwhisker
    是一款Perl模板集用来测试HTTP。他的功能是测试HTTP服务器上是否存在许多已知的安全漏洞,特别是CGI漏洞。Whisker是一款基于
    libwhisker的扫描器,但是现在大家都趋向于使用Nikto,他也是基于libwhisker的。
    --------------------------------------------------------------------------------
    #71 Socat:双向数据传输中继

    似于Netcat的工具,能够工作于许多协议之上,运行于文档、管道、设备(终端或调制解调器等等)、socket(Unix、IP4、IP6-raw、
    UDP、TCP)、Socks4客户端、代理服务器连接、或SSL等等之间。他提供forking、logging和dumping,和不同模式的交互
    式处理通讯,连同更多其他选项。他能够作为TCP中继(单次触发:one-shot或daemon(Internet中用于邮件收发的后台程式))、作
    为基于daemon的动态Sockes化(socksifier)、作为Unix平台上sockets的shell接口、作为IP6中继、将面向TCP的
    程式重定向成串行线路(Serial
    Line)程式、或建立用来运行客户端或服务器带有网络连接的shell脚本相关安全环境(su和chroot)。
    --------------------------------------------------------------------------------
    #72 Sara:安全评审研究助手
    SARA是一款源于infamous SATAN扫描器的漏洞评估工具。此工具大约两个月更新一次,出品此工具的开源社区还维护着Nmap和Samba。
    --------------------------------------------------------------------------------
    #73 QualysGuard:基于网页的漏洞扫描器

    网站上以服务形式发布,
    所以QualysGuard没有研发、维护和升级漏洞管理软件或ad-hoc安全应用程式的负担。客户端能够安全的通过一个简单易用的网页访问
    QualysGuard。QualysGuard含有5000种以上的单一漏洞检查,一个基于推理的扫描引擎,而且漏洞知识库自动天天升级。
    --------------------------------------------------------------------------------
    #74 ClamAV:一款UNIX平台上的基于GPL(通用公开许可证:General Public License)的反病毒工具集
    ClamAV
    是一款强大的注重邮件服务器附件扫描的反病毒扫描器。他含有一个小巧的可升级的多线程daemon、一个命令行扫描器和自动升级工具。Clam
    AntiVirus基于AntiVirus package发布的开源病毒库,您也能够将此病毒库应用于您自己的软件中,但是别忘了经常升级。
    --------------------------------------------------------------------------------
    #75 cheops / cheops-ng:提供许多简单的网络工具,例如本地或远程网络映射和识别电脑操作系统
    Cheops
    提供许多好用的图像化用户界面网络工具。他含有主机/网络发现功能,也就是主机操作系统检测。Cheops-ng用来探查主机上运行的服务。针对某些服
    务,cheops-ng能够探查到运行服务的应用程式是什么,连同程式的版本号。Cheops已停止研发和维护,所以请最好使用cheops-ng。
    --------------------------------------------------------------------------------
    #76 Burpsuite:一款网页程式攻击集成平台
    Burp suite允许攻击者结合手工和自动技术去枚举、分析、攻击网页程式。这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用从而发动攻击。
    --------------------------------------------------------------------------------
    #77 Brutus:一款网络验证暴力破解器
    这款Windows平台上的暴力破解器通过字典猜测远程系统网络服务密码。他支持HTTP、POP3、FTP、SMB、TELNET、IMAP、NTP等等。不开放源码,UNIX平台上的类似软件有THC Hydra。
    --------------------------------------------------------------------------------
    #78 Unicornscan:另类端口扫描器
    Unicornscan
    是一款通过尝试连接用户系统(User-land)分布式TCP/IP堆栈获得信息和关联关系的端口扫描器。他试图为研究人员提供一种能够刺激
    TCP/IP设备和网络并度量反馈的终极接口。他主要功能包括带有任何TCP变种标记的异步无状态TCP扫描、异步无状态TCP标志捕获、通过分析反馈信
    息获取主动/被动远程操作系统、应用程式、组件信息。他和Scanrand相同都是另类扫描器。
    --------------------------------------------------------------------------------
    #79 Stunnel:用途广泛的SSL加密封装器
    stunnel
    用来对远程客户端和本地机(可启动inetd的:inetd-startable)或远程服务器间的SSL加密进行封装。他能够在不修改任何代码的情况
    下,为一般的使用inetd
    daemon的POP2、POP3和IMAP服务器添加SSL功能。他通过使用OpenSSL或SSLeay库建立SSL连接。
    --------------------------------------------------------------------------------
    #80 Honeyd:您私人的蜜罐系统
    Honeyd
    是个能够在网络上创建虚拟主机的小型daemon。能够对此虚拟主机的服务和TCP进行配置,使其在网络中看起来是在运行某种操作系统。Honeyd可
    以使一台主机在局域网中模拟出多个地址以满足网络实验环境的需要。虚拟主机能够被ping通,也能够对他们进行路由跟踪。通过对配置文档进行配置能够使虚
    拟电脑模拟运行任何服务。也能够使用服务代理替代服务模拟。他的库有很多,所以编译和安装Honeyd比较难。
    --------------------------------------------------------------------------------
    #81 Fping:一个多主机同时ping扫描程式
    fping
    是一款类似ping(1)(ping(1)是通过ICMP(网络控制信息协议Internet Control Message
    Protocol)协议回复请求以检测主机是否存在)的程式。Fping和ping不同的地方在于,您能够在命令行中指定要ping的主机数量范围,也可
    以指定含有要ping的主机列表文档。和ping要等待某一主机连接超时或发回反馈信息不同,fping给一个主机发送完数据包后,马上给下一个主机发送
    数据包,实现多主机同时ping。假如某一主机ping通,则此主机将被打上标记,并从等待列表中移除,假如没ping通,说明主机无法到达,主机仍然留
    在等待列表中,等待后续操作。
    --------------------------------------------------------------------------------
    #82 BASE:基础分析和安全引擎(Basic Analysis and Security Engine)
    BASE
    是一款基于PHP的能够搜索和实施安全事件的分析引擎,她的安全事件数据库来源于很多入侵检测系统、防火墙、网络检测工具生成的安全事件。他的功能包括一
    个查找生成器和搜索界面,用来搜索漏洞;一个数据包浏览器(解码器);还能够根据时间、传感器、信号、协议和IP地址等生成状态图。
    --------------------------------------------------------------------------------
    #83 Argus:IP网络事务评审工具
    Argus
    是一款固定模型的实时的流量监控器,用来跟踪和报告数据网络通讯流中任何事务的状态和性能。Argus为流量评估定制了一种数据格式,其中包括连通性、容
    量、请求、丢包、延迟和波动,这些就作为评估事务的元素。这种数据格式灵活易扩展,支持常用流量标识和度量,还能够获得指定的应用程式/协议的信息。
    --------------------------------------------------------------------------------
    #84 Wikto:网页服务器评估工具
    Wikto是一款检查网页服务器漏洞的工具。他和Nikto类似,但是添加了很多其他功能,例如一个整合了Google的后台发掘器。Wikto工作于MS ..NET环境下,下载此软件和源代码需要注册。
    --------------------------------------------------------------------------------
    #85 Sguil:网络安全监控器命令行分析器
    Sguil(按sgweel发音)是由network security analysts出品的网络安全分析工具。Sguil的主要组件就是个Snort/barnyard实时事件显示界面。他还包含一些网络安全监控的辅助工具和事件驱动的入侵检测系统分析报告。
    --------------------------------------------------------------------------------
    #86 Scanrand:一个异常快速的无状态网络服务和拓朴结构发现系统
    Scanrand是一款类似Unicornscan的无状态主机发现和端口扫描工具。他以降低可靠性来换取异常快的速度,还使用了加密技术防止黑客修改扫描结果。此工具是Dan Kaminsky出品的Paketto Keiretsu的一部分。
    --------------------------------------------------------------------------------
    #87 IP Filter:小巧的UNIX数据包过滤器
    IP
    Filter是一款软件包,能够实现网络地址转换(network address
    translation)(NAT)或防火墙服务的功能。他能够作为UNIX的一个核心模块,也能够不嵌入核心,强烈推荐将其作为UNIX的核心模块。
    安装和为系统文档打补丁要使用脚本。IP Filter内置于FreeBSD、NetBSD和Solaris中。OpenBSD能够使用Openbsd
    PF,Linux用户能够使用Netfilter。
    --------------------------------------------------------------------------------
    #88 Canvas:一款全面的漏洞检测框架
    Canvas
    是Aitel's ImmunitySec出品的一款漏洞检测工具。他包含150个以上的漏洞,他比Core
    Impact便宜一些,但是他也价值数千美元。您也能够通过购买VisualSploit
    Plugin实现在图像界面上通过拖拽就能够生成漏洞。Canvas偶尔也会发现一些ODay漏洞。
    --------------------------------------------------------------------------------
    #89 VMware:多平台虚拟软件
    VMware
    虚拟软件允许您在一个系统中虚拟运行另一个系统。这对于安全专家在多平台下测试代码和漏洞很有用。他只运行在Windows和Linux平台上,但他可
    以虚拟运行几乎任何的x86操作系统。他对建立沙箱(sandboxes)也很有用。在VMware虚拟系统上感染了流氓软件不会影响到宿主机器,能够
    通过加载快照文档恢复被感染了的虚拟系统。VMware不能创建虚拟系统的映像文档。VMware最近刚刚宣布免费。另一款在Linux下颇受瞩目的虚拟
    平台软件是Xen。
    --------------------------------------------------------------------------------
    #90 Tcptraceroute:一款基于TCP数据包的路由跟踪工具

    代网络广泛使用防火墙,导致传统路由跟踪工具发出的(ICMP应答(ICMP
    echo)或UDP)数据包都被过滤掉了,所以无法进行完整的路由跟踪。尽管如此,许多情况下,防火墙会准许反向(inbound)TCP数据包通过防火
    墙到达指定端口,这些端口是主机内防火墙背后的一些程式和外界连接用的。通过发送TCP
    SYN数据包来代替UDP或ICMP应答数据包,tcptraceroute能够穿透大多数防火墙。
    --------------------------------------------------------------------------------
    #91 SAINT:安全管理综合网络工具
    SAINT象Nessus、ISS Internet Scanner和Retina相同,也是一款商业漏洞评估工具。他以前是运行在UNIX系统之上的免费开源工具,但现在收费了。
    --------------------------------------------------------------------------------
    #92 OpenVPN:全功能SSL VPN解决方案
    OpenVPN
    是一款开源的SSL
    VPN工具包,他能够实现很多功能,包括远程登录、站对站VPN、WiFi安全、带有负载平衡的企业级远程登录解决方案、节点控制移交
    (failover)、严密的访问控制。OpenVPN运行于OSI
    2层或3层安全网络,使用SSL/TLS工业标准协议,支持灵活的基于证书、智能卡、二元验证的客户端验证方法,允许在VPN虚拟接口上使用防火墙规则作
    为用户或指定用户组的访问控制策略。OpenVPN使用OpenSSL作为其最好选择加密库
    --------------------------------------------------------------------------------
    #93 OllyDbg:汇编级Windows调试器
    OllyDbg
    是一款微软Windows平台上的32位汇编级的分析调试器。因其直接对二进制代码进行分析,所以在无法获得源代码的时候他很有用。OllyDbg含有
    一个图像用户界面,他的高级代码分析器能够识别过程、循环、API调用、交换、表、常量和字符串,他能够加载运行时程式,支持多线程。OllyDbg能够
    免费下载,但不开源。
    --------------------------------------------------------------------------------
    #94 Helix:一款注重安全防护的Linux版本
    Helix
    是一款自定义版本的Knoppix自启动Linux光盘系统。Helix远不止是一张自引导光盘。除了光盘启动到自定义的Linux环境,还具备超强的硬
    件支持能力,包含许多应付各种问题的软件。Helix尽量少的接触主机软硬资源。Helix不自动加载交换(swap)空间,不自动加载其他任何外围设
    备。Helix还能够自动加载Windows,以应对意外情况。
    --------------------------------------------------------------------------------
    #95 Bastille:Linux、Mac OS X和HP-UX的安全加强脚本
    Bastille
    使操作系统固若金汤,减少系统遭受危险的可能,增加系统的安全性。Bastille还能够评估系统当前的安全性,周期性的报告每一项安全配置及其工作情
    况。Bastille当前支持Red Hat(Fedora
    Core、Enterprise和Numbered/Classic版本)、SUSE、Debian、Gentoo和Mandrake这些Linux版
    本,更有HP-UX和Mac OS
    X。Bastille旨在使系统用户和管理员了解如何加固系统。在其默认的最坚固模式下,他不断的询问用户问题,并对这些问题加以解释,根据用户对问题不
    同的回答选择不同的应对策略。在其评估模式下,他会生成一份报告旨在告诉用户有哪些安全配置可用,同时也提示用户哪些配置被加固了。
    --------------------------------------------------------------------------------
    #96 Acunetix Web Vulnerability Scanner:商业漏洞扫描器
    Acunetix WVS自动检查您的网页程式漏洞,例如SQL注入、跨网站脚本和验证页面弱密码破解。Acunetix WVS有着很友好的用户界面,还能够生成个性化的网站安全评估报告。
    --------------------------------------------------------------------------------
    #97 TrueCrypt:开源的Windows和Linux磁盘加密软件
    TrueCrypt
    是一款很出色的开源磁盘加密系统。用户能够加密整个文档系统,他能够实时加密/解密而无需用户干涉,只要事先输入密码。很巧妙的hidden
    volume特性允许您对特别敏感的内容进行第二层加密来隐藏他的存在。所以就算加密系统的密码暴露,黑客也不知道更有隐藏内容存在。
    --------------------------------------------------------------------------------
    #98 Watchfire AppScan:商业网页漏洞扫描器
    AppScan按照应用程式研发生命周期进行安全测试,早在研发阶段就进行单元测试和安全确保。Appscan能够扫描多种常见漏洞,例如跨网站脚本、HTTP应答切开、参数篡改、隐藏值篡改、后门/调试选项和缓冲区溢出等等。
    --------------------------------------------------------------------------------
    #99 N-Stealth:网页服务器扫描器
    N-
    Stealth是一款网页服务器安全扫描器。他比Whisker/libwhisker和Nikto这些免费的网页扫描器升级得更频繁,但是他网站上声称
    的能够扫描30000种漏洞(30000 vulnerabilities and exploits)和每天添加数十种漏洞(Dozens of
    vulnerability checks are added every day)的说法是很值得怀疑的。象Nessus、ISS
    Internet
    Scanner、Retina、SAINT和Sara这些防入侵工具都含有网页扫描组件,他们都很难做到每日更新。N-Stealth运行于
    Windows平台之上,且不开源。
    --------------------------------------------------------------------------------
    #100 MBSA:微软基准安全分析器(Microsoft Baseline Security Analyzer)
    Microsoft
    Baseline Security
    Analyzer(MBSA)是一款简单易用的工具,帮助IT专业人员检测其小型和中型商业应用的安全性,将用户系统和微软安全建议(Microsoft
    security
    recommendations)进行比对,并给出特定的建议指导。通过和Windows内置的Windows自动升级代理器(Windows
    Update Agent)和微软自动升级基础架构(Microsoft Update
    infrastructure)的协作,MBSA能够确保和其他微软管理产品的数据保持一致,他们包括微软自动升级(Microsoft
    Update(MU))、Windows服务器自动升级服务(Windows Server Update
    Services(WSUS))、系统管理服务器(Systems Management
    Server(SMS))和微软运行管理器(Microsoft Operations
    Manager(MOM))。MBSA平均每周要扫描3百万台电脑。
    --------------------------------------------------------------------------------
    致谢

    先,我要感谢3243名Nmap用户,他们分享了对安全工具喜爱的信息,我才能完成这整个列表。列表中许多工具的说明都来源于工具的官方网页,或
    Debian和Freshmeat的安装包说明,并都删除了有市场推广性质的广告内容。我还要感谢Doug
    Hoyte为我整合了任何这些数据。感谢Catherine Tornabene和Mark Brewis对文章的校对。
    编后语:本文源
    自sectools.org,由天天安全网站内tulip忠于原文提供翻译。需注意的是里边的我指原文作者Fyodor,并非tulip本人。本文可任意
    转载和传播,但请保留天天安全网 tulip
    翻译字样,我们很感谢您的支持。也由于时间匆忙,不免有些错误,欢迎来EMAIL指正。本文很多工具在天天安全网都提供了本地下载,可通过搜索网站来查
    询。需要祝贺的是本次安全焦点的X-scan也入选了,排名第69,应该是国内的工具头次入选的。另外点击软件名称即可直接访问该软件官方站点。大家还可
    以访问 tulip blog 查阅完整的图文版。
  • LoadRunner脚本关联

    2008-05-04 16:50:56

    在对网站Web程序做压力测试时,编写脚本比较麻烦的就是做关联。LoadRunner9.0自动关联功能比8.1要强大许多。但有时候也会遇到点小麻烦,这里有个小经验:如果在手动关联不成功,自动关联也取不到值的情况下,可以更改脚本里参数值,例如都在原来的值后面加个“1”,重新运行脚本,然后Ctrl+F8,就会有意外的收获了。

  • 详解lr参数表中的参数分配规则

    2008-02-20 15:35:58

     

    <!--[if !supportMisalignedColumns]--> <!--[endif]-->

    Select next row

    Update value on

     

     

    Sequential

    Each iteration

    每次执行Action时,参数值改变。

    每个Vuser的参数取值都一样。

    Each occurrence

    每次取参数时,参数值改变。

    每个Vuser的参数取值都一样。

    Once

    唯一

    Random

     

    自由选取参数

     

     

     

    Unique

    Each iteration

    每次执行Action时,参数值改变。

    Allocate Vuser values in the Controller

    可选择“自动”和“手动”分配。

    “自动”分配把参数平均分给每个Vuser

    “手动”分配时,参数不够的话,压力测试时会报错。

    Each occurrence

    每次取参数时,参数值改变。

    只有“手动”分配。参数不够,测试时报错。

    Once

    唯一

     

    When out of values

    Abort Vuser

    结束Vuser

    Continue in a cyclic manner

    使用同样的循环样式继续

    Continue with last value

    使用最后一个参数值继续

     

    注释:

    iteration: Run-time Settings中对Number of Iterations进行设置,即每次运行脚本时,Action反复执行的次数。

    occurrence: 在一个Action中出现2次以上的同一个参数表。

    注意:

    当在脚本中使用lr_message lr_ouput_message输出参数值时,

    例如lr_message(“result=%s”,lr_eval_string(“{NewParam}”)

    参数表也会给这个语句中的{NewParam}分配一个参数值。

     

    Parameter type: Unique Number

    Number range: Start: 1  

             Block size per Vuser: 100   从1开始,每个并发使用100个参数.第1个并发使用1-                                      100,第2个使用101=200,第3个……

    Number format: %d 不保留有效数字。

                   %01d 保留1位有效数字。

     

  • STP杂志评选的2007年度最受测试人员欢迎的测试工具

    2008-02-18 10:08:56

    转载 STP杂志评选的2007年度最受测试人员欢迎的测试工具

    测试工具分类排名

    (1)Data Test/Performance
    LoadRunner、File-AID、VTune Performance Analyzer

    (2)Functional Test
    QTP、SOAtest、Compuware Optimal Quality Management

    (3)Defect/Issue Management
    Bugzilla、TestDirector、Seapine TestTrack Pro

    (4)Commercial Test/Performance
    DevTest、Software Planner、SOAPscope

    (5)Static/Dynamic Code Analysis
    PurifyPlus、DevPartner、Jtest

    (6)Embedded/Mobile Test/Performance
    Rational Test RealTime、DSDP、Workbench

    (7)Security Test
    WebInspect、AppScan、Hailstorm Enterprise ARC

    (8)Test/QA Management
    TestDirector for Quality Center、SilkCentral Test Manager、VMware Lab Manager

    (9)Free Test/Performance
    Bugzilla、JUnit、TPTP

    (10)Test Automation
    QuickTest Professional、SilkCentral Test Manager、Cubit

    (11)SCM/Build Management
    Visual SourceSafe、Subversion、ClearCase

    (12).NET Test/Performance
    LoadRunner、Team System、Parasoft Test

    (13)SOA/Web Services Test
    LoadRunner、Empirix、Performance Tester Extension for SOA Quality

    (14)Integrated Test/Performance Suite
    HP Performance Center、Empirix、Optimal

    (15)Java Test/Performance
    LoadRunner、JUnit、Jtest

    (16)Best Solution From a New Player
    Defender、Diagnostics、SecurityReview

    (17)Load/Performace Test
    LoadRunner、Performance Tester、SilkPerformer
  • LoadRunner性能测试指标分析

    2008-01-21 18:35:47

    LoadRunner性能测试指标

    Object

    Counters

    Descrīption

    Reference value

    Memory

    Available Mbytes

    可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。

    4 MB 或更小,至少要有10%的物理内存值

    Page/sec

    (Input/Out)

    为了解析硬页错误,从磁盘取出或写入的页数。一般如果Page/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

    推荐00-20

    如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法)

    该系列计数器的值比较低说明响应请求比较快, 否则可能是服务器系统内存短缺引起(也可能是缓存太大, 导致系统内存太少)。

     

     

    >5越低越好

    Page Fault

    处理器每秒处理的错误页(包括软/硬错误)。

    当处理器向内存指定的位置请求一页(可能是数据或代码)出现错误时,这就构成一个Page Fault。如果该页在内存的其他位置,该错误被称为软错误(用Transition Fault/sec记数器衡量);如果该页必须从硬盘上重新读取时,被称为硬错误。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。

    Page Input/sec

    为了解决硬错误页,从磁盘上读取的页数。

    Page Output/sec

     

    Page reads/sec

    为了解决硬错误页,从磁盘上读取的次数。解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。

    Cache Bytes

    文件系统缓存,默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化

     

    内存泄露

    如果您怀疑有内存泄露,请监视 Memory\\ Available Bytes Memory\\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\\Private BytesProcess\\Working Set Process\\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\\Pool Nonpaged BytesMemory\\ Pool Nonpaged Allocs Process(process_name)\\ Pool Nonpaged Bytes

     

    Process

    Page Faults/sec

    将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。

     

    Private Bytes

    此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

     

    Work set

    处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。

     

    Processor

    % Processor Time

    被消耗的处理器时间数量.如果服务器专用于sql server可接受的最大上限是80% -85%.也就是常见的CPU使用率.

     

    ProcessorQueue Length

    判断CPU瓶颈,如果processor queue length显示的队列长度保持不变(>=2)并且处理器的利用率%Processor time超过90%,那么很可能存在处理器瓶颈.如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈.

     

    Physical

    Disk

    %DiskTime

    指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。

    正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。若数值持续超过80 (此时处理器及网络连接并没有饱和),则可能是内存泄漏。

     

    CurrentDiskQueueLength

    读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。(磁盘数1.5-2)

     

    Avg.Disk Queue

    Length

    Avg.Disk Read

    QueueLength

    Avg.Disk Write

    QueueLength

    Disk Read/sec

    Disk Write/sec

    读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。

    磁盘瓶颈判断公式:

    每磁盘的I/O=(读次数+4*写次数))/磁盘个数。

    如果计算出来的每磁盘的I/O数大于磁盘的处理能力,那么磁盘存在瓶颈。

    Avg.DiskQueue Length正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘。

     

     

  • LoadRunner脚本解释分析

    2008-01-11 19:00:18

    1、获得网站首页
        web_url("www.seventest.net",
            "URL=www.seventest.net/",
            "TargetFrame=",  //
    目标窗口 _BLANK: 打开一个新窗口
                                              _PARENT:
    取代最后一个窗口的父窗口
                                              _SELF:
    取代最后一个窗口

                                              _TOP:
    取代整个页面
            "Resource=0",            //URL
    是否为一个资源  0:不是

                                                         1:

            "RecContentType=text/html", //
    录制过程中,响应报头内容格式
            "Referer=",                 //
    提交网页的URL
            "Snapshot=t1.inf",          //
    快照文件名

            "Mode=HTML",                //
    录制水平: HTML or HTTP.

    HTML level: 指导VuGen录制直观的HTML动作,录制web_url,web_link,web_image。返回的是HTML 页面,而不是脚本和程序。
    HTTP level:
    指导VuGen录制全部的服务器响应。不产生web_link,web_image,web_submit_form。比HTML高级,但当读脚本时不是很直观。
            EXTRARES,                   //
    参数表划分标志(下个标志是一个资源特征表)
           "Url=/dy.css", "Referer=http://www.seventest.net/index.htm", ENDITEM,     //
    资源结束志
       
           "Url=/images/bg_03.gif", "Referer=http://www.seventest.net/index.htm", ENDITEM, 
           "Url=/images/logo-end%2020GAI.swf","Referer=http://www.seventest.net/index.htm", ENDITEM,
            "Url=/images/2.swf", "Referer=http://www.seventest.net/index.htm", ENDITEM,
            LAST);                      //
    特征表结束标志

    2、下载一个游戏
    web_url("Games",
           "URL=ftp://joe:secret@mygames.com/games/archive/loderunner.exe",
           "FtpAscii=1",         //1:
    ASCII模式执行FTP传输
                                            //0:
    二进制模式
           LAST);

    3、百度搜索科学
    Action()
    {
        //
    打开首页

     web_add_cookie ("BAIDUID=AAFDECDD16EF55636CA63DC64381BBEC:FG=1; DOMAIN=www.baidu.com");

    web_add_cookie("BDSTAT=7e00ef72b41d6156ecc574f4a7efce1b9d16fdfaaf51f3debd8f8c5497eef01f3a292df5e2fe587d;DOMAIN=www.baidu.com");

                                 //网络接口的对象表达式,经常用在JavaVB.

                                 //name=VALUE; 必须
                                  //domain=DOMAIN_NAME;
    必须
                                  //expires=DATE;
                                  //path=PATH; (default path is "/")
                                  //secure
                                 //The elements in the Cookie parameter are the same as the elements in the
                                 //Set–Cookie HTTP Response Header.

     web_url("www.baidu.com",
      "URL=http://www.baidu.com/",  
      "TargetFrame=",
      "Resource=0",
      "RecContentType=text/html",
      "Referer=",
      "Snapshot=t1.inf",
      "Mode=HTML",
      EXTRARES,
      "Url=/favicon.ico", "Referer=", ENDITEM,
      LAST);

     web_add_cookie("BAIDUID=AAFDECDD16EF55636CA63DC64381BBEC:FG=1; DOMAIN=s.baidu.com");

     web_add_cookie("BDSTAT=7e00ef72b41d6156ecc574f4a7efce1b9d16fdfaaf51f3debd8f8c5497eef01f3a292df5e2fe587d;

    DOMAIN=s.baidu.com");

     lr_think_time(13);
       //
    搜索科学

     web_submit_data("s",         //
    提交数据

      "Action=http://www.baidu.com/s",    //
    提交数据的HTTP address
      "Method=GET",
      "EncType=",                       //
    编码方式

      "TargetFrame=",
      "RecContentType=text/html",
      "Referer=http://www.baidu.com/",
      "Snapshot=t2.inf",
      "Mode=HTML",               //
    录制水平
      ITEMDATA,
      "Name=wd", "Value=?", ENDITEM,
      "Name=cl", "Value=3", ENDITEM,
      EXTRARES,
      "Url=http://s.baidu.com/w.gif?path=http://www.baidu.com/s?wd=%BF%C6%D1%A7&cl=3&t=1200288916042",

    "Referer=http://www.baidu.com/s?wd=%BF%C6%D1%A7&cl=3", ENDITEM,
      LAST);

     return 0;
    }

     

Open Toolbar