Testing: Automation of Tests

An Ancient Start for Operating Systems and Software

The simple definition of a computer is an electronic device used to process information in the form of numbers or signals. Surely the people of ancient times, who around 440 BCE created a prototype “counter”, did not expect that today we would operate computers with interfaces pleasing to the eye. The same was true later, of the English cryptographer and mathematician Adam Turing, who probably never imagined that computers would have software.

The Turing machine is considered to have been one of the first abstract computer models. The scientist developed its operation in the late 1930s and 40s. At the height of computer development, in the 1970s and 80s, developers quickly realised that society would have great difficulty mastering the operation of what were in those days huge pieces of equipment. One component was the monitor, with its simple display of white letters on a black background. The decision was taken to create an operating system, the use of which would make use simpler and largely intuitive. It is probably thanks to this that computers have conquered almost the whole world, and can today be found in virtually every home.

circle testing app

One of the most popular operating systems is Microsoft Windows, created by Microsoft. In 2012, this was installed on 83% of the world’s computers. Immediately next in popularity is Linux, then Chrome OS and Android, and finally Apple iOS. The purpose of the software is to process data, and the creator of the product sets the limits of this process. The terms “computer programme” and “application” are often used interchangeably with “software”. Software is written using many programming languages ​​and algorithms, and can best be divided according to purpose:

Application software – has direct contact with the user and executes commands.

Programming software – used by other programmes.

System software – performs activities that allow the operating system to work.

Software development programmes.

Examples of software include:

Text editors

Graphics editors

Computer games

Computer viruses

Database management programmes

Mobile Applications: An Industry with Potential
Research by the firm IDC in 2013 revealed that we will buy many more smartphones than mobile phones in the 21st century. At the turn of 2012-2013, a total of 216.2 million smartphone units were sold. In 2016, that figure was about a third higher. There is also an interesting comparison between 2010 and 2011, which saw a 175% increase in sales of smartphones. In 2013, Samsung sold most units, followed by Apple, LG, Huawei and ZTE.

The publicist Shawn DuBravac publicist, describing the technology industry in the United States, commented on the development of smartphones as follows:

“The constant evolution of smartphones and tablets generates new possibilities in their usage, thus increasing their utility and value, but at the same time displacing other devices, such as digital cameras”.

People slowly began to replace computers with smartphones for many activities, and calendars, alarm clocks, watches, flashlights, internet, cameras, and even text editors have been developed for these devices.

An important part of any smartphone is the operating system that it runs. The most common are:



Windows 10 Mobile

BlackBerry OS

Sailfish OS

Firefox OS

It may often be the case that one company produces smartphones with two operating systems. One such example is Nokia, which created the Lumia with Windows Phone (the predecessor of Windows 10) and Android. Initially, the applications installed on any smartphone were written in Java, now the language used by Android developers. Four types of mobile applications are distributed:
1. Stand-alone applications – these applications do not need the Internet to work. An example is Firechat, which connects devices using Bluetooth.
2. Internet applications – for example, mobile websites or applications that work only with internet access.
3. Client commissioned applications – typically used to connect to an appropriate server via the Internet.
4. Games – for example Minecraft and Clash of Clans.

Automatic Testing: What Is It?
Testing in connection with software development is one of the processes of application quality assurance. The primary function is to analyse, check and finally verify whether the project is consistent with its plan and guidelines. Testing can detect early instability or potential threats to the operation of your application, and eliminate these or take steps that will allow them to be prevented. It is worth noting that testing only highlights a problem, it cannot eliminate it in advance.

Testing can be deployed at any time during application development, depending on the method used. It is recommended, however, that it is carried out from the earliest moment. If a mistake is not detected at the beginning, the entire project can be built upon it, with far-reaching consequences that make work difficult and slow, and introduce the nuisance of making amendments. Of course, testing is not able to eliminate all irregularities or defects, but it does increase the likelihood of creating more stable software, and primarily provides developers with information about what could be improved and what elements are working properly. Testing also verifies the established requirements and “static analysis”.

There are many kinds of tests, among which the following are important to remember:
• White box testing, which analyses the source code.
• Black box testing, which analyses the application interface.

The advantages of automated tests are:
• They supplement manual tests (two test variants allow better analysis of the project).
• They offer repeatability (a human is not able to perform the same steps every time a computer or programme performs an action in the same way).
• They provide for regularity (test periodicity can be programmed).

It should also be remembered that test automation is associated with a number of additional implementation costs, although this will also have positive effects and facilitate the work of testers.

The first financial outlays to be incurred are the costs of implementation associated with preparation for testing. These are one-off costs, incurred only at the moment of transition from manual to automated testing. Operating costs associated with the use of tests, regardless of the ultimate automation of the entire system, must be considered by the person responsible for this area of work. and that, although the entire automation system ultimately final analysis must acknowledge the person responsible for this stretch of work. The last costs to be incurred relate to everyday development, and refer to any modifications to be made during application development.

Why Test?

There are several types of tests, which are sometimes difficult to tell apart. Differences may be, for example, that one passes through the HTML interface, and another only through REST API or lesser user analysis of activities. The distinctions are often minimal, and concepts may be misleading or unclear. It is possible to discern several reasons for the automation of application testing.

These include, among others:
• Checking the operation of individual elements of the entire programme and isolating errors.
• Analysing project actions holistically, from an external perspective.
• Testing application links with external resources.
• Meeting the expectations of users.
• Facilitating subsequent modification.

The process of test automation itself can be divided into four stages:
STEP 1 – obtain source code
STEP 2 – create a database project
STEP 3 – run automated tests
STEP 4 – creating analysis and statistics, with notifications about these

