Salut,
J'essaye de faire des tests de montée en charge avec JMeter pour une
application JSF et plus precisémment Icefaces.
Le Test consiste à se connecter et s'authentifier puis accéder à un
module de l'application. Le test biensur est exécuté pour n
utilisateurs.
J'ai rajouté le Regular Expression Extractor pour passer la
jsfViewState, configuration obligatoire pour les appli JSF.
http://wiki.apache.org/myfaces/PerformanceTestingWithJMeter
Le test est comme suite :
HTTP Request Defaults : requête par defaut (IP/Port du serveur Tomact)
HTTP Request : Première requête GET, sans accès aux pages JSF.
J'accede seulement a la page du serveur tomcat
Login : Requete POST de connexion à l'appli (page de connexion dans le
path), contient mdp, login, ${jsfViewState} ...
loginForm%3A_SUBMIT : 1
loginForm%3A_link_hidden_
loginForm%3A_idcl
javax.faces.ViewState : ${jsfViewState}
loginForm:login : ${LOGIN}
loginForm:password : ${PASSWORD} - Encoder coché
Ici le login et le mdp sont recuperés depuis un fichier csv
Access : Requete POST d'acces à une URL (un menu de l'appli)
Je me suis inspiré aussi du site de Milamber (Un grand merci à lui)
pour construire ce test.
Quand je lance le test, tout à l'aire bien, je reçois des réponses
mais le problème c'est que sur mon serveur Tomcat, j'ai aucune
indication que JMeter s'est connecté. C'est là que je me suis rendu
compte que JMeter n'essaye même pas de se connecter , les réponses que
je reçois pour Login et Access sont les mêmes, c'est juste la page de
connexion qui contient deux champs login et mdp.
J'ai rajouté pour la requête Login, une response assertion pour tester
si je reçois le login et le mdp dans la réponse. Et effectivement je
reçois pas ces informations, du coup mnt j'ai une erreur
Dans le View Results Tree
Thread Name: Obm Users 1-1
Sample Start: 2009-03-31 11:36:09 CEST
Load time: 209
Latency: 12
Size in bytes: 9063
Sample Count: 1
Error Count: 1
Response code: 200
Response message: OK
Response headers:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=34E731676C01A88EDE0C21EC6569F1EF; Path=/
ulextranet
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revalidate
Pragma: no-cache
Expires: 0
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 31 Mar 2009 09:36:17 GMT
Request:
POST
http://127.0.0.1:8080/extranet/login.iface
POST data:
loginForm%3A_SUBMIT=1&loginForm%3A_link_hidden_=&loginForm
%3A_idcl=&javax.faces.ViewState=${jsfViewState}
&loginForm:login=agfam01&loginForm%3Apassword=agfam01
[no cookies]
Request Headers:
Connection: keep-alive
Content-Length: 158
Content-Type: application/x-www-form-urlencoded
Response data :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
id="document:html" lang="en"><head><title id="document:title">UL
EXTRANET</title>
<link href="/extranet/xmlhttp/css/rime/rime.css" rel="stylesheet"
type="text/css" /><link href="/extranet/css/login.css"
rel="stylesheet" type="text/css" /><script src="/extranet/js/
extranet.js" type="text/javascript"></script>
<meta content="Rendered by ICEFaces D2D" name="icefaces" /><script
src="/extranet/xmlhttp/1237976516078/icefaces-d2d.js" type="text/
javascript"></script>
<script src="/extranet/xmlhttp/1237976516078/ice-extras.js" type="text/
javascript"></script>
<script type="text/javascript">try { document.execCommand
('BackgroundImageCache', false, true); } catch(e) {}</script></head>
<body id="document:body" style="padding: 0px; margin: 0px;"><iframe
frameborder="0" id="history-frame:xp1JW_LvPTAXPwb-mq7qRg:1"
name="history-frame:xp1JW_LvPTAXPwb-mq7qRg:1" src="/extranet/xmlhttp/
blank" style="z-index: 10000; visibility: hidden; width: 0; height: 0;
position: absolute; opacity: 0.22; filter: alpha(opacity=22);"
title="Icefaces Redirect"></iframe>
<script id="xp1JW_LvPTAXPwb-mq7qRg:1:configuration-script" type="text/
javascript">if (!window.sessions) window.sessions = [];
window.sessions.push('xp1JW_LvPTAXPwb-mq7qRg');
window.disposeViewsURI = '/extranet/block/dispose-views';
var container = 'xp1JW_LvPTAXPwb-mq7qRg:1:configuration-
script'.asElement().parentNode;
container.bridge = new Ice.Community.Application({session:
'xp1JW_LvPTAXPwb-mq7qRg',view: 1,synchronous:
false,connectionLostRedirectURI: null,sessionExpiredRedirectURI:
null,connection: {context: {current: '/extranet/',async: '/
extranet/'},timeout: 60000,heartbeat: {interval: 50000,timeout:
30000,retries: 3}},messages: {sessionExpired: 'User Session
Expired',connectionLost: 'Network Connection Interrupted',serverError:
'Server Internal Error',description: 'To reconnect click the Reload
button on the browser or click the button below',buttonText:
'Reload'}}, container);</script>
<div class="icePnlGrp" id="j_id10" style="width:100%;height:
134px;background-image:url(images/core/login_bg.jpg);background-
repeat:repeat-x;text-align:center;"><center><img alt=""
class="iceGphImg" id="j_id12" src="/extranet/images/core/
login_header.jpg" /></center></div>
<div class="icePnlGrp" id="j_id13" style="width:100%;"><center><div
class="icePnlGrp" id="j_id15" style="width:1024px;;height:
650px;background-image:url(images/core/
background_login.jpg);background-repeat:no-repeat;"><form
action="javascript:;" class="iceFrm" enctype="application/x-www-form-
urlencoded" id="loginForm" method="post" onsubmit="return false;"
style="padding-top:200px;"><script type="text/javascript">$element
(document.getElementById('loginForm')).captureAndRedirectSubmit();</
script><input name="loginForm" type="hidden" value="loginForm" /
><input name="icefacesCssUpdates" type="hidden" value="" /><table
cellpadding="2" cellspacing="2" class="icePnlGrd loginGrid"
id="loginForm:j_id16"><tbody><tr class="icePnlGrdRow1
loginGridRow1"><td class="icePnlGrdCol1 loginGridCol1"
id="loginForm:j_id16-0-0"><span class="iceOutTxt"
id="loginForm:j_id17" style="color:white;font-weight:bold;font-
family:arial;font-size:11px;">Login</span></td><td
class="icePnlGrdCol2 loginGridCol2" id="loginForm:j_id16-0-1"><div
class="icePnlGrp" id="loginForm:j_id18"><input class="iceInpTxt"
id="loginForm:login" name="loginForm:login" onblur="setFocus
('');setFocus('');" onfocus="setFocus(
this.id);"
onkeypress="iceSubmit(form,this,event);" onmousedown=";this.focus();"
style="width:150px;" type="text" value="" /></div></td></tr>
<tr class="icePnlGrdRow2 loginGridRow2"><td class="icePnlGrdCol1
loginGridCol1" id="loginForm:j_id16-1-0"><span class="iceOutTxt"
id="loginForm:j_id19" style="color:white;font-weight:bold;font-
family:arial;font-size:11px;">Password</span></td><td
class="icePnlGrdCol2 loginGridCol2" id="loginForm:j_id16-1-1"><div
class="icePnlGrp" id="loginForm:j_id20"><input class="iceInpSecrt"
id="loginForm:password" name="loginForm:password" onblur="setFocus
('');" onfocus="setFocus(
this.id);" onkeypress="submitonEnter
();iceSubmit(form,this,event);" onmousedown=";this.focus();"
style="width:150px;" type="password" value="" /></div></td></tr>
<tr class="icePnlGrdRow1 loginGridRow1"><td class="icePnlGrdCol1
loginGridCol1" id="loginForm:j_id16-2-0"><div class="icePnlGrp"
id="loginForm:j_id21"><input class="iceSelBoolChkbx"
id="loginForm:rememberMe" name="loginForm:rememberMe" onblur="setFocus
('');" onfocus="setFocus(
this.id);" style="padding:0px;margin:
0px;" type="checkbox" /></div></td><td class="icePnlGrdCol2
loginGridCol2" id="loginForm:j_id16-2-1"><span class="iceOutTxt"
id="loginForm:j_id22" style="color:white;font-weight:normal;font-
family:arial;font-size:11px;">Remember my login on this computer </
span></td></tr></tbody></table>
<div class="icePnlGrp" id="loginForm:j_id23" style="padding:20px 0px
5px 0px;"><div class="icePnlGrp" id="loginForm:j_id24" style="width:
190px;text-align:center;height:20px;"><input class="iceCmdBtn"
id="loginForm:j_id25" name="loginForm:j_id25" onblur="setFocus
('');" onclick="iceSubmit(form,this,event);return false;"
onfocus="setFocus(
this.id);" src="/extranet/images/core/logon.jpg"
type="image" /></div></div>
<div class="icePnlGrp" id="loginForm:j_id26" style="width:190px;text-
align:left;height:70px;"><table class="icePnlGrd"
id="loginForm:j_id27"><tbody><tr class="icePnlGrdRow1"><td
class="icePnlGrdCol1" id="loginForm:j_id27-0-0"><span
id="loginForm:j_id28"></span></td></tr>
<tr class="icePnlGrdRow2"><td class="icePnlGrdCol1"
id="loginForm:j_id27-1-0"><span id="loginForm:j_id29"></span></td></
tr></tbody></table>
<table id="loginForm:j_id30" style="display:none;"><td></td></table></
div>
<div class="icePnlGrp" id="loginForm:j_id31" style="width:250px;text-
align:center;"><a class="iceCmdLnk" href="javascript:;"
id="loginForm:j_id32" onblur="setFocus('');" onclick="var
form=formOf(this);form
['loginForm:_idcl'].value='loginForm:j_id32';return
iceSubmit(form,this,event);" onfocus="setFocus(
this.id);"
style="color:white;font-weight:bold;font-family:arial;font-size:
10px;text-decoration:underline;">Forgot your password ?</a></div>
<div id="loginFormhdnFldsDiv" style="display:none;"><input
name="loginForm:_idcl" type="hidden" /></div></form></div></center></
div>
<form action="javascript:;" class="iceFrm" enctype="application/x-www-
form-urlencoded" id="forgotPasswordForm" method="post"
onsubmit="return false;"><script type="text/javascript">$element
(document.getElementById
('forgotPasswordForm')).captureAndRedirectSubmit();</script><input
name="forgotPasswordForm" type="hidden" value="forgotPasswordForm" /
><input name="icefacesCssUpdates" type="hidden" value="" /><div
class="icePnlPop corePopup" id="forgotPasswordForm:j_id33"
name="forgotPasswordForm:j_id33" style="width: 350px;height:
120px;;padding-bottom:10px;display:none;"><table cellpadding="0"
cellspacing="0" width="100%"><tr><td class="icePnlPopHdr corePopupHdr"
id="forgotPasswordForm:j_id33Handle"><div class="icePnlGrp
popupHeaderWrapper" id="forgotPasswordForm:j_id34"><span
class="iceOutTxt popupHeaderText" id="forgotPasswordForm:j_id35"
style="color: #C1E244;font-size:12px;">Forgot your password ?</
span><input alt="Close" class="iceCmdBtn popupHeaderImage"
id="forgotPasswordForm:j_id36" name="forgotPasswordForm:j_id36"
onblur="setFocus('');" onclick="iceSubmit
(form,this,event);return false;" onfocus="setFocus(
this.id);" src="/
extranet/images/core/closePopup.gif" title="Close this popup"
type="image" /></div></td></tr>
<tr id="forgotPasswordForm:j_id33-tr"><td class="icePnlPopBody
corePopupBody"><div class="icePnlGrp popupBody"
id="forgotPasswordForm:j_id37"><div class="icePnlGrp"
id="forgotPasswordForm:j_id43"><div class="icePnlGrp"
id="forgotPasswordForm:j_id44" style="height:20px;"></div>
<div class="icePnlGrp" id="forgotPasswordForm:j_id45" style="margin:
5px 0px 5px 0px;height:20px; text-align:center;"><span
id="forgotPasswordForm:j_id46"></span></div></div>
<center><input class="iceCmdBtn" id="forgotPasswordForm:j_id49"
name="forgotPasswordForm:j_id49" onblur="setFocus('');"
onclick="iceSubmit(form,this,event);return false;" onfocus="setFocus
(
this.id);" src="/extranet/images/core/close.jpg" type="image" /></
center></div></td></tr></table>
<script language="JavaScript" type="text/javascript">Ice.modal.stop
('forgotPasswordForm:j_id33');</script></div>
<div id="forgotPasswordFormhdnFldsDiv" style="display:none;"></div></
form>
<script id="xp1JW_LvPTAXPwb-mq7qRg:1:dynamic-code" type="text/
javascript">Ice.autoPosition.stop
('forgotPasswordForm:j_id33');Ice.autoCentre.start
('forgotPasswordForm:j_id33');Ice.iFrameFix.start
('forgotPasswordForm:j_id33','/extranet/xmlhttp/blank');//-714242947</
script>
<noscript><meta content="0;url=/extranet/xmlhttp/javascript-blocked"
http-equiv="refresh" /></noscript></body></html>
Aurriez vous une idée pour quoi ça marcherait pas ?
Est ce qu'il y a quelqu'un qui a deja fait ce genre de test, à savoir
une connexion à une application JSF ?
Merci pour votre aide, si vous avez besoin que je vous montre mon plan
de test je peux encore le détailler où faire des captures d'ecran