Thursday, January 23, 2014

CLASSPATH settings in JAVA

PATH and CLASSPATH
This section explains how to use the PATH and CLASSPATH environment variables on Microsoft Windows, Solaris, and Linux. Consult the installation instructions included with your installation of the Java Development Kit (JDK) software bundle for current information.
After installing the software, the JDK directory will have the structure shown below.

The bin directory contains both the compiler and the launcher.
Update the PATH Environment Variable (Microsoft Windows)
You can run Java applications just fine without setting the PATH environment variable. Or, you can optionally set it as a convenience.
Set the PATH environment variable if you want to be able to conveniently run the executables (javac.exejava.exejavadoc.exe, and so on) from any directory without having to type the full path of the command. If you do not set the PATH variable, you need to specify the full path to the executable every time you run it, such as:
C:\Java\jdk1.7.0\bin\javac MyClass.java
The PATH environment variable is a series of directories separated by semicolons (;). Microsoft Windows looks for programs in the PATH directories in order, from left to right. You should have only one bin directory for the JDK in the path at a time (those following the first are ignored), so if one is already present, you can update that particular entry.
The following is an example of a PATH environment variable:
C:\Java\jdk1.7.0\bin;C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem
It is useful to set the PATH environment variable permanently so it will persist after rebooting. To make a permanent change to the PATH variable, use the System icon in the Control Panel. The precise procedure varies depending on the version of Windows:
Windows XP
1.     Select Start, select Control Panel. double click System, and select the Advanced tab.
2.     Click Environment Variables. In the section System Variables, find the PATH environment variable and select it. Click Edit. If the PATH environment variable does not exist, click New.
3.     In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable. Click OK. Close all remaining windows by clicking OK.
Windows Vista:
1.     From the desktop, right click the My Computer icon.
2.     Choose Properties from the context menu.
3.     Click the Advanced tab (Advanced system settings link in Vista).
4.     Click Environment Variables. In the section System Variables, find the PATH environment variable and select it. Click Edit. If the PATH environment variable does not exist, click New.
5.     In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable. Click OK. Close all remaining windows by clicking OK.
Windows 7:
1.     From the desktop, right click the Computer icon.
2.     Choose Properties from the context menu.
3.     Click the Advanced system settings link.
4.     Click Environment Variables. In the section System Variables, find the PATH environment variable and select it. Click Edit. If the PATH environment variable does not exist, click New.
5.     In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable. Click OK. Close all remaining windows by clicking OK.

Note: You may see a PATH environment variable similar to the following when editing it from the Control Panel:
%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
Variables enclosed in percentage signs (%) are existing environment variables. If one of these variables is listed in the Environment Variables window from the Control Panel (such as JAVA_HOME), then you can edit its value. If it does not appear, then it is a special environment variable that the operating system has defined. For example, SystemRoot is the location of the Microsoft Windows system folder. To obtain the value of a environment variable, enter the following at a command prompt. (This example obtains the value of the SystemRoot environment variable):

echo %SystemRoot%


-- 

Open Command Prompt . type following line

Set path=%path%+;C:\Program Files\Java\jdk1.6.0_23\bin

check ,  c:\>javac


Manual Testing


Black Box Testing & Design Techniques



Black box testing tests the functionality of the application without having the knowledge of internal structure of the code. Black box testing is also called as Specification based testing. This testing can be applied in all levels of testing namely system, integration, acceptance testing.

Black box testing design techniques are
  • Decision table testing
  • All pairs testing
  • State transition tables
  • Equivalence partitioning
  • Boundary value analysis


Decision Table testing

We have an application which works based on simple true/false condition of a variable. So in decision based testing we will test for both the conditions. What happens when the variable status is true or what happens if it is false?  This is mostly like if-then-else, switch cases with each condition having some actions to perform.  So we need to test all the actions.

All pairs testing

Consider an application where we need to supply value to some three input parameters. So we need to test all possible combinations of input based on probability.  We have to consider all possible scenarios like,
  •  If we give value for all 3 parameters
  • If we do not give value for all 3 parameters
  • If we give value for 2 parameters.

