Linkedin gif
Cookie icon

November 23, 2022

Do not forget about testing!

Software testing – the process involved in software development. This is part of the software quality management processes. Testing aims to verify and validate the software. Software verification makes it possible to check that the software produced complies with the specifications.

 

Why is testing needed?

 

  1. Shifts work from developers to testers.
  2. Accelerates the software development process.
  3. Ensures high software quality by eliminating errors.
  4. Provides an external look at the application. 

Testing checks the quality of the software and products that we produce. The automated tester, for example, is designed to reduce the burden resting on the shoulders of developers. In some companies, the testing department is completely ignored and in such circumstances, it is only the developers who create the tests. In this case, when developers maintain the tests, it can sometimes be very time-consuming because they also have to maintain the code or documentation. 

Testing helps to speed up the development of the project, but also to control the release of the application, because if there are errors, the release of the project can be delayed, and when errors are eliminated, the process of releasing the application undoubtedly speeds up at the very end of the project. During the course of the project, such tests are mainly used for quality management. 

Types of testing

We can divide the tests into manual and automatic. What’s important, the effect is the same in both cases – they aim to eliminate errors. The tests are performed to check quality. If the application is properly tested, then manual and automatic tests do not differ regarding the end result. They differ in preparation time and duration. Certain types of tests are more likely to be encountered at different project stages. Manual tests can be run straight away. All you need is an application project, and you can already check its functionality. This, of course, still depends on the requirements of how it will be tested. Manual testing is used when automatic testing is not already in place. And automated testing requires the creation of test scenarios, i.e., what will be tested and how. A manual tester may know test scenarios from their own experience – what to test and how to test it. Automated testing requires the creation of an entire automated project which is time-consuming, and this is what delays automated testing compared to manual testing. 

The advantage of automated tests is that they are repeatable. They do the same thing all the time. For automated testing, we use, for example, the WebDriverIO framework. This is a framework developed on the basis of Selenium, one of the most popular open-source tools for testing web applications. Appium is also a tool that was developed on top of Selenium, which is what we use when it comes to testing mobile applications. 

 

Test types

  • Performance –  This checks whether the software in question runs fast or slow,t also checks the load on the hardware and databases to see if there will be any upper limits on the system. If we reach such limits, the project goes back to the developers, and they try to optimise such an application to make it run faster or require less hardware resources. Or they replace the hardware with more powerful hardware when it comes to servers. Such tests are typically used in projects where there are systems, for example, for ordering from an online store, or when checking the load endurance of the server, such as with the maximum number of logged-in users or the maximum number of orders placed in a short period of time in an online store application

  • Backend – the combination of the database and software. This method is a testing technique that examines the web application's server-side or database. Backend testing's primary goal is to examine the database and application layers. It will identify a database or server-side issue or error.
  • E2E – end to end represents the broadest issues. This is testing from the perspective of the end user of the application. You get the whole application for testing and check its functionalities in advance. You do not check how it works; you just look at the end result. That is, whether it works and whether it works properly. The tests should behave like the user does, clicking on fields and checking the elements that the user has access to.

  • Functional – a type of E2E testing where individual functions are checked from the end user’s perspective. Example: for an online store application, one function will be to add to the basket, the other to view products. Functional tests involve smaller application parts to be tested than in regular E2E tests. Single modules only. 

To properly exploit the testing opportunity in a given project, testers use appropriate tools. One solution that is used to manage test scenarios, test plans and test runs is ‘Kiwi TCMS’. This tool stores all the test scenarios and allows new test runs to be created to validate the application. Kiwi allows errors to be reported and attributed when a particular test is run. This allows the occurrence of an error on a particular version of the application to be documented. These errors are also added in ‘Jira’ to report them to the Project Manager and assign them to a developer to fix.

 

Test architecture

This is the management and planning of the entire application project. This is the stage at which the application is planned. 

BDD / TDD Manuscript

Source: https://www.infolytx.com/development/processes/bdd-tdd/attachment/tdd-bdd/

  • TDD = test-driven development – tests are created at the start of a project. Later, the project is built so that the tests pass all the time. Initially, unit tests are created to check how the methods work. And only then do you create the application project and create the methods, which are checked with unit tests from the very beginning to ensure that the application will always work correctly. Will it return the appropriate values. Here, the tester’s work starts earlier because we start the project with their planning. At the beginning of a project with TDD, all tests will fail. As more and more pieces of the project are created, more and more tests will result in a positive outcome.
  • BDD = behaviour-driven development – this is an application development and testing based on application behaviour, i.e., end-to-end testing, which is more popular. The tests are performed after the application fragments have been created.

 

Testing as a service

In the simplest terms, it is the hiring out of testers to clients, in short, outsourcing. Then the client does not have to worry about the team. They can redirect their team of testers to other projects or to test management. In this case, the client is interested in the end result, whether there were errors reported and whether they have been corrected.

Another option that arises in quality assurance is application optimisation/refactoring – a client comes in with their application, wanting to improve performance or check the consistency of the application. In application improvement, the tester checks how the existing application works and can suggest which modules need improvement. 

Creating solutions for testing. Automated testing projects and testing devices, e.g. the IoT team build a device to test a client’s product. The device is integrated with automated tests to verify the correct operation of the client’s product. Automated tests could take the values of the device’s sensors and control the actuator used to push the button on the product.



 

Quote a project! Get advice.








Let’s inve

Let’s investigate your project concept and its current status together.

Expect an

Expect an initial project scope proposal, time and cost estimation from us.

The consul

The consultancy will be protected by the NDA.