Saturday, April 15, 2017

What is Beta testing?

What is Beta testing?

Beta Testing is also known as field testing. It takes place at customer’s site. It sends the system/software to users who install it and use it under real-world working conditions.

  • A beta test is the second phase of software testing in which a sampling of the intended audience tries the product out. (Beta is the second letter of the Greek alphabet.) Originally, the term alpha testing meant the first phase of testing in a software development process. The first phase includes unit testing, component testing, and system testing. Beta testing can be considered “pre-release testing.

  • The goal of beta testing is to place your application in the hands of real users outside of your own engineering team to discover any flaws or issues from the user’s perspective that you would not want to have in your final, released version of the application. Example: Microsoft and many other organizations release beta versions of their products to be tested by users.
Open and closed beta:
Developers release either a closed beta or an open beta;
  • Closed beta versions are released to a select group of individuals for a user test and are invitation only, while
  • Open betas are from a larger group to the general public and anyone interested. The testers report any bugs that they find, and sometimes suggest additional features they think should be available in the final version.

Advantages of beta testing

  • You have the opportunity to get your application into the hands of users prior to releasing it to the general public.
  • Users can install, test your application, and send feedback to you during this beta testing period.
  • Your beta testers can discover issues with your application that you may have not noticed, such as confusing application flow, and even crashes.
  • Using the feedback you get from these users, you can fix problems before it is released to the general public.
  • The more issues you fix that solve real user problems, the higher the quality of your application when you release it to the general public.
  • Having a higher-quality application when you release to the general public will increase customer satisfaction.
  • These users, who are early adopters of your application, will generate excitement about your application.

What is Alpha testing?

What is Alpha testing?

Alpha testing is one of the most common software testing strategy used in software development. Its specially used by product development organizations.
  • This test takes place at the developer’s site. Developers observe the users and note problems.
  • Alpha testing is testing of an application when development is about to complete. Minor design changes can still be made as a result of alpha testing.
  • Alpha testing is typically performed by a group that is independent of the design team, but still within the company, e.g. in-house software test engineers, or software QA engineers.
  • Alpha testing is final testing before the software is released to the general public. It has two phases:
    • In the first phase of alpha testing, the software is tested by in-house developers. They use either debugger software, or hardware-assisted debuggers. The goal is to catch bugs quickly.
    • In the second phase of alpha testing, the software is handed over to the software QA staff, for additional testing in an environment that is similar to the intended use.
  • Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers’ site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing.

What is Acceptance testing or User Acceptance Testing (UAT)?

What is Acceptance testing or User Acceptance Testing (UAT)?

After the system test has corrected all or most defects, the system will be delivered to the user or customer for Acceptance Testing or User Acceptance Testing (UAT).
  • Acceptance testing is basically done by the user or customer although other stakeholders may be involved as well.
  • The goal of acceptance testing is to establish confidence in the system.
  • Acceptance testing is most often focused on a validation type testing.
  • Acceptance testing may occur at more than just a single level, for example:
    • A Commercial Off the shelf (COTS) software product may be acceptance tested when it is installed or integrated.
    • Acceptance testing of the usability of the component may be done during component testing.
    • Acceptance testing of a new functional enhancement may come before system testing.
  • The types of acceptance testing are:
    • The User Acceptance test: focuses mainly on the functionality thereby validating the fitness-for-use of the system by the business user. The user acceptance test is performed by the users and application managers.
    • The Operational Acceptance test: also known as Production acceptance test validates whether the system meets the requirements for operation. In most of the organization the operational acceptance test is performed by the system administration before the system is released. The operational acceptance test may include testing of backup/restore, disaster recovery, maintenance tasks and periodic check of security vulnerabilities.
    • Contract Acceptance testing: It is performed against the contract’s acceptance criteria for producing custom developed software. Acceptance should be formally defined when the contract is agreed.
    • Compliance acceptance testing: It is also known as regulation acceptance testing is performed against the regulations which must be adhered to, such as governmental, legal or safety regulations.

