You are on page 1of 53

-1-

PROJECT REPORT ON HOTEL GALAXY RESERVATION SYSTEM - TESTING


Submitted in partial fulfillment for the award of certificate in

Diploma in Software Testing and Quality Assurance (DSTQA) From

NIIT
By -2-

FATHIMA HAFEEZ

Registration number:

Batch Code Start Date Name of the Coordinator Name of the Tester

: : : : 28 Feb 2011 Ms.Rosy FATHIMA HAFEEZ End Date : 12 May 2012

Date of Submission

-3-

NIIT

-4-

CERTIFICATE

This is to certify that this report, titled Hotel Frozen Galaxy reservation system testing, represents the original work done by FATHIMA HAFEEZ in partial fulfillment of his course requirement at NIIT.

Coordinator :

ACKNOWLEDGEMENT
First of all I would like to Thank Mr. Mahesh of NIIT BTM, who guided us from the start of the testing course to till its completion and supported us till we complete the

-5-

course. He was our problem solver through our course and without his support we could not have complete the course till its completion. I would like to thank all the members, staff, Faculties of NIIT BTM layout Center, Bangalore, for their kind co operation during my tenure with them as their student. They taught all they knew and cleared all my silly doubts with utmost care and tenderness. It is that learning follows in my project. Next I would like to thank all co students at the NIIT BTM Layout centre that extended their help whenever I was in need of one. The Guidance provided by Ms Rosy, in spite of her busy schedule at her office was invaluable and the Ideas she provided are very crux of the project we are at. .

FATHIMA HAFEEZ

-6-

CONTENTS

1. 2. 3. Purpose

Introduction Objectives Test Plan Introduction

7 8 9

Background Scope. 4. 5. 6. 7. 8. 9. Test Plan - features to be tested. (Functional testing) Test Plan - Test Strategy Test Plan - Resources Required. Test Plan - Project Miles Stones. Test Script Details / Test Cases. Test execution screens 10 11 12 13 14 15 34 47 48 49

10. Test Reports 11. Defect Report 12. Performance test reports

1.

INTRODUCTION
-7-

Frozen Galaxy Hotel started its operations in California in the year 2001. The Hotel has a reputation for taking good care of its customers. It keeps introducing innovative ideas and policies to enhance its customer base and retain existing customers. The hotels excellent services and amenities have resulted in a 50% increase in the annual revenues. To handle the increased volume of transactions, the management has approached the Global software solutions provider Ltd, to develop a website for Hotel.

The designed website needs to facilitate hotel staff and customer: Management of Rooms to facilitate adding and Deleting rooms Management Customers reservations of Rooms to Facilitate Booking of rooms or canceling the Room so booked. Management of Miscellaneous operating departments.

Design of the Developed System :


The system developed by the software provider has the following two interfaces: 1. Administrator Interface (For the use of the Hotel staff) 2. Customer Interface (For the use of online customer) The administrator interface provides the following facilities.

Manage Rooms: It allows manage the rooms that are available in the
hotel. It includes two functions 1. Creating new room details. 2. Canceling room bookings.

Manage announcements: This facility will allow hotel staff to manage


the announcements that are required to be displayed to the customer while they are booking a room in the hotel. -8-

The following figure shows the hotel staff interface.

The interface for the hotel customer provides the following facilities: Book Rooms: This facility will allow a customer to book a room. View Details: This facility will allow a customer to view the vacant rooms. It will also allow a customer to view the various announcements made by the Hotel.

The following figure shows the customer interface.

OBJECTIVES
As a part of the software testing team, we need to test the hotels newly developed system. The testing will have the following four phases. 1. Creating test plan 2. Create test cases 3. Executing tests -9-

4. Reporting defects.

Test Plan
Purpose The newly developed web based Reservation system for the hotel needs to be tested for all the various functions that it aims to provide. The functional testing for the system is conducted to identify any defect that may be there hidden in the system. Since multiple users log in to the system to access the information needed along with the functional testing we have to do the performance testing as well.

Background:

Before the system was developed the Hotel staff used the manual records for the information and customers had to call hotel staff to inquire the rooms availability and book the rooms for the dates required. But as the business has grown many folds, it is not possible to handle the entire information manually. Thus a new web based system had to be developed with both Hotel staff and customer on mind.

- 10 -

The system will have to give provide the following features or functions to Customers. 1. Login and logout features for security reasons. 2. Should be able to check rooms availability 3. Should be able to view announcements by the hotel. 4. Should be able to book Rooms online. The system will have to give the following functions to Hotel staffs. 1. Login and logout features for security reasons. 2. Manage rooms 3. Add new rooms. 4. Cancel the room reservations 5. Should be able to make announcements to customers 6. Inquire room availability status.

All the above functions have to be tested with customer view and also from staffs view in mind. This will be covered in functional testing of the system. As multiple customers and hotel staff may access the system at the same time we have to conduct performance testing to see the maximum traffic that the system tolerates and System Works with out any problem.

Scope of Testing

The Scope of this testing is limited only to the functionalities that the system provides and does not cover the various functional enhancements that can be made to the system. Also the tester assumes that the system developed is as per customers requirement.

- 11 -

The functional and performance testing is conducted on the same machines with same hardware configuration that are normally available in the market places as we assume that the customer uses the same type of hardware. The details of the Hardware specification will be given in the resources required to complete the testing list.

