STE Micro Project

Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

S.H.

JONDHALE POLYTECHNIC

SUBJECT NAME:SOFTWARE TESTING

DEPARTMENT:COMPUTER

SEMESTER:5TH

MICRO PROJECT TITLE: DETAIL REPORT ON TYPES OF


SOFTWARE TESTING

YEAR: 2024-25

PREPARED BY:
1. SANSKRUTI NILE [1503]

UNDER THE GUIDANCE OF: Prof. MRS.P.H.NHARAMBE

1
Maharashtra State Board of Technical Education
Certificate

This is to certify that


Ms Sanskruti Nile
Of fifth Semester of Diploma in computer engineering of
Institute S.H.Jondhale polytechnic has
Successfully completed Micro-project work in subject
Software Testing for the academic year 2024-2025 as prescribed
in the I-Scheme Curriculum

Place:Dombivili Enrollment no:2200440051


Date: Exam seat no:

Signature Signature Signature


Of Of Of
Project guide HOD Principal

Seal of institute

2
ACKNOWLEDGMENT

We wish to express our profound gratitude to our guide Mrs.


P.H.Bharambe who guided us endlessly in the framing and completion
of the micro project. She guided us on all the main points in that
micro project. We are indebted to her constant encouragement,
cooperation, and help. It was her enthusiastic support that helped us in
overcoming various obstacles in the micro-project.We are also
thankful to our Principal, HOD, faculty members and classmates of
department for extending their support and motivation in the
completion of this micro-project.

Names of Team Members with Roll Nos.


1. Sanskruti Nile [1503]

3
ABSTRACT

The project titled "Types of Software Systems" aims to provide a


comprehensive overview of the various categories of software
systems that play a crucial role in modern computing environments.
As technology continues to evolve, understanding the different types
of software is essential for both developers and users to effectively
navigate the software landscape. This project classifies software
systems into distinct categories, including system software,
application software, middleware, and development software, each
serving unique purposes and functionalities.

System software, such as operating systems and device drivers,


manages hardware resources and provides a platform for running
application software. Application software, on the other hand, refers
to programs designed for end-users to perform specific tasks, ranging
from productivity tools to entertainment applications. Middleware
serves as an intermediary layer, facilitating communication between
different software components or applications, while development
software encompasses tools and environments used for creating,
testing, and deploying software applications.

By exploring the characteristics, functionalities, and examples of each


type of software system, this project aims to enhance understanding of
their roles in computing. Additionally, the project will discuss the
impact of software systems on various industries and the importance
of selecting the appropriate type of software for specific needs.
Through this exploration, the project aspires to provide valuable
insights into the software ecosystem, equipping stakeholders with the
knowledge necessary to make informed decisions regarding software
selection and implementation.

4
ACTION PLAN
Sr. Wee Details of activity Planned Planned Name of Responsible
No. k Start date Finish Team
date Members
1 1 & Discussion and finalization of the
2 topic.

2 3 Preparation of the abstract

3 4 Literature review

4 5 Submission of micro project


proposal (Annexure I)

5 6 Collection of the information on


the topic.

6 7 Collection of all relevant content /


materials for the execution of the
project.

7 8 Discussion and submission of


outline of the project.

8 9 Analysis/execution of collected
data/information and Preparation of
prototypes/drawings/charts/graphs/
tables/models/circuits/programs
etc.
9 10 Compilation of contents of project

10 11 Compilation of weekly progress


report

11 12 Preparation of the project report


(Annexure II)

12 13 Viva Voce / Delivery of


presentation.

5
INDEX

Sr.No Topic Pgno


1. Introduction 7
2. Requirements analysis and System 8
specifications

3. Objectives of software testing 9


4. Test planning activity 10-11
5. Levels of testing 12-13
6. Types of software testing 14-22
7. Future Scope 23
8. Conclusion 24
9. Reference 25

6
INTRODUCTION

Software testing is a critical phase in the software development


lifecycle (SDLC) that aims to ensure the quality, reliability, and
performance of software applications. As software systems become
increasingly complex, the need for effective testing has grown
significantly, making it a fundamental practice for developers and
organizations. Testing involves the systematic evaluation of software
products to identify defects, verify functionality, and validate that the
software meets specified requirements.

The primary objective of software testing is to detect and resolve


