View
144
Download
0
Category
Preview:
Citation preview
- 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 : 28 Feb 2011 End Date : 12 May 2012
Name of the Coordinator : Ms.Rosy
Name of the Tester : FATHIMA HAFEEZ
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. Introduction 7
2. Objectives 8
3. Test Plan Introduction 9
Purpose
Background
Scope. 10
4. Test Plan - features to be tested. (Functional testing) 11
5. Test Plan - Test Strategy 12
6. Test Plan - Resources Required. 13
7. Test Plan - Project Miles Stones. 14
8. Test Script Details / Test Cases. 15
9. Test execution screens 34
10. Test Reports 47
11. Defect Report 48
12. Performance test reports 49
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 hotel’s 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 hotel’s 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 room’s 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 customer’s 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
Client’s 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
- 13 -
the test results. The designers use IBM rational test manager and manual tester for this
purpose.
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
Test Manager 1 Provide technical direction.
- 14 -
Acquire appropriate resources.
Coordinate with Developers
Test
Designer2
Design and generate Test cases
Evaluate Defect reports and work with
Developers and Managers.
Evaluate effectiveness of test effort.
Tester 5
Execute test scripts
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.
- 15 -
Task Effort Start date End date
Test Planning 1 week 05/02/2011 05/08/2011
Test Design 1 week 05/09/2011 05/15/2011
Test Development 1 Week 05/16/2011 05/22/2011
Test Execution 3 days 05/23/2011 05/26/2011
Test Evaluation
Test Documentation
3 days 05/27/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 Test
case ID
Condition Descripti
on
Table Test
date
Action Exp.
Result
- 16 -
1 HG_Login_usename HG001 Alphanumeric no
special # in
Username
Try special # in
user name
05/11 Enter
special #
in
username
And click
submit
button
Fail
2. HG_Login_usename HG002 Alphanumeric no
special # in
Username
Try only
alphabets in
username
05/11 Enter
username
with only
Alphabets
Fail
3 HG_Login_usename HG003 Alphanumeric no
special # in
Username
Try only
numerals in
username
05/11 Enter
username
with only
numerals
Fail
4 HG_Login_usename HG004 Alphanumeric no
special # in
Username
Try username
with Alphabets
and numerals
05/11 Enter a
username
That has
both
Alphabets
and
numerals
Pass
5 HG_Login_usename HG005 Alphanumeric no
special # in
Username
Keep username
blank
05/11 Keep user
name
blank
Fail
6 HG_Login_Password HG006 Alphanumeric no
special # in
Password
Keep password
Blank
05/11 Keep
password
blank
Fail
7 HG_Login_Password HG007 Alphanumeric no
special # in
Password
Try special # in
password
05/11 Use
special #
in
password
field
Fail
8 HG_Login_Password HG008 Alphanumeric no
special # in
Password
Try only
alphabets
05/11 User to
enter only
alphabets
Fail
9 HG_Login_Password HG009 Alphanumeric no
special # in
Try numerals 05/11 User to
enter only
Fail
- 17 -
Password numerals
in
password
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.
- 18 -
- 19 -
- 20 -
Test Scripts
Login
Click on the start Button and Select Internet explorer Browser
Type “http://localhost:1197/HotelFrozenGalaxyReservation/login.aspx ”
- 21 -
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.
- 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"%>
--%>
<!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">
- 23 -
<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;
function MenuItemClick(RoomNo,FromDate,ToDate)
{
frmRoom.action='Reservation.jsp?
RoomNo='+RoomNo+'&FromDate='+FromDate+'&ToDate='+ToDate;
//alert(frmRoom.action);
frmRoom.submit();
}
- 24 -
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='AdminVacantRoomReport.jsp?
TypeOfRoom='+frmRoom.RoomType.value+'&FromDate='+fromDate+'&ToDate='+toD
ate;
//alert(frmRoom.action);
frmRoom.submit();
}
}
</script>
</head>
<body bgcolor=LightYellow>
<hr>
- 25 -
<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>
- 26 -
<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>
<input name="btnNewRoom"
type="button" value="Show Status" onclick="ShowStatus();">
<hr>
<%
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());
- 27 -
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)%>;
//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>
<%%>
<%
- 28 -
if(!
(request.getParameter("FromDate").toString().substring(0,2).equalsIgnoreCase(request.ge
tParameter("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)
{
//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+"'";
- 29 -
//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());
//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>
- 30 -
<%
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
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
- 31 -
('"+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
('"+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();
- 32 -
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>
<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);
- 33 -
}
%>
</table>
<hr>
<b>
<%
%></b>
<% //}
}
}
catch(SQLException ex){System.out.println("\n SQL Exception during
validation"+ex.toString());}
}
%>
<%}%>
<%!
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);
- 34 -
}
%>
</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
captured as the ones with Pass are already displayed in the previous section.
The above test is for blank pass word for login which failed as expected.
- 35 -
The above screen shot is for keeping date field blank for room reservation status. Fails as expected and gives error message.
Confirmation screen before logout appears as expected. Test case passes.
- 36 -
RESERVATIONLogin 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.
Select type as Economic Enter 05/11/2011 in the From date fieldEnter 05/15/2011 in the To date fieldClick on “Show staClick on View tab and select Vacant RoomVerify 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... actionon Libraries node in Projects view can be used to add the JSTL 1.1 library.--%><%--
- 37 -
<%@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> <% 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"));
- 38 -
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")+"-"+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,CCNo,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,CCNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+request.getParameter("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,CCNo,Advance) values('"+tokenNo+"',"+RoomNo+",'"+custName+"','"+address+"','"+phone+"','"+request.getParameter("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+"---"+creditCardType+"---"+creditCardNo+"---"+advance+"---"+checkInDate+"---"+checkOutDate); } else{ out.write("Credit Card No Is Not Valid!!!");
- 39 -
} //clnCheckOut.get(Calendar.MONTH) } %> <script> function GenTokenNo() {
if(frmReservation.txtCustName.value.length==0){alert("Please Enter Customer Name!!!");return;}
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
- 40 -
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);}
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"
- 41 -
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" 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>
- 42 -
<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; 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 ROOMClick on View tab and select Vacant RoomVerify if the following screen appears
- 43 -
Enter from date as 05/11/2011Enter to date as 05/12/2011Click on submit button to see the vacant room report.Verify the report that shows the vacant room list.<%@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... actionon 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;
- 44 -
%> <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> <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>
- 45 -
<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>
<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%>"; 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))";
- 46 -
//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; 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%>  Room(s) is(are) Vacant.</b> <%} else{%> No Room Is Vacant During Specified Period.
- 47 -
<%}%></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><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.
- 48 -
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
Version Module Defect ID Severity Priority Status Assigned
to
Developers
name
Detected
by
Hotel
Galaxy
Reservation
System
2.1001 Login TLTS_Login_OK Medium Medium Open Rajesh Rajesh Chandra
- 49 -
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
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
- 50 -
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.
- 51 -
Recommended