0% found this document useful (0 votes)
7 views

Unit 2

The document provides an overview of software testing, detailing various types such as manual and automation testing, along with their advantages. It further explores specific testing techniques including white box, black box, and gray box testing, as well as functional and non-functional testing. Additionally, it discusses integration testing methods and the significance of acceptance testing in ensuring software quality and meeting user requirements.

Uploaded by

sneha chaudhari
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Unit 2

The document provides an overview of software testing, detailing various types such as manual and automation testing, along with their advantages. It further explores specific testing techniques including white box, black box, and gray box testing, as well as functional and non-functional testing. Additionally, it discusses integration testing methods and the significance of acceptance testing in ensuring software quality and meeting user requirements.

Uploaded by

sneha chaudhari
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Software Testing

Unit 2
2.1 Different Types of Software Testing
1. Manual Testing
2. Automation Testing

1. Manual Testing
Manual testing is a technique to test the software that is carried out using the functions and features of
an application. In manual software testing, a tester carries out tests on the software by following a set of
predefined test cases. In this testing, testers make test cases for the codes, test the software, and give the
final report about that software. Manual testing is time-consuming because it is done by humans, and
there is a chance of human errors.
Advantages of Manual Testing
 Fast and accurate visual feedback: It detects almost every bug in the software application and is
used to test the dynamically changing GUI designs like layout, text, etc.
 Less expensive: It is less expensive as it does not require any high-level skill or a specific type of
tool.
 No coding is required: No programming knowledge is required while using the black box testing
method. It is easy to learn for the new testers.
 Efficient for unplanned changes: Manual testing is suitable in case of unplanned changes to the
application, as it can be adopted easily.

2. Automation Testing
Automated Testing is a technique where the Tester writes scripts on their own and uses suitable
Software or Automation Tool to test the software. It is an Automation Process of a Manual Process. It
allows for executing repetitive tasks without the intervention of a Manual Tester.
Advantages of Automation Testing:
 Simplifies Test Case Execution: Automation testing can be left virtually unattended and thus it
allows monitoring of the results at the end of the process. Thus, simplifying the overall test
execution and increasing the efficiency of the application.
 Improves Reliability of Tests: Automation testing ensures that there is equal focus on all the areas
of the testing, thus ensuring the best quality end product.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 1


Software Testing

 Increases amount of test coverage: Using automation testing, more test cases can be created and
executed for the application under test. Thus, resulting in higher test coverage and the detection of
more bugs. This allows for the testing of more complex applications and more features can be
tested.
 Minimizing Human Interaction: In automation testing, everything is automated from test case
creation to execution thus there are no changes for human error due to neglect. This reduces the
necessity for fixing glitches in the post-release phase.

 Manual vs. Automated testing


Here is the table of comparing Manual Testing and Automated Testing:
Parameters Manual Testing Automation Testing

In manual testing, the test In automated testing, the test


cases are executed by the cases are executed by the
Definition human tester. software tools.

Manual testing is time- Automation testing is faster


Processing Time consuming. than manual testing.

Automation testing takes up


Manual testing takes up
automation tools and trained
human resources.
Resources requirement employees.

Exploratory testing is not


Exploratory testing is
possible in automation
possible in manual testing.
Exploratory testing testing.

Automation testing uses


Manual testing doesn’t use
frameworks like Data Drive,
frameworks.
Framework requirement Keyword, etc.

 Types of Manual Testing


1. White Box Testing
2. Black Box Testing
3. Gray Box Testing

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 2


Software Testing

1. White Box Testing


White box testing techniques analyze the internal structures the used data structures, internal design,
code structure, and the working of the software rather than just the functionality as in black box testing.
It is also called glass box testing clear box testing or structural testing. White Box Testing is also
known as transparent testing or open box testing.
White box testing is a software testing technique that involves testing the internal structure and
workings of a software application. The tester has access to the source code and uses this knowledge to
design test cases that can verify the correctness of the software at the code level.

Advantages of White box Testing:


 Thorough Testing: White box testing is thorough as the entire code and structures are tested.
 Code Optimization: It results in the optimization of code removing errors and helps in removing
extra lines of code.
 Early Detection of Defects: It can start at an earlier stage as it doesn’t require any interface as in
the case of black box testing.
 Integration with SDLC: White box testing can be easily started in the Software Development Life
Cycle.
 Detection of Complex Defects: Testers can identify defects that cannot be detected through other
testing techniques.

2. Black Box Testing


Black-box testing is a type of software testing in which the tester is not concerned with the internal
knowledge or implementation details of the software but rather focuses on validating the functionality
based on the provided specifications or requirements.
Advantages of Black Box Testing:
 The tester does not need to have more functional knowledge or programming skills to implement
the Black Box Testing.
 It is efficient for implementing the tests in the larger system.
 Tests are executed from the user’s or client’s point of view.
 Test cases are easily reproducible.
 It is used to find the ambiguity and contradictions in the functional specifications.

3. Gray Box Testing


Gray Box Testing is a software testing technique that is a combination of the Black Box
Testing technique and the White Box Testing technique.
1. In the Black Box Testing technique, the tester is unaware of the internal structure of the item being
tested and in White Box Testing the internal structure is known to the tester.
2. The internal structure is partially known in Gray Box Testing.
3. This includes access to internal data structures and algorithms to design the test cases.

Advantages of Gray Box Testing:


1. Clarity of goals: Users and developers have clear goals while doing testing.
2. Done from a user perspective: Gray box testing is mostly done from the user perspective.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 3


