Monday, April 25, 2016



                  Exhaustive Testing: -- Testing the application with all possible ways is called           exhaustive testing.
Particularly exhaustive testing is not possible.
       Optimal Testing: --   Testing the application with best possible ways is called optimal testing.
In general we perform optimal testing only.

       Testing Methodologies:
Using testing methodologies we can derive best possible test cases to achieve the completeness of testing in application source code or functionality.
There are 3 types of testing methodologies:
1. White Box Testing:
It is also called as clear box testing/ glass box testing/ open box testing/ structural testing.
WBT techniques are used to validate application source code with help of programming knowledge.
The WBT techniques are used by developers.
Following WBT techniques we use to derive test cases.
a)    Statements coverage
b)    Loops Coverage
c)    Conditional Statement coverage
d)    Path or branch coverage

2. Black Box Testing:

Black box testing is used to test the external functionality of the application.
Black box testing is also known as Functionality Testing or Skin testing.
Without having any programming knowledge we validate application functionality based on client requirements.
Test Engineer will use BBT techniques to derive the test cases.
Black box testing techniques are:
a)    Boundary Value Analysis
b)    Equivalence Class Partition
c)    Error guessing

White Box Testing
Glass  Box Testing
It is internal logic driven testing
It is business transaction driven testing
Tests are based on design and coding
Tests are based on user requirements
It is performed for code coverage
It is performed for requirements coverage

3. Gray Box Testing: 
It is combination of White Box Testing and Black Box Testing
To perform gray box testing we should have programming knowledge and complete functionality knowledge
IQ)  Why separate testing team is required when developer performing testing?
Developers they perform only code coverage, where as they are not responsible for requirement coverage.
Due to that organization maintains separate testing team for requirement coverage.
IQ)  Why you prefer software testing job?
Consistency in the job (i.e., same process for testing).
It is a technology independent (i.e., any environment application like java, .net etc.)
Interesting in finding defects.

There is a scope to learn different domains (like banking, healthcare, insurance…etc.)



           

Software Development Life Cycle (SDLC) Models

SDLC Models:
      
       Based on requirements and need of client we can adopt any one of the following SDLC model to develop application
  1. Waterfall Model
  2. Prototype Model
  3. Incremental Model
  4. Spiral Model
  5. RAD Model
  6. Fish Model
  7. V- Model
  8. Agile Model
 1. Waterfall Model:
  •        It is also called as linear sequential waterfall model. It contains all the SDLC phases
  •        This model is easy to develop application.
  •        This model is preferable for small application, clear requirements & routine type of projects.

       Disadvantages:
  •         Early stages identifying are not possible due to later stage of testing.
  •         In this model will not allow any change request during development process

  2. Prototype Model:
   
        
  • It is a sample application without functionality.
  • This model is preferable when requirements are not clear to develop application
  • In this approach we develop prototype of application based on initial requirements.
  • With that prototype we give demo to the customer to collect client satisfactions based on that we develop application.
  • If client is not satisfied with our prototype we collect his feedback based on that again we develop new prototype to give demo to client.
  • This process will continue until client satisfied then only we develop application.Disadvantages:   Prototypes are not reusable that cost has to be done by development team.

  3. Incremental Model:
       
        This model is preferable for big application when it is difficult to develop application all           at once and when early stages deliverables are expecting by the client.
  • In this approach application will developed module by module which are deliver to the client after testing.
    Whereas 1st module will be core functionality module that will be delivering to the client then we implement other features in next increment to deliver to the customer / client.
    Disadvantage:  It is open ended SDLC model; there is no fixed date to develop whole system.
  4. Spiral Model:
        
       This model is applicable for research applications & machinery applications.
    In this approach application developed like increment model where as modules are not        delivered to the client during development process.

         Disadvantage: Time Consuming

 5.  RAD Model:
     
        This model is preferable when we need to develop application in short span of time like 60 – 90 days. In this approach we use existing pre- defined components from other environment in our application like date field, status bas, fax number, edit box from ActiveX controls.

6. Fish Model:
It provides theoretical mapping between development activities to testing activities.


Verification:  It is a process to check correctness and completeness of documents which we prepared in order to develop application
It is a static testing approach (i.e., without execution)
Verification performed on BRS, FRS, Design doc, Test Plan, Test Cases etc.
Verification Techniques are:
  • Peer Review
  • Walkthrough
  • Inspection

Ø  Peer Review:  It is an informal meeting, where author will deliver document to reviewer to identify any mistakes.

Ø  Walkthrough:  It is a semi informal meeting, where author will present the document to the reviewer to identify any mistakes in that document.
            In this meeting 2 – 3 members will participate.

Ø  Inspection: It is a formalized meeting. In these meeting 5-6 members will participate.
            In this meeting following members will participate.
            Author, Reviewer / Inspector, Presenter, Scribe / Recorder, Moderator
           
Validation:
It is performed to check developed programs or application correct or not.
It is a dynamic testing approach (i.e., execution / operation is required).
Validation techniques are unit testing, integration testing, functionality testing, performance     testing…etc.



7. V – Model:
      
  • V stands for Verification & Validation
  • In general we prefer V – Model to develop applications
  • This model is preferable for big projects with clear requirements
  • In this model testing activities ( i.e., reviews ) will start early stages with development activities
         

    Disadvantages:
