Contents
========
1) Introductions
2) Test plans
3) Outstanding Issues


1) Introduction
===============
	1.1) Testing
	============

		The application is required to have functional and
		performance testing. The functional testing will
		confirm that all functions work. The performance
		testing will test that the functions continue to work
		under load and repetitive conditions.

	1.2) Features from OST spec
	===========================
		
		TBD: We have changed the way hunt groups are handled.
		They should be sysadmin administrable, not user
		administrable.  This makes it easier to put them in
		order.  As long as we are including features, I also
		added the web based features from the OST spec.

		These are the features taken from the specification provided
		by OST.

		Voice-Routing:

		Outside Calling
		Inside Calling
		Station to Station Calling
		Multiple Hunt Groups

		Configurable Dial Plan
		Call Detail Recording
		Music On Hold
		
		IVR:

		Auto attendant with configurable auto-forwarding.
		Multi-User, multi-organization, voice-mail with integrated 
		messaging.

		Web:

		Bayonne section
			line status
			process status
			compile scripts
			schedule scripts
			look at or edit bayonne .conf file
		PBX Section 
		    trunk groups
			 members
			 outbound hunt order
		    hunt groups
			 members 
			 hunt order
			 rings b4 answer
		    station features			    
			 ringforward
			 callforward
			 busyforward
			 calloutside
			 password
			 autotransfer
			 helplevel
		IVR Section
		    voicemail 
		       user name
		       greeting
		       password
		       email addy
		    forwarding
		       outside line 
		       forward command
		       unforward command
		       forward button
		       unforward button

	1.3) Features from VoiceTronix spec
	===================================
		
		These are the features taken from the VoiceTronix
		specification and are what one might expect from a
		Basic PBX.

		* Dial Tone on Stations
			When a handset is picked up the station should present
			a dial tone.  NOTE: If the extension has no password
			set, it is considered new, and will go through a 
			self guided station setup.

		* Station -> Station Calls
			A station should be able to call another station by 
			dialing its assigned number.

		* Trunk -> Station Calls
			A Trunk should be mapped to a Station, and when called
			make that Station ring.

		* Station -> Trunk Calls
			A Station should be able to make a call out of an 
			available Trunk.  This is performed by dialing 9, upon 
			which the station will change dial tone.

		* Hold functions
			- Hook Flash places caller on hold
			- Hook Flash retrieves caller
			- Caller on Hold hears "Music"
			- Callee receives stuttered dialtone
			- Hanging up retrieves caller after timeout period
			  (hold-recall timer)

		* Dialtone functions
			- Normal dialtone when station is offhook in normal
			  use.
			- Ringback "dialtone" occurs if station is 
			  programmed as hotline
			- Stutered dialtone indicates a call is currently
			  on hold

		* Hunt groups
			A station can be placed in a hunt group. A
			trunk can then be mapped to a hunt group
			instead of a station.  A hunt group is where a
			list of stations are tried until one is
			answered or the caller hangs up.

		* Web Interface
			- Number Mapping, maps a Trunk to a Station or Hunt 
			  Group
			- Bayonne stop/start etc ?

	1.4) Testing Environment and Procedures
	=======================================
		Environment:
			* Red Hat 7.3 Linux
			* VoiceTronix OpenSwitch12/6 CT card
			* Bayonne 1.1.x CT server (and its requirements)
			* Theta TTS server (and its requirements)
			* bts PBX application

		Procedures:
			* all tests must have reproducible results
			* all faults must be reproducible

	1.5) Milestones
	===============
		* Milestone 1 - Basic PBX Functionality
			Milestone 1 will be considered to be complete once
			tests 2.1 through to 2.4 have passed.

		* Milestone 2 - Web user interface
			Milestone 2 will be considered to be complete once
			tests 2.5 have passed.