What is System testing?

What is System testing?

In system testing the behavior of whole system/product is tested as defined by the scope of the development project or product.
  • It may include tests based on risks and/or requirement specifications, business process, use cases, or other high level descriptions of system behavior, interactions with the operating systems, and system resources.
  • System testing is most often the final test to verify that the system to be delivered meets the specification and its purpose.
  • System testing is carried out by specialists testers or independent testers.
  • System testing should investigate both functional and non-functional requirements of the testing.

What is System integration testing?

What is System integration testing?


System Integration Testing (SIT) tests the interactions between different systems and may be done after system testing.
  • It verifies the proper execution of software components and proper interfacing between components within the solution.
  • The objective of SIT Testing is to validate that all software module dependencies are functionally correct and that data integrity is maintained between separate modules for the entire solution.
  • As testing for dependencies between different components is a primary function of SIT Testing, this area is often most subject to Regression Testing.

What is Component integration testing?

What is Component integration testing?


Component Integration Testing tests the interactions between software components and is done after component testing.
  • The software components themselves may be specified at different times by different specification groups, yet the integration of all of the pieces must work together.
  • It is important to cover negative cases as well because components might make assumption with respect to the data.

Component Integration Testing tests the interactions between software components and is done after component testing.
  • The software components themselves may be specified at different times by different specification groups, yet the integration of all of the pieces must work together.
  • It is important to cover negative cases as well because components might make assumption with respect to the data.

What is Incremental testing in software?

What is Incremental testing in software?


The incremental testing approach has the advantage that the defects are found early in a smaller assembly when it is relatively easy to detect the cause.
  • Another advantage is that all programmers are integrated one by one, and a test is carried out after each step. 
  • A disadvantage is that it can be time-consuming since stubs and drivers have to be developed and used in the test.
  • Within incremental integration testing a range of possibilities exist, partly depending on the system architecture:
    • Top down: Testing takes place from top to bottom, following the control flow or architectural structure (e.g. starting from the GUI or main menu). Components or systems are substituted by stubs.
    • Bottom up: Testing takes place from the bottom of the control flow upwards. Components or systems are substituted by drivers.
    • Functional incremental: Integration and testing  takes place on the basis of the functions and functionalities, as documented in the functional specification.

What is Big Bang integration testing?

What is Big Bang integration testing?

In Big Bang integration testing all components or modules are integrated simultaneously, after which everything is tested as a whole.
  • In this approach individual modules are not integrated until and unless all the modules are ready.
  • In Big Bang integration testing all the modules are integrated without performing any integration testing and then it’s executed to know whether all the integrated modules are working fine or not.
  • This approach is generally executed by those developers who follows the ‘Run it and see’ approach.
  • Because of integrating everything at one time if any failures occurs then it become very difficult for the programmers to know the root cause of that failure.
  • In case any bug arises then the developers has to detach the integrated modules in order to find the actual cause of the bug.
Below is the image of the big bang integration testing:



Suppose a system consists of four modules as displayed in the diagram above. In big bang integration all the four modules ‘Module A, Module B, Module C and Module D’ are integrated simultaneously and then the testing is performed. Hence in this approach no individual integration testing is performed because of which the chances of critical failures increases.
Advantage of Big Bang Integration:
  • Big Bang testing has the advantage that everything is finished before integration testing starts.
Disadvantages of Big Bang Integration:
  • The major disadvantage is that in general it is very time consuming
  • It is very difficult to trace the cause of failures because of this late integration.
  • The chances of having critical failures are more because of integrating all the components together at same time.
  • If any bug is found then it is very difficult to detach all the modules in order to find out the root cause of it.
  • There is high probability of occurrence of the critical bugs in the production environment

What is Integration testing?

What is Integration testing?


