Testing is like a Great Detective Novel | Technology Blog

2021-04-11

Every application or complex information system must travel a long path until it arrives at the hands of the end user. It is also true that first impressions matter. Nothing can disappoint the user more than an application that has many errors or constantly crashes.

This is why testing plays a crucial role in the development of information systems. Today, we will talk about testing with Mária Dujsíková, ANASOFT’s Knowledge Testing Manager.

There’s lots of talk about the development of information systems, but what can the reader make of this term?

First of all, even though there are various forms of testing which we could talk about for a very long time, readers need to understand that testing requires a different point of view of the application than that of the analyst. During testing, everything unfolds from this.

When someone drafts and develops an application, they usually think about what the application is supposed to do and how it should be doing it. On the other hand, apart from verifying that the application is doing what it should be doing, testing is needed to ensure that the application is not doing what it should not be doing and that it appropriately responds to unusual situations. And that requires a different point of view.

That sounds interesting. Can you give us an example?

Let’s use an example that everyone is familiar with. Let’s say that you go to an ATM to withdraw money. An ATM is nothing more than a computer, an application which is designed precisely so that a person can withdraw money from it. When you decide to take money from the ATM, you roughly think about it like this: I come to the ATM, I insert my card, type in my PIN code, choose the desired sum, take the money and leave.

Yes, it looks easy. One might even think that there’s nothing to test.

Exactly. However, the reality is more difficult, and we can easily overlook the fact that an ATM often asks about which language the user wants to communicate in. And upon the insertion of the card, various situations can arise which the ATM application and thus the testing should comprehensively react to.

For example, what should happen if somebody inserts an invalid card? Should the card be withheld by the ATM? Should the user be informed?

We’re not looking at a straight and narrow highway from start to finish. There are many exits along the way. What if the user types in the wrong PIN code? What if there aren’t enough bank notes in the ATM? What if the user forgets to take their card or money? What if the screen isn’t understandable or clear for the user? What if? What if? What if? Testing could easily be called “whatifing”.

And the tester must think about all these things?  

Of course, the entire team that takes part in the preparation of the application has to think about this. From analysts, designers, programmers and testers. But it’s natural that other roles in the project are aimed more at moving from start to finish, because the application has some sort of purpose in the first place. Without this purpose, it wouldn’t be necessary. And this is also why it’s natural that the tester is the one who brings critical thought to the process and draws attention to things which are important but not necessarily obvious and visible.  

What does the testing of an information system look like?

The things that apply to other activities are also true for testing; there are recommended steps and experience is important. It is most definitely necessary to set the testing goals to ensure that we know what we want to find out during the testing. Next, it’s important to have a testing plan according to which the testing will be conducted and evaluated. This isn’t a “hobby” where one or two enthusiasts sit down and start clicking through an application to see if it works. Meaningful and effective testing is a complex process and requires the involvement of the testers in the project as soon as possible. 

What if? What if? What if? Testing could be easily called “whatifing”.

Why is this important? Isn’t testing the absolutely final activity during the development of a system?

It’s important because the tester represents the end user in the development of the application. When you’re building a house, you continuously show the future user the project and you consult with them. You try to present how the house will look as soon as possible and as best as you can, so they can react to it. If you only show them the house once it’s finished, you run the risk that they might not like it; and rebuilding at this point would be very expensive.

The same applies to testing. The tester needs to understand the function of the developed application as soon as possible so they can warn about possible shortcomings in a timely manner and prepare for the testing. They need to make note of specific testing events, inputs and expected results. They need to understand the peripheral situations they should focus on during testing.

As we said before, the tester needs to write and format everything so that the testing can be evaluated quantitively and qualitatively. The result of the testing cannot be expressed in a single sentence “It doesn’t work”. If the testing reveals an error in the application, it is important to be able to duplicate it, to clearly record it in the agreed tool and send it for solution. Afterwards, it is necessary to re-test it and think of the consequences.

I like testing and it fulfills me. If I didn’t,  I wouldn’t have dedicated years to it. Testing isn’t routine for me; on the contrary, it’s a little bit of everything.  

Most people now imagine testing as something routine and perpetually repeating manual work. Is it like that?

I like testing and it fulfills me. If I didn’t, I wouldn’t have dedicated years of my life to it. Testing isn’t routine for me; on the contrary, it’s a little bit of everything.

In the beginning it’s about curiosity and creativity, as I try to understand what the information system is supposed to do and what I need to focus on. Afterwards, structure enters the process, when the tester formally prepares for specific testing scenarios and their expected outcomes.

Later on, the work becomes laborious; specific testing cases need to be run over and over again and the results need to be noted. At the end of the day, it’s the joy and feeling of a job well done, when you realize how the application “bloomed” under your care.

It’s also necessary to point out that testing isn’t just manual work. It’s entirely common to automate certain tests during big projects.

However, we’ll talk more about automated testing next time...

 

Thank you for the interview

Interview conducted by Boris Rybár
Software Development Team Manager