Software Testing

3. High programming skills not required: Testers are not required to have high programming skills
for this testing.
4. Non-intrusive: Gray box testing is non-intrusive.
5. Improved product quality: Overall quality of the product is improved.

2.2 Types of Black Box Testing


1. Functional Testing
2. Non-Functional Testing

1. Functional Testing
Functional Testing is a type of Software Testing in which the system is tested against the functional
requirements and specifications. Functional testing ensures that the requirements or specifications are
properly satisfied by the application. This type of testing is particularly concerned with the result of
processing. It focuses on the simulation of actual system usage but does not develop any system
structure assumptions. The article focuses on discussing function testing.
Benefits of Functional Testing
 Bug-free product: Functional testing ensures the delivery of a bug-free and high-quality product.
 Customer satisfaction: It ensures that all requirements are met and ensures that the customer is
satisfied.
 Testing focused on specifications: Functional testing is focused on specifications as per customer
usage.
 Proper working of application: This ensures that the application works as expected and ensures
proper working of all the functionality of the application.
 Improves quality of the product: Functional testing ensures the security and safety of the product
and improves the quality of the product.

2. Non-Functional Testing
Non-functional Testing is a type of Software Testing that is performed to verify the non-functional
requirements of the application. It verifies whether the behavior of the system is as per the requirement
or not. It tests all the aspects that are not tested in functional testing. Non-functional testing is a
software testing technique that checks the non-functional attributes of the system. Non-functional
testing is defined as a type of software testing to check non-functional aspects 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. Non-functional testing is as important as functional testing.

 Benefits of Non-functional Testing


 Improved performance: Non-functional testing checks the performance of the system and
determines the performance bottlenecks that can affect the performance.
 Less time-consuming: Non-functional testing is overall less time-consuming than the other testing
process.
 Improves user experience: Non-functional testing like Usability testing checks how easily usable
and user-friendly the software is for the users. Thus, focus on improving the overall user experience
for the application.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 4


Software Testing

 More secure product: As non-functional testing specifically includes security testing that checks
the security bottlenecks of the application and how secure is the application against attacks from
internal and external sources.

 Types of Functional Testing


1. Unit Testing
2. Integration Testing
3. System Testing
4. End-to-end Testing
5. Acceptance testing

1. Unit Testing
Unit testing is a method of testing individual units or components of a software application. It is
typically done by developers and is used to ensure that the individual units of the software are working
as intended. Unit tests are usually automated and are designed to test specific parts of the code, such as
a particular function or method. Unit testing is done at the lowest level of the software development
process , where individual units of code are tested in isolation.
Note: Unit Testing basically Included in both White Box Testing and Black Box Testing.

Advantages of Unit Testing:


Some of the advantages of Unit Testing are listed below.
 It helps to identify bugs early in the development process before they become more difficult and
expensive to fix.
 It helps to ensure that changes to the code do not introduce new bugs.
 It makes the code more modular and easier to understand and maintain.
 It helps to improve the overall quality and reliability of the software.
Note: Some popular frameworks and tools that are used for unit testing include JUnit , NUnit, and
xUnit.
 It’s important to keep in mind that Unit Testing is only one aspect of software testing and it should
be used in combination with other types of testing such as integration testing, functional testing, and
acceptance testing to ensure that the software meets the needs of its users.
 It focuses on the smallest unit of software design. In this, we test an individual unit or group of
interrelated units. It is often done by the programmer by using sample input and observing its
corresponding outputs.
Example:
1. In a program we are checking if the loop, method, or function is working fine.
2. Misunderstood or incorrect, arithmetic precedence.
3. Incorrect initialization.

2. Integration Testing
Integration testing is a method of testing how different units or components of a software application
interact with each other. It is used to identify and resolve any issues that may arise when different units
of the software are combined. Integration testing is typically done after unit testing and before
functional testing and is used to verify that the different units of the software work together as intended.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 5


Software Testing

Different Ways of Performing Integration Testing:


Different ways of Integration Testing are discussed below.
 Top-down integration testing: It starts with the highest-level modules and differentiates them from
lower-level modules.
 Bottom-up integration testing: It starts with the lowest-level modules and integrates them with
higher-level modules.
 Big-Bang integration testing: It combines all the modules and integrates them all at once.
 Incremental integration testing: It integrates the modules in small groups, testing each group as it is
added.
Advantages of Integrating Testing
 It helps to identify and resolve issues that may arise when different units of the software are
combined.
 It helps to ensure that the different units of the software work together as intended.
 It helps to improve the overall reliability and stability of the software.
 It’s important to keep in mind that Integration testing is essential for complex systems where
different components are integrated.
 As with unit testing, integration testing is only one aspect of software testing and it should be used
in combination with other types of testing such as unit testing, functional testing, and acceptance
testing to ensure that the software meets the needs of its users.
The objective is to take unit-tested components and build a program structure that has been dictated by
design. Integration testing is testing in which a group of components is combined to produce output.

Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-Bang
Example:
1. Black Box testing: It is used for validation. In this, we ignore internal working mechanisms and
focus on “what is the output?”
2. White box testing: It is used for verification. In this, we focus on internal mechanisms i.e. how the
output is achieved.

3. System Testing
System testing is a type of software testing that evaluates the overall functionality and performance of a
complete and fully integrated software solution. It tests if the system meets the specified requirements
and if it is suitable for delivery to the end-users. This type of testing is performed after the integration
testing and before the acceptance testing.
System Testing is a type of software testing that is performed on a completely integrated system to
evaluate the compliance of the system with the corresponding requirements. In system testing,
integration testing passed components are taken as input. The goal of integration testing is to detect any
irregularity between the units that are integrated.

