An Introduction To Software Testing

October 27, 2021

By Deepa Sannappa

Software testing is the process used to identify the correctness, completeness and quality of developed computer software. It is an activity to check whether the actual results match the expected results and to ensure that the software system is Defect free. It helps to identify errors, gaps or missing requirements in contrary to the actual requirements. It can be either done manually or using automated tools. In other words, it means verification of Application Under Test (AUT).

STLC Model infographic

Manual Testing

Manual Testing is a type of Software Testing where testers manually execute test cases without using any automation tools or coding. The key concept of manual testing is to ensure that the application is error free and it is working in conformance to the specified functional requirements.

How To Perform Manual Testing

1. Read and understand the software project documentation/guides. Also, study the Application Under Test (AUT) if available.

2. Draft test cases that cover all the requirements mentioned in the documentation.

3. Review and baseline the test cases with Team Lead, Client (as applicable).

4. Execute the test cases on the AUT.

5. Report bugs.

6. Once bugs are fixed, again execute the failing test cases to verify they pass.

Automation Testing

Automation Testing means writing test scripts (code) or using an automation tool to execute the test case suite. Test automation is used to automate repetitive tasks (e.g. Regression tests) and other testing tasks which are difficult to perform manually. The goal is to complete test execution in a less amount of time. The popular tools are Selenium, QTP, Rational Functional Tester.

Types Of Software Testing

Typically Testing (Manual or Automation) is classified into two categories.

  • Functional Testing
  • Non-Functional Testing

Functional Testing

Functional testing verifies each function of an application or software. The tester verifies functionality with a specified of requirements. Testing the behaviour of the software is the main concern.

Functional testing infographic

The Different Types Of Functional Testing Include:

Unit testing: In unit testing, the tester checks individual software components. The aim is to test whether the components behave according to the requirements.

Integration testing:Integration testing deals with testing individual components or modules after they are combined in a group.

System testing: Here, the tester executes test cases for verifying the compliance of integrated and completed software along with specifications.

Sanity testing: In Sanity testing, tester tests logical reasoning related to the working of the program.

Smoke testing: Smoke testing tests simple and basic functionalities, such as if the user is able to log in or log out.

Interface testing: These tests check whether the communication between two software systems is correctly carried out.

Regression testing: This is probably one of the most important testing phases. Here, the old test cases of the entire application are executed after a new functionality has been implemented.

Acceptance testing: Here, the intended users try the product and report bugs.

Non-Functional Testing

Non-functional testing considers parameters such as reliability, usability, and performance. A non-functional test might be checking how many users can log in to the system at the same time.

Non-functional testing infographic

Non-Functional Testing Types Include:

Performance testing:The performance or speed of the application is tested under the required workload.

Load testing:This tests an application’s behavior under a huge workload. So, if you’re testing a website, load testing checks the site’s functionality and performance under high traffic.

Stress testing:Stress testing determines software robustness by assessing whether it’s working beyond regular operation.

Volume testing:This tests the performance of the system by loading the database to an increased volume of data.

Security testing:Here, test cases are executed to check whether the system is safeguarded against sudden or deliberate attacks from internal and external sources.

Compatibility testing: Test cases are executed to check whether the application is compatible with varying environments. For example, if you are testing a web application, compatibility testing deals with how the website works on different browsers or devices.

Recovery testing:Here, testers determine an application’s capacity to recover from hardware crashes and failures.

Reliability testing: This procedure checks where an application can perform a particular task without failure within a specific timeframe.

Usability testing:Usability testing explores the end-user’s ease of use in terms of learning, operating, and preparing inputs and outputs.

Compliance testing: This determines the system’s compliance with external and internal standards.

Localization testing: Here, testers check the behaviour of a product according to local or cultural settings and environment.

Software testing is an essential component of the software development lifecycle. It is not a single activity that occurs after the implementation of the code, but rather a component of each stage of the lifecycle. Testing, like the other operations in the software lifecycle, has its own set of difficulties. The need of good, well-planned testing efforts will only grow as software systems get more complicated.

Deepa

Deepa Sannappa

QA Analyst

Deepa is a QA Analyst who ensures that final products meet quality standards. She studied computer science and has a Bachelor of Engineering with over 5 years of experience in banking and e-commerce spaces. Deepa is passionate about yoga, meditation, and walking outside. She also enjoys solving puzzles. Overall she likes to engage in activities that energize both her body and mind.