Insights

At DVT we run regular online events that are focused on the latest technology trends within the IT industry and we invite guest speakers to share their knowledge and insights on various topics. The DVT Insights Events aim to enlighten you, educate you and often, provide a new view on a burning issue within the technology space.

Insights on the Importance of Software Testing
Mario Matthee
Head of SQA Architecture and R&D, Global Testing Solutions, DVT

Insights on the Importance of Software Testing

Wednesday, 30 May 2018 09:33

The importance of software testing cannot be overstated in the development process of any software application. It involves evaluating a system or application to ensure it meets the specified requirements and works as expected. Testing software ensures that the software is reliable, functional, and meets the user's needs.

Automation Testing

Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. Automation Testing is used to re-run the test cases quickly and repeatedly, that were performed manually in manual testing.

One of the most significant and common defects I’ve noticed with recent test automation projects is environment preparation – or rather lack thereof.

Apart from regression testing, automation testing is also used to test the application from a load, performance, and stress point of view. Automated testing can be used to test larger volumes of software when manual testing becomes tedious and time-consuming.

Too many companies seem to want to jump into test automation or performance testing without first getting their ducks in a row; in other words, while the will and the funding might be there, the optimal conditions for functional testing are not.

Cutting Corners on Software Testing Services

Some but not all of this lack of preparedness comes down to cost. It’s easier for a startup organisation writing its own app to take full control of the development cycle and testing process, and therefore limit the cost of provisioning a dedicated testing environment. Whereas a larger organisation like a bank would need to provision multiple environments – development, quality assurance, production and so on – all of which costs money.

To cut costs, some limit their environments to development and production, which makes testing extremely challenging. You ideally don’t want to be testing in a business-critical development or production environment, because test automation needs stability and predictability to work properly, neither of which can be guaranteed with ever-changing data sets in development and production environments.

Reusing Data for Software Testing

Which brings up the next challenge – data. As testers, data preparedness consumes most of our (down)time. The best-case scenario is being able to reuse data for testing; otherwise, you’d need to obtain massive data sets for test automation and then provision the infrastructure, establish security access and get the different systems talking to each other to be able to use the data. This could cause significant delays. On a recent project, we encountered a three-month delay between the estimated start time and the data and environment being made available for testing.

Reusing data makes sense. For example, as a tester I can commit a transaction into the system, track the transaction through the system, and once confirmed successful by the test automation scripts, I can delete all traces of that transaction from the system as if it never happened. Of course, you’d want to have safety nets in place to ensure the scripts can’t operate in any part of the production system, but once these are in place, you are no longer subject to the delays of procuring massive data sets or setting aside large chunks of your physical resources purely for testing.

Types of Software Testing Techniques

1. Static Testing:

  • Definition: These methods don't actually run the software code but focus on examining documents like design plans and requirements.
  • Tool Usage: Tools called static analysis tools help with this.
  • Relevant Testing Techniques: Black box testing, White-box testing.
  • Incorporated Content: Black box testing tests the software product without knowing its internal structure or logic, while White-box testing uses knowledge of its internal structure or logic and code analysis or debugging tools.

2. Specification-Based Testing:

  • Definition: These methods use a model of the software's specification to create test cases.
  • Sub-Techniques: Equivalence Partitioning, Boundary Value Analysis, Decision Table Testing, State Transition Testing.
  • Incorporated Content: Equivalence Partitioning divides the possible inputs or outputs of software into groups that are expected to behave similarly and tests one value from each group. Boundary Value Analysis uses values at the edge or limit of the valid range, and values just outside the valid range.

3. Structural Testing:

  • Definition: Also known as white box testing, this method looks inside the software to test its internal structure.
  • Sub-Techniques: Test Coverage, Statement Coverage, Decision Coverage, Branch Coverage.
  • Incorporated Content: Test Coverage measures the percentage of the software's structure that's been tested. Statement Coverage measures the percentage of executable statements tested.

4. Experience Based Testing:

  • Definition: Testers rely on their own experience and knowledge to design test cases.
  • Key Factors: Both technical and business people's user experiences are important here.
  • Incorporated Content: None needed as the content already covers the essence of experience based testing.

Importance of Software Testing Environment

From an Agile perspective, it’s also important to get your environment ready before embarking on a Scrum process. And by environment, I mean your full environment – don’t make the mistake of thinking you won’t need certain parts of the environment, like QA, to get the process started, because as soon as the release cycle begins and starts changing and you suddenly realise the QA process is needed now – not tomorrow or next week – the delays kick in, which can have a domino effect on the viability of the entire project.

Getting your environment ready in advance means getting your business and IT and infrastructure teams involved from the start, and also getting a maintenance team in place checking the environment as often as needed to keep it optimally functional for testing. My suggestion here is to focus on the ‘golden threat’ – if you have one system that supports three different systems, make sure they’re all communicating with each other. Remember the domino effect and delays it can cause if you don’t.

Also, getting your environment ready doesn’t necessarily mean having all the functionality in place – remember you’re just making sure the conditions and connections are set up and ready for testing, so as your developers start importing code and making changes to that code, you’re ready with your scripts and (reusable) data sets to test it.

Alternate Software Testing Tools

Yes, there are alternatives available if reusing data isn’t an option. Solutions like Docker and Kubernetes come to mind, where you can spin off your environment for testing purposes. These solutions bring with them their own costs and challenges, but at least we’re moving in the right direction. As soon as we make environment initiation and preparedness part of the total solution, we immediately have a better handle on the challenges we face and make it easier for testers and developers to do their work.

Software Testing is Important!

So, before you set off on your next project, ask yourself: Is my software testing strategy well-organised and aligned? What is my strategy around environment and data management? Ask this after the fact, and you risk the seemingly endless purgatory of project delays and, ultimately, project failure. The importance of software testing cannot be overstated in the development process.

Editor's Note: This post was originally published on 30 May 2018, and was updated on 5 March 2024

Published in Software Testing
DVT 25 Years of Service