Even though various other type of testing can be conducted the scope of this testing is limited to Functional testing and performance testing. User acceptance testing is out of scope of this testing.

Functional Testing
Following are the features tested in the application under testing for both Admin (Hotel Staff and System administrator) and customer (Hotel customer). Two users with the name and password Admin and Customer are created for the purpose of testing which will be deleted later once the testing is complete. 1. Login functionality 2. Reservation functionality 3. Vacant room reports on any give day. 4. Room availability on a particular date. 5. View announcements. 6. Log out functionality. 7. Booking Cancellation functionality. As the functions to be tested is less we are going to write manual test script for each function and do manual testing. Record defects found during the testing and produce them in the form of Defect reports.

Performance Testing:
- 12 -

The system under testing is an online hotel reservation system and many online users and the hotel staff will be accessing the system at the same time. This necessitates according to the service level agreements with the client to do performance testing to give performance guarantee according to the user specifications. The system will be tested by doing work load analysis. Three types of performance test we are going to do are Load testing, Volume testing and Stress testing

To ensure how the system behaves and what are the improvements needed if any as per the performance report.

Test Strategy
The system under testing will be tested first for the functionality that it is going to provide. Test cases are written manually and the scripts are going to guide the testers to test the function separately. Manager oversees the complete testing project. He coordinates with the client, internal teams and his own team to get resources as required. The manager uses the IBM rational test manager to manage his test project. He is the person responsible for coordinating with Developers and will be assisted by Test designers.

The manager will be assisted by 2 test designers to evaluate the Clients requirements, design test cases, gather assemble test requirements, coordinates with testers for getting the systems tested. They also analyze the test reports and defect reports. They provide recommendation to the client and developers as per the out come of the test results. The designers use IBM rational test manager and manual tester for this purpose. - 13 -

The designers will do two type of testing, first functional testing to verify the functional requirement of the client. Second they do the performance testing on various type of system using IBM rational performance tester.

Five independent testers will test the functions as per the test script designed by the test designers on various types of systems as assigned by the test designers. They open the defect report or change request as and when they do the testing and forward them to designers for the review. Designers will take care of the reports and forward them to the developers after they discuss that with the Manager.

Following resources are required for the system testing.

Human Resources for Testing Five testers, 2 test designers and a test manager is required for the following purposes. Testers are going to test the functions in the system independently and give defect reports once the testing is completed. They use the test cases designed by the test designers and we require 2 test designers to design the testing and analyze the testing reports and defect reports. Test manager provides technical direction and coordinate with various other teams to get resources. He is responsible for the success of the testing efforts. The following table shows the Head count requirement for testing.

Worker

Minimum Resources Required

Responsibilities Provide technical direction. Acquire appropriate resources. Coordinate with Developers Design and generate Test cases

Test Manager

Test Designer

- 14 -

Evaluate Defect reports and work with Developers and Managers.

Evaluate effectiveness of test effort. Execute test scripts Tester 5 Log results. Document and forward defects to Test designers.

System resources for testing 8 systems with following minimum Hardware configuration Systems with Intel Pentium processor, 1024 MB RAM, Color Display Monitor, Windows XP operating system with Internet explorer Browser. IBM Rational performance tester, required to conduct the performance testing. IBM Rational manual tester, require to write the scripts to manual testers to conduct the functional testing. IBM Rational Test manager, IBM Rational Robot and Complete IBM Testing Suites required for creating automated scripts for performance testing. Hotel Galaxy reservation system up and running which is the system to be tested. Project Milestones The following time table shows the total time required for the testing project along with the major milestones. Task Test Planning Test Design Test Development Test Execution Test Evaluation Test Documentation - 15 Effort 1 week 1 week 1 Week 3 days 3 days Start date 05/02/2011 05/09/2011 05/16/2011 05/23/2011 05/27/2011 End date 05/08/2011 05/15/2011 05/22/2011 05/26/2011 05/31/2011

Ideally the project should start on May 1st and End on May 31.

Test Cases
The Scripts are written for the each of the following test cases and are attached as a separate file for each of the following test cases. Some of the test cases written are attached in the table below for just reference.

1. Login functionality 2. Reservation functionality 3. Vacant room reports on any give day. 4. Room availability on a particular date. 5. View announcements. 6. Log out functionality. 7. Booking Cancellation functionality

Test Scenarios _ Test cases Table. SL No Test Scenario


1 HG_Login_usename

Test case Condition ID


HG001 Alphanumeric no special # in Username

Descripti on
Try special # in user name

Table

Test Action Exp. date


05/11 Enter special # in username And click submit

Result
Fail

2.

HG_Login_usename

HG002

Alphanumeric no special # in Username

Try only alphabets in username Try only numerals in

05/11

button Enter username with only

Fail

HG_Login_usename

HG003

Alphanumeric no special # in

05/11

Alphabets Enter username

Fail

- 16 -

Username 4 HG_Login_usename HG004 Alphanumeric no special # in Username

username Try username with Alphabets and numerals 05/11

with only numerals Enter a username That has both Alphabets and Pass

HG_Login_usename

HG005

Alphanumeric no special # in

Keep username blank Keep password Blank

05/11

numerals Keep user name

Fail

HG_Login_Password

HG006

Username Alphanumeric no special # in Password

05/11

blank Keep password blank

Fail

HG_Login_Password

HG007

Alphanumeric no special # in Password

Try special # in password

05/11

