Testing: a waste of time or a necessity

Katerina Sand
CheckiO Blog
Published in
5 min readOct 11, 2017

--

In the previous article I was making a point why letting other developers to go through your code is a good practice if you’re trying to improve it. Well, as important as code reviews are, running tests is also a way to ensure the deliverance of the best quality product free of bugs and inconsistencies.

So, this means that one of the very important areas of development is software testing. It’s a process that’s being conducted at the different stages and throughout the Software Development Life Cycle (SDLC) with the intention of finding bugs, providing the information about the quality and checking whether the product or service fits all of the set criteria, like original intended use, spec or goal. Tests also take place to verify whether the software program, application or a product meets the business and technical requirements, responds correctly to inputs, is sufficiently usable, works as expected, performs its function within an acceptable time, can be implemented with the same characteristic, can be installed and run in its intended environments, and achieves the general result.

Manually or automatically

The testing itself can be carried out manually by individuals or automatically by computer systems. There is a fair amount of disputes on the topic of which one is better. Well, in the end it will depend on the task at hand and the industry to decide which method is more suitable.

Automation may at first take longer to set up, but it can save a lot of time and money in the long run.

Frankly, it’s important to have skills in either area. To ensure that the product is of the highest level of quality manual testing could be your thing. The extremely essential exploratory testing is very often carried out by the manual testes. And this type of testing can’t be replicated by automation.

Testers are responsible for finding and identifying issues that could impact the product’s work. This’s especially important task before the product is released, at the last stages of development. If one of the features fail testing, it needs to be reworked, and then retested. Features fail testing when the expected outcomes don’t match the actual results of tests. So, when the issues are identified testers and developers work to get it fixed, and then the process of testing is repeated to ensure that the problem is gone.

Here are some of the tips for a good tester:

  • Pay high attention to detail (the ability to pick up minor issues and help to fix them will increase the quality of the product you work on)
  • Communicate effectively and efficiently (communication skills are always an important part of the process when working among other members of the team)
  • Pick up new software and languages quickly (this point is especially relevant to the fact that everything in IT changes in a blink of an eye and you always have to be up to speed)

Old tests won’t do

The reason why manual testing might prevail at times is that great testers are highly technically skilled, analytical, logical and thorough. They take into account different test techniques and strategies. You, of course, may think: “Hey, they are humans. They can miss something”, and that can be fair enough. But who says that automation is better?

Some products have automated test suites which do great…or did great. There might be some secret threats, like tests may not do what you think they do. How would you know? Sometimes automators code different test procedures from the ones they specified. Also the size of the test suite doesn’t really equal the good coverage. That number of tests might simply identify lots of minor variations of the same test and the test suit might not be actually testing a lot of things it should. There is a possibility of false alarms. The thing is, with time careless automation programming might lead tests to fail because of automation bugs. There is no way of knowing which failures are product bugs and which are automation ones. Those tests should be removed or repaired, so proper maintenance, for which often nobody has time, is important. Another threat lies in the fact that the test results might be false. Some tests passes unless the product crashes, and others have these bugs that cause the parts of the tests to be skipped or prevent reporting the detected failures.There are even cases when tests were simply hard-coded to pass.

In CheckiO users can create missions and tests for those missions themselves. When the other user is trying to solve that particular mission, his or her code undergoes those tests to check whether it’s correct. If it passes testing then the user did everything right and his/her code is perfectly suitable to solve that particular mission. But if the creator of that mission didn’t provide all of the needed tests or didn’t consider all of the parameters for testing, then the incorrect code can pass the testing. In that case the other user can solve the mission with the wrong solution and post or share it. To avoid it other users can also create and add their tests for missions when they think that the original ones don’t do everything they suppose to. So, testing is always a part of a process in any area of IT.

As you can see, when a human being can adjust and take different approaches when testing a product, automated tests have to be updated, so they could do their work. New tests should be added and old ones should be replaced or repaired. If nobody does that, then the results cannot be accurate and you can end up with a poor quality product. And then it’ll take more time and more money to fix everything that was missed by automation testing.

How much testing is too much

Investing in a large amount of software testing can be difficult to justify. For every line of written software an organization should invest at least an equivalent amount of developer time and number of lines of code to test the created software. With the constant pressure it’s easy to skip on the amount of testing in order to launch sooner. But it can all be done at the expense of product’s quality. Bugs give users bad experience with your product, and it can significantly damage the brand image. Having a high-quality product is beneficial, and the commitment to this goal should be throughout the whole process. It’s wise to invest in good resources: tests, tools and people. Providing the team with proper tools to uphold the quality of testing might be a good idea which will give great results.

Conclusion

As you can see, testing is very important and sometimes even crucial if your goal is to deliver a good product with high quality and less possibility to fail when being used, especially after its release. Testing provides a lot of important information and it should always be properly conducted, whether it’s manual or automatic.

--

--