Integration testing tests integration or interfaces between components, interactions to different parts of the system such as an operating system, file system and hardware or interfaces between systems.
  • Also after integrating two different components together we do the integration testing. As displayed in the image below when two different modules ‘Module A’ and ‘Module B’ are integrated then the integration testing is done.

  • Integration testing is done by a specific integration tester or test team.
  • Integration testing follows two approach known as ‘Top Down’ approach and ‘Bottom Up’ approach as shown in the image below:

Below are the integration testing techniques:
1. Big Bang integration testing:
In Big Bang integration testing all components or modules are integrated simultaneously, after which everything is tested as a whole. As per the below image all the modules from ‘Module 1’ to ‘Module 6’ are integrated simultaneously then the testing is carried out.

Advantage: Big Bang testing has the advantage that everything is finished before integration testing starts.
 Disadvantage: The major disadvantage is that in general it is time consuming and difficult to trace the cause of failures because of this late integration.
2. Top-down integration testing: Testing takes place from top to bottom, following the control flow or architectural structure (e.g. starting from the GUI or main menu). Components or systems are substituted by stubs. Below is the diagram of  ‘Top down Approach’:



Advantages of Top-Down approach:
  • The tested product is very consistent because the integration testing is basically performed in an environment that almost similar to that of reality
  • Stubs can be written with lesser time because when compared to the drivers then Stubs are simpler to author.
Disadvantages of Top-Down approach:
  • Basic functionality is tested at the end of cycle
3. Bottom-up integration testing: Testing takes place from the bottom of the control flow upwards. Components or systems are substituted by drivers. Below is the image of ‘Bottom up approach’:

Advantage of Bottom-Up approach:
  • In this approach development and testing can be done together so that the product or application will be efficient and as per the customer specifications.
Disadvantages of Bottom-Up approach:
  • We can catch the Key interface defects at the end of cycle
  • It is required to create the test drivers for modules at all levels except the top control
Incremental testing:
  • Another extreme is that all programmers are integrated one by one, and a test is carried out after each step.
  • The incremental approach has the advantage that the defects are found early in a smaller assembly when it is relatively easy to detect the cause.
  • A disadvantage is that it can be time-consuming since stubs and drivers have to be developed and used in the test.
  • Within incremental integration testing  a range of possibilities exist, partly depending on the system architecture.
Functional incremental: Integration and testing takes place on the basis of the functions and functionalities, as documented in the functional specification.

What is Component testing?

What is Component testing?

What is Component testing?: Component testing is a method where testing of each component in an application is done separately.  Suppose, in an application there are 5 components. Testing of each 5 components separately and efficiently is called as component testing.
  • Component testing is also known as module and program testing. It finds the defects in the module and verifies the functioning of software.
  • Component testing is done by the tester.
  • Component testing may be done in isolation from rest of the system depending on the development life cycle model chosen for that particular application. In such case the missing software is replaced by Stubs and Drivers and simulate the interface between the software components in a simple manner.
  • Let’s take an example to understand it in a better way. Suppose there is an application consisting of three modules say, module A, module B and module C. The developer has developed the module B and now wanted to test it. But in order to test the module B completely few of it’s functionalities are dependent on module A and few on module C. But the module A and module C has not been developed yet. In that case to test the module B completely we can replace the module A and module C by stub and drivers as required.
  • Stub: A stub is called from the software component to be tested. As shown in the diagram below ‘Stub’ is called by ‘component A’.
  • Driver: A driver calls the component to be tested. As shown in the diagram below ‘component B’ is called by the ‘Driver’.
Below is the diagram of the component testing:



As discussed in the previous article of the ‘Unit testing’ it is done by the developers where they do the testing of the individual functionality or procedure. After unit testing is executed, component testing comes into the picture. Component testing is done by the testers.
Component testing plays a very important role in finding the bugs. Before we start with the integration testing it’s always preferable to do the component testing in order to ensure that each component of an application is working effectively.
Integration testing is followed by the component testing.

What is Unit testing?

What is Unit testing?


