software-testing

Notes on Software testing

Notes on Software testing:

software-testing

There are mainly four ways of reducing bugs from a program, which includes:

-Review

-Testing

-Specification and verification of the program

-Appropriate use of development process.

 

Difference between verification and validation:

Verification is the process where the output of one phase of the development confirms the previous level, whereas validation is the process 

to determine whether the developed system confirms its specific software requirements.

 

 

During the software development, it is tested at four levels:

-Unit testing

-Integration testing

-System testing

-Regression testing

 

 

Life cycle model vs V model:

V model is a variant of the waterfall model in which testing activities are planned in parallel to the development process.

 

What is a test case?

Test case needs to establish whether the functionality is working correctly. Therefore test team works at different /various roles 

like planning, scenario, and design a case, analysis of results, tools support, and some external people to check the functionality of the

software.

Black box Test cases are designed using the functional specification of the program, without knowing the internal structure

 of the program.

 

Unit testing: It’s a type of testing which is carried out at the unit level before integrating with the other parts of the software. 

Unit testing includes testing of individual modules, classes, components, methods before integration.

 

Different strategies of black-box testing:

-Equivalence class

-Special value testing

-Boundary value testing

-Robustness testing

-Combinatorial testing

Equivalence class testing divides the input data into parts from where we derive the test cases. when we create equivalence classes,we need to create both valid and invalid sets of value for the class.

Special value testing where the tester believes that certain values would fail when he executes the program.

Boundary value analysis is a strategy in which we select test cases near the boundaries of the equivalence class. Therefore 5 

situations /scenarios can be seen

a- minimum boundary value

b- above an immediate minimum value

c- between a minimum and maximum value

d- Below immediate maximum value

e- maximum boundary value

 

 

Combinatorial testing:

when the number of parameters increases that time, equivalence testing and special value testing is difficult to do therefore combinatorial 

testing needs to be done which involves testing of the environment or configuration of data.Cobinamatorial testing includes:

-decision table based testing (tables broken into conditions, actions, and rules)

-Cause effect graphing (maps causes to effects i.e input to output)

-pairwise /all pair testing (test all possible combinations of input)

 

White box testing/ structural testing:

This type of strategy is the design that is based on the structure /code of the program.

 

Different strategies of white-box testing:

-Coverage based testing

-Fault-based testing

Coverage-based testing: test certain elements of the program. It includes:

* Basic condition coverage (every single condition have both false and true values)

* basic condition/decision coverage (covers basic condition as well as decision and branch condition)

* Multiple condition coverage( each condition assume all possible combinations of false and true values)

* Modified condition and decision coverage (tests all imp combinations without blowing up the test suit size)

* Path coverage testing (design cases that at least once all linearly independent paths are executed.

 

 

Control flow graph:

Sequence and way instructions of the program execute.

-when loops in the paths increase then it is difficult to perform path testing.

 

Data Flow testing:

 That covers the uses of different variables in the program.

Fault-based testing: includes-

Mutation testing: where specific faults/error need to be introduced into the program and then check whether 

its effectiveness of failure is happening.

 

Integration testing: Strategies are as follows:

-big -bang: Integrate all the modules and then perform a test

-Top-down: Integrate and test top module first.

-Bottom-up: Integrates bottom level module first.

Sandwich/mixed- integrates both top-down approaches.

 

System testing: when the software is fully developed, system testing is used to validate the requirements of the software. It includes:

*alpha testing (carried by developing team)

*beta testing (carried by selected friendly friends/customers)

*accepting testing: (performed by customer)

System testing checks the system functionality and non-functional against the requirements.

Leave a Comment

Your email address will not be published. Required fields are marked *