What is wrong with the V-Model In testing
Updated: Jun 4
We can start our V-Model from our Waterfall method of development. The idea of the V-Model is at development there is different levels of testing going back up the other side V.
So we drop QA from the waterfall, as QA will be there on every step in the way back
We introduce Unit Tests, these are parts of the code base that are run to do nothing more than check the code base. If you have a method that adds two numbers together you program another method to pass 2 numbers to the "addition" method and check you get the results back.
This has changed programming\development massively. Details about methods, its parameters, its expected outputs are now part of every developers mindset. As OOD became the standard, it became clear that unit tests are, at a minimum, a requirement.
Normally a developer would write a until test and confirm its results. If a developer later changes the method, and breaks the unit test, then it would be their responsibility to fix either what they have broken in the method or change the unit test.
The next test is Component Testing, really this is, again, just a rather more expanded Unit Test. Where you now test multiple methods, going through a specific component, or portion, of the application.
Again this is done at the developers level, as they are the only people who know what methods are used within a component/part of the application.
Component Testing is rare, I've never seen it used, although I have seen MANY unit tests which test the whole application, which means they are really big Components being tested.
The next step on the way up is System Integration Testing. Now some people included hardware as part of a System Integration, and in all honesty, System does sound like hardware. However this is the first test of the application complete. Before testing if it will run on a ZX Spectrum, is it not better to know the application feature actually does what it says, and doesn't break anything, then we can try it out on different specification of hardware?
So I drop the System and just call it Integration. Does this new feature break anything else?
Sounds simple, doesn't it? I have an application, I'm adding a new feature, it has some buttons, it shouldn't affect anything else.
Perfect, but this is where I find most issues. Regression bugs! If I had a penny for every time a developer has looked at a rejection ticket from myself, on a feature, turned to me and say "I never touched that", I would be a very rich man! I know you never touched it, but its broken now!
But to do this manually, is a FULL regression test after development of each feature. That is just not possible (if done manually). So you end up with the even more popular, "I never touched that, and I have to muddle through code to find where it is broken!"
So the time taken to find the issue and then fix it, is increased even more as the developer is looking at something broken, and have to figure out the issue. Where if caught in their own branch, they have a much better chance of knowing what they changed, to cause the issue (even though they never touched it)!
It is also at this point that QA check the feature, working off the wonderful test notes put together by the developers, who have spoken to the product owner, who spoke to the customer. And we have Chinness whispers, again.
It passes Acceptance Criteria, its ready for the final step in the V-Model
The final step is Acceptance Testing, sometimes called UAT (User Acceptance Testing). I drop the U for User, cause PLEASE do not get a user in to accept something without it being tested. In all the V-Model examples I have ever seen, in training, in books and, just now, looking at google. There is always just 4 steps back up, Unit, Component, both of which are internal, Integration, does it break something? Then finally Acceptance. Make sure this is QA Acceptance! I included QA Acceptance as per test notes above.
Add another step in for UAT if you wish but watch out for:-
Oh... I can't even hide where I got the image from! Please do not do system testing then give it to a user.. PLEASE!