在LR中录制好更改密码脚本,Controller中使用少量用户进行:单用户多迭代、多用户单迭代、多用户多迭代,运行正常,于是使用490Vuser+2iteration修改980个用户的密码,部分

Vuser因为Connection timed out、download timeout原因出错,这个时候因为用户量大,不知道究竟哪一个用户更改了密码,而哪一个用户没有更改成功。

  至此,查找未更改密码的用户名,之前username参数化采用的Unique+Iteration,根据LR的参数分配规则及我的迭代次数是2,想着Controller中出错id为n,在VuGen的参数列表中对应

的 id =( 2*n -1) 与 (2*n),其中一条出错id为5,对应VuGen参数列表找到用户名为qt009和qt010登录,发现密码更改成功,看来自己对Unique+Iteration的分配规则的理解不够深刻。

  找寻别的出路,思路如下:录制登录脚本,使用新密码登录,若出错,则是说明密码修改失败,经过一番百度和对LR帮助手册的学习,根据登录事务成功与否完成判断,参见L11帮助手册lr_get_transaction_duration()函数的例子。

Action()   //此处仅显示重要代码部分
{ double trans_time = 0; int status = 0; lr_start_transaction("login"); trans_time = lr_get_transaction_duration("login"); /*
记录操作为“Login”的flex_amf_call的返回值,该函数0成功,1失败
*/
status = flex_amf_call(
"<operation>login</operation>"
"<parameters><string>{user}</string>
<string>800Best</string>); if (0 == status)
{
lr_output_message ("UserName:%s",lr_eval_string ("{user}"));
lr_end_transaction("login", LR_PASS);
}
else
{
lr_output_message ("UserName:%s",lr_eval_string ("{user}"));
lr_end_transaction("login", LR_FAIL);
} if (trans_time)
{
lr_output_message("The duration up to the submit is %f seconds", trans_time);
}
else
{
lr_output_message("The duration cannot be determined.");
} //lr_end_transaction("login", LR_AUTO); return 0;
}

  使用上述代码,同时在Vuser——>Run-Time Setting ——>Miscellaneous——>Error Handling中勾选“ Continue on error”,即可。

  在Controller中500Vuser+2iteration,打开状态为Failed的Vuser,Show Vuser log,即可知道是哪一个用户密码未修改成功,这里的场景可能还会遇到各种问题,但是分析一下可以知道和脚本无关,大概和服务器负载有关,可能一次不能找到所有的用户,多跑几次场景试试。

  遇到的问题。

1: Action.c (16): illegal statement termination

  Action.c (16): skipping `double'

  解决:将 trans_time 与status放在脚本的最开始,因为LR的C解释器有点奇葩,变量的定义必须在系统函数调用之前,否则出错。

2: Error: Failed to end Transaction "login" (by name). Please check that you made a call to start transaction operation.

  解决:产生该错误的原因是,事务没有成对匹配,检查发现当事务判断成功时有一条lr_end_transaction("login", LR_PASS);在action.c的末尾仍有一条lr_end_transaction("login", LR_AUTO); 总结:在有 分支 的代码中,一定要注意同一事务的start与end是否仅成对出现,要么干脆在分支语句中不使用事务的结束语句,要么每一个分支都加上结束语句,不要出现分支中有结束语句,分支外部还有结束语句的情况。

  PS:道阻且长,希望自己在性能这条路上越走越远。

LR录制Flex+Web,登录功能之登录密码出错的处理的更多相关文章

  1. WPF登录功能,对于密码框的操作,其实WPF有个PasswordBox专门的密码框控件,完全可以选择自己要显示的密码符号。

    在链接数据库后,点击登录时需要判断用户名和密码框是否为空,而PasswordBox不像textbox那样判断 textbox判断文本框为空 if (this.UserName.Text.Trim()= ...

  2. SpringBoot 之 实现登录功能及登录拦截器

    增加登录退出控制器: # src/main/java/com/wu/controller/LoginController.java @Controller public class LoginCont ...

  3. 详细讲解:使用tp3.2.3完成简单的注册登录功能

    使用3.2.3进行了一个简单不过的注册登录功能,界面介绍: 1.注册: 2.登录: 3.登录成功后: 没错,就是简单的让你特别容易上手,上面运用到的知识有: (1)自动验证.自动完成 (2)sessi ...

  4. 实现Web上的用户登录功能

    关于如何实现web上的自动登录功能 文章来源http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能 ...

  5. SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)

    初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现 ...

  6. 你会做Web上的用户登录功能吗?

    Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关 ...

  7. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  8. 实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能

    本篇实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能需求描述:1. 请求后端Api接口地址2. 根据返回信息进行判断处理前端 ...

  9. Java Web实现用户登录功能

    java web 学习记录一下 mvc结构实现mysql 连接 什么是mvc MVC是模型(model).视图(view).控制(controller)这三个单词上的首字母组成.它是一种应用模型,它的 ...

随机推荐

  1. Swift_UI_UILabel

    Swift_UI_UILabel import UIKit class ViewController: UIViewController { override func viewDidLoad() { ...

  2. MFC 工具栏隐藏与显示

    最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...

  3. python导入opencv解决no module named cv2问题

    最近ubuntu用的比较多,在写神经网络代码时也会经常接触到python,但是python的环境配置确实是个头疼的问题. 尤其是接触到opencv时,需要导入opencv的库文件,网上也有很多方法,本 ...

  4. uboot补丁的分析

    接下来分析一下韦老师的uboot补丁: -------------------------------------------------------------------------------- ...

  5. args[0]

    java程序有一个主方法,是这样的public static void main(String [] args)你说的args[0]就是你用命令行编译运行java程序时,传入的第一个参数,比如你运行一 ...

  6. NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

    今天调试SSM框架项目后台JSOn接口,报出来一个让人迷惑的错误:NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 上网查了一下别人的博 ...

  7. Tomcat启动,不能加载项目问题。

    项目部署时遇到的一个Tomcat问题:     启动tomcat后,不能加载项目 直接启动完成 但是项目未加载 最后找到原因:  把环境变量Catalina_HOME删除掉,就能加载. tomcat启 ...

  8. centos 更换 yum源

    阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软件安装源第一步:备份你的原镜像文件,以免出错后可以恢复. mv /etc/yum.repos ...

  9. 读《编写可维护的JavaScript》第九、十章总结

    第九章 将配置数据从代码中分离出来 9.2 抽离配置数据 这章比较好理解,也非常常见,作者给的俩个例子就能说明一切: // 将配置数据藏在代码中 function validate(value) { ...

  10. 禁止从别的应用启动Activity

    在Manifest.xml中设置android:exported="false"即可,如: <activity android:name=".MyAty" ...