loadrunner测试ajax框架的系统时,录制回放都没有报错,但是回放后系统中没有产生数据,解决方法

loadrunnerajax框架测试脚本headerajax

【问题描述】用loadrunner测试ajax框架的系统时,录制回放都没有报错,但是回放后系统中没有产生数据,数据始终不能写入数据库。查了一下原因,应该是录制的脚本不完善的问题,因为JS是在客户端执行的程序,LR只能监控客户机与服务器之前的通信。

【解决方法】: Recording options> HTTP Properites> Advanced > Headers: 选择"Record headers not in list", 然后点ok。重新录制一遍脚本,会发现脚本里多出一些 web_add_auto_header, web_add_header函数。把这些函数中跟ajax相关的,加到原脚本里,重新回放,问题解决。

验证loadrunner对Ajax内容的校验

loadrunner11对网页AJAX的测试

业务流程:用户登录-搜索书籍-预订书籍
其中登录输入用户名和密码;搜索输入书籍名称点击button搜索;预订需要在书籍搜索结果点击书籍后面的request按钮,进入request页面,填写日期相关信息点击提交。
开始计划时,感觉这个脚本是最好录制的,于是把计划排在后面,但是在实际操作中遇到难题。
1.在预订书籍这个事务中,有二次提交数据,第一次是把书籍内容提交到表单,第二次是提交预订日期等信息。但是在这两次提交的数据中,找不到跟书籍有关的任何信息,无法对预订书籍事务进行参数化。
解决方法:
尝试1:对脚本中所有出现书籍名称的字段进行参数化,二个参数运行二次,第一次成功,第二次失败
尝试2:搜索的时候仅搜索出唯一一本书籍,只参数化搜索事务,二个参数运行二次,第一次成功,第二次失败
尝试3:设置loadrunner-record option-HTTP Property-Advanced-Header-Record header not in list. 重新录制,发现脚本多了许多web_add_auto_header,web_revert_auto_header函数,搜索的时候仅搜索出唯一一本书籍,只参数化搜索事务,二个参数运行二次,第一次成功,第二次失败
尝试4:协议选择AJAX,设置loadrunner-record option-HTTP Property-Advanced-Header-Record header not in list。设置参数二次运行二次,均成功。

AJAX预订脚本如下:
//search one book and request this book
    lr_start_transaction("search");
    lr_think_time(24);
//input book name
    web_edit_field("query",
        "Snapshot=t4.inf",
        DESCRIPTION,
        "Type=text",
        "Name=query",
        ACTION,
        "SetValue={title}",
        LAST);
//if on search result,this text will display
    web_reg_find("Text=No results were found for your search request",
       "SaveCount=count2",
       LAST);
//click search button
    web_button("INPUT_2",
        "Snapshot=t5.inf",
        DESCRIPTION,
        "Type=submit",
        "Tag=INPUT",
        "ID=search_submit",
        ACTION,
        "UserAction=Click",
        LAST);

if (atoi(lr_eval_string("{count2}"))==0)
       {
        lr_end_transaction("search", LR_PASS);
        lr_output_message("search suss,because %d", atoi(lr_eval_string("{count2}")));
        lr_output_message("search title is %s",lr_eval_string("{title}"));
       }
    else
       {
        lr_end_transaction("search", LR_FAIL);
         lr_error_message("search fail,because %d", atoi(lr_eval_string("{count2}")));
       }

//starting request transaction
    lr_start_transaction("request");
    lr_think_time(10);
    web_check_box("listItems",
        "Snapshot=t6.inf",
        DESCRIPTION,
        "Name=listItems",
        ACTION,
        "Set=ON",
        LAST);
//click the request button
    web_text_link("Request",
        "Snapshot=t7.inf",
        DESCRIPTION,
        "Text=Request",
        ACTION,
        "UserAction=Click",
        LAST);

lr_think_time(13);

web_list("mainLocationFilter",
        "Snapshot=t8.inf",
        DESCRIPTION,
        "Name=mainLocationFilter",
        ACTION,
        "Select=Hong Kong Central (*1000000)",
        LAST);

lr_think_time(5);

web_edit_field("expirationDate",
        "Snapshot=t9.inf",
        DESCRIPTION,
        "Type=text",
        "Name=expirationDate",
        ACTION,
        "SetValue=2011/08/08",
        LAST);

web_reg_find("Text=Transaction Reference Number",
        "SaveCount=count3",
        LAST);

