Our Blog

Nuestro equipo de especialistas quiso compartir algunos artículos sobre tecnologías, servicios, tendencias y novedades de nuestra industria en la era de la transformación digital.

Good practices for Automated Testing

Good practices for Automated Testing

Automated testing has gained increasing popularity in software development companies, as well as in the projects in which they are included, regardless of the industry of the company receiving the service or its nature. As we explained in a previous blog post, the rise of Test Automation is based on a large amount of resources saved by the Testing & QA departments, either in the reduction of labor, as well as in the liberation of time and effort of the Testers, who can reduce the operability to devote themselves to tasks of greater added value, such as testing new or uncovered functionalities in automation.

However, like any discipline, the Automation of Tests implies a series of good practices that must be followed closely, thus achieving that the promise of optimization of resources is fulfilled. Among those good practices found:

Correct assignment of automation processes by degrees
The great part of the testing process in any project is based on the unit tests, then there would be the component test, later the integration and ending with API, assigning less effort in the user interface, which would be the most operational part of the management

By automating the most operational sections of the project, we ignore the most qualified and functional aspects of the project, thus providing the highest value to the user.

Mike Cohn’s pyramid explanation:

Unit Tests
They are used to check the correct functioning of a reduced portion of code, for example, a method. They are the starting point for detecting failures if a test fails at this point, it is likely that the tests of subsequent levels will also fail (integration, API, functional etc.)

API tests, integration of components, services
These tests verify that communication and data exchange between the different modules of the application or with other applications. They serve to detect faults in the way in which the different modules of the application act and integrate with each other.

Graphical interface tests
They require high development time and are slow in execution and with many dependencies with other components. The graphical interface is where changes occur most frequently, so these tests are also usually the most unstable, requiring periodic updating. Yes, it is necessary to automate the GUI tests of the critical functionalities, but it is better to do it after having automated the lower levels of the application.

Determine which GUI tests are fundamental to the project
Not everything can and should not be automated, we must define the test cases that are candidates for taking into account things like validations, usability, accessibility, etc.

What to automate? Critical tests, which do not require human intervention, that give results that can be unequivocally verified, and whose complexity to automate does not exceed the value it can provide.
The issue of selecting the interface tests to automate is a broad topic in itself, so we must focus on those critical areas for the application, which are already closed and that will not change constantly.

Involve the entire team in the testing process
The entire team must be incorporated into the test automation strategy. If testing and development are not in tune, automation will fail. Testing needs the development collaboration to follow certain practices in the development of the application to favor the automation of the tests.

Additionally, the inclusion of various professionals with knowledge in the core of the client’s business will allow to find details and points of improvement in the development, taking into account that this will be used by thousands of end users, who will demonstrate their dissatisfaction with an inefficient application.

Allocate resources with the necessary skills to perform automation
Automation done correctly requires more than simply recording and reproducing UI tests with a tool. Automation must be able to be integrated at the development process level so that it can give real benefits.
A good practice is to have separate roles for the functional tester and who automates tests, combining these two tasks to save resources is the most common option, but it ends up having the opposite effect since these roles that require different skills.

For a couple of years, some companies, such as Microsoft, started incorporating the “Software Development Engineer in Test” or SDET profile whose tasks range from developing and maintaining automated test scripts (not only user interface but also security, loading, performance, etc.) until implementing and maintaining the necessary infrastructure to integrate and run these tests as an integral part of the development process.
This profile is not responsible for functional tests, test plans or test cases at any time, these tasks remain in the hands of manual testers.

Maintain a manual testing team
The objective of test automation is not to eliminate manual testing, nor to supplant testers. What is automated are validations that manual testers have previously detected during regression or smoke testing.
It is incorrect to think that automated tests will find bugs that manual testers have omitted. Remember that these are scripts that simply run steps and verify results, but the script will not verify anything for which it has not been programmed.

Develop a clear and solid testing strategy
Determine the scope of Test Automation: All aspects should be considered when analyzing feasibility. It is also essential to perform a feasibility analysis in the manual test case package that allows automation engineers to design the test scripts.