issues before the software is deployed to users, thereby reducing the
risk of failures and ensuring a positive user experience. It helps
confirm that the software functions as intended, performs well under
various conditions, and adheres to industry standards and regulations.
Through rigorous testing, organizations can improve the robustness
and maintainability of their software, ultimately leading to higher
customer satisfaction and reduced costs associated with post-release
fixes.

Software testing encompasses a wide range of techniques and


methodologies, which can be broadly classified into two main
categories: manual testing and automated testing. Manual testing
involves human testers executing test cases, analyzing results, and
identifying defects, while automated testing uses specialized tools and
scripts to execute tests automatically, enhancing efficiency and
accuracy.

Various testing levels exist, including unit testing, integration testing,


system testing, and acceptance testing. Each level focuses on different
aspects of the software, from individual components to the overall
system behaviour.

7
REQUIREMENT ANALYSIS AND SYSTEM SPECIFICATION

Resource specification quantity


computer Intel i5 or higher, 8GB 1
RAM, 500GB HDD

Google docs 1
Documentation
Software

Software testing Nirali prakashan 1


textbook

8
OBJECTIVES OF SOFTWARE TESTING
1. Defect Detection: The primary objective of testing is to identify defects
or bugs in the software before it is released. Early detection helps reduce
the cost of fixing issues and improves overall product quality.
2. Verification of Requirements: Testing ensures that the software meets the
specified requirements and performs the intended functions as outlined in
the design documents. It verifies that the software behaves as expected in
various scenarios.
3. Validation of Software Functionality: Testing validates that the software
behaves correctly in real-world scenarios, confirming that it meets user
needs and provides the expected output for a given input.
4. Performance Evaluation: Testing assesses the performance of the
software under various conditions, including load and stress testing. This
ensures the software can handle expected user loads and performs
efficiently without degradation.
5. Usability Assessment: Testing evaluates the user interface and overall
user experience to ensure the software is user-friendly, intuitive, and
meets the needs of its target audience.
6. Security Assurance: Testing aims to identify vulnerabilities and security
weaknesses within the software, ensuring that sensitive data is protected
and the software is resilient to potential attacks.
7. Compliance with Standards: Testing verifies that the software adheres to
industry standards, regulations, and best practices, ensuring that it is
compliant with legal and operational requirements.
8. Risk Mitigation: By identifying and addressing potential issues early in
the development process, testing helps mitigate risks associated with
software failures, which could lead to financial loss, reputational damage,
or operational disruptions.
9. Documentation for Future Reference: Testing provides valuable
documentation of test cases, results, and defect logs. This documentation
serves as a reference for future maintenance, updates, and audits.
10.Continuous Improvement: Testing facilitates feedback loops that
contribute to the continuous improvement of the software development
process. By analyzing test results and defect patterns, teams can refine
their development practices and improve software quality over time.

9
TEST PLANNING ACTIVITY

1. Define Clear Objectives

The primary goal of test planning is to establish clear and measurable objectives
for what the testing process aims to achieve. This includes defining what will be
tested, the level of quality expected, and the criteria for success. Clear
objectives guide the entire testing effort and help in evaluating its effectiveness.

2. Involve Stakeholders

Engaging relevant stakeholders—such as developers, project managers, product


owners, and end-users—in the test planning process ensures that their
perspectives and requirements are considered. Involvement of stakeholders
helps to align testing objectives with business goals and user expectations.

3. Risk-Based Testing

Prioritize testing efforts based on risk assessment. Identify potential risks


associated with different parts of the software and allocate testing resources
accordingly. This principle ensures that high-risk areas receive more focus,
increasing the likelihood of discovering critical issues before deployment.

4. Establish Test Scope

Clearly define the scope of testing by identifying what will and will not be
included in the testing effort. This includes specifying the features to be tested,
the types of testing to be performed (e.g., functional, performance, security),
and the testing environment. A well-defined scope helps to manage resources
effectively and set realistic expectations.

5. Create a Test Strategy

Develop a comprehensive test strategy that outlines the overall approach to


testing. This includes defining the types of testing to be conducted, the testing
methodologies (manual vs. automated), tools to be used, and the roles and
responsibilities of team members. A clear strategy helps to ensure consistency
and thoroughness in testing.

6. Define Entry and Exit Criteria