Use special # in password

Fail

HG_Login_Password

HG008

Alphanumeric no special # in Password

Try only alphabets Try numerals

05/11

field User to enter only

Fail

HG_Login_Password

HG009

Alphanumeric no special # in Password

05/11

alphabets User to enter only numerals in password

Fail

In the similar manner we have designed test cases for all the modules in the reservation system. Some of the screen shots of the test failures and passes are given below.

- 17 -

- 18 -

- 19 -

- 20 -

Test Scripts
Login Click on the start Button and Select Internet explorer Browser Type http://localhost:1197/HotelFrozenGalaxyReservation/login.aspx Hit Enter or refresh button. Verify if the folowing Screen Appears.

Enter the user name admin and password admin and click on the Login submit button.

- 21 -

Verify if the following Screen appears.

- 22 -

Now we are in the home page of the website. <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@page import="java.util.*"%> <%@page import="java.util.GregorianCalendar.*"%> <%@page import="java.lang.*"%> <%@page import="java.sql.*"%> <%@page import="GalaxyHotelReservation.ConnectToDatabase"%> <%-The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> - 23 -

--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK media="screen" href="DatePicker_Sheet.css" type="text/css" rel="StyleSheet"> <SCRIPT language="JavaScript" src="DatePicker.js"> </SCRIPT> <title>Vacant Room Reports</title> <% java.util.Date FromDate=null; java.util.Date ToDate=null; java.sql.Date tDate=null; java.sql.Date SearchDate=null; Connection con=null; int i=0; java.text.SimpleDateFormat d; Calendar clnKFrom,clnKTo; %> <script> var mode; var fromDate,toDate; - 24 -