Likewise we need to test. This testing is mainly to produce optimal number of test cases.  We do not want to perform the entire test based on the probability (3 * 2) since we have 3 parameters but we can achieve the result by some combinations of input.

State transition tables

This table shows the current state of the machine and to which status the machine will move to based on input parameters. Consider an application where the state of the machine will move from s1 to s2 if the parameter is 1. If it is zero it will be in same state. We can represent the same as,


State
Input  ‘0’
Input  ‘1’
S1
S1
S2
S2
S2
S1

Equivalence partitioning

This involves partitioning the data in to some best partitions so that one test case is enough to cover each partition.  Consider an application where the app will work only if the value supplied by the user is between 10 to 15. So we can divide these as
  • 1 to 10 as one partition
  • 10 to 15 as second
  • > 15 as third.

So while testing any one value from each partition is enough to test. After portioning we have to apply boundary value cases in order to select the best suited test case from each partition.

Boundary value analysis

Here we have to consider the boundary values for testing. Consider a refrigerator application where it should defrost when the temperature is below 0 degrees and it should start cooling when the temperature is above 10 degrees.

So the boundary conditions will be
  •          below  0 degrees (- 1, -2, …)
  •          Above 10 degrees (11, 12...)
  •          At  0 degree
  •          At 10 degree


By these black box testing design techniques we can test the application with optimal number of test cases and the test cases selected are of most suited so that we can reduce the defect slippage.

Automation Testing (QTP or UFT)

What is a Framework ?
Instead of providing a bookish definition of a framework, lets consider an example.
I am sure you have attended a seminar / lecture / conference where the participants was asked to observe the following  guidelines -

  •    Participants should occupy their seat 5 minutes before start of lecture
  •    Bring along a notebook and pen for note taking.
  •    Read the abstract so you have an idea of what the presentation will be about.
  •   Mobile Phones should be set on silent
  •   Use the exit gates at opposite end to the speaker should you require to leave in middle of the lecture.
  •   Questions will be taken at the end of the session
  •  


Do you think you can conduct a seminar WITHOUT observing these guidelines????
The answer is a big YES! Certainly you can conduct a seminar / lecture / conference / demonstration without above guidelines (in fact some of us will not follow them even though there are laid  ... wink)

But if the guidelines are followed it will result in beneficial outcome like reduced audience distraction during lecture and increased participant retention and understanding of the subject matter.
Based on above, a Framework can be defined as a set of guidelines which when followed produce beneficial results.

Now what is a TEST Automation Framework ?
A set of guidelines like coding standards , test-data handling , object repository treatment  etc... which when followed during automation scripting produce beneficial outcomes like increase code re-usage ,  higher portability  , reduced script maintenance cost  etc. Mind you these are just guidelines and not rules; they are not mandatory and you can still script without following the guidelines. But you will miss out on the advantages of having a Framework.

What are the various Automation Frameworks available?
1) Linear Scripting
2)The Test Library Architecture Framework.
3)The Data-Driven Testing Framework.
4)The Keyword-Driven or Table-Driven Testing Framework.
5)The Hybrid Test Automation Framework.

Lets  look at them in detail -
1) Linear Scripting - Record & Playback
It is the simplest of all Frameworks and also know as "Record & Playback".In this Framework , Tester manually records each step ( Navigation and User Inputs), Inserts Checkpoints ( Validation Steps) in the first round . He then , Plays back the recorded script in the subsequent rounds.

Ex :  Consider logging into Flight Reservation Application and checking wether the application has loaded on successful log-on. Here , the tester will simply record the steps and add validation steps.

      SystemUtil.Run "flight4a.exe","","","open"
      Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
      Dialog("Login").WinEdit("Password:").Set "Mercury"
      Dialog("Login").WinButton("OK").Click
      'Check Flight Reservation Window has loaded after successful log-on
      Window("Flight Reservation").Check CheckPoint("Flight Reservation")

