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

STF totla unit

Static Testing is a software testing method that identifies defects without executing code, enhancing quality and reducing costs by detecting errors early in development. Techniques include reviews and static analysis, with tools like Checkstyle and SonarQube aiding the process. Requirement-based and integration testing further ensure software compliance with specifications and proper module interaction, respectively.

Uploaded by

tharunpujari139
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

STF totla unit

Static Testing is a software testing method that identifies defects without executing code, enhancing quality and reducing costs by detecting errors early in development. Techniques include reviews and static analysis, with tools like Checkstyle and SonarQube aiding the process. Requirement-based and integration testing further ensure software compliance with specifications and proper module interaction, respectively.

Uploaded by

tharunpujari139
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Static Testing :

Static Testing is a type of Software Testing method that is performed to check the defects in
software without actually executing the code of the software application.

Static Testing also known as Verification testing or Non-execution testing is a type of


Software Testing method that is performed in the early stage of development to avoid errors
as it is easier to find sources of failures and it can be fixed easily. The errors that cannot be
found using Dynamic Testing, can be easily found by Static Testing

1. Static can be done manually or with the help of tools to find bugs and improve the quality
of the software.
2. It helps to find errors in the early stage of development which is also called the
verification process.
3. It enhances maintainability and ultimately saves time and money in the long run.

Objectives of Static Testing


Below are some of the objectives of static testing:
1. Decreases Flaws: Static testing will decrease the flaws in production as the bugs will be
detected early in the software development.
2. Saves Time: Early detection of the bugs helps to save a lot of time, effort, and cost that
will be required to fix the bugs.
3. Easy Bug Fixing: Static testing is used to identify the bugs early in software
development, where it is quite easy to fix the bugs.
4. Quality Improvement: Enhance overall software quality of the software product by
ensuring the compliance with the coding standards and best practices.
5. Cost Efficiency: Static testing helps to reduce the cost associated with dynamic testing by
catching defects early.
Static Testing Techniques
There are mainly two types of techniques used in Static Testing:

1. Review
In static testing, the review is a process or technique that is performed to find potential
defects in the design of the software. It is a process to detect and remove errors and defects in
the different supporting documents like software requirements specifications. People
examine the documents and sorted out errors, redundancies, and ambiguities. Review is of
four types:
1. Informal: In an informal review the creator of the documents put the contents in front of
an audience and everyone gives their opinion and thus defects are identified in the early
stage.
2. Walkthrough: It is basically performed by an experienced person or expert to check the
defects so that there might not be problems further in the development or testing phase.
3. Peer review: Peer review means checking documents of one another to detect and fix
defects. It is basically done in a team of colleagues.
4. Inspection: Inspection is basically the verification of documents by the higher authority
like the verification of software requirement specifications (SRS).
2. Static Analysis
Static Analysis includes the evaluation of the code quality that is written by developers.
Different tools are used to do the analysis of the code and comparison of the same with the
standard. It also helps in following identification of the following defects:
1. Unused variables.
2. Dead code.
3. Infinite loops.
4. Variable with an undefined value.
5. Wrong syntax.
Static Analysis is of three types:
1. Data Flow: Data flow is related to the stream processing.
2. Control Flow: Control flow is basically how the statements or instructions are executed.
3. Cyclomatic Complexity: Cyclomatic complexity defines the number of independent
paths in the control flow graph made from the code or flowchart so that a minimum
number of test cases can be designed for each independent path.

Static Testing Tools


Some of the most commonly used static testing tools are:
1. Checkstyle
Checkstyle is a static analysis tool that helps developers to write Java code and automates the
process of checking Java code.
Features:
● It can verify the code layout and formatting issues.
● It can help to identify the method design problems and class design problems.
● It is a highly configured tool that can support almost any coding standard like Google
Java Style, and Sun code conventions.
2. Soot
Soot is a Java optimization framework that has several analysis and transformation tools.
Features:
● It can detect unnecessary code and thus improve the overall code quality.
● It is a framework for analyzing and transforming Java and Android applications to test
aspects like named modules and modular jar files, automatic modules, exploded modules,
etc.
3. SourceMeter
SourceMeter is a static testing tool for static source code analysis of various programming
languages like C/ C++, Java, C#, Python, and RPG Projects.
Features:
● It helps in the easy identification of vulnerable spots of the system under development
from the source code.
● It can analyze code in multiple programming languages and generates reports that help
developers to make informed decisions.
● The output of analysis and quality of analyzed source code can be used to enhance the
product.
4. Lint
Lint is a static analysis tool that scans code to flag programming errors and bugs.
Features:
● It helps enforce coding standards and prevent errors and bugs in the code.
● It helps to identify and correct common code mistakes without having to run the
application.
5. SonarQube
SonarQube is a static testing open-source tool to inspect code quality continuously.
Features:
● It analyses and identifies the technical debt, bugs, and vulnerabilities across different
programming languages.
● It provides support for 29 languages and analyzes the quality of all the languages in your
projects.
● It has features like custom rules, integration with code repositories, detailed code reports,
and extensible plugins.

