Testing, testing, testing... it seems we can’t get enough of testing in these pandemic times.
Testing has, in fact, long been an essential part of every software project, because as everyone in the IT industry knows, even the best written code has bugs.
This is the reason that, before going live, any application, website or functionality worth its salt has to undergo a rigorous QA testing process.
QA (short for “Quality Assurance”) is easily one of the most underrated aspects of software development, and, yet it is essential to any smooth, successful software rollout.
QA, QC and testing.
There are multiple ways one can look at QA: what is being tested? At what stage of the project? Who commissioned the testing? How comprehensive does it need to be? And, of course, which industry is concerned?
In fact, we can think of QA as an umbrella term for an entire system of processes and protocols, including quality control and several different types of testing, that guarantee the high quality of the end product in any software development process.
A first major divide would be between manual and automation QA.
Some types of tests can only (or mostly) be performed by machines, for example, in performance testing, tests measure several technical variables like speed, stability or reliability, with a precision that would be impossible to achieve by a human.
To perform automation testing you need to be able to write scripts that simulate a certain set of conditions that systems may face in real life.
Take Performance Testing, for example. You may want to check how well a particular application or software works under stress. For example, how many simultaneous users an app can handle simultaneously or how many milliseconds does a page take to load. This is a clear case in which machines come in handy.
Or Penetration Testing, when testers put on the “ethical hacker” hat and aim to test system vulnerabilities.
Automation and manual testing are, in fact, not exclusive, they can complement each other and, together, catch a much higher percentage of bugs, the metric that ultimately matters in QA.
Graphic User Interfaces (GUI) can be tested by machines, particularly to check that each element in the interface, fonts, buttons, and other visuals, are in the right place...and yet, this is an area where automated testing does only part of the job. UX/UI testing would complement it. This is one of those tasks where good old manual testing has an edge, because it comes down to having a real human in the place of an hypothetical user, assessing those qualitative aspects that only a human operator can rate adequately.
Integration testing can be performed either by machines or, very commonly, by humans. It assesses whether several functions or components of a system, or multiple systems for that matter, work well when brought together.
Another big categorization divide is between Functional and Non-Functional testing.
Functional testing is when you check that all functions in the system are working. It is more of a binary scenario: whether something works, or it does not.
Non-functional testing, instead, introduces a more nuanced assessment. Maybe the system “works”, but does it meet the performance requirements? Does it work at the right speed? Is the install process as smooth as it should be?
Non-functional testing qualifies the results of development work, tells you whether it is working in the best possible way.
The aforementioned Performance and UI/UX testing would be examples of non-functional testing. But there are some other types of Non-Functional testing that are common in QA:
- Compatibility testing, when you check that your software works correctly on all different platforms, gadgets, operating systems and the like. If we are talking about websites or other connected systems, you may check it on different browsers too.
- Localization testing, you test several features associated with a specific location, such as different language settings or geographic specific features.
- Installation testing, when you test how well a piece of software or an app is downloaded under a whole range of conditions. This is normally a manual test.
Penetration or security testing can be classified either as functional or non-functional testing depending on what and how you are testing.
The “levels” of Testing.
We could do another categorization by looking at the “levels” of testing, that is depending on the stage or level of complexity of the project that is being reviewed.
The testing can happen at unit level, that is when you test one component of the system in isolation (the so called “Unit Testing”), followed by Integration Testing, mentioned earlier, to test how the different components fit together. Assuming the first two went smoothly, System Testing would make sure the system runs correctly as a whole and, before it is ready for release, Acceptance Testing (which may include, in turn, several different levels of user acceptance) is also performed.
What happens when a bug is fixed at some point during the QA process and the developers introduce new code? Well, then Regression Testing comes into play. Since every new change being introduced has the potential to alter the rest of the system, you may want to check it all anew to make sure everything is working as intended. It is called “Regression Testing” because you go back on your tracks to re-test the system.
You can also look at QA is through the lens of the role the different parties involved in a software project.
A company developing software may recur to Independent Testing, performed by an external party, in order to validate its quality and set extra fresh pairs of eyes on the application that is under development in order to detect any possible issues free from the biases that may have developed in-house that may have prevented the detection of bugs.
On other occasions it is the company that is acquiring or implementing software that will request User Acceptance Testing (UAT), to make sure everything works perfectly before formally taking delivery. In such cases it is also important to have an external, unbiased team able to test and assess independently.
It is also possible to classify QA based on the type of system or application you are testing. To illustrate this point, here’s a list of different types of solution-based Testing we perform at 1PT, reflecting the different ways our customers interact with their users:
- Web application testing
- Mobile application testing
- Games testing
- Cloud solutions testing
- Desktop applications testing
There is also an industry angle to QA. With every single industry going digital and, what’s more, an increasing number of transactions and customer interactions happening online, there’s hardly any industry untouched.
Here’s a list of sectors we have been working with at 1PT:
As you can see, it is quite an eclectic mix and, while many processes and principles are general, industry expertise is of great help in delivering top quality QA, particularly when you take into account that manual QA is the default option in those cases, as we have seen in the previous points, in which automation testing is not practical or technically feasible.
Some degree of technical expertise and coding knowledge is also beneficial in those instances in which the so-called White Box Testing is performed.
White Box testing is when the tester has access to the code. If the person testing has coding knowledge, if is able to understand the code, it can then check the code at source (even without needing a user interface).
Black Box Testing, instead, is when the tester doesn’t have access to the code, it just tests as a user through a user interface.
For this reason, QA is as much about technical expertise as it is about human resources management and having the right skills onboard.
QA in our Team.
In this regard, it is fundamental to give QA the attention and recognition it deserves as an essential part of any software roll out process. It can’t be just an afterthought; it needs to be a respected career path.
This is why, from simpler manual testing to more complex operations, including the design and programming of automation testing methods a career, at 1PT QA is an avenue for professional growth, which is backed by a system of international certifications for those that wish to deepen their knowledge of QA methodologies and practices.
We also actively encourage the professional growth of our QA engineers and are happy to report that they have risen to the challenge, as reflected by the low rotation among our QA Testing team.
In fact, the proven expertise and dedication of our QA team is a major differential element of our QA offering, and one that enables us to offer highly professional, top quality service in this area. Add to these other advantages such as a time zone close to that of our main customers, fluency in English and specific industry expertise (with most of our team having direct experience of at least some of the key industries we work with) and you have a winning combination that is extremely difficult to replicate.