Advantages
  • Fastest way to generate script
  • Automation expertise not required
  • Easiest way to learn the features of the Testing Tool

Disadvantages
  • Little reuse of scripts
  • Test data is hard coded into the script
  • Maintenance Nightmare
  •  

2)The Test Library Architecture Framework.

It is also know as "Structured Scripting" or "Functional Decomposition".
In this Framework , test scripts are initially recorded by “Record & Playback” method. Later, common tasks inside the scripts are identified and grouped into Functions. These Functions are called by main test script called Driver in different ways to create test cases.
Ex:Using the same example as above, the function for logging in to Flight Reservation will look like .

      Function Login()
      SystemUtil.Run "flight4a.exe","","","open"
      Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
      Dialog("Login").WinEdit("Password:").Set "Mercury"
      Dialog("Login").WinButton("OK").Click
      End Function

Now, you will call this function in the main script as follows
      'Driver Script
      Call Login()
      ---------------------------
      Other Function calls / Test Steps.
      ---------------------------

Select Case lcase(strBrowserType)
Case "ie"
SystemUtil.Run "Iexplore.exe",strURL,"","open",3
Case "firefox"
SystemUtil.Run "firefox.exe",strURL,"","open", 3
Case "chrome"
SystemUtil.Run "chrome.exe",strURL,"","open", 3

End Select

Advantages
  • Higher level of code reuse is achieved in Structured Scripting as compared to “Record & Playback”
  • The automation scripts are less costly to develop due to higher code re-use
  • Easier Script Maintenance

Disadvantages
  • Technical expertise is necessary to write  Scripts using Test Library Framework.
  • More time is needed to plan and prepare test scripts.
  • Test Data is hard coded within the scripts


3)The Data-Driven Testing Framework.
In this Framework , while Test case logic resides in Test Scripts, the Test Data is separated and kept outside the Test Scripts.Test Data is read from the external files (Excel Files, Text Files, CSV Files, ODBC Sources, DAO Objects, ADO Objects) and are loaded into the variables inside the Test Script. Variables are used both for Input values and for Verification values. Test Scripts themselves are prepared either using Linear Scripting  or Test Library Framework.

Ex: Developing the Flight Reservation Login script using this method will involve two steps.

Step 1) Create a Test - Data file which could be Excel , CSV , or any other database source.

AgentName
Password
Jimmy
Mercury
Tina
MERCURY
Bill
MerCURY

Step 2) Develop Test Script and make references to your Test- Data source.

      SystemUtil.Run "flight4a.exe","","","open"
      Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName", dtGlobalSheet)
      Dialog("Login").WinEdit("Password:").Set DataTable("Password", dtGlobalSheet)
      Dialog("Login").WinButton("OK").Click
      'Check Flight Reservation Window has loaded
      Window("Flight Reservation").Check CheckPoint("Flight Reservation")
      **Note “dtGlobalSheet” is the default excel sheet provided by QTP.

Advantages
  • Changes to the Test Scripts do not affect the Test Data
  • Test Cases can be executed with multiple Sets of Data
  • A Variety of Test Scenarios can be executed by just varying the Test Data in the External Data File

DisAdvantages
  • More time is needed to plan and prepare both Test Scripts and Test Data


4)The Keyword-Driven or Table-Driven Testing Framework.
The Keyword-Driven or Table-Driven framework requires the development of data tables and keywords, independent of the test automation tool used to execute them . Tests can be designed with or without the Application. In a keyword-driven test, the functionality of the application-under-test is documented in a table as well as in step-by-step instructions for each test.
There are 3 basis components of a Keyword Driven Framework viz. Keyword , Application Map , Component Function.

What is a Keyword ?
Keyword is an Action that can be performed on a GUI Component. Ex . For GUI Component Textbox some Keywords ( Action) would be InputText, VerifyValue, VerifyProperty and so on.

What is Application Map?
An Application Map Provides Named References for GUI Components. Application Maps are nothing but “Object Repositry

What is Component Function?
Component Functions are those functions that actively manipulate or interrogate GUI component. An example of a function would be click on web button with all error handling , enter data in a Web Edit with all error handling. Component functions could be application dependent or independent.

