Is Software Testing still relevant?

Often times, most companies will overlook on the testing phase of the software lifecycle. Large enterprises understands and realises the importance of software testing in the lifecycle, they couldn’t afford to lose customers or even having a loss due to untested system or application. They have a whole department or team just to focus on testing alone. Not all but most enterprise has their own testing department, doesn’t matter either it’s an in-house team or an outsourced team. The point is, they are aware of this important aspect on the software development lifecycle. Since they’re a large enterprise, money and resources is not a constraint for them, so it should be no issue for them to hire or outsource testing.

For startups, SMEs, it’s a different ball game. Put aside the costs, I’m quite surprise that most of startups doesn’t even think about testing and the impact of not having a proper testing before releasing their app. Most of the times, they tend to think that developer has done the testing, and it’s enough. They don’t need more testing.

Developer do the testing

“Since unit testing and test-driven development burst onto the programming scene in the early 2000s, too many programmers have deluded themselves into thinking that they could ship high-quality software with automated testing alone. It’s a mirage.” -
DHH — Creator of Ruby on Rails, Founder & CTO at Basecamp (formerly 37signals)

With the evolution of Software Development Lifecycle, more and more methodology has come to the picture. From Waterfall to Agile and now DevOps. People tends to think that, with this current methodology, we don’t need proper testing and we can skip it, everything has be taken care of. We can automate the test and we can release it at the soonest!. First of all, I agree with James Bach, I don’t like to call it Automated “Testing” because it’s actually is an Automated Checking, which is marvelous to complement testing. Testing needs to be done by human with deep and critical thinking. Before we talk on automation, this is based on my experience, some organization wants to keep up with the trend but didn’t do it correctly. For example, some organization like to mention that we’re using Agile method or we’re in Agile environment, but actually, what they did is just waterfall and add a scrum meeting and a Kanban board. The timeline and everything, is still based on a waterfall model. This is still happening currently in some of the huge enterprises.

Even for automation, there’s a list of automation checking that you can do. From unit testing to regression testing and regression testing script is wrote by tester.

As for automation, I know one major MNC here in Malaysia is still struggling to setup their automation framework, even after 3 years. Yes, 3 years. You can’t solve everything by automation. Automation can help you do the repetitive tasks faster and easily, but it hardly can explore and find bugs for you. Automation is scripted and it will execute based on how you script it. It can’t act as real users with brain!

Costs and Time

If you follow my posts, I believe you already know that I keep mention about this. Reason being is because these two are the most common feedback that I get.

Let’s talk about cost first. The main reason why company don’t do a proper testing is due to the cost related to it. To hire a QA team or outsourcing the testing will costs you a bomb. So, you have invested so much on developing your app and you are willing to skip the testing and release an untested app? Do you know that the cost of fixing bugs in production is way more expensive than to fix it during development. Based on data by IBM, the cost of finding bugs is 30 times more expensive at the later stages compare to design and architecture phase.

Not only that, don’t forget all the possible losses that you might have, and losing your customers/users confident as well.

We’re startup/small/new company/we can’t afford to do testing.

Let me tell you this, not having any testing is basically a recipe for disaster. You think you’re saving some money in the beginning, but, you may lose so much more in the end.

Currently, most app is similar to each other, since you’re a new player, what makes you different? The quality of your app! Having a quality app will help you retain your current users and at the same time giving confidence and acquiring new users!

Maybe some of you has a way of thinking like, “it’s ok. we’re new and we’re allowed to have untested/buggy app.” Well, now, let’s put yourself from users perspective. I can bet that, you don’t care either this startup is new, or this app was just newly launched, because what you care is you want the app working as intended. E.g. If it’s an e-commerce, all you care is to be able to make a purchase successfully.

Time

Most if not all company either big or small, new or old wants to release their system or app at the soonest. Sometimes, they think, just doing minimal testing or “Happy Path” testing is enough and we can straight release it or even worst, skip the testing phase and just it. Often times, most company will think that adding testing in the cycle will delays their process and can be time consuming.

If you use the right expertise and the right testing method, testing can be done correctly without taking so much time. Most important things is the quality! We want to have a high quality app in order to ensure maximum customers and users satisfaction!

What’s the worst can happen if we don’t do testing?

Well, let’s see the real life events that happen due to software or application bugs.

  • Toyota recalls 625,000 cars over software malfunction.
  • Nissan Motor Company had to recall over a million cars due to the software bugs in the airbag sensor detectors.
  • 60 percent of Starbucks in the US and Canada being forced to close because they were unable to process payment transactions due to bugs in the POS system.

Let’s get closer to our SEA region

  • Malaysia’s biometric system error on 2011 : Travelers were pissed off after they were forced to wait nearly an hour and a half to pass through Malaysia’s immigration checkpoints. A lot of them had to change or cancel their travel plans all together, even worse is this happen during the peak holiday season.
  • In 2014, Jollibee lose millions of pesos a day due to a malfunction system that forced some of its stores to close.
  • A “software logic issue” with the new signalling system and a “confluence of failure conditions” caused the train collision at Joo Koon MRT station Singapore on Nov 15, 2017.

What works before must work now!

If you see above screenshot, user were telling that before this, it works just fine, but after updates, it doesn’t work anymore. This is because the developer or the app company doesn’t do regression testing! Whenever you do updates or enhancement to your app, regression testing is a must! So that, it won’t break the previous release functionality or the whole business process!

In cases where previous release you don’t do any thorough testing, for the next release, this is one version of the app you MUST do testing in your cycle!

The Future of Testing

When I started my career in the testing industry, there was a huge discussion that says “Manual Testing will be replace by automation checking”. Well, up until now, manual testing is still in demand! This is due to automation checking can’t replace a human brain. All the decision making, test data analysis, the most important part is thinking, which can’t be done by the script! Currently the huge discussion now is AI going to replace manual testing. My stand is as above. AI will surely helps a lot and give a huge impact in software testing, but again, we still need human brain to do the thinking! It won’t take over the testing but surely it will change the way testing is done.

Software Testing has evolved and will continue evolving. In order to stay relevant as a software tester, you need follow the changes. You can’t afford to be the same or just stick on whatever you’ve been doing for the past 10 years! Or else, you will be irrelevant! Put effort on learning new things, do some research etc.