10
Establish clear entry and exit criteria for each testing phase. Entry criteria
specify the conditions that must be met before testing begins, such as the
availability of test environments and test data. Exit criteria define the conditions
that indicate when testing can be considered complete, such as meeting quality
benchmarks and resolving critical defects.

7. Allocate Resources Wisely

Effective test planning involves proper allocation of resources, including


personnel, tools, and time. Assess the skills and experience of team members
and assign tasks based on their strengths. Additionally, ensure that the testing
environment is adequately prepared and that tools are available to support the
testing process.

8. Documentation and Communication

Maintain thorough documentation of the test plan, including objectives, scope,


strategy, schedules, and resource allocations. Regularly communicate the test
plan to all stakeholders to ensure transparency and alignment. Clear
documentation and communication help manage expectations and facilitate
collaboration among team members.

9. Continuous Review and Adaptation

Test planning should be a dynamic process that allows for continuous review
and adaptation as the project evolves. Regularly assess the effectiveness of the
testing approach, gather feedback from stakeholders, and make necessary
adjustments to the test plan based on changes in requirements, project scope, or
discovered risks.

10. Leverage Metrics and Feedback

Utilize metrics and feedback to evaluate the effectiveness of the testing process.
Track key performance indicators (KPIs), such as defect density, test coverage,
and test execution progress, to assess the quality of the software and the
efficiency of the testing efforts. Data-driven insights can guide future test
planning and help identify areas for improvement.

11
LEVELS OF TESTING

1. Unit Testing

Unit testing is the first level of testing, focusing on the smallest testable parts of
an application, known as units. A unit can be a single function, method, or class
in the codebase. The primary goal is to verify that each unit performs as
expected in isolation. Developers typically conduct unit tests during the coding
phase using frameworks such as JUnit for Java, NUnit for .NET, and PyTest for
Python.Unit tests help identify bugs early in the development process, making it
easier and less costly to fix issues before they propagate to later stages of
development. They also provide documentation of the code, ensuring that
developers understand how individual units should behave. Overall, unit testing
enhances code reliability and maintainability, fostering a more robust
development environment.

2. Integration Testing

Integration testing comes after unit testing and focuses on the interactions
between integrated units or components. The primary objective is to identify
issues that may arise when combining different modules, such as interface
mismatches, data flow problems, or communication errors.Integration testing
can be performed in various approaches, including top-down, bottom-up, or
sandwich (hybrid) testing. In top-down testing, higher-level modules are tested
first, while in bottom-up testing, lower-level components are tested before
integrating them into higher-level modules. This level of testing is typically
performed by developers or dedicated testing teams using tools like Postman for
API testing or Selenium for web applications.

3. System Testing

System testing is the third level of testing, where the entire software application
is evaluated as a complete and integrated system. This level assesses whether
the software meets the specified requirements and performs its intended
functions across various scenarios.System testing includes both functional and
non-functional testing, covering aspects such as performance, security, usability,
and compatibility

12
4. Acceptance Testing

Acceptance testing is the final level of testing performed to determine if the


software is ready for deployment. This phase focuses on validating that the
application meets business requirements and satisfies user needs.Acceptance
testing can be classified into User Acceptance Testing (UAT) and Operational
Acceptance Testing (OAT). The primary objective of acceptance testing is to
ensure that the software is acceptable for delivery to end-users. It acts as a final
verification step, providing confidence that the application is ready for
deployment and will perform effectively in a production environment.

These four levels of software testing—Unit Testing, Integration Testing, System


Testing, and Acceptance Testing—are crucial in ensuring the overall quality,
functionality, and reliability of software applications. By systematically
addressing each level, organizations can identify and resolve issues early in the
development process, leading to higher-quality software and a better user
experience.

13
TYPES OF SOFTWARE TESTING
UNIT TESTING

Unit Testing is a fundamental level of software testing where individual units or


components of a software application are tested to ensure they perform as
designed. As the first level of testing, unit testing is conducted prior to
integration testing and focuses on the smallest testable parts of the software,
which typically consist of a single function, method, loop, or statement. Each
unit generally has one or a few inputs and produces a single output. Unit tests
are primarily executed by developers using the white box testing method,
allowing them to verify the internal workings of the code.

Drivers and Stubs

