Do I need a progressive web application?

Do I need a progressive web application?

Progressive web apps is a term that is given to a new generation of applications that increase its functionality, as the capabilities of the device on which they run, increase, hence the word progressive. The next part of the web name refers to that they are built using web development standards, some already known as HTML, CSS, and JavaScript; and a new generation of JavaScript APIs. The final app part is because Progressive Web Apps behave like native web applications, but use web technologies.

What makes a web application, a Progressive Web App?
In very simplistic terms, they are web pages that behave like native applications. It is a very simple prayer, but also very deep. Native apps (iOS, Android for example) have historically had a number of advantages over web pages, like which ones? Local storage, run offline, push notifications, performance, hardware access, access to device home screen, among others.

Progressive web applications are halfway between the previous two: they are basically web pages, but by using Service Workers and other technologies they behave more like normal applications than web applications.
Through Service Workers and other technologies, progressive web applications can continue to run in the background without having to live within the browser. In the mobile, it is possible to install them as another application and also in Windows through the mediation of Google Chrome and Mozilla Firefox. Windows 10 will add support for progressive web applications in the Microsoft Store in the next big update.

Main advantages
A PWA is like a responsive website but:

  • It has a native application interface.
  • It works independently of the internet connection.
  • Send push notifications.
  • It is updated automatically.
  • It is installable.

A PWA is like a mobile application but:

  • It can be found through any search engine.
  • It can be shared through a URL.
  • It is distributed via the web (avoiding the mess of the app stores).

Some disadvantages
What are its disadvantages compared to a native mobile application?
They have limited performance and consume more battery since the native code (Swift, Objective C or Java) is faster than the web code (since it is interpreted instead of compiled).

A PWA cannot access all device-specific functionalities such as communication between applications, access to contacts or advanced camera functionalities.

Summary
Progressive web applications are a natural evolution of web applications that blur the barrier between the web and applications, being able to perform tasks that generally only native applications could perform. Some examples are notifications, operation without an Internet connection or the possibility of trying a lighter version before downloading a real native application.

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.