What is Requirement-Based Testing

Requirement-based testing in software development refers to a crucial process that involves


validating a software system based on its specified criteria. This approach guarantees that the
software aligns with documented specifications and meets the anticipated outcomes outlined
during the initial phases of the project. Testers generate test cases based on these
requirements, methodically assessing each element to ensure proper functionality. Making
testing strategies align with the requirements enhances the chances of delivering a software
product that complies with predefined benchmarks and user expectations.
Principles of Requirement-Based Testing
1. Traceability: The approach aims to establish clear links between each test and its
respective requirements, ensuring easy tracking.
2. Early Engagement: Early involvement in testing allows teams to comprehend, validate,
and clarify requirements, minimizing misinterpretation risks.
3. Validation and Verification: This methodology focuses on both aspects to ensure
software compliance with specified requirements, boosting testing reliability.
4. Adaptability: Flexibility is a crucial aspect, enabling adjustments in requirements
without compromising testing objectives.
5. Coverage: Comprehensive testing coverage ensures systematic testing of all identified
requirements throughout the testing phase.
6. Documentation: Accurate documentation of requirements, test cases and results captures
the entire testing process for reference.

Integration Testing



Integration testing is the process of testing the interface between two software units or modules.
It focuses on determining the correctness of the interface. The purpose of integration testing is to
expose faults in the interaction between integrated units. Once all the modules have been
unit-tested, integration testing is performed.
Integration testing is a software testing technique that focuses on verifying the interactions and
data exchange between different components or modules of a software application. The goal of
integration testing is to identify any problems or bugs that arise when different components are
combined and interact with each other. Integration testing is typically performed after unit testing
and before system testing. It helps to identify and resolve integration issues early in the
development cycle, reducing the risk of more severe and costly problems later on.

● Integration testing can be done by picking module by module. This can be done so that
there should be a proper sequence to be followed.
● And also if you don’t want to miss out on any integration scenarios then you have to
follow the proper sequence.
● Exposing the defects is the major focus of the integration testing and the time of
interaction between the integrated units.

Integration test approaches


There are four types of integration testing approaches. Those approaches are the following:
1. Big-Bang Integration Testing
● It is the simplest integration testing approach, where all the modules are combined and the
functionality is verified after the completion of individual module testing.
● In simple words, all the modules of the system are simply put together and tested.
● This approach is practicable only for very small systems. If an error is found during the
integration testing, it is very difficult to localize the error as the error may potentially
belong to any of the modules being integrated.
● So, debugging errors reported during Big Bang integration testing is very expensive to
fix.
● Big-bang integration testing is a software testing approach in which all components or
modules of a software application are combined and tested at once.
● This approach is typically used when the software components have a low degree of
interdependence or when there are constraints in the development environment that
prevent testing individual components.
● The goal of big-bang integration testing is to verify the overall functionality of the system
and to identify any integration problems that arise when the components are combined.
● While big-bang integration testing can be useful in some situations, it can also be a
high-risk approach, as the complexity of the system and the number of interactions
between components can make it difficult to identify and diagnose problems.
Advantages of Big-Bang Integration Testing
● It is convenient for small systems.
● Simple and straightforward approach.
● Can be completed quickly.
● Does not require a lot of planning or coordination.
● May be suitable for small systems or projects with a low degree of interdependence
between components.
Disadvantages of Big-Bang Integration Testing
● There will be quite a lot of delay because you would have to wait for all the modules to be
integrated.
● High-risk critical modules are not isolated and tested on priority since all modules are
tested at once.
● Not Good for long projects.
● High risk of integration problems that are difficult to identify and diagnose.
● This can result in long and complex debugging and troubleshooting efforts.
● This can lead to system downtime and increased development costs.
● May not provide enough visibility into the interactions and data exchange between
components.
● This can result in a lack of confidence in the system’s stability and reliability.
● This can lead to decreased efficiency and productivity.

2. Bottom-Up Integration Testing


In bottom-up testing, each module at lower levels are tested with higher modules until all
modules are tested. The primary purpose of this integration testing is that each subsystem
tests the interfaces among various modules making up the subsystem. This integration testing
uses test drivers to drive and pass appropriate data to the lower-level modules.

Advantages of Bottom-Up Integration Testing


