Software Testing Methodologies

What are they?

Alwis Lim
7 min readNov 23, 2018

Testing Methodologies are basically strategies, methods (duh!) that are used to test a product. For example, a Boeing Jetliner is tested to ensure it is fit and serves its intended purpose — flying. They are put through tests like cold weather conditions, single-engine landing, full load landing, ability to navigate in stormy conditions, etc.

These tests ensure that there are no undesirable side effects when used in ways outside of its intended purpose, at the same time ensuring they’re able to function as it was meant to be.

Testing Methodologies do the same thing as these aeroplane tests, they ensure that when you press the “power on” button on your computer, it turns on the computer and doesn’t overheat the battery and explode, they ensure that when you press the “fork” button on a Github repository, it forks the repository and doesn’t send you advertisements about forks, they ensure that when you use a straw, you’re able to fill your mouth with soda and not a mix of soda and air.

What are Software Testing Methodologies?

They’re basically Testing Strategies, just, for software. They ensure that a software application serves its due purpose and has no undesirable side effects, they go from testing individual components, to the entire application itself! However, in Software Testing Methodologies, there’s two big umbrellas of Testing Strategies, they are Functional Testing and Non-Functional Testing.

They’re basically Testing Strategies, just, for software.

Before we move on, ask yourself this — why are Testing Methodologies important?

Because in any product, hardware or software, things don’t always go according to how you planned it. Without testing, it often leads to unstable products that is a bug haven, unfortunately, in this scenario, calling in Pest Control won’t do you much help to remove the bugs, you’ll have to face the consequences of having your clients be presented a flawed product, and them questioning your ability.

Therefore, having a good and proper Testing plan with a variety of testing Methodologies will help you in ensuring you meet your deadlines with a product that you know serves its intended purposes with the required usability and security. Therefore being unlikely to give any major unexpected bug that would impact its core functionality.

Functional Testing Methodologies

Functional Testing consists of 4 different types of testing, Unit Testing, Integration Testing, System Testing and Acceptance Testing. These tests serve to ensure that it serves its requirements and are done using specifications provided by the client.

Unit Testing

Unit Testing tests individual software modules or components that make up the entire software. This is often done when the module is first created as part of the specifications provided, each module function is tested by a fixture written in the same language.

For example, I have a module that checks the number of people currently in a theme park using the functions entered() and left(). I will have a test where my function entered() is checked to ensure that it outputs the number of people who have entered the park, not the number of people who have left the park.

So, to conclude, Unit Testing tests individual units, or components, or software modules or … (I don’t think I need to give more examples 😉).

Integration Testing

Integration Testing is also commonly known as Scenario Testing. What happens is that Integration Testing tests the combined functionality of successfully Unit Tested components, or in other words, tests that the components / modules work hand-in-hand together.

For example, I have an aircraft engine component and a fuselage component, I have done Unit Testing to both, where I have ensured the engine produces enough thrust, and that the fuselage is able to hold all the passengers, cargo and crew. Then, I combine them together with other components like wings, rudder, to test that if they’re able to work together to produce an aeroplane, that when the engine produces thrust, the fuselage is able to be flown off the ground, guided by the wings and controlled by the pilots in the cockpit.

So, to conclude, Integration Testing tests all of the components that have been unit tested in a scenario / together, to ensure that they’re able to function as required in the specifications.

System Testing

After Unit Testing and Integration Testing, comes System Testing. System Testing is used to ensure that there are no bugs or errors by putting it through user-expected working conditions as well as potential exception and edge conditions.

For example, I system test my aeroplane to ensure that when it flies, the wings doesn’t fall off due to a manufacturing fault (or a bug). When I system test my aeroplane, I ensure that when a lightning strikes it, it doesn’t break apart into a million pieces but instead continues functioning as normal.

So, to conclude, System Testing is really just testing for bugs and errors and making sure they work according to the specifications.

Acceptance Testing

By now, any bugs that have popped up should have already been fixed and any errors been corrected. Finally, we have come to the last stage — of functional testing. This testing is essentially a test of the entire software application, ensuring that every button works like how it’s supposed to, every download button downloads the right thing every page displays its needed information.

I don’t have any example for this, it’s really just testing everything — like pressing all the buttons on the lift to made sure it worked 😜.

So, to conclude, Acceptance Testing is really just testing the entire thing, that’s all there is.

Commercial Break!

Photo by Jakob Owens on Unsplash

Check out my other article on different Wi-Fi Security Protocols!

Be sure to follow me too so that you’re informed when I post a new article, I post about all things IT!

Non — Functional Testing Methodologies

Functional Testing is testing according to the specifications, however, Non-Functional Testing involves testing the application against defined technical qualities, for example, how an engine performs when reused over and over again continuously for a week without rest.

There are four types of Non-Functional Testing, they are Performance Testing, Security Testing, Usability Testing and Compatibility Testing.

Performance Testing

During Performance Testing, we mainly test for 3 things, how the system behaves under an increasing load, for example, how a server behaves when it’s fed thousands of packets every second for a minute, whether or not the system can operate at the required response times when subjected to its expected loads, meaning the server doesn’t take 25 minutes to send 1Mb of data, and lastly, finding the point in which the system that’s being tested will crash.

Essentially, it’s testing how the software behaves under pressure, it’s like revving your car up just to see how loud it can go.

Security Testing

As the name implies, this tests the security of the software, whether or not non-authenticated users can view content that only authenticated users can. This is a very important step of Testing and should always be done before public release, imagine Netflix having a security vulnerability that would allow anyone and everyone to view its contents for free!

Don’t think I need to provide you any examples, I’m sure you’ve heard of the dozens or so Cyber Attacks happening everyday.

Usability Testing

Usability testing is something closely linked to User Experience, it looks at five aspects, learnability, efficiency, satisfaction, memorability and errors. Essentially it ensures when users look at your User Interface, they know how to use it intuitively, when errors pop up, the Users know what they mean.

Compatibility Testing

Last but not least, Compatibility testing, this tests that the software is compatible with all the specified points of use, for example, the software is able to be used on all PCs, regardless of screen resolution and OS version. This is commonly done for Websites, ensuring that they’re responsive across all screen sizes and resolutions.

We’ve come to the end of the two main types of Testing Methodologies! It was surely a pleasure writing this one!

If you have any questions in regards to this, don’t hesitate to drop me a comment and I’ll be sure to answer them promptly! 😃

Thank you for taking your time to read my article! Just a few things I would like to say as a disclaimer.

1. The information provided in this article is as accurate as to my research and personal experience, you should never quote this article for official purposes.

2. The information provided in this article is for educational purposes only, I am not responsible if you were to use this information for malicious purposes or get yourself into legal trouble.

If you want to find out more on something else security / tech-related, comment section’s below!

Hope you enjoyed my article and don’t forget to smash that clap button 😉.

--

--