Thursday, 19 November 2015

Software Testing Models

Once a phase of development is completed, the development proceeds to the next phase and there is no turning back.

The phases of waterfall model:
  • Analysis/requirement Gathering 
  • Designing 
  • Coding 
  • Testing 
  • Implementation
  • Maintenance

  • Easy to understand and implement.
  • Phases involved in the waterfall model do not overlap with each other because every new phase starts only after the completion of previous one. 

  • Backtracking of phases is not feasible.
  • Working version of the product is available only after the completion of the final phase. 
  • Not suitable to develop large projects.
  • All requirements are freeze early in the development process.
  • Customers can not give their feedback during the development process.
  • Not suitable to accommodate any kind of change. 

It combines the iterative nature of the prototype model with the controlled and systematic aspects of the waterfall model to provide the potential for rapid development of incremental versions of the software. In this,the software is developed in a series of the incremental releases with the early stages being either versions of the product.

  • Customer communication task 
  • Planning task
  • Risk analysis task
  • Engineering task
  • Construction and release task
  • Customer evaluation task. 
  • Easy monitoring project
  • Easy management of identified risks.
  • Suitable to develop high risk projects. 
  • Cost involved in the development of software product is high.
  • The approach that is followed to develop software is complex.
  • This is not an appropriate model to develop low risk projects. 

It is an evolutionary form of waterfall model.The product is designed,implemented, integrated and finally tested as a series of incremental builds. Incremental software development model be applicable to projects where:

  • Software requirements are well defined, but complete product realization can be delayed.
  • The client is ready for the delivery of the product in part phases and the product's core functionalities are of early importance.

  • More flexible than the waterfall model.
  • Each increment is fully tested before beginning the next.
  • Working version of the product is available early in the development process.
  • More enhanced or complete version of the product is released after every iteration.
  • Suitable to accommodate changes. 
  • Each iteration involves planning overhead. 
  • Total planned testing efforts may increase. 

It is a linear sequential development process model that follows an extremely short development cycle taking the help of the component based construction approach.The main focus of RAD Model is on the rapid prototyping of the software to support quick development.

The key features of the RAD Model are
  • Supports the re-use of software components.
  • Follows a methodology combining the features of iterative development and the benefits of software prototyping.
  • Supports less formality in product reviews and other team communication 

  • Rapid product development.
  • Supports the usage of test automation tools, which in turn increases the quality of the product. 
  • The cost involved in the development process is high.
  • Depends on the expertise of the project members in tool implementation. 

The V-Model is a software development model which can be presumed to be the extension of the waterfall model. The V-Model demonstrates the relationship between each phase of the development life cycle ant its associated phase of testing.

It has two phases
  • Verification 
  • Validation  
  • User Requirement Analysis 
  • System Requirement Design
  • Architecture Design
  • Module Design
  • Component Testing/Unit Testing 
  • Integration Testing 
  • System Testing
  • Acceptance Testing

  • Simple and easy to use
  • Higher chance of success over the waterfall model due to the creation of test plans/ designs early in the development process.
  • Each phase has specific deliverable. 
  • Not flexible to accommodate changes.
  • Customers cannot give their feedback on the product as no working version of the product is released before implementation.

Sunday, 25 October 2015

Software Testing - Get Started

Software Testing
Its a process of determining whether the product developed by programmer is a quality product and to assure that the developed product is working according to the specification, satisfying all the customer needs. It is a set of activities performed with an intent to identify errors in the software under test.

DEBUGGING- It is process of fixation of defects by the developer.

  • Testing shows presence of defects. 
  • Exhaustive testing is impossible. 
  • Early testing 
  • Defect clustering.
  • Pesticide paradox 
  • Testing OS context dependent. 
  • Absence of error fallacy.
  • To identify defects. 
  • To ensure product correctness. 
  • To ensure quality improvement of the product. 
  • To make sure the software works according to the specification 
  • To reduce the failure cost. 
  • To reduce the risk. 
  • To build the confidence into software.
SDLC is a model of a detailed plan on how to create, develop. implement and eventually retired from its functioning.Its a complete plan outlining how the software will be born, raised,and eventually retire from its functioning. Its a cycle that defines the stages or steps to develop a quality software.This cycle involves multiple stages and each stage plays a vital role in the development, implementation and maintenance of software.

  • Planning/Feasibility study
  • Requirements Analysis
  • design
  • Coding
  • testing
  • Implementation
  • Maintenance
  • Waterfall Model
  • Spiral Model
  • Incremental Model
  • RAD Model
  • V Model
I will continue about the software model with example so that it will be ease to understand how each and every model works. Comments/Suggestions are welcome.

Welcome Note

I recently started with blogging and found that it is good to share your knowledge even you don't know every bit of a topic but it will allow you to put it in discussion by sharing what you know already. I am going to use this blog for my experience with software testing and other technical learning. I would love to your side of story for every topic and we all learn something new.

"Everyone you will ever meet knows something you don't"
                                                                                - Bill Nye