7 actions to implement an effective software testing process

When it comes to implementing testing processes to ensure software quality there is no fixed model we can apply regardless of the project. The testing approach that we choose as QA engineers can be influenced by many factors such as the chosen software development model, methodologies used to produce it, the risks associated with product etc.

Due to this, we can find genuinely unique testing  processes depending on the organization that implements them. And there is nothing inherently wrong with this, since Quality Assurance must respond to specific needs of each product.

However, no matter how much we adapt the testing approach, there are testing activities common to all projects without which the benefits of Quality Assurance tend to be lower. Let’s see some of these testing activities that are, to some degree, always present in every software testing process.

Testing plan

Planning aims at defining the objectives of testing and the approach that we will choose to fulfill them. This is achieved by choosing the most appropriate testing techniques, setting up deadlines and calendars for tests execution.

Planning activities involve actions such as determining the scope, objectives, and risks of testing. This will influence the testing budget as well as the metrics chosen to monitor and control the testing process within our organisation.

Although testing plan will lay out the very basis of your testing processes, it can (and should) be revised and changed, if applicable, according to the conclusions derived from the control and monitoring phase of the testing process.  It is pretty usual to have your testing plan progressively modified. As a QA engineer you will gain more information and will reach a deeper level of detail as the testing actions are undertaken. And, most likely it will be desirable to implement this new input in your testing plan.

The plan can be documented in what is referred to as master test plan, and plans focused on each testing level like component testing, systems testing, integration testing, etc. 

Tests control and monitoring

Control and monitoring consists on tasks which common objective is to compare the results of the current testing activities against the standards specified in the testing plan.

Control and monitoring is focused on correcting the test plan as a consequence of metrics obtained through tests execution. The common purpose of metrics used by QA engineers is generally threefold: to assess the software status in terms of quality, to check if the chosen testing approach is still suitable, and to evaluate the effectiveness of testing activities, this is, to determine if these meet the objectives agreed in the planning phase.

Types of metrics used

Without going too deep into details, here there are some pretty useful metrics that are frequently used for monitoring and control:

  • The percentage of actually implemented test cases out of the the total number of planned test cases
  • Test execution ratios: for example, the percentage of tests executed out the total number of tests written, or the percentage of tests with a “passed” result.
  • Test coverage
  • Costs of testing compared to the benefit of finding flaws in the software
  • Costs of testing regarding the benefit of executing the next test.

Testing analysis

In simple terms, the analysis of the software testing determines what will be tested. During the analysis phase, QA engineers can review the requirements, user stories, epics and similar items indicating functional and non-functional behaviors that are desired for the product.

Also, during this phase, you can carry out design analysis. This helps us understand the desired behavior of the system to determine the objects to be tested. The results of these analyses are usually diagrams, call flows, schematic architectural representations such as relationships between entities. 

The use of black-box, white-box or experience-based testing techniques can be useful in the analysis phase to discover more test conditions that otherwise we might be overlooking.

Test design

In the design phase of the testing, the testing conditions are prepared in the form of high-level test cases. Therefore, with test design, we are deciding on how to test. What does a QA engineer do when it comes to test design? Generally, those in charge of design will spend quite a bit of their time creating test cases and prioritizing them, as well as identifying the data necessary to run those test cases. On the other hand, you also need to design the test environment and identify any tools or infrastructure that may require. 

Tests implementation

Test implementation is a set of actions with which QA engineers try to determine whether we have everything that is needed for tests execution. Test design and test implementation are frequently carried out simultaneously because in test implementation we have to put into practice what was agreed in the design phase. 

It is at the implementation stage when testing  scripts can be created to automate test execution and execution calendars can be arranged to run tests efficiently. Also, in this phase QA specialists will build or configure the required test environment according to what is specified in the design phase and will populate it with the necessary test data.

Test execution

In test execution, written tests are carried out by QA engineers according to the test schedule specified. The tests can be run manually or automatically and the same goes for checking tests results against expected results. Whichever anomaly we may find should be first investigated or troubleshooted before reporting it. The reason for this is that bugs detected by testing  may have been generated as a result of the very test (false positives). 

Once we conclude that the observed failures can be traced back to the software put to test, we can record the results of all tests, usually as “approved», «rejected» or “flagged». 

Test completion

Tests completion is the closing phase in the software testing process. This phase usually takes place at a milestone in the software life cycle, such as a version closure or the end of a sprint in the case of Agile projects. In this phase of the process, QA engineers collect data about the testing actions carried out previously.

Also, it is quite useful at this point to make reports summarizing the test results to be communicated to stakeholders. On the other hand, at this point, QA engineers should make sure that all bug reports have been properly closed in order to keep the project clean of unresolved issues. This final check will also ensure bug fix tasks  are assigned to whom it may concern at the end of the testing process in case those have not been solved. Finally, if necessary, the previously configured testing environments are archived along with any other testing infrastructure. 

Conclusion

Establishing a testing process at the start of a software project  is not a simple task. Many factors influence the design of testing processes and these end up being so different from each other according to the project, that there is no one-size-fits-all solution.  However, in this article, we have seen some activities that according experts can be applied in a very wide range of projects. In a nutshell when you starting to build a testing framework and implementing processes to make it effective, think of these seven groups of actions that will probably build the basis of your testing project.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.