Select the correct automate test
Tests rely heavily on automation tools. That’s why finding the right test tool automation is a critical phase for a life cycle test automation. When looking for an automation tool, you should consider the budget, the technologies used in the project, the familiarity of your team’s tool with the resources on board, intuition, flexibility and more.

Plan + Design + Testing Strategy
The following is the phase of the automation test life cycle methodology that defines how to address and achieve the objective of test automation. The selection of a test automation framework is the first and most important in the Test Strategy phase of the Automation test life cycle.

Good documentation makes it easy to execute
Once you install the test environment, it is time to run the test script. Then, this phase of the automation test life cycle is dedicated to the execution of all test scripts.

Reporting and analysis of test results
After performing all types of tests, the test team analyzed to identify which functionality or particular component experiences a relative number of problem reports.

Conclusion
There are many variables that determine the quality of automation, for which those responsible for carrying out the development and / or quality tests need to allocate more resources to ensure the quality of development.

We invite you to visit our Testing & QA page to learn more about our methodology and quality of service.

Main benefits of Automated Testing

Main benefits of Automated Testing

The Testing & QA process is key to the development of quality software, not only because it guarantees the launch of an efficient application that meets the user’s expectations, but also because it allows continuous improvement in production processes, increasing the adoption rates even more.

Among the testing phase, we find a wide variety of disciplines that, according to the needs of your business and/or development, offer a series of advantages and advantages to take into account. In the particular case of Automated Testing, we find that these are gaining ground among software development companies, however, there are several topics to consider before venturing into this productive product but qualified process.

What is automated testing?
The test automation software refers to the design, development, and execution of scripts so that they can have these tests without human intervention. The main reason why companies are opting for automated tests has to do with the optimization of development times and the detection of errors in points of this process so that these errors are easier to solve, allowing them to develop with greater security.

The most common example is the automation of GUI (Graphical User Interface) tests where the steps of a test case are reproduced through a tool or frame and it is verified if the result of those steps is as expected. But test automation is not limited to this type of testing or at least, you shouldn’t do it.

Main benefits
Software companies, due to the nature of their business, need to be agile, this means being able to market the products or improvements of their products quickly, without quality being sacrificed. To achieve this goal, the use of agile methodologies and automation of certain processes are often key strategies.

The use of agile methodologies is based on the continuous verification of the code to be able to gradually integrate the existing code, the new functionalities or improvements, update and verify a diary to obtain a much more reliable result and in the shortest possible time. This implies that in each development cycle the same test cases are executed with the modification of the modifications that were made in the code without generating defects.

Automation is responsible for streamlining any process by reducing the time in which the product is tested. Automate the most basic and repetitive tests that do not require human intervention, so that the evaluators can spend more time testing the critical areas of the application and/or doing more complex tests (edge ​​cases, usability, etc.) where they need to combine actions or verify from a logical point of view.

Main Advantages

  • Reliability: Human error is eliminated. The script will have precise steps that will always be executed in the same way. Performing the same task repetitively can become tedious and after a certain time, the tester may not pay the same attention to the details of the said test and omit some type of error. Running repeatedly as part of the development allows developers to verify that their modifications did not introduce errors in critical parts of the application.
  • Speed: Because it is an automatic nature test, it will be executed much faster than if it was executed by a tester. Of course, this will depend a lot on the infrastructure available and the level of integration of the tests.
    It is not the same thing that the automatic tests are launched automatically every time the application is deployed and run in a dedicated environment, to which, as in many cases, you must manually start a tester, on your computer, to run in a shared environment (such as QA or UAT) where someone can change a piece of information and the test may fail.
    Not to mention that in this case the tester’s time is also being used, which usually if they are UI tests, will not be able to use your computer until the tests are over and that may take time.
  • Increased test coverage: allows resources to be used to test the application in depth.

Some Disadvantages

  • The creation of automated scripts is an expensive process that requires a high level of technical skills.
  • You can not automate an application 100%: In general, applications will always have some functionality that requires user interaction, for example, click on a link that was sent in a confirmation email (this case could come to be automated in some cases), or compare that an image is the same as expected (each browser will show it slightly differently) or a login requesting to select images to verify that it is not a robot, tester intervention is required and It cannot be automated. It will also depend on the CI / CD (continuous integration and continuous delivery practices) that are available.
  • You always have to take into account what the cost is and what the benefit is: to evaluate if the tests are going to be done manually or automatically, taking into account the knowledge of the tool to be used, programming languages, times and others.

