Types of Software Testing

In this post, we will describe different types of software testing. Various types of software testing are performed to achieve different objectives when testing a software application.

Unit Testing or Component Testing: UNIT TESTING is a level of software testing where individual units/ components of a software are tested. ... A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output. In procedural programming, a unit may be an individual program, function, procedure, etc.This testing is conducted by developer or white box tester.
For Example : if a developer is developing a loop for searching functionality of an application which is a very small unit of the whole code of that application then to verify that the particular loop is working properly or not is known as unit testing.

Structural Testing Techniques: Structural testing is the type of testing carried out to test the structure of code. It is also known as White Box testing or Glass Box testing. This type of testing requires knowledge of the code, so, it is mostly done by the developers.
For Example : Testing each line in the programme at least one time , verify the conditional statement are working properly or not

Different method of Structural Testing Techniques  
Branch testing: Branch Testing is defined as a testing method, which has the main goal to ensure that each one of the possible branches from each decision point is executed at least once and thereby ensuring that all reachable code is executed.
Path Testing: Path testing is a structural testing method that involves using the source code of a program in order to find every possible executable path. It helps to determine all faults lying within a piece of code. This method is designed to execute all or selected path through a computer program
Statement testing:  A test strategy in which each statement of a program is executed at least once. It is equivalent to finding a path (or set of paths) through the control-flow graph that contains all the nodes of the graph.
Condition Testing: It is another structural testing method that is useful during unit testing, using source code or detailed pseudocode as a reference for test design. Its goal is the thorough testing of every condition or test that occurs in the source code.

Functional Testing:   FUNCTIONAL TESTING is a type of software testing whereby the system is tested against the functional requirements/specifications. Functions (or features) are tested by feeding them input and examining the output. Functional testing ensures that the requirements are properly satisfied by the application. Functional testing is a quality assurance process and a type of black-box testing that bases its test cases on the specifications of the software component under test
Examples of Functional testing are. Unit Testing, Smoke Testing, Sanity Testing, Integration Testing etc.

Error Based Testing: Testing is conducted to analyze  the impact of the defect on the application. Intentionally adding the defect in application.

Mutation Testing: Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors. It is a type of White Box Testing which is mainly used for Unit Testing. 

Integration testing:  INTEGRATION TESTING is a level of software testing where  individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and Test stubs are used to assist in Integration Testing.
Test Driver and Stub:  This are the temporary components which are used in place of main and sub module 
Driver: A substitute for main module in bottom-up integration 

Bottom-up Integration
Stub: It is a substitute for sub module in Top-down integration

Top-Down Integration
Different type of approaches in integration testing 
1. Big Bang integration:  Big Bang Integration Testing is the Integration testing where no incremental testing takes place prior to all the system's components being combined to form the system. In this approach, individual modules are integrated until all the modules are ready, and all or most units are combined and tested in one go.
However, if there are too many modules and the system is multilevel and complex, it is better not to apply the big-bang integration testing.

2. Top-down integration:  Top-down testing is an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module.

3. Bottom – up Integration: A type of integration testing, bottom-up approach is a testing strategy in which the modules at the lower level are tested with higher modules until all the modules and aspects of the software are tested properly. 

4. Mixed / Sandwich integration: Sandwich Testing is the combination of bottom-up approach and top-down approach, so it uses the advantage of both bottom up approach and top down approach. ... It is also known as the Hybrid Integration Testing

System Testing:   SYSTEM TESTING is a level of testing that validates the complete and fully integrated software product. The purpose of a system test is to evaluate the end-to-end system specifications. System testing takes, as its input, all of the integrated components that have passed integration testing. It’s a black box testing . during system test we will conduct both functional and non functional testing.

User Interface Testing: Verify the page or window displayed , testing technique used to identify the presence of defects is a product/software under test by using Graphical user interface [GUI].

Object Properties: Verify the properties of an object like enabled , disabled ,colors, X and Y coordinates etc . 

Error guessing: Testing is conducted by performing invalid operations to validate the error msg is displaying or not.

Input Domain Testing: Validate the data accepted by the system , the testing is conducted for the Edit box, input fields etc.

Database Testing:  Database Testing is a type of software testing that checks the schema, tables, triggers etc. of the database under test. It involves creating complex queries for performing the load or stress test on the database and check its responsiveness. It checks integrity and consistency of data.

  • Validate the data in table
  • Constrain primary, foreign key
  • Data migration
  • Security 
  • Performance 
Calculation Testing:  The test is important for bank application , functional application etc. to verify all the calculated values are correct.

Links and URL’s Testing:  this test is only for web application , verify all the links are working correct or not, verify the navigation is as per expected or not. Verify the text link , image link , broken links etc.

Non functional Testing:  NON-FUNCTIONAL TESTING is defined as a type of Software testing to check non-functional aspects (performance, usability, reliability, etc) of a software application. It is designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing. 

Usability testing: Usability testing is a technique used in user-centered interaction design to evaluate a product by testing it on users. This can be seen as an irreplaceable usability practice, since it gives direct input on how real users use the system.

Load Testing:  Load testing is a type of non-functional testing. A load test is type of software testing which is conducted to understand the behavior of the application under a specific expected load. Load testing is performed to determine a system's behavior under both normal and at peak conditions.

Stress Testing: STRESS TESTING is a type of Software Testing that verifies the stability & reliability of the system. This test mainly measures the system on its robustness and error handling capabilities under extremely heavy load conditions. Stress Testing is done to make sure that the system would not crash under crunch situations.

Soak Testing: Soak testing involves testing a system with a typical production load, over a continuous availability period, to validate system behavior under production use. It may be required to extrapolate the results, if not possible to conduct such an extended test.
Note Conducting Load , stress testing etc… for 100 of users is not possible to do manually the tools are : 
  • Load Runner
  • Jmeter Web load
  • RPT (rational performance test tool)
  • Silk Performance 
Memory Testing/ Memory leakage testing:  Some memory got allocated and not used for any purpose are called memory leakage. When accessing the application verify the usage of memory. To find a memory leak, you've got to look at the system's RAM usage.

Volume Testing: VOLUME TESTING is a type of Software Testing, where the software is subjected to a huge volume of data. It is also referred to as flood testing. Volume testing is done to analyze the system performance by increasing the volume of data in the database. Usually conducted when accessing the data from database , performance is calculated by increasing the data transfer b/w the system.

Performance test: Performance testing is the process of determining the speed, responsiveness and stability of a computer, network, software program or device under a workload. Performance testing can involve quantitative tests done in a lab, or occur in the production environment in limited scenarios. This test is needed for application which are accessed by more no of users, accessed from remote locations.
During performance test we are calculate:
  • Response time: Time taken to get response from server to client.
  • Hit per second: No of request revived by the server in 1 second of time
  • Throughput: Throughput – indicates the number of transactions per second an application can handle, the amount of transactions produced over time during a test. 
  • Elapsed Time: Elapsed time is measured by the time from the first moment of sending the data and the time of the last byte of the received response.
Performance of application depends on:
  • Configuration of the system 
  • Network Speed
  • Load on the server
  • Configuration Setting
  • Programming Logic

No comments:

Post a Comment