Advantages of System Testing:


 The testers do not require more knowledge of programming to carry out this testing.
 It will test the entire product or software so that we will easily detect the errors or defects that
cannot be identified during the unit testing and integration testing.
 The testing environment is similar to that of the real-time production or business environment.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 6


Software Testing

 It checks the entire functionality of the system with different test scripts and also it covers the
technical and business requirements of clients.
 After this testing, the product will almost cover all the possible bugs or errors and hence the
development team will confidently go ahead with acceptance testing.

4. End-to-end Testing
End-to-end testing is the type of software testing used to test entire software from starting to the end
along with its integration with external interfaces. The main purpose of end-to-end testing is to identify
system dependencies and to make sure that the data integrity and communication with other systems,
interfaces and databases to exercise complete production.

5. Acceptance Testing
It is formal testing according to user needs, requirements, and business processes conducted to
determine whether a system satisfies the acceptance criteria or not and to enable the users, customers,
or other authorized entities to determine whether to accept the system or not.
Advantages of Acceptance Testing
 This testing helps the project team to know the further requirements from the users directly as it
involves the users for testing.
 Automated test execution.
 It brings confidence and satisfaction to the clients as they are directly involved in the testing
process.
 It is easier for the user to describe their requirement.
 It covers only the Black-Box testing process and hence the entire functionality of the product will be
tested.

Types of Integration Testing


1. Incremental Testing
2. Non-Incremental Testing

1. Incremental Testing
Like development, testing is also a phase of SDLC (Software Development Life Cycle) . Different tests
are performed at different stages of the development cycle. Incremental testing is one of the testing
approaches that is commonly used in the software field during the testing phase of integration testing
which is performed after unit testing. Several stubs and drivers are used to test the modules one after
one which helps in discovering errors and defects in the specific modules.
Advantages of Incremental Testing
 Each module has its specific significance. Each one gets a role to play during the testing as they are
incremented individually.
 Defects are detected in smaller modules rather than denoting errors and then editing and re-
correcting large files.
 It’s more flexible and cost-efficient as per requirements and scopes.
 The customer gets the chance to respond to each building.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 7


Software Testing

There are 2 Types of Incremental Testing


1. Top-down Integration Testing
2. Bottom-up Integration Testing

1. Top-down Integration Testing


Top-down testing is a type of incremental integration testing approach in which testing is done by
integrating or joining two or more modules by moving down from top to bottom through the control
flow of the architecture structure. In these, high-level modules are tested first, and then low-level
modules are tested. Then, finally, integration is done to ensure that the system is working properly.
Stubs and drivers are used to carry out this project. This technique is used to increase or stimulate the
behavior of Modules that are not integrated into a lower level.
Advantages Top Down Integration Testing
1. There is no need to write drivers.
2. Interface errors are identified at an early stage and fault localization is also easier.
3. Low-level utilities that are not important are not tested well and high-level testers are tested well in
an appropriate manner.
4. Representation of test cases is easier and simpler once Input-Output functions are added.

2. Bottom-up Integration Testing


Bottom-up Testing is a type of incremental integration testing approach in which testing is done by
integrating or joining two or more modules by moving upward from bottom to top through the control
flow of the architecture structure. In these, low-level modules are tested first, and then high-level
modules are tested. This type of testing or approach is also known as inductive reasoning and is used as
a synthesis synonym in many cases. Bottom-up testing is user-friendly testing and results in an increase
in overall software development. This testing results in high success rates with long-lasting results.
Advantages of Bottom-up Integration Testing
 It is easy and simple to create and develop test conditions.
 It is also easy to observe test results.
 It is not necessary to know about the details of the structural design.
 Low-level utilities are also tested well and are also compatible with the object-oriented structure.

2.3 Types of Non-functional Testing


1. Performance Testing
2. Usability Testing
3. Compatibility Testing

1. Performance Testing
Performance Testing is a type of software testing that ensures software applications perform properly
under their expected workload. It is a testing technique carried out to determine system performance in
terms of sensitivity, reactivity, and stability under a particular workload.
Performance testing is a type of software testing that focuses on evaluating the performance and
scalability of a system or application. The goal of performance testing is to identify bottlenecks,
measure system performance under various loads and conditions, and ensure that the system can handle
the expected number of users or transactions.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 8


Software Testing

Advantages of Performance Testing


 Performance testing ensures the speed, load capability, accuracy, and other performances of the
system.
 It identifies, monitors, and resolves the issues if anything occurs.
 It ensures the great optimization of the software and also allows many users to use it at the same
time.
 It ensures the client as well as the end-customer’s satisfaction. Performance testing has several
advantages that make it an important aspect of software testing:
 Identifying bottlenecks : Performance testing helps identify bottlenecks in the system such as slow
database queries, insufficient memory, or network congestion. This helps developers optimize the
system and ensure that it can handle the expected number of users or transactions.

