A whole team of developers is constantly working on eWay-CRM. How is a system like this made?
Roman Stefko, our CTO, explains what we do to make sure a quality product leaves our lab.
Roman, how do we make sure eWay-CRM works the way it should?
Just like any other software, our eWay-CRM is made by writing a program using a programming language. Nowadays, it’s already a very complex product made by a long, difficult code.
And when you develop a code, you naturally make mistakes that have to be found and fixed.
It’s usually easier with a new product. It is often being made by a programmer who will remember what they wrote into the code. The older the product, the more complex its code…and the more mistakes occur.
A developer tests everything they write, but that is not enough. There are too many possibilities of things that could go wrong. They simply can’t have all those scenarios in their head. Especially while developing the product because their mind is busy and influenced with writing the code.
And that is why we have a tester, right?
Searching for mistakes is really partly a tester’s job. A tester tests software from a user’s point of view. In other words – testers ensure that what the developer has been working on works the way it should and that it doesn’t generate mistakes.
For example, when we developed our most recent module, Tasks, the tester tried out all of its functions, one by one.
But not even a tester is able to keep an eye on everything. That would mean that he would have to go through the whole system and test absolutely all functionalities after every little adjustment.
And that is why we use unit tests in eWay-CRM.
Unit tests? What does that mean?
These are automated tests that can check a code and its functionality. The term “unit test” comes from the fact that we use them for testing individually testable pieces of the program called units. In eWay-CRM, these tests are written by programmers themselves.
A unit test works like this:
- We write testing cases and we define what should happen in a particular situation. For each testing case, we create a unit test, which is a small piece of a source code. These are supposed to check individual parts of the main source code of the application. We can even have more than one unit test for a single part of the main source code if we wish to test more possible scenarios. That is never a bad idea.
- Preparing the unit tests, we create a snapshot in a particular time. That way, we can easily use it in the future to check whether the code adjustments have caused any program damage.
How often do we do all this?
Unit tests are used every evening and thanks to that, we are able to go through hundreds of possible scenarios. A tester would spend hours and hours on that. But with automatic tests, it’s done within minutes. A live tester and automatic tests are a perfect duo. For example, with our latest module, Tasks, the tester was able to say how convenient it is to use.
That is a different kind of testing. An automatic test can’t tell us whether something looks good or bad.
The unit test method helps us find all the mistakes we were not aware of that were caused by system adjustments. A developer can see that what he did caused a mistake in a completely different part of the software and using that knowledge, they can optimize the set of steps before it is actually taken.
We also keep an eye on the test coverage of individual code parts. The coverage is displayed by percentage. In detail, we can find out which particular part is not covered.
All in all, we work with tests very thoroughly.
Such proper testing must take lots of time. Is it worth it?
eWay-CRM is a huge and complex product. We’ve been working on it for more than 10 years and a lot of developers have already seen it. Our code itself has about 376,862 lines. That is over ten times longer than Bible! Nobody can possibly keep such a system in their mind. That’s why we’ve been focusing on tests so much lately and why we write more and more of them.
However, writing tests means more work. Apart from developing a new functionality, we now spend a lot of time on even more thorough testing. The overheads of developing any minor functionality can multiply several times due to unit tests. However, from a long-term point of view, it really pays off.
In the past, we used to find out some mistakes with a delay. Imagine we worked on a new version for three months, it took a month before a client started using it and then another month for the client to find a mistake. We found ourselves in a situation where we had to start fixing such an old code. We had to find a quick and effective fix that doesn’t cause more damage while we were already working on something else.
In the end, months after making a mistake, we had to spend a lot of time fixing, analyzing, creating a new version, and update. That doesn’t make a good impression and it’s not cheap either.
Now, thanks to unit tests, we are able to change something in the development stage and we send much better software out to the world. Focusing on better testing makes our development a bit slower, but we can see results. Our developers have become used to spending more time testing and they can see the effect themselves. Testing helps them watch their own work. That really helps and the number of mistakes is going down.
Are these tests new in eWay-CRM?
We used to do unit tests before as well, but now it’s even more. We focus on functionalities with a bigger reach and we want to offer a really reliable product to our growing clientele. That’s why we don’t hesitate to spend time and money on testing.
Did you like reading about the development of eWay-CRM? Read our interview with Jan about coding. You may also be interested in the confession of Martin, the tester, or another interview with Roman about data safety.