Ex: To understand Keyword View lets take the same example. It invovles 2 steps

Step 1: Creating Data Table (Different from Test-Data Table created in Data Driven Framework). This Data Table contains Action to be performed on GUI Objects and correspoding arguments if any. Each row respresents one Test Step.

Object
(Application MAP)
Action
(KEYWORDS)
Argument
WinEdit(Agent Name)
Set
Guru99
WinEdit(Password)
Set
Mercury
WinButton(OK)
Click
Window(Flight Reservation)
Verify
Exists


Step 2: Writing Code in the form of Component Functions.
Once you've created your data table(s), you simply write a program or a set of scripts that reads in each step, executes the step based on the keyword contained the Action field, performs error checking, and logs any relevant information. This program or set of scripts would look similar to the pseudo code below:

      Function main()
     {
                Call ConnectTable(Name of the Table) {   //Calling Function for connecting to the table.
                        while (Call TableParser() != -1)  //Calling function for Parsing and extracting values from the table.
                       {
                           Pass values to appropriate  COMPONENT functions. Like Set(Object Name , Argument) ex. Set( Agent Name , Guru99).
                       }
                }   
                      Call CloseConnection()   //Function for Closing connection after all the operation has been performed.
      }   //End of main

Thats all to Keyword Driven Framework.

The advantage of Keyword Driven Framework is that the Keywords are re-usable. To understand this consider  you want to verify login operation for a Website say YAHOO MAIL.  The table will look like this -

Object
(APPLICATION MAP)
   Action
(KEYWORD)
      Argument
WebEdit(UserName)
Set
abc@yahoo.com
WebEdit(Password)
Set
xxxxx
WebButton(OK)
Click
Window(Yahoo Mail)
Verify
Loads

If you observe in this case the Keywords Set , Click , Verify remain the same for which corresponding component functions are already developed. All you need to do is change the Application Mapping (Object Repository) from earlier Flight Reservation to Yahoo Mail , with change in argument values and the same script will work!

Advantages
  • Provides high code re-usability
  • Test Tool Independent
  • Independent of Application Under Test, same script works for AUT (with some limitations)
  • Tests can be designed with or without AUT

Disadvantages
  • Initial investment being pretty high, the benefits of this can only be realized if the application is considerably big and the test scripts are to be maintained for quite a few years.
  • High Automation expertise is required to create the Keyword Driven Framework.


NOTE : Even though QTP advertises itself as KeyWord Driven Framework, you can not achieve complete test tool and application idependence using QTP.

5)The Hybrid Test Automation Framework.
As the name suggests this framework is the combination of one or more frameworks discussed above pulling from their strengths and trying to mitigate their weaknesses. This hybrid test automation framework is what most frameworks evolve into over time and multiple projects. Maximum industry uses Keyword Framework in combination of Function decomposition method.

PS:  Other Frameworks worth a mention are

1) Test Modularity Framework 
In this framework common task in test script are grouped together as Modules.
Ex:Using Actions in QTP use can create a Modualr Scripts
      ‘Sample Script for Login
      SystemUtil.Run "flight4a.exe","","","open"
      Dialog("Login").WinEdit("Agent Name:").Set "Guru99"
      Dialog("Login").WinEdit("Password:").Set "Mercury"
      Dialog("Login").WinButton("OK").Click
      ‘End of Script

Now you can call this Action in the main script as follows - 
      RunAction ("Login[Argument]", oneIteration)


2) Business Process Testing (BPT) -
This frameworks , breaks up large Business Processes into Components  which can re-used multiple times in the  same or different test scripts. For example , the Business Process of Booking a flight is split into components like Login , Finding Flights , Booking , Payment & Logout which can be re-used in the same  Business process or different processes. Also, BPT facilitates closer coordination amongst SME's and Automation Engineers . 

Read more at http://www.guru99.com/quick-test-professional-qtp-tutorial-34.html#ShxQHmpm0rDewfLC.99