A unit test is the smallest testable part of an application like functions, classes, procedures, interfaces. Unit testing is a method by which individual units of source code are tested to determine if they are fit for use.
  • Unit tests are basically written and executed by software developers to make sure that code meets its design and requirements and behaves as expected.
  • The goal of unit testing is to segregate each part of the program and test that the individual parts are working correctly.
  • This means that for any function or procedure when a set of inputs are given then it should return the proper values. It should handle the failures gracefully during the course of execution when any invalid input is given.
  • A unit test provides a written contract that the piece of code must assure. Hence it has several benefits.
  • Unit testing is basically done before integration as shown in the image below.

Method Used for unit testing: White Box Testing method is used for executing the unit test.
When Unit testing should be done?
Unit testing should be done before Integration testing.
By whom unit testing should be done?
Unit testing should be done by the developers.
Advantages of Unit testing:
1. Issues are found at early stage. Since unit testing are carried out by developers where they test their individual code before the integration. Hence the issues can be found very early and can be resolved then and there without impacting the other piece of codes.
2. Unit testing helps in maintaining and changing the code. This is possible by making the codes less interdependent so that unit testing can be executed. Hence chances of impact of changes to any other code gets reduced.
3. Since the bugs are found early in unit testing hence it also helps in reducing the cost of bug fixes. Just imagine the cost of bug found during the later stages of development like during system testing or during acceptance testing.
4. Unit testing helps in simplifying the debugging process. If suppose a test fails then only latest changes made in code needs to be debugged.

What are Software Testing Levels?

What are Software Testing Levels?



Testing levels are basically to identify missing areas and prevent overlap and repetition between the development life cycle phases. In software development life cycle models there are defined phases like requirement gathering and analysis, design, coding or implementation, testing and deployment.  Each phase goes through the testing. Hence there are various levels of testing. The various levels of testing are:
  1. Unit testing: It is basically done by the developers to make sure that their code is working fine and meet the user specifications. They test their piece of code which they have written like classes, functions, interfaces and procedures.
  2. Component testing: It is also called as module testing. The basic difference between the unit testing and component testing is in unit testing the developers test their piece of code but in component testing the whole component is tested. For example, in a student record application there are two modules one which will save the records of the students and other module is to upload the results of the students. Both the modules are developed separately and when they are tested one by one then we call this as a component or module testing.
  3. Integration testing: Integration testing is done when two modules are integrated, in order to test the behavior and functionality of both the modules after integration. Below are few types of integration testing:
    • Big bang integration testing
    • Top down
    • Bottom up
    • Functional incremental
  4. Component integration testing: In the example above when both the modules or components are integrated then the testing done is called as Component integration testing. This testing is basically done to ensure that the code should not break after integrating the two modules.
  5. System integration testing: System integration testing (SIT) is a testing where testers basically test that in the same environment all the related systems should maintain data integrity and can operate in coordination with other systems.
  6. System testing: In system testing the testers basically test the compatibility of the application with the system.
  7. Acceptance testing: Acceptance testing are basically done to ensure that the requirements of the specification are met.
  8. Alpha testing: Alpha testing is done at the developers site. It is done at the end of the development process
  9. Beta testing: Beta testing is done at the customers site. It is done just before the launch of the product.

What is Prototype model- advantages, disadvantages and when to use it?

What is Prototype model- advantages, disadvantages and when to use it?


The basic idea in Prototype model is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements. This prototype is developed based on the currently known requirements. Prototype model is a software development model. By using this prototype, the client can get an “actual feel” of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.  Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements.
The prototype are usually not complete systems and many of the details are not built in the prototype. The goal is to provide a system with overall functionality.
Diagram of Prototype model:

Advantages of Prototype model:
  • Users are actively involved in the development
  • Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed.
  • Errors can be detected much earlier.
  • Quicker user feedback is available leading to better solutions.
  • Missing functionality can be identified easily
  • Confusing or difficult functions can be identified
    Requirements validation, Quick implementation of, incomplete, but
    functional, application.
Disadvantages of Prototype model:
  • Leads to implementing and then repairing way of building systems.
  • Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.
  • Incomplete application may cause application not to be used as the
    full system was designed
    Incomplete or inadequate problem analysis.
