SOFTWARE TESTING
Principles and Practices
Testing is the process of exercising thesoftware product in pre-defined ways to check if the
behavior is the sameas expected behavior. By testing the product, an organization identifies and
removes as manydefects as possible before shipping it out
A software project is made up of a series of phases. Broadly, most softwareprojects comprise the
following phases.
PHASES OF SOFTWARE PROJECT
Requirements gathering and analysis
Planning
Design
Development or coding
Testing
Deployment and maintenance
The fundamental principles of testing are as follows.
1. The goal of testing is to find defects before customers find them out.
2. Exhaustive testing is not possible; program testing can only showthe presence of defects,
never their absence
3. Testing applies all through the software life cycle and is not an end of cycle activity
4. Understand the reason behind the test.
5. Test the tests first.
6. Tests develop immunity and have to be revised constantly.
7. Defects occur in convoys or clusters, and testing should focus on these convoys
8. Testing encompasses defect prevention.
9. Testing is a fine balance of defect prevention and defect detection.
10. Intelligent and well-planned automation is key to realizing thebenefits of testing.
11. Testingrequires talented, committed people who believe in themselvesand work in teams
Types of testing
1. White box testing
2. Black Box testing
3. Integration testing
4. System and acceptance testing
5. Performance testing
6. Regression Testing
7. Internalization
8. Adhoc Testing
1. White box testing
1
,Black Box Testing
is a software testing method in which the functionalities of software applications are tested
without having knowledge of internal code structure, implementation details and internal paths.
Black Box Testing mainly focuses on input and output of software applications and it is entirely
based on software requirements and specifications. It is also known as Behavioral Testing.
Black Box Testing White Box Testing
the main focus of black box testing is on the White Box Testing (Unit Testing) validates internal structure a
validation of your functional requirements. software code
To conduct White Box Testing, knowledge of underlying prog
Black box testing gives abstraction from code essential. Current day software systems use a variety of progra
and focuses on testing effort on the software and technologies and its not possible to know all of them.
system behavior.
Black box testing facilitates testing
White box testing does not facilitate testing communication am
communication amongst modules
.
Black Box Testing and Software Development Life Cycle (SDLC)
Black box testing has its own life cycle called Software Testing Life Cycle (STLC) and it is
relative to every stage of Software Development Life Cycle of Software Engineering.
Requirement –
This is the initial stage of SDLC and in this stage, a requirement is gathered. Software
testers also take part in this stage.
Test Planning & Analysis –
Testing Types applicable to the project are determined. A Test Plan is created which
determines possible project risks and their mitigation.
Design –
In this stage Test cases/scripts are created on the basis of software requirement
documents
Test Execution–
In this stage Test Cases prepared are executed. Bugs if any are fixed and re-tested.
2
,Black Box Testing Techniques
Following are the prominent Test Strategy amongst the many used in Black box Testing
Equivalence Class Testing: It is used to minimize the number of possible test cases to
an optimum level while maintains reasonable test coverage.
Boundary Value Testing: Boundary value testing is focused on the values at boundaries.
This technique determines whether a certain range of values are acceptable by the system
or not. It is very useful in reducing the number of test cases. It is most suitable for the
systems where an input is within certain ranges.
Decision Table Testing: A decision table puts causes and their effects in a matrix. There
is a unique combination in each column.
How to do BlackBox Testing in Software Engineering
Here are the generic steps followed to carry out any type of Black Box Testing.
Initially, the requirements and specifications of the system are examined.
Tester chooses valid inputs (positive test scenario) to check whether SUT processes them
correctly. Also, some invalid inputs (negative test scenario) are chosen to verify that the
SUT is able to detect them.
Tester determines expected outputs for all those inputs.
Software tester constructs test cases with the selected inputs.
The test cases are executed.
Software tester compares the actual outputs with the expected outputs.
Defects if any are fixed and re-tested.
Tools used for Black Box Testing:
Tools used for Black box testing largely depends on the type of black box testing you are doing.
For Functional/ Regression Tests you can use – QTP, Selenium
For Non-Functional Tests, you can use – LoadRunner, Jmeter
Types of Black Box Testing
There are many types of Black Box Testing but the following are the prominent ones –
Functional testing – This black box testing type is related to the functional requirements
of a system; it is done by software testers.
Non-functional testing – This type of black box testing is not related to testing of
specific functionality, but non-functional requirements such as performance, scalability,
usability.
3
, Regression testing – Regression Testing is done after code fixes, upgrades or any other
system maintenance to check the new code has not affected the existing code.
integration testing or integration and testing (I&T)
What is integration testing?
Integration testing -- also known as integration and testing (I&T) -- is a type of software
testing in which the different units, modules or components of a software application are tested
as a combined entity. However, these modules may be coded by different programmers.
The aim of integration testing is to test the interfaces between the modules and expose any
defects that may arise when these components are integrated and need to interact with each other.
What does integration testing involve?
Also known as string testing or thread testing, integration testing involves integrating the various
modules of an application and then testing their behaviour as a combined, or integrated, unit.
Verifying if the individual units are communicating with each other properly and working as
intended post-integration is essential.
To perform integration testing, testers use test drivers and stubs, which are dummy programs that
act as substitutes for any missing modules and simulate data communications between modules
for testing purposes. They also use integration-testing tools, including the following:
Selenium is an open source suite that facilitates automated web application testing.
Pytest is a Python testing tool which, according to Pytest.org, enables small tests to be
written easily "yet scales to support complex functional testing for applications and
libraries."
IBM's RFT (Rational Functional Tester) is an object-oriented automated functional testing
tool for performing automated functional, regression, GUI and data-driven testing.
Junit is an open source framework designed for writing and running tests for Java and Java
Virtual Machine (JVM).
Mockito is an open source testing framework for Java.
Jasmine is a development framework for testing JavaScript
4
Principles and Practices
Testing is the process of exercising thesoftware product in pre-defined ways to check if the
behavior is the sameas expected behavior. By testing the product, an organization identifies and
removes as manydefects as possible before shipping it out
A software project is made up of a series of phases. Broadly, most softwareprojects comprise the
following phases.
PHASES OF SOFTWARE PROJECT
Requirements gathering and analysis
Planning
Design
Development or coding
Testing
Deployment and maintenance
The fundamental principles of testing are as follows.
1. The goal of testing is to find defects before customers find them out.
2. Exhaustive testing is not possible; program testing can only showthe presence of defects,
never their absence
3. Testing applies all through the software life cycle and is not an end of cycle activity
4. Understand the reason behind the test.
5. Test the tests first.
6. Tests develop immunity and have to be revised constantly.
7. Defects occur in convoys or clusters, and testing should focus on these convoys
8. Testing encompasses defect prevention.
9. Testing is a fine balance of defect prevention and defect detection.
10. Intelligent and well-planned automation is key to realizing thebenefits of testing.
11. Testingrequires talented, committed people who believe in themselvesand work in teams
Types of testing
1. White box testing
2. Black Box testing
3. Integration testing
4. System and acceptance testing
5. Performance testing
6. Regression Testing
7. Internalization
8. Adhoc Testing
1. White box testing
1
,Black Box Testing
is a software testing method in which the functionalities of software applications are tested
without having knowledge of internal code structure, implementation details and internal paths.
Black Box Testing mainly focuses on input and output of software applications and it is entirely
based on software requirements and specifications. It is also known as Behavioral Testing.
Black Box Testing White Box Testing
the main focus of black box testing is on the White Box Testing (Unit Testing) validates internal structure a
validation of your functional requirements. software code
To conduct White Box Testing, knowledge of underlying prog
Black box testing gives abstraction from code essential. Current day software systems use a variety of progra
and focuses on testing effort on the software and technologies and its not possible to know all of them.
system behavior.
Black box testing facilitates testing
White box testing does not facilitate testing communication am
communication amongst modules
.
Black Box Testing and Software Development Life Cycle (SDLC)
Black box testing has its own life cycle called Software Testing Life Cycle (STLC) and it is
relative to every stage of Software Development Life Cycle of Software Engineering.
Requirement –
This is the initial stage of SDLC and in this stage, a requirement is gathered. Software
testers also take part in this stage.
Test Planning & Analysis –
Testing Types applicable to the project are determined. A Test Plan is created which
determines possible project risks and their mitigation.
Design –
In this stage Test cases/scripts are created on the basis of software requirement
documents
Test Execution–
In this stage Test Cases prepared are executed. Bugs if any are fixed and re-tested.
2
,Black Box Testing Techniques
Following are the prominent Test Strategy amongst the many used in Black box Testing
Equivalence Class Testing: It is used to minimize the number of possible test cases to
an optimum level while maintains reasonable test coverage.
Boundary Value Testing: Boundary value testing is focused on the values at boundaries.
This technique determines whether a certain range of values are acceptable by the system
or not. It is very useful in reducing the number of test cases. It is most suitable for the
systems where an input is within certain ranges.
Decision Table Testing: A decision table puts causes and their effects in a matrix. There
is a unique combination in each column.
How to do BlackBox Testing in Software Engineering
Here are the generic steps followed to carry out any type of Black Box Testing.
Initially, the requirements and specifications of the system are examined.
Tester chooses valid inputs (positive test scenario) to check whether SUT processes them
correctly. Also, some invalid inputs (negative test scenario) are chosen to verify that the
SUT is able to detect them.
Tester determines expected outputs for all those inputs.
Software tester constructs test cases with the selected inputs.
The test cases are executed.
Software tester compares the actual outputs with the expected outputs.
Defects if any are fixed and re-tested.
Tools used for Black Box Testing:
Tools used for Black box testing largely depends on the type of black box testing you are doing.
For Functional/ Regression Tests you can use – QTP, Selenium
For Non-Functional Tests, you can use – LoadRunner, Jmeter
Types of Black Box Testing
There are many types of Black Box Testing but the following are the prominent ones –
Functional testing – This black box testing type is related to the functional requirements
of a system; it is done by software testers.
Non-functional testing – This type of black box testing is not related to testing of
specific functionality, but non-functional requirements such as performance, scalability,
usability.
3
, Regression testing – Regression Testing is done after code fixes, upgrades or any other
system maintenance to check the new code has not affected the existing code.
integration testing or integration and testing (I&T)
What is integration testing?
Integration testing -- also known as integration and testing (I&T) -- is a type of software
testing in which the different units, modules or components of a software application are tested
as a combined entity. However, these modules may be coded by different programmers.
The aim of integration testing is to test the interfaces between the modules and expose any
defects that may arise when these components are integrated and need to interact with each other.
What does integration testing involve?
Also known as string testing or thread testing, integration testing involves integrating the various
modules of an application and then testing their behaviour as a combined, or integrated, unit.
Verifying if the individual units are communicating with each other properly and working as
intended post-integration is essential.
To perform integration testing, testers use test drivers and stubs, which are dummy programs that
act as substitutes for any missing modules and simulate data communications between modules
for testing purposes. They also use integration-testing tools, including the following:
Selenium is an open source suite that facilitates automated web application testing.
Pytest is a Python testing tool which, according to Pytest.org, enables small tests to be
written easily "yet scales to support complex functional testing for applications and
libraries."
IBM's RFT (Rational Functional Tester) is an object-oriented automated functional testing
tool for performing automated functional, regression, GUI and data-driven testing.
Junit is an open source framework designed for writing and running tests for Java and Java
Virtual Machine (JVM).
Mockito is an open source testing framework for Java.
Jasmine is a development framework for testing JavaScript
4