Three Major Types of Tests

1. Unit Testing
First, this kind of test eliminates errors, and, secondly it makes it easier to modify the application. To meet the first of these it is required that almost the entirety of the created application be tested. The operation of each element should be checked separately and comprehensively. Ease of application modification relies on several sub-conditions:
• Tests must be fast.
• Tests must be easy to debug.
• Any changes made can cause side effects and interfere with the operation of the entire application.

2. End to End Tests
These tests are mainly focused on the end result of the work, ensuring that the application meets user expectations. Even if the product does work, this is not synonymous with customer satisfaction and the good reputation of the developer; this requires automated tests to be focused on the final interface, not necessarily analysis of the application from the inside. Our programme is the “black box”.

3. Integration Tests
Having eliminated errors, prepared the application for later modification, and taken care of the final result and user satisfaction, this does not mean that the testing of a mobile application is complete. Of vital importance in the whole process of test automation are integration tests, or ancillary tests. It is extremely important in the whole process of automation of the tests are integration tests, the so-called ancillary tests. They also address the question of testing connection points resources, and tie together the end to end and unit testing. They check, or at least they should check, only one individual integration point at a time.

Ensuring the Quality of Tested Applications

If an application or programme is to be released with the goals that it should be a source of high profit rather than financial losses, and that users are satisfied with the end result, it needs to be subjected to quality assurance testing. This will result in a system that is easy to modify, and that is written in accordance with the principle of clean code. The quality of the applications tested demand, at the point of inception, long-term planning and systematic steps that need to be followed in order to implement the requirements of the final product.

The principle of clean code should be the motto of every good programmer. Carelessly or incorrectly written code will only complicate work and subsequent modifications in the future. There are no rules or useful advice that make it easier to write clean code. The basis of the work should be thorough and reliable analysis of the given problem, the creation of the plan, and finally implementation. Patterns developed by professionals or experienced programmers, or schematic solutions to problems, may be utilised.

At the beginning of application testing, the appropriate quality level must be established. What is acceptable, and when can a product can be released to the market? Quality assurance test information may quite easily be compared to the higher education system. In both cases, constant evaluation and assessment, inspection, maintenance and improvement are present.

QA (quality assurance) can in most cases be developed in two ways:
• Internal – refers to inspections and increasing the level of quality of the application itself.
• External – often carried out by “testers”, who are in many cases subsequent users of the application; they look at the project as a whole in a slightly different light. An example of this is the beta testing by users of Jak do Jade [a Polish public transport connections application]. In return for  access to the new version, these testers sent the creators information on their opinions, and application errors, amendments and advice.
Examples of different methods of quality assurance are:
• Error message programmes – all irregularities in test automation are often sent by mail to the people

responsible for the given element of the application.
• Quality control department – analyses each operation and its far-reaching effects.
• Registration system for reports of errors and irregularities.
• Test scenarios – description and documentation of all testing, as well as the steps that need to be taken in the event of failure.
• Software-embedded quality assurance – automated testing codes.

The Seven Deadly Sins of Testing and Test Automation
Testing applications, software, or other elements in the IT world is both necessary and useful. Therefore, avoid common mistakes that can be unknowingly committed.

The First Deadly Sin – One Test and Done!
In bringing a new mobile application to the market, performing a series of tests often involving future users is a very good marketing ploy and gives the community a sense of co-creation of the programme. Unfortunately, in many cases, testing of mobile applications ends at the time of issue, or of the conversion of beta to the official version of the product.
Please note that application testing is a continuous, long and extremely laborious process. It requires extraordinary vigilance and usually brings results only after a long time. In the era of rapid technological progress, continuous improvement of even the best-written applications is required.
Also, adhere to the rule of a small number of spectacular successes, and the minimum number of failures.

The Second Deadly Sin – Automation is the Cure
Diagnosing software or an application through automated testing will give an idea of what works badly, but this is only the first step in solving problems.
Tests allow the determination of required improvements. The tester’s role is primarily to take steps that will enable the more stable operation of the IT base.

The Third Deadly Sin – Let’s Take Shortcuts
It is easy to be tempted to record and play back previous tests, copying previously written scripts. A little later, and when changing the functionality of an application, it will make maintenance harder. It is easier to create a test from scratch than to modify those that already exist.

The Fourth Deadly Sin – One Code for All
The basic principle that every good programmer should follow is clean code. Stick to the designs contained in the plan, and note that the code used in the creation of the test can vary. If it is poorly written, it may complicate subsequent work.

The Fifth Deadly Sin – End to End Testing is Sufficient
End to end testing is not enough! Test automation should be carried out at every level. Late analysis at the acceptance test stage eads to disruption and destabilisation in the project.

The Sixth Deadly Sin – Universal Automation
Tests should be planned logically, checking and monitoring the most important and potentially at risk parts of a project. Admittedly, everything could be tested, but this will later prove extremely expensive to maintain, and will require more attention. The elements that should be the focus of automated tests are critical functionalities and those parts of the programme or application that are subject to frequent change.

The Seventh Deadly Sin – The Programmer is Irrelevant
Developers should not be excluded from any phase of testing. It is not possible to assess a tester’s system diagnosis. The programmer can help diagnose problems with their knowledge and experience. A popular recent trend has been for companies to sacrifice dedicated testing units, combining them with programming departments thus improving the efficiency and functionality of the employees.
Today, capitalism and technological progress requires everyone to work faster, better and more efficiently. Test automation primarily meets the first of these demands. It is less focused on mistakes, is more powerful, is not dependent on an eight-hour working day, and its actions are repetitive. In conjunction with manual testing, it gives more accurate results and more professional data analysis to help improve each product.