When to use Prototype model:  
  • Prototype model should be used when the desired system needs to have a lot of interaction with the end users.
  • Typically, online systems, web interfaces have a very high amount of interaction with end users, are best suited for Prototype model. It might take a while for a system to be built that allows ease of use and needs minimal training for the end user.
  • Prototyping ensures that the end users constantly work with the system and provide a feedback which is incorporated in the prototype to result in a useable system. They are excellent for designing good human computer interface systems.

What is Spiral model- advantages, disadvantages and when to use it?

What is Spiral model- advantages, disadvantages and when to use it?

The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral. Its one of the software development models like Waterfall, Agile, V-Model.

Planning Phase: Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and alternate solutions.  A prototype is produced at the end of the risk analysis phase. If any risk is found during the risk analysis then alternate solutions are suggested and implemented.
Engineering Phase: In this phase software is developed, along with testing at the end of the phase. Hence in this phase the development and testing is done.
Evaluation phase: This phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

Diagram of Spiral model:
The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral. Its one of the software development models like Waterfall, Agile, V-Model.

Planning Phase: Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Bussiness Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and alternate solutions.  A prototype is produced at the end of the risk analysis phase. If any risk is found during the risk analysis then alternate solutions are suggested and implemented.
Engineering Phase: In this phase software is developed, along with testing at the end of the phase. Hence in this phase the development and testing is done.
Evaluation phase: This phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.
Diagram of Spiral model:
Advantages of Spiral model:
  • High amount of risk analysis hence, avoidance of Risk is enhanced.
  • Good for large and mission-critical projects.
  • Strong approval and documentation control.
  • Additional Functionality can be added at a later date.
  • Software is produced early in the software life cycle.
Disadvantages of Spiral model:
  • Can be a costly model to use.
  • Risk analysis requires highly specific expertise.
  • Project’s success is highly dependent on the risk analysis phase.
  • Doesn’t work well for smaller projects.
 When to use Spiral model:
  • When costs and risk evaluation is important
  • For medium to high-risk projects
  • Long-term project commitment unwise because of potential changes to economic priorities
  • Users are unsure of their needs
  • Requirements are complex
  • New product line
  • Significant changes are expected (research and exploration)
Advantages of Spiral model:
  • High amount of risk analysis hence, avoidance of Risk is enhanced.
  • Good for large and mission-critical projects.
  • Strong approval and documentation control.
  • Additional Functionality can be added at a later date.
  • Software is produced early in the software life cycle.
Disadvantages of Spiral model:
  • Can be a costly model to use.
  • Risk analysis requires highly specific expertise.
  • Project’s success is highly dependent on the risk analysis phase.
  • Doesn’t work well for smaller projects.
 When to use Spiral model:
  • When costs and risk evaluation is important
  • For medium to high-risk projects
  • Long-term project commitment unwise because of potential changes to economic priorities
  • Users are unsure of their needs
  • Requirements are complex
  • New product line
  • Significant changes are expected (research and exploration)

 

Monday, April 3, 2017

What is Iterative model- advantages, disadvantages and when to use it?

What is Iterative model- advantages, disadvantages and when to use it?



An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model.

In the diagram above when we work iteratively we create rough product or product piece in one iteration, then review it and improve it in next iteration and so on until it’s finished. As shown in the image above, in the first iteration the whole painting is sketched roughly, then in the second iteration colors are filled and in the third iteration finishing is done. Hence, in iterative model the whole product is developed step by step.
Diagram of Iterative model:

Advantages of Iterative model:
  • In iterative model we can only create a high-level design of the application before we actually begin to build the product and define the design solution for the entire product. Later on we can design and built a skeleton version of that, and then evolved the design based on what had been built.
  • In iterative model we are building and improving the product step by step. Hence we can track the defects at early stages. This avoids the downward flow of the defects.
  • In iterative model we can get the reliable user feedback. When presenting sketches and blueprints of the product to users for their feedback, we are effectively asking them to imagine how the product will work.
  • In iterative model less time is spent on documenting and more time is given for designing.
 Disadvantages of Iterative model: 
  • Each phase of an iteration is rigid with no overlaps
  • Costly system architecture or design issues may arise because not all requirements are gathered up front for the entire lifecycle