In unit testing, drivers and stubs are essential tools used during integration
testing to facilitate the testing of modules that are not yet integrated. Drivers are
utilized in a bottom-up integration testing approach and simulate the behavior of
upper-level modules that are unavailable. They act as temporary replacements,
enabling interaction with the modules being tested. For instance, if modules B
and C are ready but module A, which calls functions from both, is not yet
complete, developers write a dummy piece of code for module A. This dummy
code, known as a driver, returns values to modules B and C, allowing for their
testing in isolation.

On the other hand, stubs are employed in top-down integration testing. They
simulate the behavior of lower-level modules that have not yet been integrated,
serving as temporary replacements that provide the same outputs as the actual
product. For example, if module A is ready but requires functions from modules
B and C, which are not available, a developer would create a stub for modules B
and C. This stub would simulate their behavior and return expected values to
module A for testing purposes.

Importance of Stubs and Drivers

The importance of stubs and drivers in unit testing cannot be overstated:

1. They act as substitutes for missing or unavailable modules, facilitating


testing.

14
2. Each stub and driver is specifically developed for its respective module,
tailored to its functionalities.
3. Both developers and unit testers are involved in creating stubs and drivers
to ensure comprehensive testing coverage.
4. Their most common applications are seen in integration incremental
testing, where stubs support a top-down approach and drivers facilitate a
bottom-up approach.

Benefits of Unit Testing

The benefits of unit testing are numerous and significantly enhance the software
development process:

1.Increased Confidence: By running unit tests after every code change,


developers can quickly identify and rectify defects introduced during
modifications, boosting overall confidence in the codebase.

2.Code Reusability: Well-tested units of code are generally more modular,


making them easier to reuse across different parts of the application or in
future projects.

3.Faster Development: Unit testing contributes to a quicker development


cycle, as issues are identified and resolved early, reducing the time spent
on debugging later stages of development.

4.Lower Costs: The cost of fixing defects discovered during unit testing is
significantly lower than addressing issues found in later testing phases,
such as integration or system testing.

15
INTEGRATION TESTING

Integration Testing is a critical level of software testing that focuses on


combining individual software units or components and testing them as a group.
The primary objective of integration testing is to validate the interactions and
interfaces between these combined modules, ensuring they work together
correctly within the overall system. Unlike unit testing, which tests individual
components in isolation, integration testing examines how these components
collaborate, including their communication and data exchanges. This testing
phase is essential for identifying issues that may arise when integrating various
units, such as mismatches in data formats or unexpected interactions between
modules.

Top-Down Integration Testing

Top-Down Integration Testing is an approach where testing is performed


starting from the high-level modules down to the lower-level modules. This
strategy follows the design hierarchy of the software, integrating and testing the
main modules first and subsequently integrating the subordinate sub-modules.
When a sub-module is not available for testing, a temporary program known as
a stub is used to simulate its behavior, allowing the integration testing to
proceed without the completed sub-module.

Within the top-down integration approach, there are two integration strategies:

1. Depth-First Integration: In this strategy, all modules that are part of the
main control path of the design hierarchy are integrated first. This means
that the testing focuses on the key components that control the main
functionality of the application. For example, if modules 1, 2, and 4/5 are
part of the primary control flow, these are integrated first, followed by
integrating modules 1, 3, and 6.
2. Breadth-First Integration: This strategy focuses on integrating all modules
that are directly subordinate at each level of the design hierarchy, moving
horizontally across the levels before proceeding downwards. For instance,
modules 2 and 3 might be integrated first, followed by modules 4, 5, and
6.

16
Procedure

The procedure for executing Top-Down Integration Testing involves several key
steps:

1. Initialize Testing: Begin with the top or initial module in the software.
Substitute stubs for all subordinate modules of the top module to allow
for testing of the primary functions.
2. Top Module Testing: Test the top module with the stubs in place to ensure
it functions correctly.
3. Substitute Actual Modules: Once the top module has been successfully
tested, replace one stub at a time with the actual module to facilitate
integration and testing.
4. Testing in Integrated Environment: Conduct testing within this recently
integrated environment to ensure that the new modules work correctly
with the top module.
5. Regression Testing: Perform regression testing to verify that the
integration of new modules has not introduced any errors into the already
tested parts of the system.
6. Iterative Process: Repeat steps 2 through 5 for the entire design hierarchy
until all modules have been integrated and tested.