function MenuItemClick(RoomNo,FromDate,ToDate) {

frmRoom.action='Reservation.jsp? RoomNo='+RoomNo+'&FromDate='+FromDate+'&ToDate='+ToDate; //alert(frmRoom.action); frmRoom.submit();

function ShowStatus() {

if(frmRoom.txtdatefrom.value.length==0 || frmRoom.txtdateto.value.length==0) alert("From Date or To Date Can Not Be Empty"); else { fromDate=frmRoom.txtdatefrom.value; toDate=frmRoom.txtdateto.value;

if (new Date(fromDate) > new Date (toDate)) {alert("From Date Can Not Be Greater Than To Date");return 0;}

- 25 -

frmRoom.action='AdminVacantRoomReport.jsp? TypeOfRoom='+frmRoom.RoomType.value+'&FromDate='+fromDate+'&ToDate='+toDat e; //alert(frmRoom.action); frmRoom.submit(); }

} </script> </head> <body bgcolor=LightYellow> <hr> <form name="frmRoom" method="post"> <h2><u>Vacant Room Reports</u></h2> <br> <table border="0"> <tr> <td>Type:</td> <td><select id="RoomType" name="RoomType" width="10"> <option value="Economic" selected>Economic</option> <option value="Executive">Executive</option> <option value="Presidential">Presidential</option> - 26 -

</select></td> </tr> <tr> <td>From Date:</td> <td><input id="txtdatefrom" style="WIDTH: 93px" readOnly type="text" maxLength="12" name="txtdatefrom" size="10"> <img name="CmdShowStart" onclick="displayDatePicker('txtdatefrom', this,'mdy','/');" src="cal.jpg"> </td> </tr> <tr> <td>To Date:</td> <td><input id="txtdateto" style="WIDTH: 93px" readOnly type="text" maxLength="12" name="txtdateto"> <img name="CmdShowStart" onclick="displayDatePicker('txtdateto', this,'mdy','/');" src="cal.jpg"> </td> </tr> </table> <P> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="btnNewRoom" type="button" value="Show Status" onclick="ShowStatus();">

<hr> <% - 27 -

int rn = 0; String RType = request.getParameter("TypeOfRoom");

if (request.getParameter("FromDate")!=null) { d = new java.text.SimpleDateFormat("mm/dd/yyyy"); FromDate=d.parse(request.getParameter("FromDate").toString()); ToDate=d.parse(request.getParameter("ToDate").toString()); //out.print("From Date is " + request.getParameter("FromDate").toString()); //out.print("To Date is " + request.getParameter("ToDate").toString());

clnKFrom=Calendar.getInstance(Locale.US); clnKTo=Calendar.getInstance(Locale.US);

//out.print("month is "+clnKFrom.get(Calendar.MONTH)); %> <script> frmRoom.RoomType.value="<%=RType%>"; frmRoom.txtdatefrom.value='< %=request.getParameter("FromDate").toString()%>'; frmRoom.txtdateto.value='< %=request.getParameter("ToDate").toString()%>'; //frmRoom.idays.selectedIndex=< %=(Integer.parseInt(request.getParameter("FromDate").toString().substring(3,5))-1)%>;

- 28 -

//frmRoom.odays.selectedIndex=< %=(Integer.parseInt(request.getParameter("ToDate").toString().substring(3,5))-1)%>; //frmRoom.imonths.selectedIndex=< %=(Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2))-1)%>; //frmRoom.omonths.selectedIndex=< %=(Integer.parseInt(request.getParameter("ToDate").toString().substring(0,2))-1)%>;

</script> <%%>

<% if(! (request.getParameter("FromDate").toString().substring(0,2).equalsIgnoreCase(request.getP arameter("ToDate").toString().substring(0,2)))) { out.write("This is month based report. Please select the dates from the same month."); } else{

try{

if (clnKFrom.get(Calendar.YEAR)!=1) {

- 29 -

//String SqlStmt = "Select * from RoomMaster where Type='" + RType + "' and (('" + clnKFrom.get(Calendar.MONTH) + "/" + clnKFrom.get(Calendar.DATE) + "/" + clnKFrom.get(Calendar.YEAR) + "'>CheckOutDate or '" + clnKTo.get(Calendar.MONTH) + "/" + clnKTo.get(Calendar.DATE) + "/" + clnKTo.get(Calendar.YEAR) + "'<CheckInDate) or (checkInDate is null and checkOutDate is null))"; //String SqlStmt = "Select * from RoomMaster where Type='" + RType + "' and (('" + request.getParameter("FromDate").toString() + "'>CheckOutDate or '" + request.getParameter("ToDate").toString(); //out.write(SqlStmt); //String SqlStmt="Select * from RoomMaster where Type='" + RType+"'"; //String SqlStmt="Select * from RoomMaster where Type='" + RType + "' and (('" + request.getParameter("FromDate").toString() + "'>CheckOutDate or '" + request.getParameter("ToDate").toString()+"'<CheckInDate) or (checkInDate is null and checkOutDate is null))"; //String SqlStmt="select * from RoomMaster where Type='" + RType + "' and RoomNo Not In(select RoomNo from reservation where Status is null and ('" + request.getParameter("FromDate").toString() + "' between CheckInDate and CheckOutDate or '" + request.getParameter("FromDate").toString() + "' between CheckInDate and CheckOutDate))"; //String stmt="sdfsdfs<CheckInDate) or (checkInDate is><"; //out.write(SqlStmt); //out.write("\nTotal Rows Are " + RoomsAll.getRow());

//if (RoomsAll.getRow()!=0) //java.sql.Date fDate=java.sql.Date.valueOf(request.getParameter("FromDate").toString()); - 30 -

//tDate=java.sql.Date.valueOf(request.getParameter("ToDate").toString()); //SearchDate=java.sql.Date.valueOf(request.getParameter("FromDate").toString() ); %> <P></P> <table width="400"> <tr> <th width="20"> Date</th><th width="50"><nobr>No Of Vacant Room(s)<nobr></th></tr> <% con=ConnectToDatabase.getJDBCConnection(); int j=ToDate.compareTo(FromDate); clnKFrom.setTime(FromDate); clnKTo.setTime(ToDate); int fd=clnKFrom.get(Calendar.DAY_OF_MONTH); int td=clnKTo.get(Calendar.DAY_OF_MONTH); while(fd<=td) {

clnKFrom.setTime(FromDate); //out.write("Month is "+clnKFrom.get(Calendar.MONTH));

//String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from - 31 -

reservation where Status is null and ('"+Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)+"' between (checkInDate) and (CheckOutDate)))"; String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from reservation where Status is null and (('"+Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)+"'>=checkInDate) and ('"+Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)+"'<=dateadd(Day,-1,CheckOutDate))))"; //String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from reservation where Status is null and (('"+Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)+"' > checkInDate) and ('"+Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)+"'<=dateadd(Day,-1,CheckOutDate)))"; //String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from reservation where Status is null and ('"+clnKFrom.get(Calendar.MONTH) +"/"+clnKFrom.get(Calendar.DAY_OF_MONTH)+"/"+clnKFrom.get(Calendar.YEAR)+"' between (checkInDate) and (CheckOutDate)))"; //String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from reservation where Status is null and - 32 -

('"+clnKFrom.MONTH+"/"+clnKFrom.DAY_OF_MONTH+"/"+clnKFrom.YEAR+"' between (checkInDate) and (CheckOutDate)))"; //String SqlStmt="select Count(RoomNo) as NoOfVacantRooms from RoomMaster where type='"+RType+"' and RoomNo Not In(select RoomNo from reservation where Status is null and ('"+clnKFrom.MONTH+"/"+clnKFrom.DAY_OF_MONTH+"/"+clnKFrom.YEAR+"' between (checkInDate) and (CheckOutDate)))"; //out.write(SqlStmt); Statement stmt=con.createStatement(); ResultSet RoomsAll = stmt.executeQuery(SqlStmt); //{%>

<%

//int i = 0;

//Date CheckInDate,CheckOutDate; i=0; while(RoomsAll.next()) { //rn = Integer.parseInt(RoomsAll.getString("RoomNo")); //CheckInDate = RoomsAll.getString("CheckInDate"); //CheckOutDate = RoomsAll.getString("CheckOutDate"); %> <tr>

- 33 -

<td width="50">< %=Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2)) +"/"+fd+"/"+clnKFrom.get(Calendar.YEAR)%></td> <td width="50">< %=RoomsAll.getString("NoOfVacantRooms")%></td> </tr> <% i++; } fd++; //FromDate=DateAdd(FromDate); }

%> </table> <hr> <b> <%

%></b> <% } //}

} catch(SQLException ex){System.out.println("\n SQL Exception during validation"+ex.toString());} - 34 -

} %> <%}%> <%! public java.util.Date DateAdd(java.util.Date av) { long t = av.getTime(); t -= 1 * 24 * 60 * 60 * 1000; java.util.Date then = new java.util.Date(t); return(then); }

%> </form> </body> </html>