When to use iterative model:
  • Requirements of the complete system are clearly defined and understood.
  • When the project is big.
  • Major requirements must be defined; however, some details can evolve with time.

What is Agile model – advantages, disadvantages and when to use it?

What is Agile model – advantages, disadvantages and when to use it?


Agile development model is also a type of Incremental model. Software is developed in incremental, rapid cycles. This results in small incremental releases with each release building on previous functionality. Each release is thoroughly tested to ensure software quality is maintained. It is used for time critical applications.  Extreme Programming (XP) is currently one of the most well known agile development life cycle model.

Diagram of Agile model:

Advantages of Agile model:
  • Customer satisfaction by rapid, continuous delivery of useful software.
  • People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
  • Working software is delivered frequently (weeks rather than months).
  • Face-to-face conversation is the best form of communication.
  • Close, daily cooperation between business people and developers.
  • Continuous attention to technical excellence and good design.
  • Regular adaptation to changing circumstances.
  • Even late changes in requirements are welcomed
Disadvantages of Agile model:
  • In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
  • There is lack of emphasis on necessary designing and documentation.
  • The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  • Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
When to use Agile model:
  • When new changes are needed to be implemented. The freedom agile gives to change is very important. New changes can be implemented at very little cost because of the frequency of new increments that are produced.
  • To implement a new feature the developers need to lose only the work of a few days, or even only hours, to roll back and implement it.
  • Unlike the waterfall model in agile model very limited planning is required to get started with the project. Agile assumes that the end users’ needs are ever changing in a dynamic business and IT world. Changes can be discussed and features can be newly effected or removed based on feedback. This effectively gives the customer the finished system they want or need.
  • Both system developers and stakeholders alike, find they also get more freedom of time and options than if the software was developed in a more rigid sequential way. Having options gives them the ability to leave important decisions until more or better data or even entire hosting programs are available; meaning the project can continue to move forward without fear of reaching a sudden standstill.
You can refer to our introduction to Agile Methodology if you would like to understand Agile better.

What is RAD model- advantages, disadvantages and when to use it?

What is RAD model- advantages, disadvantages and when to use it?


RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled into a working prototype.  This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements.
Diagram of RAD-Model:
The phases in the rapid application development (RAD) model are:
Business modeling: The information flow is identified between various business functions.
Data modeling: Information gathered from business modeling is used to define data objects that are needed for the business.
Process modeling: Data objects defined in data modeling are converted to achieve the business information flow to achieve some specific business objective. Description are identified and created for CRUD of data objects.
Application generation: Automated tools are used to convert process models into code and the actual system.
Testing and turnover: Test new components and all the interfaces.
Advantages of the RAD model:

  • Reduced development time.
  • Increases reusability of components
  • Quick initial reviews occur
  • Encourages customer feedback
  • Integration from very beginning solves a lot of integration issues.
Disadvantages of RAD model:
  • Depends on strong team and individual performances for identifying business requirements.
  • Only system that can be modularized can be built using RAD
  • Requires highly skilled developers/designers.
  • High dependency on modeling skills
  • Inapplicable to cheaper projects as cost of modeling and automated code generation is very high.
 When to use RAD model:
  • RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time.
  • It should be used if there’s high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools.
  • RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short span of time (2-3 months).

What is Incremental model- advantages, disadvantages and when to use it?

What is Incremental model- advantages, disadvantages and when to use it?