web_reg_find("Text=Your request has been submitted",
        "SaveCount=count4",
        LAST);

web_button("INPUT_3",
        "Snapshot=t10.inf",
        DESCRIPTION,
        "Type=submit",
        "Tag=INPUT",
        "ID=id52",
        ACTION,
        "UserAction=Click",
        LAST);

if (atoi(lr_eval_string("{count3}"))==1&&atoi(lr_eval_string("{count4}"))==1)
       {
         lr_end_transaction("request", LR_PASS);
         lr_output_message("request suss,because %d", atoi(lr_eval_string("{count3}")));
       }
    else
       {
         lr_end_transaction("request", LR_FAIL);
         lr_error_message("request fail,because %d", atoi(lr_eval_string("{count4}")));
       }

loadrunner测试ajax框架的更多相关文章

  1. LoadRunner测试ajax框架,回放后系统中没有产生数据解决方法

    1.QTP11 下载地址:http://www.genilogix.com/downloads/unified-functional-testing/quicktest-professional-11 ...

  2. LoadRunner测试AJAX

    什么是AJAX? Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for cre ...

  3. LoadRunner测试ajaxweb程序攻略

    用loadrunner测试WEB程序的时候总是会碰到AJAX或者ActiveX实现的功能,而通常这些功能会包含很多客户端函数(一般为JavaScript).我们该如何处理?如果从功能实现的角度去考虑这 ...

  4. jQuery-1.9.1源码分析系列(十六)ajax——ajax框架

    ajax的介绍就不多说了,点击可看. 既然是ajax框架,那么闲谈一谈jQuery的ajax处理思路. 现在的浏览器都支持ajax,只不过不同的浏览器使用方法可能有不同(IE使用new window. ...

  5. 本地测试AJAX请求

    要在本地测试AJAX,首先是环境的搭建,因为XHR对象的open方法中参数url是指文件在服务器上的文件.下面以WampServer为例. 1. 下载wamp的安装包,下载地址为:http://221 ...

  6. LoadRunner测试结果分析03 转载至zhangzhe的新浪博客

    LoadRunner测试结果分析之我见 前面分析的Web Resource(网络资源)的测试情况,其主要关注的是服务器性能,而系统本身和环境都有可能存在问题,页面诊断(Web Page Diagnos ...

  7. LoadRunner测试结果分析02 转载至zhangzhe的新浪博客

    LoadRunner测试结果分析之我见 上述测试过程的重点在于事务,而LoadRunner生成的测试结果图并不局限于事务上,其中还有是关于Vusers.Errors.Web Resources.Web ...

  8. LoadRunner测试结果分析01 转载至zhangzhe的新浪博客

    LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于L ...

  9. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

随机推荐

  1. poj2549 Sumsets

    Sumsets Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11886   Accepted: 3273 Descript ...

  2. Leetcode 492. 构造矩形

    1.题目描述 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的. 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面.要求: 1. 你设 ...

  3. 图:centrality

    [定义]Centrality:图中每个节点v的相对重要度c(v),重要度是什么可根据具体应用定义. [估计方法] Degree centrality Betweenness centrality Cl ...

  4. 树上的构造 树分治+树重心的性质 Codeforces Round #190 (Div. 2) E

    http://codeforces.com/contest/322/problem/E E. Ciel the Commander time limit per test 1 second memor ...

  5. 前端开发进阶:推荐的 CSS 书写规范

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经 ...

  6. 使用HTML5、CSS3和jQuery增强网站用户体验[留存]

    记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验?是不是立刻就想到了flash实现?这彷佛年代久远的事了.使用现在最流行的Web技术HTML5,CSS3和jQuery,同样也可以实现类 ...

  7. three.js为何如此奇妙

    WebGL是在浏览器中实现三维效果的一套规范,而最初使用WebGL原生的API来写3D程序是一件非常痛苦的事情,在辛苦的付出下WebGL开源框架出现了,其中three.js就是非常优秀的一个,它掩盖了 ...

  8. python 输出 a+b

    AC代码: 单组输入: s=input().split() print(int(s[0])+int(s[1]))

  9. 关于linux系统如何实现fork的研究(一)【转】

    转自:http://www.aichengxu.com/linux/4157180.htm 引言 fork函数是用于在linux系统中创建进程所使用,而最近看了看一个fork()调用是怎么从应用到gl ...

  10. linux中的计算【转】

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...