Testing Definition: To tell somebody that he is wrong is called criticism. To do so officially is called testing.
On a serious note, what is testing?
Testing is a process used to identify the accuracy, completeness and quality of a product. In software testing, this stands for developed computer software. Software testing also includes a set of activities conducted with the intent of finding errors in software so that the latter could be corrected before it is released to the end user.
Why is testing important?
Well, you could die! Yes, you read that well, because faulty testing can actually lead to severe consequences including death. You can find a few examples here so you know I’m not fooling around:
The good, the bad and the tester
Who is a tester? Is it a guy or a girl who throws a few clicks in an app? Well NO! Being a tester is more than that, it’s a lifestyle. If as a programmer, you tend to think about everything that can be automated and programmed to be done without effort, as a tester you tend not to think “testish”, you just test. All of us test things on a daily basis. From looking to your left and right before crossing the street, to smelling a yoghurt before eating it, from checking the water before you take a bath, to tasting the soup before you serve it to your clients. Everything contains a drop of testing, and we do test not because someone told us to do so, or because “that’s what we should do”. We do tests because we feel like it, because we expect quality from everything in our lives. We do tests to be safer or more protected. We test because it’s in our nature to be curious, to be testers. Being a professional tester takes this to the next level, and it makes you challenge yourself, bring the best version of yourself to work and give 101% in testing. It’s like a puzzle. Every time there is something new to test, and no matter how good an app is, a good tester will make it crack!
Q: How many testers does it take to change a light bulb?
A: None. Testers do not fix problems; they just find them.
WANTED: Software QA Testers
What is the role of software QA testers in the development flow? Why are they so wanted nowadays? It’s simple: they assure quality. That is their role in the development flow, ensuring of the quality of the products delivered to clients. How important is that? Well, hours and hours of analysis, planning, development and testing included would be in vain if the end user found a bug that determined him to refuse the product. ”We’ll fix it!” would be your first thing to say, but, in most cases, the contract states that if the product does not meet their expectations, they can refuse it. Put it all together and it’s safe to say the role of a QA in a development process is vital. It brings quality, and quality sells products.
Captain? Help please?
There is no Captain Obvious of testing around, who can come from the high skies of Quality Heaven and just tell us an obvious way to test that we haven’t noticed for decades. Or is there? In fact, there isn’t just one. There are seven. They are the seven testing principles:
- Testing shows the presence of defects;
- Exhaustive testing is impossible;
- Early testing;
- Defect clustering;
- Pesticide paradox;
- Testing is context dependent;
- Absence-of-errors fallacy.
If you follow them, it’s like having the biggest tip from the Captain. You can find a detailed explanation for each one of them here:
To an optimist, the glass is half full.
To a pessimist, the glass is half empty.
To a good tester, the glass is twice as big as it needs to be.
How to & how not to
All testers have heard of the seven principles of testing, or of black-box / white-box testing, but here are a few tips about how to and how not to test:
- Keep track of the issues – officially report every issue and check them after the fix;
- Be organized – every tester needs a plan. Make a plan and keep track of it;
- Be transparent – offering status of your testing coverage is like a godsend for project managers;
- Remember regression – don’t assume that everything that worked before works just fine now;
- Be a normal user, not an ideal user – while testing as a user, don’t assume that users won’t enter some places or won’t do some things. Be crazy, better safe than sorry;
- Communication is the key – if you have a problem with the environment or a blocker bug, even if you reported it, don’t wait for miraculous fixes, just communicate these problems;
- Improvements do count – in the race to finish all functionalities in time, a lot of people in the software development process tend to forget the usability of the product or its performance. Don’t forget to report improvements because, if bugs can bury your business, improvements just might make it wealthier;
- Be creative – try to explore the app and be creative in your ways of testing. Maybe you just might be a pioneer of this domain, and invent new ways of testing.
Manual vs Auto
Is manual testing dead? Well, even if some people have the desire to automate everything, there are some things that just can’t be fully automated. There is a foundation of testing that you can’t be flawless just by automating it all. And it’s not always better and cheaper to automate. Let’s see a comparison between these two.
- Cheaper on short term;
- The human factor might be an advantage;
- Allows you to test ad-hoc (unplanned);
- Some cases can be tested manually only;
- It’s easy to use and does not need a lot to learn to start using it;
- Feedback – it’s way easier to offer feedback to a tester than to a server.
- Regression testing can be done easier with automated testing;
- Easier to test performance and concurrency;
- Cheaper on long term;
- Opens possibilities to evolve as QA Developers;
- Makes exhaustive testing possible on some cases.
Developer: There is no I in TEAM
Tester: We cannot spell BUGS without U
Are we agile or are we futile?
Agile testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow. But are we agile? Most of us tend to stop being so agile when a lot of stress is involved, and we start refusing things that are related to the product itself. What can we do? Take a break, clear our minds, and remember that we’re not working for a personal product, and we’re working for a client, so his wish is our command. Also we should never stop improving. We plan, we run, we evaluate and we improve. That’s what being agile means. You can find a complete article about agile testing here: https://smartbear.com/learn/software-testing/what-is-agile-testing/ . And also a book here: https://www.amazon.com/gp/product/0321534468?tag=sw-testing-books-20
Brace yourself, the future is coming!
The future is here! We humans are in continuous evolution, and in this evolution we can’t forget about testing. Why? It might just preserve our entire human race. How? They say that our own evolution will be our downfall, but good testing, with a good plan and a good vision might just avoid that. The future is all about artificial intelligence, and regardless of its evolution, we do not have to fear it, because we can make this evolution possible without going terribly wrong just by testing it in the most realistic environments. Am I crazy? No, I am a tester!
Stop! Random time! Here are some links that you might find interesting to read about testing: