For the good organization of software testing process, quality assurance activities should be managed by specialists with perfect comprehension and knowledge of testing techniques.
It is necessary to use the response from analyses of dimension information to make different management decisions and to improve the quality.
Such model is used in rather big companies. In this case a testing group just conducts one type of software testing for a lot of various software products. For instance, various products can have the equal system testing team.
It would organize around a software product, where dedicated software testers conduct several testing assignments. For instance, one or more testing teams may conduct all the various kinds of software product testing, beginning from unit testing and ending with acceptance testing.
Staffing level may vary over time. It depends on the requirement for software testers by various projects. Thus, in the vertical model project specialists could be re-assigned to conduct various missions.
One generally accepted practice is to use developers to conduct different software testing assignments when testing stage peaks. Unfortunately, such practice may be the reason of a lot of different troubles related to cadres’ management. Carelessness in this point may lead to project delays as well. The inconsistency between people’s skills and their assignments may also cause much more software bugs passing through the testing stage to cause supplementary in-field defects.
This fact is one of the causes for people to accept the horizontal model where staffing level variations may commonly be better managed due to the various plans and requirements by various projects.
In practical situations, a combination of both models is usually used in big software companies, with low-level software testing conducted by dedicated testers, system testing shared across similar products, and common project support performed by a centralized support unit for the total company.
The common project support comprises process, technology and tool support necessary for formal development and software testing. This centralized support unit is similar to the so-called experience factory that also gathers skills, knowledge and lessons learned from development for more efficient use in future.