This model will not allow dynamic change request during development process.

8. Agile Model:

  • This model is suitable to handle dynamic change request.
  • In this approach we develop application like incremental model whereas client will closely associates with development team.
  • After developing each component / unit / module that will be delivered for testing team and should get approval form client before developing next unit.
  • If any change requests are there those will be consider in next unit.
  • In agile model we follow XP (Extreme Programming) scrum to develop application.


   Disadvantage: It is difficult to schedule different teams.


Case study on SDLC models:

1)    Waterfall model :  Small applications with clear requirements

2)    Prototype Model : Requirements are not clear to develop applications

3) Incremental Model:  Complex to develop whole system at once and early stages deliverable's as expected.

4) Spiral Model: For research and machinery applications which we doesn’t know implementation possible or not at early stage

5)    RAD Model: Extremely short span of time application need to develop

6)    Fish Model:  There is no practical method

7)    V- model: Big projects with clear requirements

8)    Agile Model : Which have the dynamic change requirements

Saturday, April 23, 2016

Software Testing

                                                       
                                                     Manual Testing

SOFTWARE TESTING

       It is a process used to identify Correctness, Completeness, and Quality of developed Software application.
       Objectives of software testing are to be identifying defects, when those defects resolved software application quality improves.

DEFECT:  
              It is a derivation between expect result to actual result in AUT (Application under Test) which are identifying in test environment.

       Defect can also call as Bug / Issue / Incident / Fault.
       Note: Defects will presents due to human mistakes which developing application i.e., Syntax error & logical error

Correctness: Validate implemented components or functionalities are working as per expectations (While performing operation)

Completeness:  Verify all the client business needs are covered or not in terms of functionality.

Software Quality: In general software quality depends on following factors
   1) Budget / cost    [Non Tech Factors] [Responsible by BA]
   2) In Time release [Non Tech Factors] [Responsible by BA
   3) Reliability
   4)  Technical Factors: Responsible by QA Tester.
         a) Meet Client Requirements in terms of   functionality.
         b) Meet Client Expectations performance, compatibility and ease of usage.

Software Testing Methods:
           In general organization follows two types of methods to test the application
      Manual Testing:  Whereas test engineer is responsible to verify actual behavior of application while performing operation based on test cases.
       Automation Testing : Automating human activities in order to validate application is called automation testing ( i.e., Test Case Execution)

      Automation testing can be performed using programming languages or scripting languages or 3rd  party tools like QTP, WR, Silk….etc.,


    Skill Set Required for QA Tester:  (Functional Testing)

       Manual Testing concepts
       Any one of the functionality testing tool like QTP, Selenium , Rational Robot
       Any one of the defect reporting tool
       DB knowledge ( Oracle / SQL Server)
       Domain knowledge like Banking, Insurance, finance….etc.,

Software Development Life Cycle:

   Software :  It’s  a set of programs document to perform particular task based on requirement

•    Software can be categorized in to two types:
          a) System software          b) Application Software
•     A) System Software:   The software which provides interface between system components (booting). Those are called system software. System s/w also called BIOS (basic input & output system)
    Ex: All the Operating systems like windows, Linux, UNIX…. 

  B) Application Software:    Software which is developed based on user business needs application s/w also called as front – end application.
          In general application s/w has front- end (User Interface) and possible associated back end (DB).
Front end is used by client to manipulate data into DB.


Application Software have two types:-

a)    Product based application:  When we develop application based on standard  requirement after developing application which can sell to any customer in the market.

b)    Project based application: When we develop the application based on specific client requirement, after developing application has to deliver that particular client only.


• Exhaustive Testing: -- Testing the application with all possible ways is called exhaustive testing.

Particularly exhaustive testing is not possible.

     Optimal Testing: --   Testing the application with best possible ways is called optimal testing.

In general we perform optimal testing only.


Testing Methodologies:

    Using testing methodologies we can derive best possible test cases to achieve the completeness of testing in application source code or functionality.
There are 3 types of testing methodologies:

 1. White Box Testing(WBT):
    It is also called as clear box testing/ glass box testing/ open box testing/ structural testing.
   WBT techniques are used to validate application source code with help of programming    knowledge.
   The WBT techniques are used by developers.
   Following WBT techniques we use to derive test cases.
a)    Statements coverage
b)    Loops Coverage
c)    Conditional Statement coverage
d)    Path or branch coverage

2. Black Box Testing(BBT):
  Black box testing is used to test the external functionality of the application.
  Black box testing is also known as Functionality Testing or Skin testing.
 Without having any programming knowledge we validate application functionality based on client     requirements.
 Test Engineer will use BBT techniques to derive the test cases.
 Black box testing techniques are:
a)    Boundary Value Analysis
b)    Equivalence Class Partition
c)    Error guessing

White Box Testing
Glass  Box Testing
It is internal logic driven testing
It is business transaction driven testing
Tests are based on design and coding
Tests are based on user requirements
It is performed for code coverage
It is performed for requirements coverage

3. Gray Box Testing(GBT): 
  
It is combination of White Box Testing and Black Box Testing
To perform gray box testing we should have programming knowledge and complete functionality knowledge.


IQ)  Why separate testing team is required when developer performing testing?
Developers they perform only code coverage, where as they are not responsible for requirement coverage.
Due to that organization maintains separate testing team for requirement coverage.