Advantages

● Identifying Major Flaws: This method is advantageous if major design


flaws are present at the top of the program structure.
● Easier Test Case Representation: Once I/O functions are integrated,
creating test cases becomes more straightforward.
● Early Demonstrations: The early skeletal program allows for
demonstrations to stakeholders, boosting team morale.

Disadvantages

● Stub Creation: The need for creating stubs can introduce additional
complexity.
● Complexity of Stubs: Stub modules may be more complicated than
initially anticipated, leading to potential issues in testing.
● Difficult Test Conditions: Test conditions may be challenging to create
before I/O functions are fully integrated.

17
Bottom-Up Integration Testing

In contrast, Bottom-Up Integration Testing focuses on testing from the


sub-modules upwards to the main module. In this approach, if the main module
is not developed, a temporary program called a driver is used to simulate its
behavior. This allows for the testing of lower-level modules first before
integrating them into higher-level modules.

Advantages

● Identifying Flaws at Lower Levels: This approach is beneficial for


identifying major flaws that occur at the lower levels of the software.
● Easier Test Conditions: Creating test conditions is generally simpler
compared to top-down integration testing.
● Simpler Observation of Results: Observing test results is often more
straightforward, as lower-level modules are tested first.

Disadvantages

● Driver Creation: Similar to stubs in the top-down approach, driver


modules must be produced for testing.
● Delayed Program Completion: The complete program as an entity does
not exist until the last module is integrated, which may delay overall
testing timelines.
● Critical Modules Tested Last: Important top-level modules that control
application flow may be tested last, potentially hiding defects until late in
the testing process.
● No Early Prototypes: This approach does not allow for early prototype
demonstrations, which can be valuable in large projects.

Bi-Directional (Sandwich) Integration Testing

Bi-Directional Integration Testing, also known as Sandwich Integration Testing,


combines both top-down and bottom-up testing methodologies. This approach
allows for the simultaneous testing of both the top layers and the bottom layers
of the software.

18
Advantages

● Effective for Large Projects: The sandwich approach is particularly useful


for large projects with multiple subprojects, as it allows for parallel
testing of modules.
● Simultaneous Testing: Both top-down and bottom-up approaches can be
initiated at the same time, aligning with development schedules.

Disadvantages

● High Testing Costs: The combination of two approaches can lead to


higher testing costs.
● Complexity in Small Systems: This approach may not be suitable for
smaller systems with significant interdependencies, as the complexity of
testing increases.

19
SYSTEM TESTING

System Testing is a level of software testing where the complete and integrated
software application is evaluated to ensure that it meets specified requirements.
It is typically conducted after integration testing and involves testing the entire
system as a whole to validate its functionality, performance, security, and
compliance with business needs. The goal of system testing is to identify defects
and issues in the software before it is released to users, ensuring that the
application operates as intended in a real-world environment.

System testing can encompass various types of testing, including functional


testing, non-functional testing (such as performance, usability, and security
testing), and regression testing. It serves as a final validation phase before the
software enters user acceptance testing (UAT), where end-users verify that the
system meets their requirements and is ready for deployment.

Advantages of System Testing

1. Validation of Requirements: System testing ensures that the software


meets all the specified functional and non-functional requirements,
providing confidence that the system works as intended.
2. End-to-End Testing: It tests the entire system as a whole, validating
interactions between different modules and external interfaces, which
helps identify integration issues.
3. Unbiased Testing: Since system testing is typically conducted by a
separate QA team, it provides an objective assessment of the software's
quality, free from developer bias.
4. Identifies Defects: This phase helps uncover defects and inconsistencies
that may not have been detected in earlier testing phases, including unit
and integration testing.

Disadvantages of System Testing

1. Resource Intensive: System testing can be time-consuming and


resource-intensive, requiring significant manpower, tools, and
environments to simulate real-world usage.
2. High Cost: Due to the extensive nature of testing and the resources
required, system testing can add significant costs to the overall project
budget

20
ACCEPTANCE TESTING

Acceptance Testing is a crucial level of software testing that evaluates a


system’s acceptability based on predefined criteria. The primary aim of this
testing phase is to ascertain that the system meets the business requirements and
is ready for delivery. This type of testing is typically performed after System
Testing and involves the application of Black Box Testing methods. During
Acceptance Testing, acceptance test cases are executed against specified test
data or using acceptance test scripts, with the outcomes compared against
expected results to establish confidence in the system’s functionality and
reliability.