2. Usability Testing
You design a product (say a refrigerator) and when it becomes completely ready, you need a potential
customer to test it to check it working. To understand whether the machine is ready to come on the
market, potential customers test the machines. Likewise, the best example of usability testing is when
the software also undergoes various testing processes which is performed by potential users before
launching into the market. It is a part of the software development lifecycle (SDLC).
Advantages and Disadvantages of Usability Testing
Usability testing is preferred to evaluate a product or service by testing it with the proper users. In
Usability testing, the development and design teams will use to identify issues before coding and the
result will be earlier issues will be solved. During a Usability test, you can,
 Learn if participants will be able to complete the specific task completely.
 identify how long it will take to complete the specific task.
 Gives excellent features and functionalities to the product
 Improves user satisfaction and fulfills requirements based on user feedback
 The product becomes more efficient and effective

3. Compatibility Testing
Compatibility testing is software testing that comes under the non functional testing category, and it is
performed on an application to check its compatibility (running capability) on different
platforms/environments. This testing is done only when the application becomes stable. This means
simply this compatibility test aims to check the developed software application functionality on various
software, hardware platforms, networks browser etc. This compatibility testing is very important in
product production and implementation point of view as it is performed to avoid future issues regarding
compatibility.
Advantages of Compatibility Testing
 It ensures complete customer satisfaction.
 It provides service across multiple platforms.
 Identifying bugs during the development process.

 There are 4 Types of Performance Testing


1. Load Testing
2. Stress Testing

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 9


Software Testing

3. Scalability Testing
4. Stability Testing

1. Load Testing
Load testing determines the behavior of the application when multiple users use it at the same time. It is
the response of the system measured under varying load conditions.
1. The load testing is carried out for normal and extreme load conditions.
2. Load testing is a type of performance testing that simulates a real-world load on a system or
application to see how it performs under stress.
3. The goal of load testing is to identify bottlenecks and determine the maximum number of users or
transactions the system can handle.
4. It is an important aspect of software testing as it helps ensure that the system can handle the
expected usage levels and identify any potential issues before the system is deployed to production.
Advantages of Load Testing:
Load testing has several advantages that make it an important aspect of software testing:
1. Identifying bottlenecks: Load testing helps identify bottlenecks in the system such as slow
database queries, insufficient memory, or network congestion. This helps developers optimize the
system and ensure that it can handle the expected number of users or transactions.
2. Improved scalability: By identifying the system’s maximum capacity, load testing helps ensure
that the system can handle an increasing number of users or transactions over time. This is
particularly important for web-based systems and applications that are expected to handle a high
volume of traffic.
3. Improved reliability: Load testing helps identify any potential issues that may occur under heavy
load conditions, such as increased error rates or slow response times. This helps ensure that the
system is reliable and stable when it is deployed to production.

2. Stress Testing
In Stress Testing, we give unfavorable conditions to the system and check how it perform in those
conditions.
Example:
1. Test cases that require maximum memory or other resources are executed.
2. Test cases that may cause thrashing in a virtual operating system.
3. Test cases that may cause excessive disk requirement Performance Testing.
It is designed to test the run-time performance of software within the context of an integrated system. It
is used to test the speed and effectiveness of the program. It is also called load testing. In it, we check,
what is the performance of the system in the given load.
Example:
Checking several processor cycles.

3. Scalability Testing
Scalability Testing is a type of non-functional testing in which the performance of a software
application, system, network, or process is tested in terms of its capability to scale up or scale down the
number of user request load or other such performance attributes. It can be carried out at a hardware,
software or database level. Scalability Testing is defined as the ability of a network, system,

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 10


Software Testing

application, product or a process to perform the function correctly when changes are made in the size or
volume of the system to meet a growing need. It ensures that a software product can manage the
scheduled increase in user traffic, data volume, transaction counts frequency, and many other things. It
tests the system, processes, or database’s ability to meet a growing need.
Advantages of Scalability Testing
 It provides more accessibility to the product.
 It detects issues with web page loading and other performance issues.
 It finds and fixes the issues earlier in the product which saves a lot of time.
 It ensures the end-user experience under the specific load. It provides customer satisfaction.
 It helps in effective tool utilization tracking.

4. Stability Testing
Stability Testing is a type of Software Testing to checks the quality and behavior of the software under
different environmental parameters. It is defined as the ability of the product to continue to function
over time without failure.
It is a Non-functional Testing technique that focuses on stressing the software component to the
maximum. Stability testing is done to check the efficiency of a developed product beyond normal
operational capacity which is known as break point. It has higher significance in error handling,
software reliability, robustness, and scalability of a product under heavy load rather than checking the
system behavior under normal circumstances.
Stability testing assesses stability problems. This testing is mainly intended to check whether the
application will crash at any point in time or not.

Advantages of Stability Testing


1. It gives the limit of the data that a system can handle practically.
2. It provides confidence on the performance of the system.
3. It determines the stability and robustness of the system under load.
4. Stability testing leads to a better end-user experience.

2.4 Other Types of Testing

1. Sanity Testing
It is a subset of regression testing . Sanity testing is performed to ensure that the code changes that are
made are working properly. Sanity testing is a stoppage to check whether testing for the build can
proceed or not. The focus of the team during the sanity testing process is to validate the functionality of
the application and not detailed testing. Sanity testing is generally performed on a build where the
production deployment is required immediately like a critical bug fix.
Advantages of Sanity Testing
 Sanity testing helps to quickly identify defects in the core functionality.
 It can be carried out in less time as no documentation is required for sanity testing.
 If the defects are found during sanity testing, the project is rejected which is helpful in saving time
for execution of regression tests.
 This testing technique is not so expensive when compared to another type of testing.
 It helps to identify the dependent missing objects.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 11


Software Testing

