Azahara Camacho, Author at WATA Factory https://wata.es/author/acamacho/ IT Consulting & Outsourcing for your company Mon, 14 Apr 2025 14:53:27 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 https://wata.es/wp-content/uploads/2020/09/cropped-favicon_08-2020-32x32.png Azahara Camacho, Author at WATA Factory https://wata.es/author/acamacho/ 32 32 SonarQube: How to maintain the quality of your code during a CI/CD process https://wata.es/sonarqube-how-to-maintain-the-quality-of-your-code-during-a-ci-cd-process/ Sat, 03 Jul 2021 07:00:00 +0000 https://wata.es/?p=4925 In previous articles we have seen different testing procedures that we can use to ensure the quality and correctness of the final product to be delivered. In this article we will talk about SonarQube, a tool that we can also use to ensure our internal quality. So we can check whether the development process, the […]

The post SonarQube: How to maintain the quality of your code during a CI/CD process appeared first on WATA Factory.

]]>
In previous articles we have seen different testing procedures that we can use to ensure the quality and correctness of the final product to be delivered. In this article we will talk about SonarQube, a tool that we can also use to ensure our internal quality.

So we can check whether the development process, the architecture used or the algorithms employed follow a suitable structure, a pattern that allows us to maintain the product easily.

What is SonarQube?

SonarQube is one of the most used tools to check codes, detect bugs, vulnerabilities and other problems in our project. It allows the analysis of a code written in the most common programming languages (Java, PHP, JavaScript, C#, HTML, etc.).

SonarQube is integrated as another file in the project to be analysed, and if the pipeline in which the tasks are started is configured correctly, the code inspection is performed automaticallyevery time we make a change in any part of the project.

The image is from the official documentation of SonarQube

As you can see in the image, the typical scenario in which utility can best be understood is one with three clear phases:

  • Development – The code is updated by the developers in the repository. Before they ask the SonarQube service to analyse the changes, they can get immediate feedback thanks to the SonarLint tool, which can be integrated into the IDEs.
  • CI/CD – When the new changes are added to the repository, the Continuous Integration tools check and build the code and run the tests. Then the SonarQube scanner is launched to analyse the results of some of these tests and the code as such.
  • SonarQube platform – Once the analysis of the project is completed, the results are stored in the platform and depending on the configured quality conditions, team members can be informed if they need to fix a defect.

For the various projects carried out at WATA Factory, we have opted for the Community-Edition, which is free and open source. However, there are also paid alternatives that facilitate the installation and maintenance of the SonarQube service by the same company. The community version can be installed in two ways:

  • Local – The developer can set up the SonarQube service on their localhost to be able to analyse their code without having to host it on an external or remote server.
  • Remote – The SonarQube service is hosted on a remote server that can be accessed using credentials generated by the service administrator.

Depending on the needs and size of the project (members, resources or services to be used), one can choose the most appropriate option.

General concepts

To understand a little more about the relevance of using this tool, we will detail the general concepts that appear on the platform:

  1. Users and groups: As in any environment, we can define users that are managed in groups. Each of these users has a set of permissions that allow them to request the analysis of a project, validate false positives of the analysis performed or even cancel it.
  2. Projects: To carry out the analysis of our code, we need to create a project on the platform with the necessary parameters that identify our software project. hese parameters should be specified in one way or another, depending on the language we use in our project. Within these projects we find the analysis of each project, which contains the following data:
  3. Bugs: errors in the code that need to be fixed ASAP.
  4. Vulnerabilities: Places in the code that are open to external attack and can threaten the integrity and security of the project.
  5. Hotspots: Parts of the code that should be checked to avoid major problems, they do not necessarily compromise the security of the project.
  6. Code smells: elements that make the code poorly readabla or difficult to maintain.
  7. Coverage: From the reports of the executed unit tests, SonarQube imports the results and displays the coverage.
  8. Duplicates: number of detected duplicated blocks, files and rows.
  9. Total lines: Total number of lines of code in the project.
  10. Languages: programming languages used in the project.
  11. Current status: Failed/Passed, depending on the values set in the associated quality profile.
  12. Tags: tags that have been assigned to the project.
  13. Time of last analysis: record of each analysis performed.
  14. Quality profiles: They depend directly on the conditions defined in the Quality Gates, which indicate the rules to be followed in each of the languages available in SonarQube. The conditions of the quality profiles reflect the limits of the minimum coverage, duplicated lines, safety index or maintainability index.

As we can see, the report and the information generated are very comprehensive, giving us a very accurate overview of the status of our project.

At WATA Factory, we have established SonarQube, another tool that enables code quality improvement and also indirect learning among developers. Because with each of the reports, one learns which bad practices to avoid and how to solve themwith the suggestions offered by the same tool, thanks to the rules defined in the Quality Gates. In future articles we will see how we configure our project to be able to analyse it automatically from a pipeline with SonarQube.

The post SonarQube: How to maintain the quality of your code during a CI/CD process appeared first on WATA Factory.

]]>
Automated Testing: Features, advantages and disadvantages https://wata.es/automated-testing-features-advantages-and-disadvantages/ Mon, 21 Dec 2020 08:00:07 +0000 https://wata.es/?p=4690 A software project includes several phases that enable us to ensure its correct execution. To guarantee the quality and correction of the final product, we need to apply software testing. As we have already seen in a previous article, there are two different types within software testing: manual testing and automated testing. In this article […]

The post Automated Testing: Features, advantages and disadvantages appeared first on WATA Factory.

]]>
A software project includes several phases that enable us to ensure its correct execution. To guarantee the quality and correction of the final product, we need to apply software testing.

As we have already seen in a previous article, there are two different types within software testing: manual testing and automated testing.

