Testing: Human vs Computer.
Developing and deploying an app without testing is like jumping off a plane blindfolded with a chained up parachute. Unless the first try is perfect, things are not going to end well.
Of course nobody does jumps out of planes like that and it’s the same with software development. While you are developing your awesome application, you test each of the functionalities that you implement.
Testing is about ensuring that the code you have written works the way it’s supposed to, that the functionality implemented is doing what it should, error free.
There are several ways to test your application. The most common way is the one that almost everyone does naturally:
Manual testing the task of performing a piece of functionality manually in order to check if the result is what is expected. In other words, manual testing is using the application to see if it’s working correctly; naturally, it is the first way we test our application. Almost immediately after we develop some functionality we put it in our hands to see if we did a good job.
The Good Parts
With manual testing, the Short-term cost is low: We don’t spend too much time finding fancy ways to test our application. We get Visual Feedback about what is going on and we understand if it’s working or not right away. If we change our application, we don’t have to change the way we test it, we only have to run the functionality with those changes without spending any extra time.
The Not so Good
Manual testing tends to produce testing fatigue. Tedious, repetitive tasks can make testers weary, so they’re more prone to making mistakes. Knowledge of the internal workings of the application tends to lead to other errors and combined with testing fatigue, errors can slip through the cracks. We also need to keep in mind that manual testing is prone to human error, hence it is less reliable.
For some functionalities, manual testing is not a good idea. For others, it is even impossible. Certain tasks are difficult to test manually while others are just tedious; you must test them several times because manual testing isn’t reusable. Manual testing is time-consuming; it takes up valuable human resources.
There is another way to do software testing that solves many of the these problems.
Automated testing is the process through which automated tools run tests that repeat predefined actions, comparing a developing program’s expected and actual outcomes. If the outcomes are not what we actually expected, or if there was an error running the tests, you will have a kind of report of what is going on in your code so you can fix it.
The Good Parts
Automated tests run quickly and effectively which translates to less time testing and more time developing or fixing. You won’t have to continuously fill out the same information and click here and there. Everything is done for you automatically. This saves time and money because you can find issues more quickly than with manual testing.
You won’t get test fatigue because it is easy to repeat a test scenario and get quick feedback about your application.
If you made a change in your code implementation you have a safety net that tells you if your application still works as it should. Without it, you will have to manually test every part that you changed.
The Not so Good
The problem with automated testing is that it takes time to create test scenarios. You won’t get all the benefits of automated testing for nothing. You will have to spend some time learning how to create the tests and how to run them. Also, not all tools are perfect, some have limitations and cannot do everything a human can.
When to manual or automated test
There isn’t a right answer for this. It depends on the project you are working on, how long you have to work on it, and your experience.
For short projects, prototypes or something you do as a hobby you can use manual testing without any problem.
For large or commercial projects where you have to deliver a high quality product it is good idea to spend time to have automated tests checking your application even if you have a QA team testing your application. This way you won’t end up delivering something that doesn’t work and you won’t mess up something that was working previously.
In further articles we will spend time talking about how to test, and in particular, how to drive your application development through tests. This last part is commonly called TDD and it is a great way to develop excellent, maintainable software