Test Execution
The test cases are executed with the help of testers and some of the screen shots of the various test cases are captured below. Only test cases with Fail as the expected results are

- 35 -

captured as the ones with Pass are already displayed in the previous section.

- 36 -

The above test is for blank pass word for login which failed as expected.

The above screen shot is for keeping date field blank for room reservation status. Fails as expected and gives error message.

- 37 -

Confirmation screen before logout appears as expected. Test case passes.

RESERVATION Login to the system as given below Login Click on the start Button and Select Internet explorer Browser Type http://localhost:1197/HotelFrozenGalaxyReservation/login.aspx Hit Enter or refresh button. Verify if the folowing Screen Appears. Enter the user name admin and password admin and click on the Login submit button. Verify if the following Screen appears. Now we are in the home page of the website. Click on the Reservation tab. Verify if the following screen appears.

- 38 -

Select type as Economic Enter 05/11/2011 in the From date field Enter 05/15/2011 in the To date field Click on Show staClick on View tab and select Vacant Room Verify if the following screen appears <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@page import="java.util.*"%> <%@page import="java.lang.*"%> <%@page import="java.sql.*"%> <%@page import="GalaxyHotelReservation.ConnectToDatabase"%> <%@page import="GalaxyHotelReservation.GalaxyWebServiceImpl"%> <%-The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <%

- 39 -

int RoomNo=0; float Advance=0; String showMsg = null; Calendar clnCheckIn=null,clnCheckOut=null; //String CheckInDate=null,CheckOutDate=null; String strCheckInDate=null; java.util.Date CheckInDate=null; java.util.Date CheckOutDate=null; if(request.getParameter("RoomNo")!=null) RoomNo = Integer.parseInt(request.getParameter("RoomNo")); java.text.SimpleDateFormat d = new java.text.SimpleDateFormat("mm/dd/yyyy"); if(request.getParameter("FromDate")!=null) { strCheckInDate=request.getParameter("FromDate").toString(); strCheckInDate=strCheckInDate.replaceAll("/",""); CheckInDate = d.parse(request.getParameter("FromDate").toString()); //out.print("check in date is "+request.getParameter("FromDate").toString()); } if(request.getParameter("ToDate")!=null) { CheckOutDate = d.parse(request.getParameter("ToDate").toString()); //out.print("check out date is "+request.getParameter("ToDate").toString()); } String tokenNo = null; if(request.getParameter("txtTokenNo")!=null) tokenNo = request.getParameter("txtTokenNo"); clnCheckIn=Calendar.getInstance(Locale.US); clnCheckOut=Calendar.getInstance(Locale.US); if(CheckInDate!=null) clnCheckIn.setTime(CheckInDate); if(CheckOutDate!=null) clnCheckOut.setTime(CheckOutDate); if (tokenNo!=null) { String creditCardType=request.getParameter("cmbCreditCardType"); String creditCardNo=request.getParameter("txtCreditCardNo"); GalaxyWebServiceImpl galaxyWS; galaxyWS=new GalaxyWebServiceImpl(); if(galaxyWS.ValidateCreditCard(creditCardNo.toUpperCase().trim(),creditCardType.trim())) { //int roomNo=Integer.parseInt(request.getParameter("RoomNo")); String custName=request.getParameter("txtCustName"); String address=request.getParameter("txtAddress"); String phone=request.getParameter("txtPhone")+request.getParameter("txtPhone1") +request.getParameter("txtPhone2"); //int advance = Integer.valueOf(request.getParameter("txtAdvance"))); //out.write(tokenNo+"---"+roomNo+"---"+custName+"---"+address+"---"+phone); //java.text.SimpleDateFormat d = new java.text.SimpleDateFormat("yyyy-mm-dd"); //Date checkInDate=d.parse(request.getParameter("idays") +"-"+request.getParameter("imonths")+"-"+request.getParameter("iyears")); //checkInDate=request.getParameter("FromDate").toString(); //Date checkOutDate=d.parse(request.getParameter("odays")

- 40 -

+"-"+request.getParameter("omonths")+"-"+request.getParameter("oyears")); //checkOutDate=request.getParameter("ToDate").toString(); float advance=Float.parseFloat(request.getParameter("txtAdvance")); try { //String SqlStmt="INSERT INTO Reservation(TokenNo,RoomNo,CustName,Address,Phone,CheckInDate,CheckOutDate,CCType,C CNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+clnCheckIn.getTime ()+"','"+clnCheckO.getTime()+"','"+creditCardType+"','"+creditCardNo+"',"+advance+")"; //String SqlStmt="INSERT INTO Reservation(TokenNo,RoomNo,CustName,Address,Phone,CheckInDate,CheckOutDate,CCType,C CNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+request.getParamet er("FromDate").toString())+"','"+request.getParameter("ToDate").toString()) +"','"+creditCardType+"','"+creditCardNo+"',"+advance+")"; //String SqlStmt="INSERT INTO Reservation(TokenNo,RoomNo,CustName,Address,Phone,CCType,CCNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+creditCardType+"','" +creditCardNo+"',"+advance+")"; String SqlStmt="INSERT INTO Reservation(TokenNo,RoomNo,CustName,Address,Phone,CheckInDate,CheckOutDate,CCType,C CNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+request.getParamet er("FromDate").toString()+"','"+request.getParameter("ToDate").toString() +"','"+creditCardType+"','"+creditCardNo+"',"+advance+")"; //'"+checkInDate+"','"+checkOutDate+"',,CheckInDate,CheckOutDate //String SqlStmt1="UPDATE RoomMaster SET Status='Reserved', CheckInDate='"+request.getParameter("FromDate").toString()+"', CheckOutDate='"+request.getParameter("ToDate").toString()+"' where RoomNo="+RoomNo; //out.write(SqlStmt1); out.write(ConnectToDatabase.ExecuteQueryWithResponse(SqlStmt)); showMsg=("Selected Room Is Reserved!!!" + " The Generated Token No Is '"+tokenNo+"'. Please keep the Token Number for your future reference and communication. "); } catch(Exception e){ out.write(e.getMessage()); out.write("Sql Server Error"); } //out.write(tokenNo+"---"+roomNo+"---"+custName+"---"+address+"---"+phone+"---"+creditCard Type+"---"+creditCardNo+"---"+advance+"---"+checkInDate+"---"+checkOutDate); } else{ out.write("Credit Card No Is Not Valid!!!"); } //clnCheckOut.get(Calendar.MONTH) } %> <script> function GenTokenNo() { if(frmReservation.txtCustName.value.length==0) {alert("Please Enter Customer Name!!!"); return;}

