Please register and post your comments
V-Model
The V-model is a software development model which can be presumed to be the extension of the waterfall model. In V-model each phase of SDLC will have a corresponding testing phase. For example, Unit Testing will be done against the Component Design phase of development, Acceptance Testing will be done against Requirements Specifications.
In maintenance testing, any changes made in software should be tested thoroughly. The change made in software should not affect the existing functionality of the software, so regression testing should also be done.
V-Model
The V-model is a software development model which can be presumed to be the extension of the waterfall model. In V-model each phase of SDLC will have a corresponding testing phase. For example, Unit Testing will be done against the Component Design phase of development, Acceptance Testing will be done against Requirements Specifications.
Iterative-Incremental Development Model
Iterative-incremental development is the process of establishing requirements, designing, building and testing a system in a series of short development cycles. E.g., Rapid Application Development (RAD), Rational Unified Process (RUP) and Agile Development Models.
Regression testing is increasingly important on all iterations after the first one. Verification and validation can be carried out on each increment.
Testing within a Life Cycle Model
In any life cycle model, there are several characteristics of good testing:
• For every development activity there is a corresponding testing activity
• Each test level has test objectives specific to that level
• The analysis and design of tests for a given test level should begin during the corresponding development activity.
Testing Levels
Unit or Component Testing
Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually and independently tested. Once all of the units in a program have been found to be working in the most efficient and error-free manner, larger components of the program can be evaluated by means of integration testing.
One approach to unit testing is to prepare and automate test cases before coding. This is called a test-first approach or test-driven development.
Integration Testing
Integration testing tests interfaces between components, interactions with different parts of a system.
There are two levels of integration testing:
• Component integration testing tests the interactions between software components and is done after component testing.
• System integration testing tests the interactions between different systems or between hardware and software and may be done after system testing.
System Testing
Testing the behavior of the whole software/system as defined in software requirements specification(SRS) is known as system testing, its main focus is to verify that the customer requirements are fulfilled.
System testing is done after integration testing is complete. System testing should test functional and non functional requirements of the software.
Acceptance Testing
Acceptance testing is often the responsibility of the customers or users of a system; other stakeholders may be involved as well.
The goal of acceptance testing is to establish confidence in the system, parts of the system or specific non-functional characteristics of the system. Finding defects is not the main focus in acceptance testing.
Typical forms of acceptance testing include the following:
User Acceptance Testing
Typically verifies the fitness for use of the system by business users.
Alpha/Beta Testing
Alpha testing is performed at the developing organization’s site but not by the developing team. Beta testing, or field-testing is performed by customers or potential customers at their own locations.
Testing Types
Functional Testing
Functionality testing of software is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements.
System Testing vs. Functional Testing
System testing is testing the application as a whole i.e. without leaving a single object. It involves functionality, performance, security and user interface etc...
Functionality testing checks whether the application works according to client’s requirement. It’s a part of system testing.
Non Functional Testing
Non Functional Testing is testing the non-functionalities of software like performance, security, compatibility, reliability etc.
Performance vs. Load vs. Stress Testing
Performance testing is a process that focuses on testing performance of individual components of the web app, such as databases, network infrastructure and cache layers, etc.
Load testing is a process of determining how an application under specific volumes of load, usually a range of the upper and lower limits expected by the business.
Stress testing is a process of identifying when and how systems fail and recover under extreme levels of load.
Regression Testing vs. Retesting
Retesting means testing the bug after the code is fixed to ensure that the particular functionality is working fine.
Regression means testing functionality to ensure that the above code fix haven't introduced any problem to existing code/functionality which was working fine earlier.
For E.g. If there are 1000 test cases to be executed in the first build and of the 1000 test cases, 100 fail and 900 pass....
Then after bug fixes when the 2nd build is received, REGRESSION Testing has to be done on the 900 test cases and the remaining 100 test cases are to be RETESTED.
Maintenance Testing
Maintenance Testing is done on the already deployed software. The deployed software needs to be enhanced, changed or migrated to other hardware. The Testing done during this enhancement, change and migration cycle is known as maintenance testing.