2. Regression Testing
The process of testing the modified parts of the code and the parts that might get affected due to the
modifications ensures that no new errors have been introduced in the software after the modifications
have been made. Regression means the return of something and in the software field, it refers to the
return of a bug.
Advantages of Regression Testing
 It ensures that no new bugs have been introduced after adding new functionalities to the system.
 As most of the test cases used in Regression Testing are selected from the existing test suite, and we
already know their expected outputs. Hence, it can be easily automated by the automated tools.
 It helps to maintain the quality of the source code.

3. Acceptance Testing
Acceptance testing is done by the customers to check whether the delivered products perform the
desired tasks or not, as stated in the requirements. We use Object-Oriented Testing for discussing test
plans and for executing the projects.
Advantages of Acceptance Testing
1. This testing helps the project team to know the further requirements of the users directly as it
involves the users for testing.
2. Automated test execution.
3. It brings confidence and satisfaction to the clients as they are directly involved in the testing
process.
4. It is easier for the user to describe their requirement.
5. It covers only the Black-Box testing process and hence the entire functionality of the product will be
tested.

4. User Acceptance Testing


User Acceptance Testing is a testing methodology where clients/end users participate in product
testing to validate the product against their requirements. It is done at the client’s site on the
developer’s site. For industries such as medicine or aerospace, contractual and regulatory compliance
testing, and operational acceptance tests are also performed as part of user acceptance tests. UAT is
context-dependent and UAT plans are prepared based on requirements and are not required to perform
all kinds of user acceptance tests and are even coordinated and contributed by the testing team.

5. Exploratory Testing
Exploratory Testing is a type of software testing in which the tester is free to select any possible
methodology to test the software. It is an unscripted approach to software testing. In exploratory
testing, software developers use their learning, knowledge, skills, and abilities to test the software
developed by themselves. Exploratory testing checks the functionality and operations of the software as
well as identifies the functional and technical faults in it. Exploratory testing aims to optimize and
improve the software in every possible way.
Advantages of Exploratory Testing
 Less preparation required: It takes no preparation as it is an unscripted testing technique.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 12


Software Testing

 Finds critical defects: Exploratory testing involves an investigation process that helps to find
critical defects very quickly.
 Improves productivity: In exploratory testing, testers use their knowledge, skills, and experience
to test the software. It helps to expand the imagination of the testers by executing more test cases,
thus enhancing the overall quality of the software.

6. Adhoc Testing
Adhoc testing is a type of software testing that is performed informally and randomly after the formal
testing is completed to find any loophole in the system. For this reason, it is also known as Random or
Monkey testing. Adhoc testing is not performed in a structured way so it is not based on any
methodological approach. That’s why Adhoc testing is a type of Unstructured Software Testing.
Advantages of Adhoc testing
 The errors that can not be identified with written test cases can be identified by Adhoc testing.
 It can be performed within a very limited time.
 Helps to create unique test cases.
 This test helps to build a strong product that is less prone to future problems.
 This testing can be performed at any time during Soft the ware Development Life Cycle Process
(SDLC)

7. Security Testing
Security Testing is a type of Software Testing that uncovers vulnerabilities in the system and
determines that the data and resources of the system are protected from possible intruders. It ensures
that the software system and application are free from any threats or risks that can cause a loss. Security
testing of any system is focused on finding all possible loopholes and weaknesses of the system that
might result in the loss of information or repute of the organization.
Advantages of Security Testing
1. Identifying vulnerabilities: Security testing helps identify vulnerabilities in the system that could be
exploited by attackers, such as weak passwords, unpatched software, and misconfigured systems.
2. Improving system security: Security testing helps improve the overall security of the system by
identifying and fixing vulnerabilities and potential threats.
3. Ensuring compliance: Security testing helps ensure that the system meets relevant security standards
and regulations, such as HIPAA, PCI DSS, and SOC2.

8. Globalization Testing
Globalization Testing is a type of software testing that is performed to ensure the system or software
application can function independently of the geographical and cultural environment. It ensures that the
application can be used all over the world and accepts all language texts. Nowadays with the increase in
various technologies, every software product is designed in such a way that it is a globalized software
product.
Benefits of Globalization Testing
 Helps to create scalable products: It makes the software product more flexible and scalable.
 Save time: It saves overall time and effort for software testing.
 Reduce time for localization testing: Globalization testing helps to reduce the time and cost of
localization testing.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 13


Software Testing

9. Regression Testing
Regression testing is a method of testing that is used to ensure that changes made to the software do not
introduce new bugs or cause existing functionality to break. It is typically done after changes have been
made to the code, such as bug fixes or new features, and is used to verify that the software still works
as intended.
Regression testing can be performed in different ways, such as:
 Retesting: This involves testing the entire application or specific functionality that was affected by
the changes.
 Re – execution: This involves running a previously executed test suite to ensure that the changes
did not break any existing functionality.
 Comparison: This involves comparing the current version of the software with a previous version
to ensure that the changes did not break any existing functionality.
Advantages of Regression Testing
 It helps to ensure that changes made to the software do not introduce new bugs or cause existing
functionality to break.
 It helps to ensure that the software continues to work as intended after changes have been made.
 It helps to improve the overall reliability and stability of the software.
 It’s important to keep in mind that regression testing is an ongoing process that should be done
throughout the software development
 Lifecycle to ensure that the software continues to work as intended. It should be automated as much
as possible to save time and resources. Additionally, it’s important to have a well-defined regression
test suite that covers
Every time a new module is added leads to changes in the program. This type of testing makes sure that
the whole component works properly even after adding components to the complete program.
Example:
In school records, suppose we have module staff, students, and finance combining these modules and
checking if the integration of these modules works fine in regression testing.