- 41 -

frmReservation.txtTokenNo.value=(frmReservation.txtCustName.value.charAt(0).toUpperCase() +frmReservation.txtCustName.value.charAt(1).toUpperCase()+frmReservation.RoomNo.value+"< %=strCheckInDate%>"); } function Reserve() { if(frmReservation.txtCustName.value.length==0) { alert("Customer Name Should Not Be Blank!!!"); return(0); } if(frmReservation.txtAddress.value.length==0) { alert("Address Should Not Be Blank!!!"); return(0); } if (isNaN(frmReservation.txtPhone.value)) { alert("Phone no can not be Non Numeric!!!"); return(0); } if (isNaN(frmReservation.txtPhone1.value)) { alert("Phone no can not be Non Numeric!!!"); return(0); } if (isNaN(frmReservation.txtPhone2.value)) { alert("Phone no can not be Non Numeric!!!"); return(0); } if (frmReservation.txtPhone.value.length>3) { alert("First TextBox Of Phone Number Should not be Greater Than 3 Digits!!!"); return(0); } if (frmReservation.txtPhone1.value.length>3) { alert("Second TextBox Of Phone Number Should not be Greater Than 3 Digits!!!"); return(0); } if (frmReservation.txtPhone2.value.length>9) { alert("Third TextBox Of Phone Number Should not be Greater Than 9 Digits!!!"); return(0); } if(frmReservation.txtCreditCardNo.value.length==0) { alert("Credit Card No Should Not Be Blank!!!"); return(0); } if (isNaN(frmReservation.txtCreditCardNo.value)) { alert("Credit Card No cannot be Non Numeric!!!"); return(0); }

- 42 -

GenTokenNo(); frmReservation.submit(); } </script> </head> <body MS_POSITIONING="GridLayout" bgcolor=LightYellow> <%if(showMsg!=null) { out.write(showMsg); } else {%> <h1>Room Reservation Page</h1> <hr> <form name="frmReservation" method="post"> <table> <!--<tr> <td>Token No : </td> <td> <input type="text" name="txtTokenNo"></td> </tr>--> <tr> <td>Room No : </td> <td> <input type=text id="RoomNo" name="RoomNo" disabled > <input type="hidden" name="txtTokenNo"></td> <script> frmReservation.RoomNo.value=<%=RoomNo%>; </script> </td> </tr> <tr> <td>Customer Name :</td> <td> <input type="text" id="txtCustName" name="txtCustName"></td> </tr> <tr> <td>Address : </td> <td><input type="text" id="txtAddress" name="txtAddress"></td> </tr> <tr> <td>Phone :</td> <td> <input type="text" id="txtPhone" name="txtPhone" size="3"> <input type="text" id="txtPhone1" name="txtPhone1" size="3"> <input type="text" id="txtPhone2" name="txtPhone2" size="9"> </td> </tr> <tr> <td>Checkin Date :</td> <td><input type=text id="FromDate" name="txtFromDate"

- 43 -

value="<%=request.getParameter("FromDate").toString()%>" disabled> </td> </tr> <tr> <td>Checkout Date : </td> <td><input type=text id="txtToDate" name="ToDate" value="<%=request.getParameter("ToDate").toString()%>" disabled> </td> </tr> <tr> <td>Credit Card Type :</td> <td><select id="cmbCreditCardType" name="cmbCreditCardType" width="20"> <option value="MASTER" selected>MASTER</option> <option value="VISA">VISA</option> <option value="AMERICAN">AMERICAN</option> </select></td> </tr> <tr> <td>Credit Card No :</td> <td><input type="text" id="txtCreditCardNo" name="txtCreditCardNo"></td> </tr> <tr> <td>Amount(In $): </td> <td> <% try{ String SqlStmt="Select Charge from RoomMaster where RoomNo="+RoomNo+""; //out.write(SqlStmt); ResultSet rsAdvance=ConnectToDatabase.GetResults(SqlStmt); while(rsAdvance.next()) Advance=(Float.parseFloat(rsAdvance.getString("Charge"))); //out.write("Advance is " + Advance); } catch(SQLException ex){out.write("\n SQL Exception during validation"+ex.toString());} %> <input type="text" id="txtAdvance1" name="txtAdvance1" value=< %=Advance%> disabled> <input type="hidden" id="txtAdvance" name="txtAdvance"></td> <script> var fromdate=new Date(frmReservation.txtFromDate.value); var todate=new Date(frmReservation.txtToDate.value); var advance=parseFloat('<%=Advance%>'); var totday=((todate.getTime()-fromdate.getTime())/(24*60*60*1000)); if (totday==0) { frmReservation.txtAdvance1.value=advance; frmReservation.txtAdvance.value=advance; } else { frmReservation.txtAdvance1.value =((todate.getTime()fromdate.getTime())/(24*60*60*1000))*advance;

- 44 -

frmReservation.txtAdvance.value =((todate.getTime()fromdate.getTime())/(24*60*60*1000))*advance; } </script> </tr> <tr> <td colspan="2"> <hr> </td> </tr> <tr> <td></td> <td> <input type="button" name="btnReserve" value="Reserve" onclick="Reserve();"> </td> </tr> </table> </form> <%}%> </body> </html> VACANT ROOM Click on View tab and select Vacant Room Verify if the following screen appears