In this article we explain the features and the advantages as well as disadvantages of automated testing in a software project. To develop the content of this article, I have extended my personal experiences with those of various colleagues in our team at WATA Factory.

We will show the most important aspects that one should definitely consider in order to make the path to success as easy and fast as possible.

Features of automatic testing

Automatic testing is the approach based on the processes developed by test automation tools. One of its main objectives is to improve the testing process of a software projectas a complement to the improvement of manual testing.

With the current state, automated testing can never replace 100% of the benefits that manual testing brings us. Automation only improves the testing process by providing benefits such as parallel testing, automated reporting, elimination of repetitive tasks for manual testers or reuse of test scenarios. But currently, the software testing of a project cannot be fully covered by automated testing alone.

In this type of testing, the responsibility of the process lies entirely with the selected tool and the scripts that the tester has designed for the Application Under Test(AUT). Unlike manual tests, automatic tests cannot be applied in every area. Above all, automatic application still leaves a lot to be desired, especially in visual and UI tests. There are projects in which better tools based on AI are developed every day, but which still do not manage to achieve all the desired goals.

With this data, we can identify the main advantages and disadvantages of automatic testing:

Advantages

In contrast to manual testing, automated testing allows us to parallelise many workflows. The planning of these workflows offers a multitude of possibilities to improve the quality of the product. With a higher level of detail, we could say that automated testing offers us the following:

  • Speed: The execution time is shorter.
  • Reliability: more permutations and paths can be covered in the AUT.
  • Efficiency: more tests are performed in less time and AUT coverage is improved.
  • The tests are automatically executed from the scripts.
  • The tests can be reused in different scenarios.

Disadvantages

On the other hand, the use of this testing technique brings with it a number of implications. Among these, the most prominent is the need to have a more technically trained testing team to design the scripts. And as we have already mentioned, the limitations we have to consider in different areas, such as user testing. If we analyse these disadvantages, we can get the following list:

  • The testers must have technical knowledgeto be able to implement the test scripts.
  • Cannot be applied to all possible types of testing. For example, the visual test.
  • If the scripts are not designed correctly, false negatives can be produced that reduce the reliability of the reports.
  • We cannot automate aspects such as the degree of usability or how intuitive the AUT is. For that we need the manual test.
  • Recommended for consistent and long-term projects, due to the technical investment to be made.

The use of automated testing is becoming more and more common in the various areas of software, due to the many advantages it offers. Because despite the possible disadvantages we face, the result of a good application is always positive.

However, based on all these details we have analysed, it is necessary that two very important aspects are considered by the automated tester: the selection of a good test automation tool and the appropriate design of the test scripts. In future posts we will discuss how we can meet these challenges and how we can implement this kind of testing in our projects.

The post Automated Testing: Features, advantages and disadvantages appeared first on WATA Factory.

]]>
Manual Testing: applying manual tests to a software project https://wata.es/manual-testing-applying-manual-tests-to-a-software-project/ Mon, 14 Sep 2020 07:00:52 +0000 https://wata.es/?p=4452 Software testing involves the type of tasks that allow us to obtain information about the quality of the tested product. It represents a complete parallel cycle within software development, and this cycle is called the Software Testing Life Cycle (STLC). Within the STLC we can find two different types of tests: manual tests and automatic […]

The post Manual Testing: applying manual tests to a software project appeared first on WATA Factory.

]]>
Software testing involves the type of tasks that allow us to obtain information about the quality of the tested product.

It represents a complete parallel cycle within software development, and this cycle is called the Software Testing Life Cycle (STLC).

Within the STLC we can find two different types of tests: manual tests and automatic tests. In the case of manual tests, the activity is performed 100% by the tester. And in the case of automatic testing, only a certain proportion of these activities is performed by a tester, while the rest is done by automation tools.

Features of manual testing

Manual testing is the most widespread technique in the history of software development. It is the first to allow the application of tests at different levels: Unit tests, integration tests of components, user interface… But even if any type of test can be applied with manual testing, there are certain disadvantages. Let’s look at the features in detail:

Advantages:

  • Manual testing allows any kind of test. In fact, only this category of tests can control quality at the user interface (or usability) level.
  • It allows the analysis of more complex scenarios thanks to the ingenuity that the tester can develop during his work.
  • The risk of finding a false negative result is very low due to the direct interaction with the system under test.
  • The testers do not need to have any technical knowledge to perform the necessary tests.

Disadvantages:

  • The implementation of the tasks is very slow due to the difficulty of some scenarios.
  • The tester has to be creative, patient and equipped with initiative to find situations that put the product’s properties to the test.
  • Completing tasks takes a lot of time.
  • Very tedious due to the manual execution of all steps involved in each of the tests.
  • It is difficult to quantify the level of test coverage we have with this type of test.

Implementation in practice

At WATA Factory we can look back on a long series of projectswhere we have implemented manual testing techniques to ensure and guarantee the quality level of our products.

Each project has different characteristics and the implementation of this requires an analysis of resources and requirements, that need to be reviewed. Therefore, the following steps are recommended when starting manual testing:

  1. System analysis: definition of the functional and non-functional requirements to be tested.
  2. Analysis of available resources: staff, equipment, time, etc.
  3. Planning of the manual tests to be developed: types and execution times.
  4. Carrying out the tests.
  5. Documentation of the results obtained: Error reports, result reports and analysed requirements.

Many of these steps are common in the STLC process, but in the case of manual tests their application and execution is quite sequential.

This is why we are starting to use automated testing techniques in our projects, which will enable us to reduce the deficits of manual tests and thus increase the quality of our products.

The post Manual Testing: applying manual tests to a software project appeared first on WATA Factory.

]]>