10. Smoke Testing


Smoke Testing is done to make sure that the software under testing is ready or stable for further testing
It is called a smoke test as the testing of an initial pass is done to check if it did not catch fire or smoke
in the initial switch-on.
Example:
If the project has 2 modules so before going to the module make sure that module 1 works properly.
Advantages of Smoke Testing
1. Smoke testing is easy to perform.
2. It helps in identifying defects in the early stages.
3. It improves the quality of the system.
4. Smoke testing reduces the risk of failure.
5. Smoke testing makes progress easier to access.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 14


Software Testing

11. Alpha Testing


Alpha testing is a type of validation testing. It is a type of acceptance testing that is done before the
product is released to customers. It is typically done by QA people.
Example:
When software testing is performed internally within the organisation.

12. Beta Testing


The beta test is conducted at one or more customer sites by the end-user of the software. This version is
released for a limited number of users for testing in a real-time environment.
Example:
When software testing is performed for the limited number of people.

13. Object-Oriented Testing


Object-Oriented Testing testing is a combination of various testing techniques that help to verify and
validate object-oriented software. This testing is done in the following manner:
 Testing of Requirements,
 Design and Analysis of Testing,
 Testing of Code,
 Integration testing,
 System testing,
 User Testing.

2.5 How to automate your tests


To automate your tests, you’ll need to write them using a testing framework that works with your
programming language. For example, you can use PHPUnit for PHP, Mocha for JavaScript,
and RSpec for Ruby. There are many frameworks available, so you might need to research or ask other
developers to find the best one for your needs.
Once your tests can run from your terminal, you can automate them using a continuous integration (CI)
server like Bamboo or a cloud service like Bitbucket Pipelines. These tools monitor your code
repository and run your tests automatically whenever new changes are pushed.

Advantages of Software Testing


1. Improved software quality and reliability.
2. Early identification and fixing of defects.
3. Improved customer satisfaction.
4. Increased stakeholder confidence.
5. Reduced maintenance costs.
6. Customer Satisfaction
7. Cost Effective
8. Quality Product
9. Low Failure
10. Bug-Free Application
11. Security
12. Speed Up the Development Process

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 15


Software Testing

13. Early Defect Detection


14. Reliable Product
Disadvantages of Software Testing
 Time-Consuming and adds to the project cost.
 This can slow down the development process.
 Not all defects can be found.
 Can be difficult to fully test complex systems.
 Potential for human error during the testing process.

2.6 What is White Box Testing?


White box testing is a software testing technique that involves testing the internal structure and
workings of a software application . The tester has access to the source code and uses this knowledge to
design test cases that can verify the correctness of the software at the code level.
White box testing is also known as structural testing or code-based testing, and it is used to test the
software’s internal logic, flow, and structure. The tester creates test cases to examine the code paths and
logic flows to ensure they meet the specified requirements.
Before we move in depth of the white box testing do you known that their are many different type of
testing used in industry and some automation testing tools are there which automate the most of testing
so if you wish to learn the latest industry level tools then you check-out our manual to automation
testing course in which you will learn all these concept and tools.

What Does White Box Testing Focus On?


White box testing uses detailed knowledge of a software’s inner workings to create very specific test
cases.
 Path Checking: Examines the different routes the program can take when it runs. Ensures that all
decisions made by the program are correct, necessary, and efficient.
 Output Validation: Tests different inputs to see if the function gives the right output each time.
 Security Testing: Uses techniques like static code analysis to find and fix potential security issues
in the software. Ensures the software is developed using secure practices.
 Loop Testing: Checks the loops in the program to make sure they work correctly and efficiently.
Ensures that loops handle variables properly within their scope.
 Data Flow Testing: Follows the path of variables through the program to ensure they are declared,
initialized, used, and manipulated correctly.

 Types Of White Box Testing


White box testing can be done for different purposes. The three main types are:
1. Unit Testing
2. Integration Testing
3. Regression Testing
Unit Testing
 Checks if each part or function of the application works correctly.
 Ensures the application meets design requirements during development.
Integration Testing
 Examines how different parts of the application work together.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 16


Software Testing

 Done after unit testing to make sure components work well both alone and together.
Regression Testing
 Verifies that changes or updates don’t break existing functionality.
 Ensures the application still passes all existing tests after updates.

2.7 White Box Testing Techniques


One of the main benefits of white box testing is that it allows for testing every part of an application.
To achieve complete code coverage, white box testing uses the following techniques:
1. Statement Coverage
In this technique, the aim is to traverse all statements at least once. Hence, each line of code is tested.
In the case of a flowchart, every node must be traversed at least once. Since all lines of code are
covered, it helps in pointing out faulty code.

2. Branch Coverage
In this technique, test cases are designed so that each branch from all decision points is traversed at
least once. In a flowchart, all edges must be traversed at least once.

3. Condition Coverage
In this technique, all individual conditions must be covered as shown in the following example:
 READ X, Y
 IF(X == 0 || Y == 0)
 PRINT ‘0’
 #TC1 – X = 0, Y = 55
 #TC2 – X = 5, Y = 0

4. Multiple Condition Coverage


In this technique, all the possible combinations of the possible outcomes of conditions are tested at
least once. Let’s consider the following example:
 READ X, Y

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 17


