What is QA?

Software needs to satisfy a certain level of quality before it is released. Assuring quality involves running a variety of test cases that emulate a broad set of usage scenarios, load factors, environmental combinations, edge cases, and more influencing variables.

Quality assurance (QA) supports projects by adding value to every set of circumstances. Even the best developers in the world make mistakes because they are human, making QA testing the fail-safe to catch any errors. Each software failure costs money in the time spent fixing it, in halting production, in lost revenue, or in another way. The faster bugs are found, the quicker and cheaper it is to fix them. Saving money is always a good thing and QA engineers work to save your future self-money. Nowadays a QA engineer is an integral part of every development team.

At SteelKiwi, we develop your software using Agile methodology. QA is an important part of, and should be involved in, every iteration of the development life cycle. The cost of finding and fixing defects rises considerably across the lifespan of a project. This is because the requirements and design specifications need to be taken into account before changes can be made to the code, ensuring that those changes will be compatible with the project’s goals. Also, a single defect in the requirements could easily have ripple effects into other areas of design and code, making it critical to find issues as soon as possible. Working with our QA experts at this stage of planning will help us avoid misunderstandings, an awkward project design, or incompatibility of project requirements.

In the figure below you can see the relative costs of fixing software defects (Source: IBM Systems Sciences Institute)

Advantages of Early Defects Detection

Advantage of Early Defect Detection

Aren’t developers QA experts?

While a developer may objectively know what to look for in testing, it’s difficult for them to remain objective when it comes to their own projects. Every developer goes into testing their own software with bias. The developer knows what has been developed and how it should work and ends up focusing on testing their own functionality instead of testing the product. This limits the testing and can produce incomplete results. A development team should avoid testing its own program (unit testing is a responsibility) and, instead, rely on QA teams to provide objective testing results.

Critical problems with having developers perform QA testing include:

  • unconscious developer bias towards the quality of their own work, meaning that developers may not rigorously test all aspects of the project because they are confident that they’ve produced a bug-free code.
  • defending mistakes that have occurred instead of focusing on resolving them.
  • being too close to the project and not thinking outside of the box, resulting in some scenarios or edge cases being overlooked.

Software should be tested in a neutral way to have unbiased testing results, which can only be done by an external party and not the developer(s) themselves. Because developers often work under high pressure and tight deadlines to implement requirements and features as quickly as possible, the quality of work may be compromised. The only way to have accurate QA testing results is to have a separate, objective third party perform the QA testing.

Remember, the earlier on that a defect is found, the less costly it is to fix.

Pareto Diagram

Pareto Diagram

Why QA should be done by QA experts

Testing is not about just validating that the system is performing how it should be. It is also about assuring that the system isn’t performing in ways it shouldn’t be. An expert QA tester is able to delicately go about pushing a system to (and beyond) its limits to ensure quality and appropriate functionality.

Quality assurance testing includes:

  • a critical approach to the project, often missing in the developer’s tests. Testing is a creative, destructive process in which every aspect of a project is carefully looked at and picked apart to ensure it works how it’s expected and supposed to.
  • more than just a post-programming evaluation. QA should be an integral part of each phase of the systems development life cycle (SDLC).
  • searching for the flaws in the project. This requires a neutral and objective set of eyes and critical analysis to find anything that might go wrong.
  • providing truthful feedback to the customer while demoing presentations which helps to stay on the same page during SDLC.

A dedicated QA engineer brings a fresh perspective and interacts with the product features the way a new user would. A person with experience in QA will try to break the application, finding the faults in the system long before any user is exposed to them, which is exactly what you want to happen during the testing of your product.

SteelKiwi also has a number of QA engineers available to work together with the development team by providing user acceptance testing (UAT). We only work with QA engineers that have successfully passed International Software Testing Qualifications Board (ISTQB) exams, ensuring that our QA team is knowledgeable and familiar with rigorous testing methodologies when performing the testing process.

We are able to provide UAT because we have independent QA engineers located in separate offices, objectively testing the usability of your application.

In terms of SteelKiwi’s support policy, our QA team will investigate any issue that arises during production to help the developers fix it quickly.

Testing activities provided by SteelKiwi’s QA Department

The SteelKiwi team provides clients with testing activities at the early stages of the development process, decreasing the cost of fixing flaws and increasing the overall quality of the product. Bugs are always easier (and cheaper) to fix if they are found early on in the development cycle. A bug at the design stage is 10 times easier to fix than a bug at the coding stage, which is much easier to solve than a bug in the production code. That’s why it’s important to test every product thoroughly.

We provide the following testing activities to our clients in the scope of the web applications quality assurance process:

1. Requirements and design analysis;

2. Functional testing;

3. Commonly used End-to-End scenarios;

4. Dedicated testing of features of your site;

5. Cross-browser and cross-platform testing:

  • IE (different versions), Chrome, Firefox, Opera, Safari;

  • Windows, Linux, iOS;

6. Testing application on mobile devices and various screen sizes;

7. Preparing test data for a comfortable overview of the developed parts of the functionality;

8. Demo scenarios preparation and demo presentation leading;

9. Loading testing;

10. Security scanning;

11. User acceptance testing;

12. W3org validation;

13. Detailed report of completed QA efforts, complete with test coverage matrix and test case run statistics.

To ensure the quality of developed mobile applications our QA team will perform:

1. Requirements and design analysis;

2. Full testing of application functionality;

3. Testing of UI appropriate for the form factor (phone versus tablet, screen size, resolution, and existence of hardware buttons or keyboard);

4. Installation/re-installation testing;

5. Testing of a number of commonly used End-to-End scenarios;

6. Testing all of the touch device options;

7. Preparing test data for a comfortable overview of the developed parts of the functionality;

8. Demo scenarios preparation and demo presentation leading;

9. Testing on different iOS and Android devices;

10. Testing of handling on different interrupt conditions;

11. Testing functionality of an application on different Internet connections:

  • Wi-Fi

  • 3G

  • testing under low, and partial connectivity

  • offline mode

12. User acceptance testing;

13. Localization testing.

Detailed report of completed QA efforts, complete with test coverage matrix and test case run statistic.

One of the most important points in the testing of modern applications is API testing. Detailed verification of the developed APIs helps rapidly locate defects. Such type of testing gives confidence that the developed app is perfect not only from the UI part but at the backend as well. Also, keep in mind that you definitely need API testing on staging and prod environments if your future application will use third-party API.

QA is invaluable

The importance of quality assurance may not be evident, but it is invaluable. Think of QA as a water filter, finding and fixing the impurities in your tap water. Even though you might not easily be able to see these impurities, they are there and they can make you sick. This is what QA does for software development. Even if the flaws are not evident, it is important to test for, find, and fix them before they make the software sick or broken.

A product that hasn’t been tested may look okay at first glance, but once you start to scrutinize it, you find the issues that should have been filtered out. This is the value that QA provides and this is why it is such a critical and highly recommended part of software development.

Are you looking to hire QA managers for your development team? Read our staff augmentation offer

If you would like to find out more about starting a project with us, please don’t hesitate to get in touch.