LR实战之Discuz开源论坛——登录脚本

脚本业务流:访问Discuz论坛首页——登录论坛——退出论坛。本次使用LoadRunner11版本。

一、录制脚本注意

1、确保Discuz论坛能在服务器运行正常。

2、录制前先试访问Discuz论坛注册一个测试用户。

3、选择录制协议,Discuz论坛是一个B/S架构的web论坛,使用常用协议“web(HTTP/HTML)”录制。

4、录制选项的设置,特别注意录制时的HTTP/HTML级别的选择是“基于HTML的脚本”还是“基于URL的脚本”,这里选择“基于HTML的脚本”。

5、录制完脚本后,先保存脚本,再回放一遍。

二、优化脚本

使用LoadRunner录制后的脚本,通常都是需要优化完善脚本。这里只展示action中的登录部分,优化完善后的脚本如下:

Action_login()
{

lr_think_time(12);

//添加登录时的集合点Login
 lr_rendezvous("login");

//设置开始事务
 lr_start_transaction("login");
 
 web_submit_data("member.php",
  "Action=http://127.0.0.1/Discuz/upload/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1",
  "Method=POST",
  "RecContentType=text/xml",
  "Referer=http://127.0.0.1/Discuz/upload/forum.php",
  "Snapshot=t2.inf",
  "Mode=HTML",
  ITEMDATA,
  "Name=fastloginfield",
"Value=username", ENDITEM,
  "Name=username", "Value={username}",
ENDITEM,
  "Name=password", "Value={password}",
ENDITEM,
  "Name=quickforward", "Value=yes",
ENDITEM,
  "Name=handlekey", "Value=ls",
ENDITEM,
  LAST);

//输出参数化日志信息
 lr_output_message("登录用户名:%s",
lr_eval_string("{username}"));
 lr_output_message("登录密码:%s",
lr_eval_string("{password}"));

web_add_cookie("mlMh_2132_checkfollow=1; DOMAIN=127.0.0.1");

web_add_cookie("mlMh_2132_lastact=1399082672%09forum.php%09;
DOMAIN=127.0.0.1");

web_add_cookie("mlMh_2132_checkpm=1; DOMAIN=127.0.0.1");

//设置关联 Correlation comment - Do not change!Original
value=‘935343df‘ Name
=‘CorrelationParameter_1‘
 web_reg_save_param_ex(
  "ParamName=CorrelationParameter_1",
  "LB=formhash=",
  "RB=\">退出",
  SEARCH_FILTERS,
  "Scope=Body",
  "RequestUrl=*/forum.php*",
  LAST);

//添加文本检查点,检查登录用户yuxiuquan是否登录
 web_reg_find("Text=yuxiuquan",
  LAST);

web_url("forum.php_2",
  "URL=http://127.0.0.1/Discuz/upload/forum.php",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t3.inf",
  "Mode=HTML",
  EXTRARES,
  "URL=static/image/common/background.png",
ENDITEM,
  "URL=static/image/common/nv.png",
ENDITEM,
  "URL=static/image/common/search.png",
ENDITEM,
  "URL=static/image/common/arrwd.gif",
ENDITEM,
  "URL=static/image/feed/friend_b.png",
ENDITEM,
  "URL=static/image/feed/favorite_b.png",
ENDITEM,
  "URL=static/image/feed/thread_b.png",
ENDITEM,
  "URL=static/image/feed/magic_b.png",
ENDITEM,
  "URL=static/image/feed/medal_b.png",
ENDITEM,
  "URL=static/image/common/tip_bottom.png",
ENDITEM,
  "URL=static/image/common/style_switch.png",
ENDITEM,
  "URL=static/image/common/user_online.gif",
ENDITEM,
  "URL=static/image/common/qmenu.png",
ENDITEM,
  "URL=static/image/common/nv_a.png",
ENDITEM,
  "URL=static/image/common/pt_item.png",
ENDITEM,
  "URL=static/image/common/chart.png",
ENDITEM,
  "URL=static/image/feed/task_b.png",
ENDITEM,
  "URL=static/image/common/scrolltop.png",
ENDITEM,
  "URL=static/image/common/titlebg.png",
ENDITEM,
  "URL=http://cp.discuz.qq.com/tips/get?rand=310&s_id=&product_version=X2.5&product_release=20120413&fix_bug=25000000&is_founder=&s_url=http%3A%2F%2F127.0.0.1%2FDiscuz%2Fupload%2F&last_send_time=&ts=1399082672&sig=&admin_id=0&group_id=10&open_id=&uid=2&callback=discuzTipsCallback",
ENDITEM,
  LAST);

//设置结束事务
 lr_end_transaction("login", LR_AUTO);

return 0;
}

1、事务设置,开始事务和结束事务的名称必须一致,事务的设置必须成对出现,即有开始事务也要有结束事务,开始事务应该放在脚本开始的位置,结束事务放在脚本结束的位置,但不要将思考时间(lr_think_time函数)放在事务开始和事务结束之间。其实,设置事务,可以在“Run_time
Settings”里设置的,可以设置成“将每个操作定义为一个事务”,也可以设置为“将每个步骤定义为一个事务”,根据需要设置。我这里是自己手动在脚本设置的。

使用函数:lr_start_transaction("事务名称");

lr_end_transaction("事务名称",LR_AUTO);

2、检查点设置,LR的检查点分为文本检查点和图像检查点,添加检查点的方法很简单,在LR的树形视图中,打开视图登录页面,选择需要检查的内容(文本或者图像),鼠标右键选择“添加文本检查点(web_reg_find())”即可,若要手动添加检查点,则需要把检查点设置在返回页面的之前。最后,在脚本中添加了检查点,要在Vuser->Run-Tme
Settings中更改下设置,勾选Enable Image and text check。

使用函数:web_find() 或 web_reg_find() 或
web_image_check(),下面分别说明

(1)web_find()

参数举例:web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右

边界;“What=”定义查找内容。

(2)web_reg_find()

参数举例:web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

参数解释: Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓

存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到。

(3)web_image_check()

参数说明:web_image_check("web_image_check","Alt=","Src=",LAST);;

参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值。

3、参数化设置,LR录制登录的脚本,一般需要参数化脚本中的登录用户和对应的密码,以便更加真实地模仿系统的业务操作。参数化的设置,点击工具栏图标打开参数列表,或者点击菜单“Vuser--参数列表”,或使用快捷方式“Ctrl+L”,点击新建,定义参数名称username和password,创建表并输入内容

后,这里特别需要注意设置的是参数名username和password相对应,通过参数列表中的数据方式和更新值方式来设置,username参数要与password参数对应设

置正确,脚本回放时才能模拟用户登录成功,如图:

(1)、username参数名设置

(2)password参数名设置

(3)、参数化设置中,“Select next row”和“Update value
on”这两个属性组合,产生九种组合方式,每种方式都不一样,参数化的结果也不一样,下面是参数取值方式说明

Select next
row:
      
Sequential:每个VU按照顺序读取。每一个虚拟用户都会按照相同的顺序读取。
      
Random:每个VU随机读取一个。
     
 Unique:每个VU顺序取唯一的值。注意:使用该类型必须注意数据池中数据充足。
      
Same Line As 某个参数(比如Name):和前面定义的参数Name
取同行的记录。通常用在有关联性的数据上面。
       Update value
on:
       Once 在所有的反复中都使用同一个值 
只取一次
       each iteration
每次反复都要取新值
       each occurrence
只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值。

(4)、在脚本中,选中需要参数化的脚本,鼠标右键“使用现有参数”选择对应要参数化的参数名即可。

(5)、在脚本中输出参数化日志信息

//输出参数化日志信息
     
 lr_output_message("登录用户名:%s",
lr_eval_string("{username}"));
      
lr_output_message("登录密码:%s", lr_eval_string("{password}"));

4、关联设置,由于我的LR工具在录制的时设置了关联规则,在脚本中可以使用自动扫描脚本中关联值快捷键Ctrl+F8,扫描结果切换树形视图,可以看到如图

点击“关联”,返回到脚本页面,如图

再次回放脚本,在菜单“视图--测试结果”中可以看到关联函数执行成功。

5、集合点设置,集合点的设置在菜单“插入--集合”即可,集合点名称需顾名思义,看到就能理解。另外需要注意,集合点要放在开始事务的前面,思考时间(lr_think_time函数)的后面。

使用函数:lr_rendezvous("集合点名称");

LR实战之Discuz开源论坛——登录脚本,布布扣,bubuko.com

时间: 2024-10-18 14:33:29

LR实战之Discuz开源论坛——登录脚本的相关文章

LR实战之Discuz开源论坛——登录脚本检查点

在开发Discuz登录脚本时,遇到的一个问题是怎么去验证虚拟用户真正的登录成功,当然,熟悉LoadRunner工具的人就会知道,在脚本中使用检查点,对,没错! 我们知道,LR检查点功能有两种:文本检查点web_find().web_reg_find() 和 图像检查点web_image_check() 这里只讲,如何使用图像检查点web_image_check(). 先了解一下这个函数的使用:web_image_check() 语法: int web_image_check(const char

LR实战之Discuz开源论坛——登录场景设计

以下是根据个人项目经验,对登录场景的设计,如下步骤: 一.打开Controller,添加登录脚本,选择"手动场景",一般我们项目中经常使用的是"手动场景"类型设计,如图 二.在"设计"部分,设置场景的并发用户数及场景计划 1.在场景计划页面,计划的"运行模式"默认为"实际计划",选择"基本计划",就可以修改"场景组"列表下该场景组名的并发用户数量,这里并发40个用户,

LR实战之Discuz开源论坛——网页细分图结果分析(Web Page Diagnostics)

续LR实战之Discuz开源论坛项目,之前一直是创建虚拟用户脚本(Virtual User Generator)和场景(Controller),现在,终于到了LoadRunner性能测试结果分析(Analysis)这部分了. LoadRunner结果分析图表功能中最重要图表分析之一,就是网页诊断细分图,在Controller场景设计运行之前,需要在菜单栏中设置启用网页诊断功能(诊断-网页诊断-启动),如图: 网页细分图,是显示每个页面及其组件的相关下载时间和大小,主要用来评估页面内容是否影响事务

LR实战之Discuz开源论坛——安装及简介

想了很久,也许是因为这段时间特别闲,从毕业到现在,我的测试职业生涯也近两年了,发现自己越来越喜欢测试领域,也越来越偏向测试开发了,作为一名专业的测试人员,不得不要学习性能测试,而使用LoadRunner做性能测试在许多企业里也是必不可少的一种工具.下面我将介绍使用LoadRunner实战Discuz 2.5开源论坛的性能测试,在此之前,先介绍Discuz2.5论坛的安装,配置性能测试的环境. 一.在Windows下使用APMServ 5.2.6快速搭建PHP平台 APMServ 5.2.6 是一

RedHat下构建LAMP平台+Discuz!论坛

LAMP的简介: lAMP平台的构成组件: Linux:作为LAMP架构的基础,提供用于支撑web站点的操作系统,能够与其他三个组件提供更好地稳定性.兼容性. Apache:作为LAMP架构前端,是一款功能强大.稳定性好的web服务器程序,该服务器直接面向用户提供网站访问,发送网页.图片等内容. Mysql:作为LAMP架构后端,是一款流行的开源关系数据库系统. PHP:作为三种开发动态网页的编程语言,负责解释动态网页文件,并提供web应用程序的开发和运行环境. LAMP平台的应用优势: 1. 

CentOS 上部署Discuz!X论坛2

紧接上一篇,废话少说,直接实战.详细内容请参考<编译安装LAMP一> <MySQL-5.5.38通用二进制安装> 2.安装MySQL # 创建mysql用户和组 [[email protected] ~]# groupadd -r mysql [[email protected] ~]# useradd -r -g mysql -s /sbin/nologin mysql # 目录规划 [[email protected] ~]# mkdir -pv /mydata/data mk

Discuz!开源系统如何防御CC攻击?

Discuz!是一套免费的开源建站系统,在国内挺受欢迎的,主要用来搭建社区论坛类的网站.社区论坛类的网站由于流量比较大,很容易遭到DDOS攻击,特别是针对网页的CC攻击.一旦网站遇到类似攻击,不但导致用户流失,还会被搜索引擎降权.那当遇到CC攻击时该怎么办呢?其实Discuz!系统有一个缓解CC攻击的功能,今天墨者安全就教大家如何进行配置. 在Discuz!的配置文件找到config.inc.php,可以看到默认数值是0. $attackevasive = 0; 我们可以修改这个参数来缓解CC攻

[BBS]搭建开源论坛之JForum安装使用札记

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/47761303 目录 目录 BBS搭建开源论坛之JForum安装使用札记 源码下载 在myeclipse中搭建开发环境 创建数据库 启动web服务 简易二次修改 [BBS]搭建开源论坛之JForum安装使用札记 本文使用开源BBS源码jforum2.1.9版本搭建二次开发初始环境,开发环境为myeclipse2015/mysql/jdk1.8/tom

LAMP平台部署及应用(二) 安装Discuz!论坛系统

LAMP平台部署及应用(二) 安装Discuz!论坛系统 具体步骤: n 服务器端的部署 1. 准备工作 首先,应准备一台能够解析PHP网页,支持数据库的网站服务器,其中Apache.PHP.MySQL组件的版本应符合Discuz!系统的最低要求,这里此前源码编译构建的LAMP平台为例,默认首页设置为index.php. 其次,应确定论坛服务器的域名,IP地址以及访问论坛的URL地址.Discuz!论坛支持作为独立的网站运行,如://bbs.benet.com:也可以作为网站的一个目录,如://