Software Testing: THE WHAT,THE WHY AND THE HOW .....
A noob's guide to software testing

I am React Developer from Nigeria willing to collaborate on fun projects
Hello Guys, Draq here.
Today we'll be discussing about a rather important aspect of the tech world, though underappreciated,overlooked and does not get as much shine as some other fields from newbies and fresh techies; It stands as a very vital aspect in the realm of software development, so without further ado, let's get right into it.
WHAT IS SOFTWARE TESTING ALL ABOUT?
We've all had cases where a particular software does not work as expected, you expect a particular button to function in a certain way but it behaves rather weirdly, or a certain task you're running on a software just takes forever to load and now you're just annoyed; we've all been there. Software testing was then birthed in the early 80's to solve this underlying issue of having to deal with bugs and fixes after a software has already been released or at least reduce drastically having to deal with such bugs after release.
Software testing simply put, is the process of evaluating,checking and verifying that a software product or application works as it is expected to. The benefits of testing include preventing bugs, reducing development costs and improving performance.
Software testing simply put, is the process of evaluating,checking and verifying that a software product or application works as it is expected to.
Types of Software Testing
There a number of software tests, each with different objectives, purposes and approaches:
- Acceptance testing: Verifying whether the whole system works as intended.
- Integration testing: Ensuring that software components or functions operate together.
- Unit testing: Validating that each software unit performs as expected. A unit is the smallest testable component of an application.
- Functional testing: Checking functions by emulating business scenarios, based on functional requirements. Black-box testing is a common way to verify functions.
- Performance testing: Testing how the software performs under different workloads. Load testing, for example, is used to evaluate performance under real-life load conditions.
- Regression testing: Checking whether new features break or degrade functionality. Sanity testing can be used to verify menus, functions and commands at the surface level, when there is no time for a full regression test.
- Stress testing: Testing how much strain the system can take before it fails. Considered to be a type of non-functional testing.
- Usability testing: Validating how well a customer can use a system or web application to complete a task.
The objective of every test regardless of which one is used is to fulfill and pass a certain (critical) requirement. However testing a whole ton, i.e testing with different forms helps the software tester or the testing team cross almost all their tees and dot all their i's therefore accounting for very hard to predict scenarios and in turn results in fewer bugs after production.
The objective of every test regardless of which one is used is to fulfill and pass a certain (critical) requirement.
Of the aforementioned tests, The unit tests and integration tests are some of the most common tests used in a development environment because it helps in finding bugs faster which in turn saves a lot of time trying to find out what went wrong and how to fix it.
Even a simple application can be subject to a large number and variety of tests. A test management plan helps to prioritize which types of testing provide the most value – given available time and resources. Testing effectiveness is optimized by running the fewest number of tests to find the largest number of defects.
Why is Software Testing important though?
Few can argue against the need for quality control when developing software. Late delivery or software defects can damage a brand’s reputation — leading to frustrated and lost customers. In extreme cases, a bug or defect can degrade interconnected systems or cause serious malfunctions.
Nissan having to recall over 1 million cars due to a software defect in the airbag sensor detectors, Or a software bug that caused the failure of a USD 1.2 billion military satellite launch. The numbers speak for themselves. Software failures in the US cost the economy USD 1.1 trillion in assets in 2016. What’s more, they impacted 4.4 billion customers. These are things that could have been resolved beforehand and would save these companies a lot of money if a proper testing team had been involved
Though testing itself costs money, companies can save millions per year in development and support if they have a good testing technique and QA processes in place. Early software testing uncovers problems before a product goes to market. The sooner development teams receive test feedback, the sooner they can address issues such as:
- Architectural flaws
- Poor design decisions
- Invalid or incorrect functionality
- Security vulnerabilities
- Scalability issues
When development leaves ample room for testing, it improves software reliability and high-quality applications are delivered with few errors. A system that meets or even exceeds customer expectations leads to potentially more sales and greater market share.
How do you test your software?
Given the vast amount of programming languages existing, there are quite a number of programming languages in which tests can be written, This includes Python, Javascript, Java, C# and many others.
Case Study: Javascript
One of the most popular web technologies used in recent times is Javascript for example, which over the years has been used to be develop a number of frameworks like React, Vue and Angular to mention a few.
Frameworks have also been built with Javascript to test web apps; such as Jest and Mocha. These allow us to write intuitive tests for our software.
Below is a snippet from Jest official documentation showing how test can be written using Javascipt

This code shows a function that returns the sum of the arguments passed into a function; and the function being exported from the file
function sum(a, b) {
return a + b;
}
module.exports = sum;
This shows the tests written which just checks if the function sum works as it should
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
The test keyword takes in two arguments; the first being the description of what the test is to do and the second a function with certain keywords jest has provided to test for the functionality of our code.
It's as simple as that, even though more complex code could be written given the size of the software in context but this is essentially all you need to get started.
I hope you enjoyed reading this, as I did writing it, Feel free to comment and drop a thumbs up or like if you enjoyed it.
Bye for now, Draq.😊

