Basics of Software Testing & STLC [Part-1]

All you need to know about software testing and Software Testing Life Cycle

Praveen Mekala
Tilicho Labs
6 min readFeb 18, 2022

--

In this post, I’m going to cover some software testing basics that you need to know. Here are some of the topics you’ll read about:

  • Software testing definition
  • The importance of software testing
  • The types of software testing
  • What is STLC?

Software testing is the process of verifying and validating the functionality of an application to find whether it satisfies the requirements or not.

OR

It’s the process of finding the defect in an application by making sure that the developed application meets the end-user requirement

Why testing?

Testing is important because software bugs could be expensive or even dangerous. The goal of software testing is to find errors, gaps, or missing requirements in comparison to the actual requirements.

A properly tested software product ensures dependability, security, and high performance, which leads to time savings, cost-effectiveness, and customer satisfaction.

Why software testing is vital to good software development?

Enhances product quality

Any business can bring value to their customers is only when the product is ideal. Businesses have to make sure that users don't face any issues while using their product, this can be achieved by making the product bug-free.

Improves/establishes cost-effectiveness

Testing our project on time can save money in the long run. Software development consists of many stages and if bugs are caught in the earlier stage it costs much less to fix them.

Improves application security

While using an application customer is bound to reveal some personal information, so to prevent any sought of hacking of the application security testing is just before the software is released. This can make customers feel safe while using the application.

For instance, banking applications or e-commerce stores need payment information. If the developers don’t fix security-related bugs, it can cause massive financial loss.

The other part of security is not losing your data. It’s common today for people to store data in cloud storage. You also probably have your photos and files stored on iCloud or Google drive. So the security of a product not only protects information from hackers but also makes sure it’s not lost or gets corrupted.

Improves customer satisfaction

The ultimate goal for a product owner is to give the best customer satisfaction. Software should be tested in order to bring the best user experience possible.

Fixes/establishes compatibility with different devices and platforms

For example, An organization has developed an application and the tester must check whether the application runs on different devices and platforms.

And sometimes an application that works fine on one browser doesn’t work on another. So there is a need for testing in multiple browsers.

Types of Testing

Manual Testing

It’s a process in which the tester compares the developed code against the requirements manually.

Automation Testing

It’s a process in which the tester compares the developed code against the requirements by writing test scripts and executing them.

White-box Testing

This testing is mostly done by developers. In this, the developers test the code by writing unit tests. This type of testing is done when the internal structure of the software is known.

Black box testing: This testing is mostly done by testers. This testing is done without knowing the internal structure of the application.

Module / Unit testing: In this testing, the whole application is divided into modules and then each and every module is tested individually.

Ex: Consider a banking application that has a login, check balance, transfer money, and logout functionalities. Now the whole app is divided into 4 modules login, check balance, transfer money, and logout modules, and each module is separately tested.

Integration Testing: In this testing, the modules are integrated with one another and tested.

Smoke testing: In this testing, the basic functionalities of the app are tested. This type of testing is done mostly on unstable builds or the initial builds.

Sanity testing: In this testing, the new functionalities and bug fixes of the app are tested. This type of testing is done mostly on stable builds.

Regression testing: This type of testing is done to make sure that the old functionality of the app is not affected due to new implementations in the application.

System testing: This testing is also known as end-to-end testing, in this whole app is treated as a single entity and all the test cases are executed.

Software Testing Life Cycle (STLC)

This is a sequence of different activities performed during the software testing process.

Requirement Analysis

What is a requirement?

The requirement is a thing or flow which is needed by the client.

What is a requirement analysis?

It’s the process of gathering the requirements by reading or listening. This is a very important phase in testing. In this phase quality assurance team understands the requirements like what is to be tested.

Entry Criteria: You must have the requirements from the client to start requirement analysis.

Exit Criteria: A document of understanding is prepared and get confirmed by the client.

Test Planning

Following tasks are performed in this stage

  • Confirm the scope of the testing phase
  • Conduct review of requirements with the Business, Design team.
  • Identify resource requirements including any training.
  • Identify test environments to support the test phase.
  • Create a Test plan/approach.

Entry Criteria: Document of Understanding is prepared and confirmed by the client.

Exit Criteria: A Test Plan document is prepared and approved by the project manager.

Test Cases Development & Environment Setup

The test case development phase gets started once the test planning phase is completed. In this phase testing team note down the detailed test cases. The testing team also prepares the required test data for the testing. When the test cases are prepared then they are reviewed by the quality assurance team.

Basically, the test environment decides the conditions on which software is tested. This is independent activity and can be started along with test case development. In this process, the testing team is not involved. either the developer or the customer creates the testing environment.

Entry Criteria: A Test Plan document is prepared and approved by the Project Manager.

Exit Criteria: The environments setup is done and the written test cases are approved by the Test Manager.

Test Execution

In this phase testing team start executing test cases based on prepared test cases in the earlier step.

Entry Criteria: The environments setup is done and the written test cases are approved by the Test Manager.

Exit Criteria: All the test cases are executed in the Testing environment and bugs are tracked.

Test Closure

This is the last stage of STLC in which the process of testing is closed by submitting a closure report that gives a summary of all the tests conducted during the testing process. It also gives a detailed analysis of the bugs removed and errors found.

Entry Criteria: All types of testing are done and test metric’s are ready

Exit Criteria: Test closure report is prepared and is shared with other stakeholders in the project.

Where to go from here?

In the subsequent blog posts, let’s see how all this looks in reality with a practical/live example.

--

--