Software Testing

 IF(X == 0 || Y == 0)
 PRINT ‘0’
 #TC1: X = 0, Y = 0
 #TC2: X = 0, Y = 5
 #TC3: X = 55, Y = 0
 #TC4: X = 55, Y = 5

5. Basis Path Testing


In this technique, control flow graphs are made from code or flowchart and then Cyclomatic
complexity is calculated which defines the number of independent paths so that the minimal number of
test cases can be designed for each independent path. Steps:
 Make the corresponding control flow graph
 Calculate the cyclomatic complexity
 Find the independent paths
 Design test cases corresponding to each independent path
 V(G) = P + 1, where P is the number of predicate nodes in the flow graph
 V(G) = E – N + 2, where E is the number of edges and N is the total number of nodes
 V(G) = Number of non-overlapping regions in the graph
 #P1: 1 – 2 – 4 – 7 – 8
 #P2: 1 – 2 – 3 – 5 – 7 – 8
 #P3: 1 – 2 – 3 – 6 – 7 – 8
 #P4: 1 – 2 – 4 – 7 – 1 – . . . – 7 – 8

6. Loop Testing
Loops are widely used and these are fundamental to many algorithms hence, their testing is very
important. Errors often occur at the beginnings and ends of loops.
 Simple loops: For simple loops of size n, test cases are designed that:
1. Skip the loop entirely
2. Only one pass through the loop
3. 2 passes
4. m passes, where m < n
5. n-1 ans n+1 passes

 Nested loops: For nested loops, all the loops are set to their minimum count, and we start from the
innermost loop. Simple loop tests are conducted for the innermost loop and this is worked outwards
till all the loops have been tested.
 Concatenated loops: Independent loops, one after another. Simple loop tests are applied for each.
If they’re not independent, treat them like nesting.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 18


Software Testing

 Difference between Black Box Testing and White Box Testing


Black Box Testing White Box Testing
Parameters

White Box Testing is a way of testing


Black Box Testing is a way of software
the software in which the tester has
testing in which the internal structure or the
knowledge about the internal structure
program or the code is hidden and nothing is
or the code or the program of the
known about it.
software.
Definition

Black box testing is mainly focused on


White box testing is mainly focused on
testing the functionality of the software,
ensuring that the internal code of the
Testing ensuring that it meets the requirements and
software is correct and efficient.
objectives specifications.

Black box testing uses methods


White box testing uses methods
like equivalence partitioning, boundary
like control flow testing, data flow
Testing value analysis, and error guessing to create
testing and statement coverage testing.
methods test cases.

Black box testing does not require any


knowledge of the internal workings of the White box testing requires knowledge of
software, and can be performed by testers programming languages, software
who are not familiar with programming architecture and design patterns.
Knowledge languages.
level

White box testing is used for testing the


Black box testing is generally used for
software at the unit level, integration
testing the software at the functional level.
Scope level and system level.

2.8 Ways of Black Box Testing Done

1. Syntax-Driven Testing
 This type of testing is applied to systems that can be syntactically represented by some language.
 For example, language can be represented by context-free grammar.
 In this, the test cases are generated so that each grammar rule is used at least once.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 19


Software Testing

2. Equivalence partitioning
 It is often seen that many types of inputs work similarly so instead of giving all of them separately
we can group them and test only one input of each group.
 The idea is to partition the input domain of the system into several equivalence classes such that
each member of the class works similarly.
 If a test case in one class results in some error, other members of the class would also result in the
same error.

The technique involves two steps:


 Identification of equivalence class – Partition any input domain into a minimum of two sets: valid
values and invalid values . For example, if the valid range is 0 to 100 then select one valid input
like 49 and one invalid like 104.
 Generating test cases- To each valid and invalid class of input assign a unique identification
number. Write a test case covering all valid and invalid test cases considering that no two invalid
inputs mask each other. The whole number which is a perfect square-output will be an integer. The
entire number which is not a perfect square-output will be a decimal number. Positive decimals
Negative numbers(integer or decimal). Characters other than numbers like “a”,”!”,”;”, etc.

3. Boundary value analysis


 Boundaries are very good places for errors to occur.
 Hence, if test cases are designed for boundary values of the input domain then the efficiency of
testing improves and the probability of finding errors also increases.
 For example – If the valid range is 10 to 100 then test for 10,100 also apart from valid and invalid
inputs.

4. Cause effect graphing


This technique establishes a relationship between logical input called causes with corresponding
actions called the effect. The causes and effects are represented using Boolean graphs. The following
steps are followed:
1. Identify inputs (causes) and outputs (effect).
2. Develop a cause-effect graph.
3. Transform the graph into a decision table.
4. Convert decision table rules to test cases.
Each column corresponds to a rule which will become a test case for testing. So there will be 4 test
cases.

5. Requirement-based testing
It includes validating the requirements given in the SRS of a software system.

6. Compatibility testing
The test case results not only depends on the product but is also on the infrastructure for delivering
functionality. When the infrastructure parameters are changed it is still expected to work properly.
Some parameters that generally affect the compatibility of software are:
1. Processor (Pentium 3, Pentium 4) and several processors.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 20


Software Testing

2. Architecture and characteristics of machine (32-bit or 64-bit).


3. Back-end components such as database servers.
4. Operating System (Windows, Linux, etc.)

2.9 Tools Used for Black Box Testing


 Appium
 Selenium
 QTP (QuickTest Professional)
 LoadRunner
 JMeter
 TestComplete
 Ranorex
 Katalon Studio
 Postman
 SoapUI
 Cucumber
 HP QTP .
 Applitools
 Microsoft Coded UI

