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.

















Thursday, January 28, 2016

Software Development Life Cycle

Software Development Life Cycle (SDLC):
       
 It describes development process of s/w project /product to fulfil the client requirements with in the specified cost and time.


SDLC contains following phases:

  1. Requirement collection
  2. Requirement analysis
  3. Design
  4. Coding
  5. Testing
  6. Release & Maintenance 


    

     
Abbreviations 
BA – Business Analyst
BRS – Business Requirement Specification
URS – User Requirement Specification
CRS – Client Requirement Specification
RFP – Request for proposal
SLA – Service Level Agreement
SA – System Analyst
FRS – Functional Requirement Specification
SRS - System Requirement Specification
SOW – Statement of Work
DA – Design Architect
TDD – Technical Design Document
GUI – Graphical User Interface design doc
DB – Database design document
HLD – High Level Design document
LLD – Low Level Design document
SCD – Source Code document

1. Requirement Collection:  
  In this phase BA will collect requirements with an interaction of client.
Collected information will be documented as BRS.
BRS will describe brief description about client business needs like users of the application and required services for those users.
After preparation of BRS, BA will perform feasibility study to check project is acceptance or not.
In feasibility study they analyze following factors:
a)    Finance feasibility
b)    Time required to develop application
c)    Requirements are reliable or not in order to develop.
After feasibility study if project is acceptance for BA will intimate to the client by releasing Request for Proposal (RFP) & Service Level Agreement (SLA) document.

2. Requirement Analysis:
In this phase SA will analyze client requirements in BRS based on that he will prepare detailed requirements document called FRS / SRS.
FRS document will describe detailed functionality of the system
In this phase System Analyst will provide information to the client by releasing Statement of Work (SOW) document.
For successful project development clear FRS document is mandatory.

3) Design:  

In this phase design architect (DA) is responsible to prepare design document based on FRS.
In this phase DA will decide architecture of application, which programming or scripting languages need to use and DB technology.
In this phase DA will prepare following documents:
A) GUI Design doc: It describes navigational flow of the application to know the feature implementation of application.
B) DB Design doc: It describes about database structure like number of tables & rules implemented between those tables.
C) Application Design Document (ADD) / Technical Design Doc:
  i) HLD: It describes number of modules required in the project & relation between those modules
Module: Set of similar requirements group in application is called Module
Modularization: Splitting the project with set of modules is called Modularization.
ii) LLD: It describes internal logic of each module with help of Data – Flow diagrams & Entity – Relative Diagrams.

4) Coding:
Based on design document developer will write the programs in order to develop application.

5) Testing:  
After coding programs are available for execution developers will perform unit & integration testing using White box Testing Techniques.
Whereas Test Engineer will validate whole system based on client requirements using Black Box Testing.
After System testing to know application ready for release we conduct User Acceptance Test (UAT) which is performed by client.

6) Release & Maintenance:
Release: After System Testing  & UAT, if client is satisfied with out work product then we deliver application to the client for further usage at live environment with real data is called Release \ Production.
Maintenance:  While using the application if client required any new features based on present situation or he may identifies defects then he will send change request (CR) to the organization.
 Based initial agreements we work on CR and release modified version to the client.

NOTE:  When application no longer in use that is end stage for SDLC



Common Problems in  SDLC:
  • Poor Requirements: Incomplete requirements and unclear requirements will be a problem to develop application.
  • Unrealistic Schedule: If too much of work assigned in short time there will be a problem.
  • Inadequate testing or incomplete testing will be a problem.
  • Lack of communication.
When defects will arise in s/w application:
Wrong requirements ------- Wrong Project / Product
Mistakes in design     -------- Design defects
Mistakes in coding     -------- Coding defects


Note:  
Design defects should be resolved from design doc.
Defects repair cost with respect to SDLC phases
Requirements – 0 %
Design – 10 %
Coding – 20%
Testing –   50 %
Maintenance – 100%
Early stages identified defects will take less cost to fix those defects.



Quality Management: (QM)
         It is a process of preventing defects during development of application and ensure there are no defects in final product.
In QM there will be two types of teams:
   1) Quality Assurance (QA): This team is responsible to define development process of application in order to prevent defects.
    QA team involves throughout life cycle to monitor and to improve the strength of development process.
   2) Quality Control (QC):  This team involves after application developed in order to identify defects and to ensure those defects has to be resolved before releasing application to the client.

Difference between QA and QC:



          Quality Assurance (QA)
             Quality Control (QC)
It involves throughout life cycle
It involves after product is built
It is defects preventive approach
It is defects detective approach
Reviews, auditing are the example for QA activities
Software testing is an example