2) Basic PBX
=============
	2.1) Phone Functions
	====================
	2.1.1)
		[ ] Dial tone on Stations
			Lift station handset and confirm that ring
			tone is heard.
	
	2.1.2)
		[ ] Dial from Station to Station
			Lift station 1 and dial 2.
			Station 2 should ring.
			Station 1 should hear ring back.
			Lift station 2.
			You should now have a full duplex connection
			between stations 1 and 2.
	
	2.1.3)
		[ ] Dial out a trunk
			Lift station 1 and dial 9
			You should hear external dial tone
			Dial an external phone number
			Confirm that a full duplex conversation occurs.
	
	2.1.4)
		[ ] Receive call from a trunk
			Dial from an external source into the system.
			A station should ring.
			Answer ringing station
			Confirm that a full duplex conversation occurs.
	2.1.5
		[ ] Ring no answer
			Lift station 1 and dial 2.
			Station 2 should ring.
			Station 1 should hear ring back.
			Wait for a period greater than ring_no_answer
			Confirm that station 2 stops ringing
			Confirm that station 1 heard ringtone

	2.2) Hold Functions
	===================
	2.2.1)
		[ ] Hold on Hook Flash
			Dial station 2 from station 1
			Confirm that a full duplex conversation occurs.
			Perform a hook flash on station 1.
			Confirm that station 2 is now on hold.
			Confirm station 1 gets dial tone

	2.2.2)
		[ ] Music on Hold
			As per 2.2.1
			Confirm that station 2 can hear music

	2.2.3)
		[ ] Caller retrieval (Hook Flash)
			As per 2.2.2
			Perform a hook flash on station 1.
			Confirm that a full duplex conversation occurs between
			station 1 and station 2.

	2.2.4)
		[ ] Caller hold retrieval (Hangup)
			As per 2.2.2
			Hangup station 1.
			Station 1 should start ringing within a short period>
			Confirm that station 2 can hear ring back.
			Lift station 1
			Confirm that a full duplex conversation occurs between
			station 1 and station 2.
	2.2.5)
		[ ] Caller hold retrieval while calling 3 party
			as per 2.2.2
			Dial station 3 from station 1
			While station 3 is ringing hook flash station 1
			Confirm Station 3 has stopped ringing
			Confirm that a full duplex conversation occurs between
			station 1 and station 2.

	2.3) Transfer Functions
	=======================
	2.3.1)
		[ ] Hold-recall 
			As per 2.2.2
			Dial station 3 from station 1
			Lift station 3
			Confirm that a full duplex conversation occurs between
			station 1 and station 3.
			Confirm that station 2 is still on hold.

	2.3.2)
		[ ] Transfer on hangup
			As per 2.3.1
			Hangup station 2.
			Confirm that a full duplex conversation still occurs
			between station 1 and 3.

	2.3.3)
		[ ] Automatic Blind transfer
			As per 2.2.2
			Dial station 3 from station 1
			While station 3 is ringing hangup station 1
			Confirm station 2 now hears ring back
			Answer station 3
			Confirm that a full duplex conversation occurs
			between station 2 and 3.

	2.5.6) 
                [ ] Transfer to external number lockout.
		Attempt to transfer a caller to an invalid
                extension, this should fail.
		Callers cannot be transferred to an external number
                due to limitations of the OpenSwitch12 at this
                time. 

	2.4) Hunt groups
	================
	2.4.1)
		[ ] Hunt group ring test
			Create a hunt group containing stations 1->4
			Configure a trunk to map the hunt group
			Dial the trunk from an external phone
			Confirm that all stations are called
			Confirm that all stations ring for the number of
			rings defined by ring_count.
			
	2.4.2)
		[ ] Hunt group answer test
			As per 2.4.1
			Answer station 1
			Confirm that a full duplex conversation occurs.
			repeat for all stations in the hunt group
			
	2.5) Web Pages
	==============
	2.5.1)
		[ ] Number mapping
			Map trunk 1 to a hunt group containing station 2
			Call trunk 1 from an external phone
			confirm station 2 rings

	2.5.2)
		[ ] Hunt group creation
			create a hunt group with stations 1->4
			Confirm that the group has been created
		
	2.5.3)
		[ ] Hunt group mapping
			As per 2.5.2
			Map trunk 1 to the hunt group
			Call trunk 1 from an external phone
			Confirm that stations 1->4 all ring.
	
	2.5.4)
		[ ] Stop and starting Bayonne
			Confirm that you can stop and start Bayonne
			
	2.5.5) 
	        [ ] Music on hold.  This should be configurable from
	        the web interface.  The user should be allowed to
	        upload a music on hold file.