In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle.  Cycles are divided up into smaller, more easily managed modules. Incremental model is a type of software development model like V-model, Agile model etc.
In this model, each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved.
In the diagram above when we work incrementally we are adding piece by piece but expect that each piece is fully finished. Thus keep on adding the pieces until it’s complete. As in the image above a person has thought of the application. Then he started building it and in the first iteration the first module of the application or product is totally ready and can be demoed to the customers. Likewise in the second iteration the other module is ready and integrated with the first module. Similarly, in the third iteration the whole product is ready and integrated. Hence, the product got ready step by step.
Diagram of Incremental model:

Advantages of Incremental model:
  • Generates working software quickly and early during the software life cycle.
  • This model is more flexible – less costly to change scope and requirements.
  • It is easier to test and debug during a smaller iteration.
  • In this model customer can respond to each built.
  • Lowers initial delivery cost.
  • Easier to manage risk because risky pieces are identified and handled during it’d iteration.
Disadvantages of Incremental model:
  • Needs good planning and design.
  • Needs a clear and complete definition of the whole system before it can be broken down and built incrementally.
  • Total cost is higher than waterfall.
When to use the Incremental model:
  • This model can be used when the requirements of the complete system are clearly defined and understood.
  • Major requirements must be defined; however, some details can evolve with time.
  • There is a need to get a product to the market early.
  • A new technology is being used
  • Resources with needed skill set are not available
  • There are some high risk features and goals.

What is V-model- advantages, disadvantages and when to use it?

What is V-model- advantages, disadvantages and when to use it?


V- model means Verification and Validation model. Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins. V-Model is one of the many software development models.Testing of the product is planned in parallel with a corresponding phase of development in V-model.
Diagram of V-model:
The various phases of the V-model are as follows:
Requirements like BRS and SRS begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created.  The test plan focuses on meeting the functionality specified in the requirements gathering.
The high-level design (HLD) phase focuses on system architecture and design. It provide overview of solution, platform, system, product and service/process. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.
The low-level design (LLD) phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. Class diagram with all the methods and relation between classes comes under LLD. Component tests are created in this phase as well.
The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.
Coding: This is at the bottom of the V-Shape model. Module design is converted into code by developers. Unit Testing is performed by the developers on the code written by them.
Advantages of V-model:
  • Simple and easy to use.
  • Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model.
  • Proactive defect tracking – that is defects are found at early stage.
  • Avoids the downward flow of the defects.
  • Works well for small projects where requirements are easily understood.
Disadvantages of V-model:
  • Very rigid and least flexible.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • If any changes happen in midway, then the test documents along with requirement documents has to be updated.
When to use the V-model:
  • The V-shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed.
  • The V-Shaped model should be chosen when ample technical resources are available with needed technical expertise.
High confidence of customer is required for choosing the V-Shaped model approach. Since, no prototypes are produced, there is a very high risk involved in meeting customer expectations.

What is Waterfall model- advantages, disadvantages and when to use it?

What is Waterfall model- advantages, disadvantages and when to use it?



The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model.  It is very simple to understand and use.  In a waterfall model, each phase must be completed fully before the next phase can begin. This type of software development model is basically used for the for the project which is small and there are no uncertain requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In this model software testing starts only after the development is complete. In waterfall model phases do not overlap.
Diagram of Waterfall-model:
Advantages of waterfall model:
  • This model is simple and easy to understand and use.
  • It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • In this model phases are processed and completed one at a time. Phases do not overlap.
  • Waterfall model works well for smaller projects where requirements are very well understood.
 Disadvantages of waterfall model:
  • Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.
When to use the waterfall model:
  • This model is used only when the requirements are very well known, clear and fixed.
  • Product definition is stable.
  • Technology is understood.
  • There are no ambiguous requirements
  • Ample resources with required expertise are available freely
  • The project is short.
Very less customer interaction is involved during the development of the product. Once the product is ready then only it can be demoed to the end users. Once the product is developed and if any failure occurs then the cost of fixing such issues are very high, because we need to update everywhere from document till the logic.

What is Beta testing?

What is Beta testing? Beta Testing is also known as field testing. It takes place at customer’s site . It sends the system/software to ...