51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1899|回复: 0
打印 上一主题 下一主题

[原创] LoadRunner调用外部DLL的方法

[复制链接]
  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2010-7-24 13:25:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    LoadRunner提供了功能强大的API集合,足够应付大多数性能测试的需求。但在某些情况下,这些API仍然有覆盖不到的地方。例如,我们有一个WEB应用,该应用有一个页面输入用户的信息,为了安全起见,用户输入的信息在提交之前都要先进行加密处理,加密处理通过本地的COM组件实现。
    对这个要求而言,LoadRunner的现有API不能提供直接支持,因为LoadRunner在录制脚本时只录制数据交互,因此,COM的加密处理过程是不能录制下来的。在LoadRunner的脚本中,可能只有类似以下的语句描述了这个过程:
    …………
    web_url("userinfo",
        "URL=http://testweb/userinfo.aspx",
        "TargetFrame=",
        "Resource=0",
         "Referer=",
         LAST);
    web_submit_form("login ",
    "Snapshot=t4.inf",
    ITEMDATA,
    "Name=username", "Value=4e92Sh6d394g", ENDITEM,
    "Name=password", "Value=932A2hf34U18", ENDITEM,
    LAST);
    …………
    从脚本可以看到,输入的数据是加密后的数据,但LR没有录制到加密过程。
    假设加密函数所在的DLL名为security.dll,用于加密的函数名为encode,则一种可能的对脚本的修改方法如下代码所示。
    …………
    char *encode_username, *encode_password, *orgin_username, *orgin_password;
    char* uservalue, passvalue;
    int ret;
    ……
    web_url("userinfo",
         "URL=http://testweb/userinfo.aspx",
         "TargetFrame=",
         "Resource=0",
          "Referer=",
          LAST);
    orgin_username = lr_eval_string(“{ username }”); //获取参数的值
    orgin_password = lr_eval_string(“{ password }”);
    ret = lr_load_dll(“security.dll”);   //加载DLL库
    encode(origin_username, encode_username);  //调用encode函数
    encode(origin_password, encode_password);

    sprintf(uservalue, “Value=%s”, encode_username);
    sprintf(passvalue, “value=%s”, encode_password);
    web_submit_form("login ",
      "Snapshot=t4.inf",
      ITEMDATA,
      "Name=username", uservalue, ENDITEM,
      "Name=password", passvalue, ENDITEM,
      LAST);
    …………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-16 23:46 , Processed in 0.069630 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表