So what do you think? Can we agree that software testing isn’t rocket science, that it’s a simple process, that it’s a safe and reliable process? Or does it actually have some flaws?
No doubt, the software industry is the fastest growing industry and works with software teams across industries to complete software testing projects.
It seems like there’s a new set of software testing myths that’s out every month, whether you’re using open-source, waterfall, agile, hardware, or in the cloud.
Some seem to be prevalent and established so quickly that we don’t see them at first.
Unfortunately, software testing myths seem to come in waves.
I’m not going to go through each and every myth and debunk them all. I’m sure I’ll be able to add to this list in the future. But I wanted to highlight a few that I’m encountering often, as well as the software testing myths that are particularly frustrating and vexing to me.
Software Testing Myths
All Testing and Feedback Tools are Equal
Not all testing tools are equal. Not every software testing tool provides all the options that you need for testing. Sometimes you just need a checkbox or two to make something work. Or maybe you want a manual test that requires no installation or configuration or is just a wizard and does all the work.
For example, for testing web applications, I don’t need any feedback about the layout or structure of the web pages, because I can just run the application on a demo machine or a virtual machine. When testing in the cloud, I want to be able to just check “manually create a database and execute a query”.
But this doesn’t mean I should put on my testing hat and start trying to “test it” right away. It’s important to understand what testing tools and methods work for your application and where they fall short.
For some applications, automatic testing with automated frameworks can help you save time. But it’s up to the software developer to decide how much time to spend on testing.
Software testing works best when it’s a separate entity from the development process
Most developers are aware that the process of testing and creating a release that’s ready for testing is part of the development process. Some companies have decided to make software testing part of the continuous testing process.
In other cases, the testing is a separate process that’s performed after the development is finished and the application is ready for release.
This is an imperfect approach because it introduces two additional stages of testing that could make it hard to detect bugs in time. I’ve seen it happen in small teams. If the tests aren’t working well, they have to figure out which version of the application is failing, test the changes, and implement it. It’s like re-writing a test when it doesn’t pass or test a change after you’ve fixed the bug.
This can take weeks or months. It’s definitely a lot of work.
Some companies are shifting the focus from continuous testing and having developers test everything at the end, to continuous testing and continuous deployment. This is an idea I haven’t encountered a lot, as it involves training developers on testing to work with automated environments, functional testing, and sometimes manual testing.
If testing is a separate process from developing software, it could become a software testing process that nobody is trained on.
Some software testing is better than none
Different software testing methods are useful for different projects. Some testing approaches are better at finding bugs and improving quality.
But not every testing method is better than none. Testing for functionality, with a broad focus on evaluating the software, works best. Sometimes it’s helpful to have a checkbox on the application that does everything I need. But testing for correctness is valuable too, as you can find unexpected bugs, test the limitations of the application, and document it.
The goal of testing is to detect bugs and defects, and document them for the developers to fix. But testing for correctness is more important in some applications than other applications. It’s the technique I’d use for software that’s going to be used for complex applications.
The design phase is more important than the development phase
This is a myth that you have to believe. It’s definitely true that you should do a lot more planning before you start testing your software. But a little planning isn’t so bad. Especially when it comes to developing a complex software and you’re dealing with hundreds of different things in a software system. You can’t predict what those hundreds of things will look like in the end. How can you be sure that at the end the program will still look the same as it did in the beginning? Designing a software system is tricky, you can’t know everything upfront. There will be bugs, you’ll test it, it will have to be improved.
Of course we can get into trouble at the design phase when we decide to do something fancy, fancy and not real. We have to test all design decisions. And some of them might not be so good.
The testing phases are harder than the development phases
This is probably not true. I have never heard that the testing phases are harder. At least at the end they are easier. Maybe we can work more efficiently because we have more time.
We’ll find bugs in testing
Tests are rarely perfect, we’ll have bugs in testing. We don’t know exactly when we’ll find those bugs, but the chances of finding them are not that good, most probably.
We can’t test everything
This is a myth that you should believe, this is very dangerous. You should know everything you can to test. That’s the real myth. You should test in every case.
Testing is a risky business
Testing is not risky, it’s safe. Testing is safe if you’re in the testing phase. We have a lot of time in the testing phase, we don’t have time to create testing requirements.
If you have a business requirement to test and test everything that can change in the software and still be done in a safe way, you can take time in the testing phase to make it happen. If you don’t have any business requirements, you can’t waste time on tests.
We need specific tools for testing
I’ve never heard about using specific tools in testing, maybe we need them, maybe we don’t. You can spend hours creating a test project using a specific tool. That’s no problem. I can spend a few hours writing a simple Java tool, that’s no problem. And in a couple of days, you can make it better, make it do something more powerful.
We can’t fix problems with testing
This is not true. We can fix problems in testing, you can write tests to fix problems.
The tests are too complicated
The tests are not complex, the complexity of the tests depends on what the system is doing. You can’t write complicated tests that measure all that a computer can do. You can do tests that measure a few things that the computer is doing. I’ve read a lot about this myth on the web. There are loads of myths in testing. I don’t know why they keep coming out. It’s not true, at least not for most of the things.
The tests are difficult to write
Yes, the tests are difficult to write. This is a myth that you should believe. Writing tests is hard for some reasons. You have to think about the kind of test. You have to make decisions about the structure of the test, about what will be tested. It’s true that writing tests is hard, it’s good to write some tests and test them. But testing is not the most difficult part of the testing process.
Software testing is a worthless
If you believe that testing is not a good thing, you will never learn. The more you learn about testing, the better you’ll understand what you need to test. The more you know about testing, the better testing is.
Confusion between software testing and testing.
Actually, there’s no confusion, there’s only misunderstanding. You have to take the time to get the terminology right. When you don’t, you’ll never get good results in software testing. That’s a myth that I have heard a lot.
I know lots of software developers who are very well trained in software testing and QA training in software, some of them even have their own consulting companies. They’re good, they can help you to find bugs in software. That’s a myth, they can help you to test it.
The above discussed myths or clunky practices which are not significant in the era of software testing.
In spite of the regular myths, software testing aims at identifying and preventing bugs that cause damage to the end-user. Because of these myths, don’t be reluctant if the product requires necessary testing, which encircles this method: they are formed to confuse you.