tag:blogger.com,1999:blog-58921355383140597112024-02-20T22:43:22.154-08:00Golam Sarwar's blogA. K. M. Golam Sarwarhttp://www.blogger.com/profile/08307333629355557416noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-5892135538314059711.post-46104783005265491582013-04-28T01:52:00.001-07:002013-04-28T01:53:35.693-07:00ASP.NET Login testing with jmeter<div dir="ltr" style="text-align: left;" trbidi="on">
This is my first technical blog and I am happy to start this at last.<br />
<br />
I want to show here how to test login with a ASP.NET website with <a href="http://jmeter.apache.org/">jmeter</a>, a load-testing tool. The steps are:<br />
<br />
<b>Step 1. </b><b><b>First </b>Add a Thread Group:</b><br />
Right click Test Plan and select <i>Add->Thread(Users)->Thread Group.</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5gVv7ShMUYTjolVFEb6GEQucp4OHAe9ZVaUx7eZQ69TKhud3i6TqaZB8YIWB7giUQ94LR0xH-uGKkOjZCRWcoY75Db3_VoAK8qjKgJthn6qL27NUS3YyvvmofIs0a5WQNiyNxHIls92A/s1600/thread_group.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5gVv7ShMUYTjolVFEb6GEQucp4OHAe9ZVaUx7eZQ69TKhud3i6TqaZB8YIWB7giUQ94LR0xH-uGKkOjZCRWcoY75Db3_VoAK8qjKgJthn6qL27NUS3YyvvmofIs0a5WQNiyNxHIls92A/s320/thread_group.png" width="320" /></a></div>
Since, I am here not concerned with load-testing/performance, that's why I just keep the default number for Number of Threads(user), Ramp-up periods(in seconds) and Loop count. You can rename the thread group name.<br />
<br />
<b>Step 2. Add HTTP Request Defaults:</b><br />
Right Click thread group and select <i>Add->Config Elements->HTTP Request Defaults.</i><br />
In Server Name or IP, write the name of your website (e.g. www.example.com)<i> </i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBR5PUNbfScUnI4FS-UKdgeb5nKwlp3iE3i5iAcKuY711CfoqWoeMIvLEI_klDutYZaHDA7gMFXRTlPNMNWv3cUwBwU5zHcRe5IaOEo5zBhtwpEJz_ehdXKtJN7uy6CXp2AFCaO731n5Q/s1600/http_request_defaults.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBR5PUNbfScUnI4FS-UKdgeb5nKwlp3iE3i5iAcKuY711CfoqWoeMIvLEI_klDutYZaHDA7gMFXRTlPNMNWv3cUwBwU5zHcRe5IaOEo5zBhtwpEJz_ehdXKtJN7uy6CXp2AFCaO731n5Q/s320/http_request_defaults.png" width="320" /></a></div>
<br />
<b>Step 3: Add HTTP Cookie Manager:</b> <br />
This is very important for asp.net login testing, since many things like session variables and others are stored in cookie. Right click thread group and select <i>Add->Config Elements->HTTP Cookie Manager.</i><br />
Cookie policy should be set to <b>Compatibility.</b><i> </i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT5z9ApuzxUdB5JzOF5BFMAEJ_opLMw8WFtR5NsMSW4SOa036PHbiJM2aZkNLFi-diiE2IUdlHGzM1ugaFHMmg3EaDOA1qC88689vv6i5yQ1c7Q8xsuUYDOpQeiGb4wtYggtzzndDs3dc/s1600/http_cookie_manager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT5z9ApuzxUdB5JzOF5BFMAEJ_opLMw8WFtR5NsMSW4SOa036PHbiJM2aZkNLFi-diiE2IUdlHGzM1ugaFHMmg3EaDOA1qC88689vv6i5yQ1c7Q8xsuUYDOpQeiGb4wtYggtzzndDs3dc/s320/http_cookie_manager.png" width="320" /></a></div>
<br />
<b>Step 4: Add Login page of your test site:</b><br />
<br />
You can add your login page under thread group but I suggest you to add it under a Simple Controller for better grouping. Right click thread group and select <i>Add->Logic Controller->Simple Controller</i><br />
<br />
Then Right click Simple Controller and select <i>Add->Sampler->HTTP Request.</i><br />
<i> </i>In Path, provide the login page's path (here, /Login.aspx), select <b>GET</b> method and rename this controller name as 'Home page' (<i>optional</i>).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz282P5T5THz4Kxz2R36ZdoC-EQsZ9bZrzq70ti-KXpD2LKm3FIha7YAEQkMFhVCfIQbxSQrFUiXHfr2KdxpBDy9883A-RCZ7M6e4PiKYlHoXe5DBdclB0psHQlRmrdZ4HTUzOoki_gpo/s1600/home_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz282P5T5THz4Kxz2R36ZdoC-EQsZ9bZrzq70ti-KXpD2LKm3FIha7YAEQkMFhVCfIQbxSQrFUiXHfr2KdxpBDy9883A-RCZ7M6e4PiKYlHoXe5DBdclB0psHQlRmrdZ4HTUzOoki_gpo/s320/home_page.png" width="320" /></a></div>
<br />
<b>Step 5: Provide Login credentials:</b><br />
Now, Right click Simple Controller again and select<i> Add->Sampler->HTTP Request</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoe9p7a1MkFTWO5xSzmpVS7v84W77D-LC6gmSXhp3TEdQs-EvzfQuo3kYOG270rRNLaEflB6NQqfCP3nrH72zOUB4V6Ss5hnVAMgxenatAJi_eR-2UAjUr9ONHflz5AjXxLWFa1P0YEFQ/s1600/login.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoe9p7a1MkFTWO5xSzmpVS7v84W77D-LC6gmSXhp3TEdQs-EvzfQuo3kYOG270rRNLaEflB6NQqfCP3nrH72zOUB4V6Ss5hnVAMgxenatAJi_eR-2UAjUr9ONHflz5AjXxLWFa1P0YEFQ/s320/login.png" width="320" /></a></div>
<br />
Here, the method will be <b>POST</b>, path will be again '/Login.aspx<i>'.</i> Un-check 'Redirect Automatically' and Check 'Follow Redirects'<i>.</i> Now you have to add your login credentials. <br />
1. User Name<br />
2. Password<br />
3. Submit Button <br />
<br />
Name of these parameters will be the "<i>name (not the id) of the <input> tag</i>" (look at the example image, it is "<i>ctl00$body$LoginUser$UserName</i>") and value will be userName of the web site.<br />
<br />
To find out these exact values of these parameters, you can use the following guidelines<br />
<a href="http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf">http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf</a><br />
<br />
You have to add some more parameters here but before that, you need to do something extra. we will come back to this step later.<br />
<br />
<b>Step 6: Add Event and ViewState Regular expression extractor:</b><br />
Right click<b> </b>thread group and select <i>Add->Post Processors->Regular Expression Extractor</i><br />
Name this as <b>event </b>and regular expression for this:<br />
<i>name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5ckyvaQZqNDhuZqoiNjqEmn10IMeBShaDChWyLGdh9EczArMQlKbLlwj3vfmpGwDw7s39KU2WP_2oYoc4PeXnkkQAadvCe5BBlEmpX-S6TIhdoe9jaDWTFRnzXP3Jv4Ink57LRHODNU/s1600/event.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5ckyvaQZqNDhuZqoiNjqEmn10IMeBShaDChWyLGdh9EczArMQlKbLlwj3vfmpGwDw7s39KU2WP_2oYoc4PeXnkkQAadvCe5BBlEmpX-S6TIhdoe9jaDWTFRnzXP3Jv4Ink57LRHODNU/s320/event.png" width="320" /></a></div>
<br />
In same way, add another regular expression extractor and name it <b>viewstate</b>. Regular expression for this: <br />
<i>name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"</i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJQbgz4MeJxNiLYNqBcB5wqPp6EMRrFwK1_JdYmQ4lHtrfyTHVQ7rkyHx74xRG4o1SFGYyQj7q42X-FVoshkqhKTUgmfJdKJqJZybjwHBy-oEN4rDAjxTn2jQOlwsgs0h11NC06-fL4Y/s1600/http_cookie_manager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKUS-wlW1uBGR1qIYbtI-Oyz_FxiD4Ur0cv-BbJSKOIP4lhdNwbCuP8zdi17ITOgpdmD1AKPS9NtmYv0LO3zC5mMtFBycWF6xLJ-ES0KU8yEt8yG2NVOVc8_0rOjX7SWCFBpQnAhzAR4s/s1600/viewstate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKUS-wlW1uBGR1qIYbtI-Oyz_FxiD4Ur0cv-BbJSKOIP4lhdNwbCuP8zdi17ITOgpdmD1AKPS9NtmYv0LO3zC5mMtFBycWF6xLJ-ES0KU8yEt8yG2NVOVc8_0rOjX7SWCFBpQnAhzAR4s/s320/viewstate.png" width="320" /></a></div>
<br />
<b><span id="goog_1354101358">Step 7: Add event and viewstate values to Login POST page:</span></b><br />
<br />
<span id="goog_1354101358">Now go back to step 5 and add some these two variables here (event and viewstate) </span><b><span id="goog_1354101358"> </span></b><br />
<span id="goog_1354101358">1. Name: __VIEWSTATE </span><br />
<span id="goog_1354101358"> value: ${VIEWSTATE} </span><b><span id="goog_1354101358"></span></b><br />
<span id="goog_1354101358">2. </span><span id="goog_1354101358">Name: __EVENTVALIDATION</span><br />
<span id="goog_1354101358"> value: ${EVENTVALIDATION}</span><br />
<br />
<span id="goog_1354101358">Don't forget to click the <b>Encode </b>checkbox.</span><br />
<br />
<span id="goog_1354101358"><b>Step 8: Add View Results Tree:</b></span><br />
<span id="goog_1354101358"><br /></span>
<span id="goog_1354101358"> The last step is to add View Results Tree from</span><br />
<span id="goog_1354101358"><i>Add->Listener->View Results Tree</i> </span><br />
<br />
Now save your test plan and click the start button. You can see that the login will be successful inshaAllah.<br />
<br />
Your comments are most welcome!</div>
A. K. M. Golam Sarwarhttp://www.blogger.com/profile/08307333629355557416noreply@blogger.com8