● In bottom-up testing, no stubs are required.
● A principal advantage of this integration testing is that several disjoint subsystems can be
tested simultaneously.
● It is easy to create the test conditions.
● Best for applications that uses bottom up design approach.
● It is Easy to observe the test results.
Disadvantages of Bottom-Up Integration Testing
● Driver modules must be produced.
● In this testing, the complexity that occurs when the system is made up of a large number
of small subsystems.
● As Far modules have been created, there is no working model can be represented.
3. Top-Down Integration Testing
Top-down integration testing technique is used in order to simulate the behaviour of the
lower-level modules that are not yet integrated. In this integration testing, testing takes place
from top to bottom. First, high-level modules are tested and then low-level modules and
finally integrating the low-level modules to a high level to ensure the system is working as
intended.

Advantages of Top-Down Integration Testing


● Separately debugged module.
● Few or no drivers needed.
● It is more stable and accurate at the aggregate level.
● Easier isolation of interface errors.
● In this, design defects can be found in the early stages.
Disadvantages of Top-Down Integration Testing
● Needs many Stubs.
● Modules at lower level are tested inadequately.
● It is difficult to observe the test output.
● It is difficult to stub design.
4. Mixed Integration Testing
A mixed integration testing is also called sandwiched integration testing. A mixed integration
testing follows a combination of top down and bottom-up testing approaches. In top-down
approach, testing can start only after the top-level module have been coded and unit tested. In
bottom-up approach, testing can start only after the bottom level modules are ready. This
sandwich or mixed approach overcomes this shortcoming of the top-down and bottom-up
approaches. It is also called the hybrid integration testing. also, stubs and drivers are used in
mixed integration testing.
Advantages of Mixed Integration Testing
● Mixed approach is useful for very large projects having several sub projects.
● This Sandwich approach overcomes this shortcoming of the top-down and bottom-up
approaches.
● Parallel test can be performed in top and bottom layer tests.
Disadvantages of Mixed Integration Testing
● For mixed integration testing, it requires very high cost because one part has a Top-down
approach while another part has a bottom-up approach.
● This integration testing cannot be used for smaller systems with huge interdependence
between different modules.

Acceptance Testing

Acceptance Testing is an important aspect of Software Testing, which guarantees that


software aligns with user needs and business requirements. The major aim of this test is to
evaluate the compliance of the system with the business requirements and assess whether it is
acceptable for delivery or not.

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.
Acceptance Testing is the last phase of software testing performed after System Testing and
before making the system available for actual use.
Alpha Testing
● Alpha testing is used to determine the product in the development testing environment by
a specialized testers team usually called alpha testers.
Beta Testing
● Beta testing is used to assess the product by exposing it to the real end-users, typically
called beta testers in their environment.
● Feedback is collected from the users and the defects are fixed. Also, this helps in
enhancing the product to give a rich user experience.

Use of Acceptance Testing


1. To find the defects missed during the functional testing phase.
2. How well the product is developed.
3. A product is what actually the customers need.
4. Feedback help in improving the product performance and user experience.
5. Minimize or eliminate the issues arising from the production.
Advantages of Acceptance Testing
1. This testing helps the project team to know the further requirements from 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.
Disadvantages of Acceptance Testing
1. Users should have basic knowledge about the product or application.
2. Sometimes, users don’t want to participate in the testing process.
3. The feedback for the testing takes a long time as it involves many users and the opinions
may differ from one user to another user.
4. Development team is not participated in this testing process.

Alpha Testing
Alpha Testing is an essential phase in software testing conducted by
the development or QA team before beta testing . It aims to identify and fix bugs in
a controlled environment that simulates real-world conditions. This helps ensure the
software’s functionality , reliability , and stability . Alpha
testing combines white-box and black-box testing techniques to explore and evaluate the
software.
This process is crucial for enhancing software quality and ensuring a positive user
experience before releasing the product to external testers or customers.
Alpha Testing is a type of software testing performed to identify bugs before releasing the
product to real users or the public. Alpha Testing is one of the U ser acceptance tests . This
is referred to as Alpha testing only because it is done early on, near the end of
the development of the software .

Who is Responsible for Alpha Testing?