2.10 Features of Black Box Testing


1. Independent testing: Black box testing is performed by testers who are not involved in the
development of the application, which helps to ensure that testing is unbiased and impartial.
2. Testing from a user’s perspective: Black box testing is conducted from the perspective of an end
user, which helps to ensure that the application meets user requirements and is easy to use.
3. No knowledge of internal code: Testers performing black box testing do not have access to the
application’s internal code, which allows them to focus on testing the application’s external
behavior and functionality.
4. Requirements-based testing: Black box testing is typically based on the application’s
requirements, which helps to ensure that the application meets the required specifications.
5. Different testing techniques: Black box testing can be performed using various testing techniques,
such as functional testing, usability testing, acceptance testing, and regression testing.
6. Easy to automate: Black box testing is easy to automate using various automation tools, which
helps to reduce the overall testing time and effort.
7. Scalability: Black box testing can be scaled up or down depending on the size and complexity of
the application being tested.
8. Limited knowledge of application: Testers performing black box testing have limited knowledge
of the application being tested, which helps to ensure that testing is more representative of how the
end users will interact with the application.

2.11 What is Gray Box Testing?


Gray Box Testing is a software testing technique that is a combination of the Black Box
Testing technique and the White Box Testing technique.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 21


Software Testing

1. In the Black Box Testing technique, the tester is unaware of the internal structure of the item being
tested and in White Box Testing the internal structure is known to the tester.
2. The internal structure is partially known in Gray Box Testing.
3. This includes access to internal data structures and algorithms to design the test cases.
4. Gray Box Testing is named so because the software program is like a semitransparent or gray box
inside which the tester can partially see.
5. It commonly focuses on context-specific errors related to web systems.
6. It is based on requirement test case generation because it has all the conditions presented before the
program is tested.

Gray Box Testing


 Objectives of Gray Box Testing
1. To provide combined advantages of both black box testing and white box testing.
2. To combine the input of developers as well as testers.
3. To improve overall product quality.
4. To reduce the overhead of long process of functional and non-functional testing.
5. To provide enough free time to developers to fix defects.
6. To test from the user point of view rather than a designer point of view.

2.12 Gray Box Testing Techniques


Here are the main techniques of the Gray Box Testing:
1. Matrix Testing
In matrix testing technique, business and technical risks which are defined by the developers in
software programs are examined. Developers define all the variables that exist in the program. Each of
the variables has an inherent technical and business risk and can be used with varied frequencies during
its life cycle.
2. Pattern Testing
To perform the pattern testing , previous defects are analyzed. It determines the cause of the failure by
looking into the code. Analysis template includes reasons for the defect. This helps test cases designed
as they are proactive in finding other failures before hitting production.
3. Orthogonal Array Testing
It is mainly a black box testing technique. In orthogonal array testing, test data have n numbers of
permutations and combinations. Orthogonal array testing is preferred when maximum coverage is
required when there are very few test cases and test data is large. This is very helpful in testing
complex applications.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 22


Software Testing

4. Regression Testing
Regression testing is testing the software after every change in the software to make sure that the
changes or the new functionalities are not affecting the existing functioning of the system. Regression
testing is also carried out to ensure that fixing any defect has not impacted other functionality of the
software.
5. State transition Testing
State transition testing is frequently applied to systems that display various states while they are being
operated. Testers who have just a limited understanding of the internal states create test cases with the
intention of making sure that state transitions are handled correctly.
6. Testing Decision Tables
Decision tables are a useful tool for organizing and condensing complicated business rules and
reasoning. Decision tables are used by testers with limited understanding to generate test cases covering
multiple combinations of input conditions and expected results.
7. Testing APIs
Even though the main code is not entirely known, gray box testing, also known as API (Application
Programming Interface) testing , focuses on testing the system’s exposed interfaces. The main goal of
testing is to make sure the API accepts various input formats and operates as intended.
8. Data Flow Testing
Analyzing the flow of data testing through the system forms the basis of data flow testing. Partial
knowledge testers create test cases that examine the data’s pathways throughout the application,
assisting in the identification of possible problems with handling and processing the data.

 Advantages of Gray Box Testing


1. Clarity of goals: Users and developers have clear goals while doing testing.
2. Done from user perspective: Gray box testing is mostly done by the user perspective.
3. High programming skills not required: Testers are not required to have high programming skills
for this testing.
4. Non-intrusive: Gray box testing is non-intrusive.
5. Improved product quality: Overall quality of the product is improved.
6. Defect fixing: In gray box testing, developers have more time for defect fixing.
7. Benefits of black box and white box testing: By doing gray box testing, benefits of both black box
and white box testing is obtained.
8. Unbiased: Gray box testing is unbiased. It avoids conflicts between a tester and a developer.
9. Effective testing: Gray box testing is much more effective in integration testing.

 Disadvantages of Gray Box Testing


1. Difficulty in defect association: Defect association is difficult when gray testing is performed for
distributed systems.
2. Limited access to internal structure: Limited access to internal structure leads to limited access
for code path traversal.
3. Source code not accessible: Because source code cannot be accessed, doing complete white box
testing is not possible.
4. Not suitable for algorithm testing: Gray box testing is not suitable for algorithm testing.
5. Test cases difficult to design: Most of the test cases are difficult to design.

Mrs.Sneha D. Patil(Asst.Professor/E&C Dept./KCES’s COEM,Jalgaon) Page 23

You might also like