Tuesday, February 7, 2023

Software Testing Basics | Software Testing for Beginners | Manual Testing

Software Testing Basics

Software Testing is important part part of Software Engineering. It plays vital role in software delivery. It determines the critical bug before deployment. There are multiple Testing Types and Techniques. In this article I have discuss the Testing Types and Techniques so that a beginner can understand software testing concepts and write testcases.

What is Software Testing?

Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that software product is Defect free. 

Functional and Non-Functional Testing

Functional Testing

Functional testing is testing the ‘Functionality’ of a software or an application under test.It tests the behavior of the software under test. Based on the requirement of the client, a document called a software specification or Requirement Specification is used as a guide to test the application.
  •  Unit Testing 
  • Smoke Testing 
  • Integration Testing 
  • System Testing  

 

·    Unit Testing This software testing basic approach is followed by the programmer to test the unit of the   program. It helps developers to know whether the individual unit of the code is working properly or not.

         Smoke Testing is a software testing process that determines whether the deployed software build is stable or not. Smoke testing is a confirmation for QA team to proceed with further software testing 

     Integration testing: It focuses on the construction and design of the software. You need to see that the integrated units are working without errors or not.

System testing: In this method, your software is compiled as a whole and then tested as a whole. This testing strategy checks the functionality, security, portability, amongst others.

 

Non Functional Testing

Non-functional testing is a type of testing to check non-functional aspects (performance, usability, reliability, etc.) of a software application. It is explicitly designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing.
  • Load Testing 
  • Stress Testing 
  • Usability Testing

Load Testing: An application which is expected to handle a particular workload is tested for its response time in a real environment depicting a particular workload. It is tested for its ability to function correctly in a stipulated time and is able to handle the load.Below are few Load Testing tools

  • JMeter
  • WebLoad
  • LoadNinja


 Stress Testing: In Stress testing, the application is stressed with an extra workload to check if it works efficiently and is able to handle the stress as per the requirement.
 
Example: Consider a website which is tested to check its behavior when the user accesses is at its peak. There could be a situation where the workload crosses beyond the specification. In this case, the website may fail, slow down or even crash.

Stress testing is to check these situations using automation tools to create a real-time situation of workload and find the defects.For Stress Testing we need environments 

  • BlazeMeter
  • AWS Distributed Load Testing Environment

Usability Testing:
In this type of testing, the User Interface is tested for its ease of use and see how user-friendly it is.

Security Testing:

Security Testing is to check how secure the software is regarding data over the network from malicious attacks. The key areas to be tested in this testing include authorization, authentication of users and their access to data based on roles such as admin, moderator, composer, and user level.

 It is very important now a days. Cyber security is another topic to handle below things

Examples:

  • Penetration
  • Hacking
  • Bash Scripting
  • Dictionary Attack

Software Testing Techniques

Software Testing Techniques help you design better test cases. Since exhaustive testing is not possible; Manual Testing Techniques help reduce the number of test cases to be executed while increasing test coverage. They help identify test conditions that are otherwise difficult to recognize.

 

  • Boundary value Analysis
  • Equivalence Class Partitioning

  • Decision Table 

     

Boundary Value Analysis (BVA)

Boundary value analysis is based on testing at the boundaries between partitions. It includes maximum, minimum, inside or outside boundaries, typical values and error values.

It is generally seen that a large number of errors occur at the boundaries of the defined input values rather than the center. It is also known as BVA and gives a selection of test cases which exercise bounding values.

This black box testing technique complements equivalence partitioning. This software testing technique base on the principle that, if a system works well for these particular values, then it will work perfectly well for all values which comes between the two boundary values.

Example:

Input condition is valid between 1 to 10

 Boundary values 0,1,2 and 9,10,11

 

  Equivalence Class Partitioning

Equivalent Class Partitioning allows you to divide set of test condition into a partition which should be considered the same. This software testing method divides the input domain of a program into classes of data from which test cases should be designed.

The concept behind this technique is that test case of a representative value of each class is equal to a test of any other value of the same class. It allows you to Identify valid as well as invalid equivalence classes.

Example:

Input conditions are valid between

 1 to 10 and 20 to 30

Hence there are five equivalence classes

--- to 0 (invalid)

1 to 10 (valid)

11 to 19 (invalid)

20 to 30 (valid)

31 to --- (invalid)

You select values from each class, i.e.,

-2, 3, 15, 25, 45


Decision Table

The decision table is a software testing technique which is used for testing the system behavior for different input combinations. This is a systematic approach where the different input combinations and their corresponding system behavior are captured in a tabular form.

This table helps you deal with different combination inputs with their associated outputs. Also, it is known as the cause-effect table because of an associated logical diagramming technique called cause-effect graphing that is basically used to derive the decision table.


 

In the above example,

  • T – Correct username/password
  • F – Wrong username/password
  • E – Error message is displayed
  • H – Home screen is displayed

Now let’s understand the interpretation of the above cases:

  • Case 1 – Username and password both were wrong. The user is shown an error message.
  • Case 2 – Username was correct, but the password was wrong. The user is shown an error message.
  • Case 3 – Username was wrong, but the password was correct. The user is shown an error message.
  • Case 4 – Username and password both were correct, and the user is navigated to the homepage.

 

References: 

https://www.edureka.co/blog/what-is-software-testing/
https://www.guru99.com/software-testing.html