V Model
Last updated
Last updated
In software testing, V-ModelSDLC
(or V-model) is a highly disciplined Software Development Life Cycle model , in which there is a testing phase that runs parallel to each phase of development. development. The V-model is an extension of the waterfall model ( Waterfall
), in which testing is performed in each phase in parallel with sequential development. It is also known as Validation Model or Verification Model.
Some terms used in the article:
SDLC (Software Development Life Cycle): also known as software development life cycle. It is a series of activities performed by developers Developers
to design and develop high quality software.
STLC (Software Testing Life Cycle): also known as software testing life cycle. It includes a series of activities Testers
performed according to available methods to test whether the software product meets the requirements or not.
Waterfall Model : also known as waterfall model. It is a sequential model divided into different phases of software development activities. Each phase is designed to perform a specific activity. The testing phase in the waterfall model begins only after the software development has been completed.
Suppose, you are assigned a task to develop a customized software for a customer. Without worrying too much about the technical platforms or technologies that will be applied, try to make a systematic prediction about the sequence of steps you will follow to complete this task.
The steps you come up with will typically include the following:
Decide on the platform to use, be it Java
, PHP
or .NET
, with a database management system Oracle
, MySQL
... Anything, as long as it is suitable for the project.
Test the software to verify that it has been built based on the spec provided by the customer
Write source code for software
Find all possible information about the design details and technical specifications for the software from the customer.
We probably need to reorganize a bit, for example you need to find information first, then plan what technology you will work with, then write code for it, and finally check to see if the software works. Does it meet all the requirements?
And actually we will need more steps than this, the table below describes the steps required for the development phase in the waterfall model ( Waterfall
)
As you can see, testing in this model only begins after the code is deployed.
If you're working on a large project where there are complex systems, it's easy to miss key details during the requirements phase. In such cases, a completely wrong product will be delivered to the customer and you may have to start the project again OR if you manage to note down the requirements correctly but make serious errors in design and architecture of your software, you will have to completely redesign the software to fix bugs.
According to the evaluation of thousands of projects applying the waterfall model, it has been shown that defects introduced during the requirements & design process account for nearly half. And since this is a very early stage of the whole process, the worst consequence is that we need to redo all the steps from the beginning if we don't detect the problem early
The cost to correct a defect will increase throughout the development life cycle. And our bad luck is that it will increase exponentially. The earlier in the lifecycle a bug is discovered, the easier it is to fix.
The V-model was created as a solution to the problem of the waterfall model. Instead of testing only when the source code development process ends as in the waterfall model, the V-model provides a testing process that runs in parallel for each step of the development process.
The V-shaped model is essentially a combination of the SDLC software development life cycle on the left and the STLC software testing life cycle on the right.
Requirement Analysis will have a corresponding process called System Testing : In this step we will check the overall system.
High Level Design will have a corresponding process called Integration Testing : In this step we will check the connection and compatibility between software components.
Low Level Design will have a corresponding process called Unit Testing : In this step we will test at the function
(feature) level of the software.
Coding does not need a corresponding testing process, in fact it is not necessary because at this step most of the technologies and technical platforms have been completely tested by the manufacturer of each company before being used. official use. So we don't have to recheck at this step, it will usually be guaranteed by Dev.
In addition to the V-model, there are now also iterative development models, in which development is carried out in phases, with each phase adding a function to the software. Each phase consists of a set of independent development and testing activities and is repeated in the next development phase when the current phase ends. Good examples of Iterative Development life cycles.
Currently, in my opinion, there are many development life cycle models. The development model chosen for a project depends on the goals and destinations of that project. We need to pay attention to the following:
Testing is not a stand-alone activity and it must adapt to the development model chosen for the project.
In any model, testing must be performed at all levels, i.e. right from request to maintenance to ensure the development process can fix maximum problems encountered. Right.
Stage
Work
Collect requirements
Collect as much information as possible about the design details and specifications of the software from the customer's wishes. This phase is simply about gathering requirements, nothing else is needed.
Design
Plan the programming language used such as Java, PHP, .net; databases like Oracle, MySQL, etc. Decide which one will be suitable for the project, as well as some high-level functionality and architecture.
Build
Write source code for software
Test
Test the software to verify that it is built according to the specifications provided by the customer.
Deployment
Deploy software in real environments
Maintenance
This is the state when the software is ready for use. You may be asked by the customer to make changes (if any).