Summary
Test Automation must take place through a well-planned process to be cost-effective and must be used to provide real benefits, being realistic about the resources and profiles that need to be involved for its implementation. Automating is not cheap, it is not fast and it is not simple. Badly implemented, this strategy can become a waste of time, effort and money.

Differences between Functional & Non-Functional Testing

Differences between Functional & Non-Functional Testing

One of the fundamental stages in a software development project is the Testing & QA phase, which allows us to identify potential flaws in the design, usability, security and more aspects. It also allows to know the performance of each function of the software and / or application, its components and features.

What is Functional Testing?
Its objective is based on checking if the development functionalities were carried out following the specifications and requirements of the client, as well as their initial needs. In this way the possible failures of the previous phases are detected.
In every functional testing process we usually find:

  • Smoke Testing.
  • Unit Testing.
  • Integration Testing.
  • Regression Testing.
  • User Acceptance.
  • Localization.

What is Non-Functional Testing?
Evaluate the way in which a development and / or application operates, focusing on its attributes and quality. Ensuring a good user experience, beyond the functionalities that it should have.
The most common types of Non-Functional Testing are:

  • Volume Testing.
  • Performance Testing.
  • Usability Testing.
  • Scalability Testing.
  • Stress Testing.
  • Load Testing.
  • Portability Testing.
  • Compliance Testing.
  • Disaster Recovery Testing.

Summary
As we mentioned previously, the Testing phase is becoming increasingly important in Software Development, not only for allowing companies to launch their developments and applications without errors or problems, but also for increasing the quality of their software by solving the most common frictions that users encounters, helping to develop innovative ways to increasingly improve the end user experience.

Do companies should try to Automate Testing?

Do companies should try to Automate Testing?

Automated vs manual testing is a long-standing argument among software experts. Both have their uses, however, the challenge comes in determining the extent of automated testing needed. This article looks at the intelligent use of automated testing and its advantages.

Applications of Automated Testing

Test automation involves making use of code to develop applications which carry out automated tests on software. Test automation differs from manual testing because, in the latter, a person carries out the testing themselves, while automated testing involves developing an application to carry out and supervise the testing.

Automated testing is frequently utilized for regression testing, that looks for errors and faults in applications. Regression testing is usually very tiresome and time-consuming, thus automated testing can ease this process for an application testing expert. Aside from regression testing, automated testing is commonly used in user environment simulation. Automated testing applications are capable of duplicating basic user environment through automated keystrokes and mouse clicks. The responses for the graphical user interface of the simulation program are saved and examined based on the automated input.

Automated testing possesses a number of advantages:

Efficient Testing

Automated testing is a highly efficient method of testing. The testing team can strategically place themselves to deal with the challenging, case-specific tests while the automated testing applications deal with the iterative, time-consuming tests that are a necessary part of any program during development. Testing automation is an ideal method of saving resources such as time, money and manpower. It also produces a high return on interest.

Upgradability and Reusability

One of the best features of automated testing is that the testing applications are reusable. Aside from the reusability, each new test and new error identified allows the testing application directory to be upgraded and kept updated. Despite one of the key challenges facing automated testing being its high cost, it is important to note that automated testing software is a durable, long-lasting, and reusable product which can be worth every dollar spent on it.

Consistency

Automated testing offers consistency for one’s testing requirements. Normally, the tests that automation are meant for are highly tiresome. Automation significantly lowers the error chance in testing by making use of its pre-recorded instructions. Regression tests are meant to determine whether the current functionalities of an application are acceptable for the new version, a feature that is essential during the development of new functionalities on existing applications. Automated testing offers an essential level of reliability required for testing procedures.

Unique Programmability and Shelf Life

Aside from establishing precise testing requirements, test automation applications are designed for core parts in future testing cases. In-house automated applications created by testing companies are designed in such a way that they possess sufficient flexibility to deal with a unique product while meeting the standards for the most recent security and testing procedures. This features further enhances the functionality of test automation making it a powerful tool capable of saving time, as well as providing plenty of resources and high-quality outcomes.