Enter from date as 05/11/2011 Enter to date as 05/12/2011 Click on submit button to see the vacant room report. Verify the report that shows the vacant room list.

- 45 -

<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@page import="java.util.*"%> <%@page import="java.lang.*"%> <%@page import="java.sql.*"%> <%@page import="GalaxyHotelReservation.ConnectToDatabase"%> <%-The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK media="screen" href="DatePicker_Sheet.css" type="text/css" rel="StyleSheet"> <SCRIPT language="JavaScript" src="DatePicker.js"> </SCRIPT> <title>Vacant Room Reports</title> <% java.util.Date FromDate=null; java.util.Date ToDate=null; %> <script> var mode; var fromDate,toDate; function MenuItemClick(RoomNo,FromDate,ToDate) { frmRoom.action='Reservation.jsp? RoomNo='+RoomNo+'&FromDate='+FromDate+'&ToDate='+ToDate; //alert(frmRoom.action); frmRoom.submit(); } function ShowStatus() { if(frmRoom.txtdatefrom.value.length==0 || frmRoom.txtdateto.value.length==0) alert("From Date or To Date Can Not Be Empty"); else { fromDate=frmRoom.txtdatefrom.value; toDate=frmRoom.txtdateto.value; if (new Date(fromDate) > new Date (toDate)) {alert("From Date Can Not Be Greater Than To Date");return 0;} frmRoom.action='VacantRoomReports.jsp? TypeOfRoom='+frmRoom.RoomType.value+'&FromDate='+fromDate+'&ToDate='+toDate; //alert(frmRoom.action); frmRoom.submit(); } } </script> </head>

- 46 -

<body bgcolor=LightYellow> <hr> <form name="frmRoom" method="post"> <h2><u>Vacant Room Reports</u></h2> <br> <table border="0"> <tr> <td>Type:</td> <td><select id="RoomType" name="RoomType" width="10"> <option value="Economic" selected>Economic</option> <option value="Executive">Executive</option> <option value="Presidential">Presidential</option> </select></td> </tr> <tr> <td>From Date:</td> <td><input id="txtdatefrom" style="WIDTH: 93px" readOnly type="text" maxLength="12" name="txtdatefrom" size="10"> <img name="CmdShowStart" onclick="displayDatePicker('txtdatefrom', this,'mdy','/');" src="cal.jpg"> </td> </tr> <tr> <td>To Date:</td> <td><input id="txtdateto" style="WIDTH: 93px" readOnly type="text" maxLength="12" name="txtdateto"> <img name="CmdShowStart" onclick="displayDatePicker('txtdateto', this,'mdy','/');" src="cal.jpg"> </td> </tr> </table> <P> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="btnNewRoom" type="button" value="Show Status" onclick="ShowStatus();"> <hr> <% int rn = 0; String RType = request.getParameter("TypeOfRoom"); if (request.getParameter("FromDate")!=null) { java.text.SimpleDateFormat d = new java.text.SimpleDateFormat("mm/dd/yyyy"); FromDate=d.parse(request.getParameter("FromDate").toString()); ToDate=d.parse(request.getParameter("ToDate").toString()); //out.print("From Date is " + request.getParameter("FromDate").toString()); //out.print("To Date is " + request.getParameter("ToDate").toString()); Calendar clnKFrom,clnKTo; clnKFrom=Calendar.getInstance(Locale.getDefault()); clnKTo=Calendar.getInstance(Locale.getDefault()); clnKFrom.setTime(FromDate); clnKTo.setTime(ToDate); //out.print("month is "+clnKFrom.get(Calendar.MONTH)); %> <script> frmRoom.RoomType.value="<%=RType%>";

- 47 -

frmRoom.txtdatefrom.value='< %=request.getParameter("FromDate").toString()%>'; frmRoom.txtdateto.value='< %=request.getParameter("ToDate").toString()%>'; //frmRoom.idays.selectedIndex=< %=(Integer.parseInt(request.getParameter("FromDate").toString().substring(3,5))-1)%>; //frmRoom.odays.selectedIndex=< %=(Integer.parseInt(request.getParameter("ToDate").toString().substring(3,5))-1)%>; //frmRoom.imonths.selectedIndex=< %=(Integer.parseInt(request.getParameter("FromDate").toString().substring(0,2))-1)%>; //frmRoom.omonths.selectedIndex=< %=(Integer.parseInt(request.getParameter("ToDate").toString().substring(0,2))-1)%>; </script> <%%> <% try{ if (clnKFrom.get(Calendar.YEAR)!=1) { //String SqlStmt = "Select * from RoomMaster where Type='" + RType + "' and (('" + clnKFrom.get(Calendar.MONTH) + "/" + clnKFrom.get(Calendar.DATE) + "/" + clnKFrom.get(Calendar.YEAR) + "'>CheckOutDate or '" + clnKTo.get(Calendar.MONTH) + "/" + clnKTo.get(Calendar.DATE) + "/" + clnKTo.get(Calendar.YEAR) + "'<CheckInDate) or (checkInDate is null and checkOutDate is null))"; //String SqlStmt = "Select * from RoomMaster where Type='" + RType + "' and (('" + request.getParameter("FromDate").toString() + "'>CheckOutDate or '" + request.getParameter("ToDate").toString(); //out.write(SqlStmt); //String SqlStmt="Select * from RoomMaster where Type='" + RType+"'"; //String SqlStmt="Select * from RoomMaster where Type='" + RType + "' and (('" + request.getParameter("FromDate").toString() + "'>CheckOutDate or '" + request.getParameter("ToDate").toString()+"'<CheckInDate) or (checkInDate is null and checkOutDate is null))"; String SqlStmt="select * from RoomMaster where Type='" + RType + "' and RoomNo Not In(select RoomNo from reservation where Status is null and ( CheckOutDate > '" + request.getParameter("FromDate").toString() + "' and CheckInDate < '" + request.getParameter("ToDate").toString() + "'))"; //String stmt="sdfsdfs<CheckInDate) or (checkInDate is><"; //out.write(SqlStmt); ResultSet RoomsAll = ConnectToDatabase.GetResults(SqlStmt); //out.write("\nTotal Rows Are " + RoomsAll.getRow()); //if (RoomsAll.getRow()!=0) //{%> <P></P> <table width="400"> <tr> <th width="50"> RoomNo</th><th width="50">Date_From</th><th width="50">To_Date</th></tr> <% //int i = 0; //Date CheckInDate,CheckOutDate; int i=0;

- 48 -

while(RoomsAll.next()) { rn = Integer.parseInt(RoomsAll.getString("RoomNo")); //CheckInDate = RoomsAll.getString("CheckInDate"); //CheckOutDate = RoomsAll.getString("CheckOutDate"); %> <tr> <td width="50"><a href="javascript: MenuItemClick(<%=rn%>,'< %=request.getParameter("FromDate").toString()%>','< %=request.getParameter("FromDate").toString()%>')"><%=rn%></a></td> <td width="50"><%=request.getParameter("FromDate").toString() %></td> <td width="50"><%=request.getParameter("ToDate").toString()%></td> </tr> <% i++; } %> </table> <hr> <b> <%if(i!=0){%> <%=i%>&nbsp Room(s) is(are) Vacant.</b> <%} else{%> No Room Is Vacant During Specified Period. <%}%></b> <% //} } } catch(SQLException ex){System.out.println("\n SQL Exception during validation"+ex.toString());} catch(Exception ex){out.write(ex.getMessage());} } %> </form> </body> </html> WELCOME <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> <html: html locale="true"> <head> <title><bean: message key="welcome.title"/></title> <html: base/> </head> <body bgcolor="white"> <logic: notPresent name="org.apache.struts.action.MESSAGE" scope="application"> <font color="red"> ERROR: Application resources not loaded -- check servlet container logs for error messages. </font> </logic: notPresent> <h3><bean: message key="welcome.heading"/></h3>

- 49 -

<p><bean: message key="welcome.message"/></p> </body> </html: html>

Test Report
The system testing for the web based results conducted successfully and some of the failures are shown below. A defect report has been given at the end.

Reservation status report display not appearing to due to set up error. The above defect is included in the test defect report below.

Defect report
Project name
Hotel Galaxy Reservation System 2.1001 Login TLTS_Login_OK Medium Medium

Version

Module

Defect ID

Severity

Priority

Statu s
Open

Assigned to
Rajesh

Developer s name
Rajesh

Detected by
Chandra

- 50 -

Performance testing report


To observe system behavior and to gather data and metrics around the performance of the software, this testing is done. The main objective behind this testing is to gather user transactions and various scenarios, peak activity periods. To determine the maximum number of users for the system, its response time and to discover optimum configuration for this system, this testing is conducted. Following are the major types of tests conducted on the reservation system. Load testing to determine the response time of critical processes and transactions to determine if they are with in the documented expectations. Volume testing to determine throughput associated with specific process or transactions. Stress test to determine the load under which the system fails and how it fails, Longevity and endurance testing to identify the performance issues that may appear after the system has been running at a high level for an extended period of time. The testing was conducted using Rational performance tester, creating a simulated environment by recording critical transactions and functions. Later the

- 51 -

performance testing scripts were modified to adjust the system for the performance testing. The result of the performance testing for the system under testing has been with in the documented expectation. All critical functions are responding with in 5 milliseconds as expected. The system takes more than 500 hits per seconds as the expected hits it should take is only 300 at any given point of time. The system works for more than a day at the peak load of 500 users per seconds which again is well above the documented expectation of 3 days.

- 52 -

- 53 -

You might also like