Alpha Testing

Alpha Testing is conducted at the development site by a team of skilled testers


before the software is released to the public. It consists of two phases: the first
involves in-house developers using debuggers to quickly identify and fix bugs,
while the second phase engages the Quality Assurance (QA) staff to test the
software in an environment that mimics real-world usage.

Advantages of Alpha Testing

● Uncovers bugs that may have been missed in earlier testing phases.
● Provides insights into product usage and reliability.
● Identifies potential risks prior to launch, preparing teams for customer
support.
● Reduces maintenance costs by identifying and addressing bugs before the
public release.
● Facilitates easier test management.

Disadvantages of Alpha Testing

● Not all product functionalities may be tested.


● The testing scope is limited to business requirements.

21
Beta Testing

Beta Testing, also referred to as field testing, occurs at the customer’s site,
allowing real users to install and use the software under real-world conditions.
This phase aims to identify any issues from the user’s perspective, addressing
flaws that may not have been noticed by the development team.

Advantages of Beta Testing

● Enables the application to be tested by actual users before public release.


● Users can provide feedback, helping to identify issues such as confusing
workflows or crashes.
● Feedback from beta testers allows for the correction of problems before
the final release, enhancing the overall quality of the application.
● A higher-quality application at launch leads to increased customer
satisfaction and excitement among early adopters.

Disadvantages

● Limited Functionality Testing: Alpha testing may not cover all


functionalities of the product, as the focus is primarily on identifying
critical bugs rather than comprehensive functionality testing.
● Scope Restrictions: The testing scope is often limited to business
requirements, which can overlook potential user experience issues that
might arise in real-world usage.
● Resource Intensive: Conducting alpha testing requires a dedicated testing
team and resources, which can increase project costs and extend
timelines.
● In-house Testing Limitations: Since alpha testing is conducted in-house, it
may not accurately reflect the end-user experience, leading to issues that
could go unnoticed until the product is in the hands of actual users.

22
FUTURE SCOPE
The future scope of software testing is set to evolve significantly, driven
by advancements in technology and changing industry demands.
Automation and AI integration will play a crucial role, enabling faster
and more accurate testing processes while enhancing defect identification
and optimization of test cases. Continuous testing will become
increasingly important in alignment with Agile and DevOps practices,
facilitating faster feedback loops throughout the software development
life cycle. As organizations transition to cloud environments, testing
strategies must adapt to ensure compatibility and performance in these
platforms. Security testing will gain prominence due to the rising threat of
cyberattacks, necessitating early identification of vulnerabilities.
Additionally, with the growth of Internet of Things (IoT) devices and
mobile applications, specialized testing approaches will be required to
address unique challenges related to connectivity and performance. User
experience (UX) testing will also become vital as organizations prioritize
user-centric design. Moreover, the shift-left and shift-right testing
strategies will continue to gain traction, promoting early detection and
real-time monitoring of software quality. Data-driven testing will leverage
big data analytics to inform testing strategies and prioritize efforts.
Overall, the future of software testing will emphasize automation,
collaboration, security, and a strong focus on user needs, ensuring that
software systems are reliable, secure, and high-quality in an increasingly
complex digital landscape.

23
CONCLUSION
In conclusion, software testing is an essential component of the software
development life cycle, ensuring that applications function correctly and
meet user requirements. Each level of testing—unit, integration, system,
and acceptance—plays a critical role in identifying and addressing
defects, thereby enhancing the quality and reliability of the software. Unit
testing focuses on individual components, integration testing examines
interactions between those components, system testing evaluates the
complete integrated system, and acceptance testing verifies that the
software meets business needs and is ready for deployment. By
systematically applying these testing levels and employing methodologies
such as black box and white box testing, organizations can significantly
reduce the risk of failures and ensure a smoother user experience.
Ultimately, thorough testing leads to higher user satisfaction, lower
maintenance costs, and successful software delivery, reinforcing the
importance of a robust testing strategy in the development process.

24
REFERENCES
● www.google.com
● www.studoc.com
● www.greeksforgreeks.com
● www.scrib.com
● www.wordpress.com

25

You might also like