Alpha testing is primarily conducted by the internal team responsible for the software,
including developers , the Quality Assurance (QA) team , and sometimes product
managers and internal users. Developers perform initial tests on their code, while QA testers
conduct systematic testing to identify and document bugs. Product managers ensure the
software meets business requirements, and internal users may provide additional feedback by
using the software in real-world scenarios
Advantages of Alpha Testing
1. Early identification of bugs and issues: Alpha testing allows for the early identification
of bugs and issues, providing an opportunity to fix them before they reach end-users.
2. Improved quality: By identifying and fixing bugs and issues early in the development
process, alpha testing helps to improve the overall quality of the software.
3. Increased user satisfaction: Alpha testing helps to ensure that the software meets the
needs of the target audience, leading to increased user satisfaction.
4. Faster resolution of problems: Alpha testing allows for the rapid resolution of problems,
reducing the likelihood of further issues down the line.
5. Cost savings: By identifying and fixing issues early in the development process, alpha
testing can help to save time and money by avoiding the need for more extensive testing
and bug fixing later on.
Objective of Alpha Testing
1. The objective of alpha testing is to refine the software product by finding the bugs that
were not discovered during the previous tests.
2. The objective of alpha testing is to refine the software product by fixing the bugs that
were not discovered during the previous tests.
3. The objective of alpha testing is to involve customers deep into the process of
development.
4. The objective of alpha testing is to give better insight into the software’s reliability at the
early stages of development.
5. The main objective of alpha testing is to identify and resolve critical bugs and issues in
the software before it is released to the public. The goal is to assess the software’s overall
quality, functionality, usability, performance, and stability in a controlled environment,
and to ensure that it meets the needs and expectations of the target audience.
6. During alpha testing, the software is evaluated against a set of predetermined acceptance
criteria, and any issues or bugs that are identified are documented and reported back to
the development team for resolution. The objective of alpha testing is to provide an early
opportunity to identify and fix bugs and issues, reducing the likelihood of them affecting
end-users and potentially causing damage to the software’s reputation.
7. Overall, the objective of alpha testing is to improve the quality of the software, ensure
that it meets the needs of the target audience, and reduce the risk of issues and bugs
affecting end-users after the software has been released.

Beta Testing

Beta testing is the process of testing a software product or service in a real-world


environment before its official release. It is an essential step in the software development
lifecycle as it helps identify bugs and errors that may have been missed during the
development process.
During beta testing, the software is made available to a selected group of users who are
willing to test the product and provide feedback to the developers. The beta testers typically
use the software in various ways, attempting to find any issues, bugs, or usability problems.
They then provide feedback on their experience, reporting any issues or issues encountered.
This feedback is used by the developers to improve the software, fix bugs, and enhance its
functionality, making it more user-friendly and robust. Beta testing is also an opportunity for
the developers to evaluate the software’s performance and gather valuable information about
how it is being used in the real world.
The beta testing phase is an important step towards ensuring a successful product launch. It
helps the developers to ensure that their software is stable, reliable, and meets the needs of
the users. Beta testing also helps to build customer loyalty by involving them in the
development process and making them feel like their input is valued.
Beta Testing is performed by real users of the software application in a real environment.
Beta testing is one of the types of User Acceptance Testing. A Beta version of the software,
whose feedback is needed, is released to a limited number of end-users of the product to
obtain feedback on the product quality. Beta testing helps in minimization of product failure
risks and it provides increased quality of the product through customer validation. It is the
last test before shipping a product to the customers. One of the major advantages of beta
testing is direct feedback from customers.

Why Require Beta Testing?


Beta testing is necessary for several reasons:
1. Identify and fix bugs: Beta testing helps to identify and fix bugs or errors in the software.
It allows developers to catch issues that were not detected during the development process
and resolve them before the official launch.
2. Ensure software quality: Beta testing helps to ensure that the software meets the expected
quality standards before it is released to the public. This helps to reduce negative reviews,
returns, and refunds that can affect the product’s reputation.
3. Evaluate performance: Beta testing enables developers to evaluate the software’s
performance in real-world scenarios, which can help identify issues with the software’s
functionality, speed, and responsiveness.
4. Get user feedback: Beta testing provides a platform for users to provide feedback about
the software, its features, and usability. This feedback can be used to improve the
software’s overall performance and user experience.
5. Improve user engagement: Beta testing can improve user engagement by allowing users
to test the software and provide feedback. This helps to build a relationship between the
developers and the users, leading to increased user satisfaction.
Characteristics of Beta Testing
1. Beta Testing is performed by clients or users who are not employees of the company.
2. Reliability, security, and robustness are checked during beta testing.
3. Beta Testing commonly uses black-box testing.
4. Beta testing is carried out in the user’s location.
5. Beta testing doesn’t require a lab or testing environment.

Difference between functional and non-functional testing:


Functional Testing Non-functional Testing

It verifies the operations and actions of an


It verifies the behavior of an application.
application.

It is based on requirements of customer. It is based on expectations of customer.

It helps to enhance the behavior of the It helps to improve the performance of the
application. application.

Functional testing is easy to execute It is hard to execute non-functional testing


manually. manually.

It tests what the product does. It describes how the product does.

Functional testing is based on the Non-functional testing is based on the


business requirement. performance requirement.

Examples: Examples:
1. Unit Testing 1. Performance Testing
2. Smoke Testing 2. Load Testing
3. Integration Testing 3. Stress Testing
4. Regression Testing 4. Scalability Testing

You might also like