No one should be persuaded that putting as much emphasis as possible on the quality of developed software is important, although not everyone is aware that this aspect will become more and more significant.
The industry is at an unusual moment, where transferring the weight resulting from quality shortcomings to the increasing performance of hardware will become more and more difficult.
The growing importance of quality assurance
Linus Torvalds is considered by many to be the best programmer in history. For 25 years he has been personally responsible for the development of a computer programme that may be considered to be the most important in the world – the Linux system core. One should not forget that he is the creator of Git, the version control system, without which many would not even imagine software development.
Just for this fact, his insights regarding processes and trends that appear in the industry should be taken seriously.
Torvalds shared a particularly interesting opinion during the 2019 Open Source Summit where – rather surprisingly – he stated that software development would become more and more difficult. The reason for it would be the fact of reaching the boundaries of Moore’s Law. The subsequent processor generations, in the x86 architecture, offer a decreasing performance leap and the following vulnerability patches in the prediction mechanism lower their performance even more.
For this reason, among others, attention should be turned to quality assurance processes. Torvalds notices the necessity to re-optimise the already existing projects so that their asset hunger would not increase or increase proportionally to the hardware capabilities of workstations. According to the creator of Linux, such work conditions may prove a shock to some development teams – until now, they did not have to worry too much about the performance, as its shortcomings were compensated by the linear increase of PC performance.
Why is quality assurance important?
There are even more obvious reasons, for which quality assurance is much more independent from current industry reality, our production capabilities and the range of microprocessors. Primarily, quality assurance allows to save money – the detection of errors in the early stage of production reduces the necessity of introducing profound changes in the architecture of the programme in the later stages, i.e. writing entire components from scratch. Evading such issues is difficult to overestimate in terms of project budget savings.
However, the above will have an additional, positive result – apart from time-saving, the elimination of errors and shortcomings at the early stages of the project, allows shortening its realisation time. This aspect is affected by the parallel nature of developer and quality assurance works – developed software may be verified on a continued basis, regarding quality, and there are no situations, where one team is waiting idly for a particular work phase to be finished by the second team, which directly results in meeting schedule requirements.
All the above results in the increased satisfaction of the customer and the end-users, the increase in reputation and the morale of the entire team. However, one cannot omit the issue, which gains particular significance at the turn of another decade of the 21st century – software security. A quality assurance pentest engineer team may eliminate vulnerability at the early stages of the project.
What is quality assurance?
These are of course just some reasons, for which quality assurance will play an increasingly significant role in the software development process. However, in order to better understand the issue, one should properly place it within the timeline of the entire process. Quality assurance is a concept that is at times used interchangeably with software testing, which, unfortunately, is incorrect. Quality assurance is an assortment of practices and activities that are much more profound, despite the fact, that its part is actually the conduction of software tests.
However, in quality assurance, much more emphasis is placed on the far-fetched automation of tests and their large scale. The quality assurance engineer is, to a much higher degree, required to display knowledge of various technical aspects of software development, primarily, the knowledge of many programming languages. Therefore, within the process of quality assurance, it is necessary to prepare automated tests, so that they are able to detect errors and shortcomings, that were not detected both by the developer and the manual tester.
Automation in the process is not limited to testing, but to generating test results, which increases the efficiency of the process of elevating software quality. In result, it is difficult to overestimate the implementation of small preventive practices, contrary to manual tests performed on a, at least partially, finished project. For example, one could mention the test pyramid – a premise, according to which, the most intensive tests should be performed on low-level code.
When to start quality assurance in a project?
Therefore, if generally, in every aspect and in every phase of production, quality assurance provides added value, a natural question appears – when should one implement it? Particularly, we should note, that quality assurance is primarily based on the prevention of developing low-quality software, rather than on the elimination of already created errors. It is preventive and it is not limited solely to automated tests.
Additionally, the quality assurance engineer should have a significant influence on the production processes and mechanisms of software development. His responsibilities should include the careful examination of the cooperation between all team members and the ability to detect these work aspects, that could later result in quality shortage. The above example shows, how broader quality assurance is in comparison to software testing – here, we are dealing with a continual, enhancing process, during which conclusions that are drawn once, may be successfully transferred to other projects and adapted in various scenarios.
The assortment of quality assurance practices is better to be perceived in broad terms. While one may have an impression that the code quality is a result of the number of programming mistakes that one may detect in manual tests post-factum, it turns out that the range of quality assurance mechanisms must be broader. Here, one should enumerate not only the highly automated large-scale tests in each phase of the production process, with particular emphasis on initial phases (test pyramid).
Organisation innovations regarding teamwork is also important, as they indirectly, by means of increasing quality, will yield savings in time, money, increase the satisfaction of the end-user, and will have a positive influence on the opinion regarding the work of the team, the quality of results and timeliness, that is difficult to overestimate, and in result, will result in their market position.