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

Software Testing Reading Note

Uploaded by

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

Software Testing Reading Note

Uploaded by

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

CHAPTER 1&2

INTRODUCTION TO SOFTWARE TESTING


Welcome to the first lecture on Software Testing, where you will
Be introduced the fundamentals of software testing, its objectives, and its
importance in the software development life cycle.
What is SLDC?
Firstly, let us understand what is meant by the software development life cycle
(SDLC). The SDLC is a structured approach to software development,
consisting of a series of stages, each with its specific goals and deliverables.
These stages include planning, requirements gathering, design,
implementation, testing, deployment, and maintenance.
The primary goal of the SDLC is to produce high-quality software that meets user
requirements and specifications.
WHAT IS SOFTWARE TESTING?
However, despite the structured approach of the SDLC, it is not uncommon for
software systems to have defects, errors, and flaws that can lead to
unexpected behavior, poor performance, and even system failure. This is
where software testing comes into play.
Software testing is the process of evaluating a software system or application to
identify defects, errors, or flaws in the system. The primary objective of
software testing is to ensure that the system meets user requirements,
specifications, and quality standards. The testing process involves running the
system under various scenarios and conditions to check if it performs as
expected and to identify any issues that may exist.
IMPORTANCE OF SOFTWARE TESTING
Detecting defects and bugs: Testing helps to identify defects and bugs in the
software system, which can be fixed before the product is released to the
endusers. This helps to improve the quality of the software and prevent
potential issues that may arise during usage.
Improving software quality:
Testing helps to ensure that the software system meets the desired quality standards
and functional requirements. This helps to ensure that the software is reliable,
efficient, and user-friendly.
Reducing costs: Identifying and fixing defects early in the software development
lifecycle can help to reduce the overall cost of software development. This is
because it is less expensive to fix issues earlier in the process than after the
product has been released.
Meeting user expectations: Testing helps to ensure that the software system
meets the user expectations and requirements. This helps to improve user
satisfaction and increase user adoption of the software.
Compliance: Testing helps to ensure that the software system complies with the
regulatory and industry standards. This is particularly important in industries
such as healthcare, finance, and defense where compliance is critical.
OBJECTIVES OF SOFTWARE TESTING
Verification: To ensure that the software system meets the specified requirements
and functions as intended.
Validation: To ensure that the software system meets user expectations and is
suitable for its intended purpose.
Defect Detection: To identify defects, errors, or flaws in the system that could
lead to unexpected behavior, poor performance, or system failure.
Improving Quality: To improve the quality and reliability of the software system
by identifying and correcting defects and errors.
TEST PLANNING AND DESIGN
Test planning and design are critical phases in software testing that ensure the
effectiveness and efficiency of the testing process. Test planning involves the
identification of the scope of testing, the test environment, test objectives,
and the test design techniques. Test design involves the creation of test cases
and test data that will be used to evaluate the software system's functionality,
performance, and usability. This lecture will cover the test planning process,
test strategy and approach, test case design techniques, and test data
preparation.
TEST PLANNING PROCESS
Test Scope Identification: In this step, the scope of the testing is identified. It
includes the identification of the software system's functionalities, features,
and characteristics that will be tested.
Test Environment: The test environment should be set up in such a way that it
replicates the real-world environment in which the software system will be
used.
Test Objectives: The test objectives should be defined in such a way that they are
measurable, achievable, and realistic.
Test Strategy and Approach: The test strategy and approach should be defined
in such a way that they align with the organization's objectives, goals, and
mission.
TEST STRATEGY AND APPROACH
Test Type Selection: The type of testing should be selected based on the software
system's characteristics, features, and functionalities.
Test Execution: The test execution process should be designed in such a way that
it ensures the test cases are executed correctly and the test results are
analyzed correctly.
Defect Management: The defect management process should be defined in such
a way that it ensures the defects are identified, reported, and tracked
throughout the testing process.
TEST CASE DESIGN TECHNIQUES:
Equivalence Partitioning: Equivalence partitioning is a technique used to divide
the input data into different sets that can be tested together.
Boundary Value Analysis: Boundary value analysis is a technique used to test the
boundaries of the input data.
Decision Table Testing: Decision table testing is a technique used to test the
software system's functionality when different input conditions are applied.
EQUIVALENCE PARTITIONING:
Equivalence partitioning is a black-box testing technique that involves dividing the
input data into a set of groups or partitions. Each partition represents a range
of input values that have the same behavior, output, or effect on the software
system being tested. This technique is based on the assumption that if one
input in a partition is valid or invalid, then all other inputs in that partition are
also valid or invalid, respectively.
For example, if a program requires an input value between 1 and 1000, we can
divide this range into multiple partitions. For instance, we can have three
partitions, 1-333, 334-667, and 6681000. If we test one input value from each
partition, we can be confident that the software behaves the same way for
other values within that partition.
BOUNDARY VALUE ANALYSIS
Boundary value analysis is a testing technique used to test the boundaries of input
values. The goal is to identify errors that may occur at the boundaries of the
input domain, as these errors are more likely to happen than errors within the
input range. In this technique, we test the values that are just inside and
outside of the input range to see if the software behaves as expected.
For example, if a program requires an input value between 1 and 1000, we would
test values just above and below the boundary, i.e., 0, 1, 2, 999, 1000, and
1001. This technique can help identify errors related to overflow, underflow,
and other boundary-related issues.
BOUNDARY VALUE ANALYSIS
Decision table testing is a technique used to test the software system's functionality
when different input conditions are applied. It involves creating a table that
shows the different combinations of input values and their corresponding
expected outputs. The goal is to identify all possible combinations of input
values and ensure that the software behaves correctly for each one.
For example, suppose we have a program that calculates the cost of a product based
on its type, quantity, and discount rate. In that case, we can create a decision
table that shows all the possible combinations of these inputs and their
expected outputs. By testing each combination, we can verify that the
software behaves correctly for each scenario. Decision table testing can help
identify errors related to incorrect calculations, wrong outputs, and missing
scenarios.
TEST DATA PREPARATION:
Test data preparation involves the creation of test data that will be used to evaluate
the software system's functionality, performance, and usability. The test data
should be designed in such a way that it covers all the possible scenarios and
conditions that the software system may encounter in the real-world
environment.
CONCLUSION:
Test planning and design are critical phases in software testing that ensure the
effectiveness and efficiency of the testing process. The test planning process
involves the identification of the scope of testing, the test environment, test
objectives, and the test design techniques. Test design involves the creation
of test cases and test data that will be used to evaluate the software system's
functionality, performance, and usability.

CHAPTER THREE
OVERVIEW OF TEST EXECUTION AND REPORTING
Testing is an important aspect of software development and helps to ensure the
quality of the product. Test Execution and Reporting are crucial parts of the
testing process, as they ensure that the tests are run efficiently and effectively
and that the results are documented properly. The lecture will provide an in-
depth understanding of the test execution process, its importance, and the
ways to report and document the test results. Additionally, defect tracking and
management will also be discussed in this lecture, which is essential to ensure
that the defects are identified, tracked, and fixed in a timely manner.
BENEFITS OF TEST EXECUTION AND REPORTING
Improved Product Quality - Effective testing helps to identify defects early in the development
cycle, resulting in improved product quality. By identifying defects early, developers can fix issues
before they become more complex and costly to resolve, leading to a better overall product.

Faster Time to Market - Effective testing helps to identify defects that could delay the release of a
product. By identifying and addressing these issues promptly, testing can help reduce time-to market,
giving a company a competitive advantage over its competitors.

Cost Savings - Effective testing helps to identify defects early in the development cycle, reducing
the cost of fixing defects. It is cheaper and easier to fix a defect in the early stages of development
than after the product has been released.

Better Customer Satisfaction - Effective testing helps to ensure that the product is meeting the
customer's requirements and expectations. By identifying and fixing defects early, customers will have
a better user experience with the product, leading to increased customer satisfaction.

Improved Communication - Test reporting and documentation provide a clear understanding of


the testing process and test results. It enables developers and stakeholders to communicate
effectively, ensuring that everyone is on the same page regarding the status of the product's
development and the testing process.

Compliance - In many industries, software products must meet certain regulatory standards before
they can be released. Effective testing and reporting ensure that the product meets these regulatory
standards and helps the company avoid costly penalties for non-compliance.

TEST EXECUTION PROCESS

Test execution is the process of running test cases and verifying if the software under test works as
expected

Test execution involves the following steps:

- Test environment setup

- Test case execution

- Test data creation and management

- Test result verification


Test execution is a critical process in software testing, and it helps ensure that the software meets
the desired quality standards
TEST REPORTING AND DOCUMENTATION

Test reporting and documentation involve collecting and documenting test results and other relevant
information during the testing process. Test reports may include test progress reports, test result
reports, test summary reports, and defect reports

Test documentation provides a comprehensive view of the testing process and helps track the
progress of testing activities

DEFECT TRACKING AND MANAGEMENT

Defect tracking and management are important aspects of the software testing process. The defects
found during testing need to be tracked and managed until they are resolved.

The defect tracking and management process includes the following steps: - Defect Logging: All
defects identified during the testing process are logged in the defect tracking tool (JIRA, Bugzilla and
Trello).

TEST EXECUTION PROCESS -TEST ENVIRONMENT SETUP


Test environment setup involves configuring the hardware, software, and other necessary
components to create an environment in which testing can take place.

Test environment setup must be done carefully to ensure that the testing environment is stable and
consistent throughout the testing process

TEST EXECUTION PROCESS - TEST DATA CREATION AND MANAGEMENT


Test data creation and management involves creating test data and managing it throughout the
testing process.

Test data must be carefully created and managed to ensure that it is relevant, accurate, and complete

Test Result Verification

Test result verification involves verifying the results of test cases and ensuring that the software under
test works as expected. Test results must be carefully verified to ensure that all possible scenarios
are covered and that defects are identified and reported

DEFECT TRACKING TOOLS

JIRA: JIRA is a project management tool that is widely used for issue tracking, bug tracking, and
project management. It is popular among software development teams and has many features like
customizable workflows, issue linking, and reporting.
Bugzilla: Bugzilla is an open-source defect tracking tool that is widely used in software development
projects. It is a web-based tool that allows teams to track defects, issues, and bugs in the software.
DEFECT TRACKING TOOLS

MantisBT: MantisBT is another open-source defect tracking tool that is popular among software
development teams. It has a simple and user-friendly interface and offers features like email
notifications, issue tracking, and reporting.

Trello: Trello is a project management tool that is used for tracking tasks and managing projects. It
has a simple and intuitive interface that allows teams to track defects, issues, and bugs easily.

Asana: Asana is a project management tool that is used for tracking tasks, managing projects, and
collaborating with team members. It has a feature called "Bugs" that allows teams to track defects,
issues, and bugs in the software.

CONCLUSION

In conclusion, effective test execution and reporting are critical components of the software testing
process. It helps to ensure that the product meets customer requirements, is of high quality, and is
released on time. Defect tracking and management is also an essential component of the testing
process, enabling defects to be identified, prioritized, and resolved, resulting in a better-quality
product.

CHAPTER FOUR
TESTING TECHNIQUES OVERVIEW
Testing techniques are methods used to evaluate software quality by assessing the
software's functionality, performance, and other attributes. The main testing
techniques are black-box testing, white-box testing, and grey-box testing.
Automated testing is a testing technique that involves using tools and scripts
to automate the testing process.
BLACK-BOX TESTING
Black-box testing is a testing technique where testers examine the software's
functionality without knowing its internal workings. Testers use input data to
test the software's output and verify that it meets the expected results.

Advantages of Black-Box Testing


• Testers can use this technique without technical knowledge of the software's internal workings.
• This technique can detect errors that may have been missed during the software development
process.
• Testers can evaluate the software's functionality from an end-user's perspective.

Disadvantages of Black-Box Testing

• This technique does not provide information on the software's internal structure.
• It can be time-consuming to generate test cases for complex software systems.
• Testers may not test all possible scenarios, resulting in potential defects.

WHITE-BOX TESTING
White-box testing is a testing technique where testers examine the software's
internal workings to evaluate its quality. Testers use their knowledge of the
software's architecture and design to generate test cases and assess its
functionality.
Advantages of White-Box Testing

• Testers can use this technique to test all possible scenarios.


• This technique can help to identify defects early in the software development
process.
• Testers can evaluate the software's performance and security aspects.

Disadvantages of White-Box Testing

• Testers must have technical knowledge of the software's internal workings to use this
technique.
• This technique may not provide a complete evaluation of the software's functionality from an
end-user's perspective.
• It can be time-consuming to generate test cases for complex software systems.

GREY-BOX TESTING
Grey-box testing is a testing technique that combines elements of both black-box
and white-box testing. Testers use limited knowledge of the software's internal
workings to generate test cases and evaluate its functionality.
Advantages of Grey-Box Testing

• Testers can use limited technical knowledge to generate test cases and evaluate the software's
functionality.
• This technique can help to identify defects that may have been missed during the software
development process.
• Testers can evaluate the software's functionality from both an enduser's and technical
perspective.
Disadvantages of Grey-Box Testing

• Testers must have some technical knowledge of the software's internal workings to use this
technique.
• It can be challenging to identify and address defects that arise due to complex interactions
between software components.
• This technique may not provide a complete evaluation of the software's functionality.
AUTOMATED TESTING
Automated testing is a testing technique that involves using tools and scripts to
automate the testing process. Testers use automation tools to generate test
cases, execute tests, and report test results.
Advantages of Automated Testing
Increased Efficiency: Automated testing is much faster than manual testing. It
can run tests in parallel, 24 hours a day, and can execute repetitive tests with
a high level of accuracy, freeing up testers to focus on more complex testing
tasks.
Increased Test Coverage: Automated testing can cover a large number of test
cases that are impossible to execute manually. It can also run tests on multiple
platforms and configurations simultaneously.
Improved Accuracy: Automated tests are less prone to errors and are more
reliable than manual tests. They eliminate the risk of human errors and ensure
consistent results.
Cost-Effective: Although there is an initial investment in developing and
maintaining automated tests, automated testing is more cost-effective in the
long run as it reduces the need for manual testing.
Disadvantages of Automated Testing
High initial investment - setting up an automated testing environment requires
significant initial investment in terms of infrastructure, tools, and skilled personnel.
Maintenance overhead - automated tests require regular maintenance and
updates to ensure they remain effective and relevant.
Limited human insight - automated tests cannot replace the human element of
testing, such as exploratory testing, where testers can use their experience and intuition
to identify issues.
False sense of security - automated tests may provide a false sense of security, leading
to complacency and a reduced focus on manual testing.

CONCLUSION
In conclusion, testing techniques play a crucial role in software testing, with black-box,
white box, and grey-box testing being the most commonly used techniques. Automated
testing provides numerous advantages, such as faster testing, improved accuracy, and
increased test coverage. However, it also has some disadvantages, such as high initial
investment, maintenance overhead, limited human insight, and a false sense of security.
It is important to understand the strengths and weaknesses of each testing technique
and to choose the appropriate technique based on the software system being tested and
the testing goals.
Develop a test plan that outlines the testing approach and objectives for the
calculator application. The test plan should include the following:

Testing Objectives and Goals:


 Verify that the e-commerce website meets the functional and non-functional requirements.
 Ensure that the website is user-friendly and easy to navigate.
 Confirm that the website is secure and that customer data is protected.
 Validate that the website is accessible and compatible with various devices and browsers.
Testing Scope:
 The test scope will cover the entire e-commerce website, including the homepage, product
pages, shopping cart, checkout process, and account management features.
Testing Approach:
 The testing approach will consist of manual and automated testing.
 Manual testing will be used to validate the website's user interface, usability, and functionality.
 Automated testing will be used to test repetitive and time-consuming tasks, such as login and
registration.
Testing Schedule:
 Testing will begin on August 1 and continue until August 20.
 The testing team will work Monday through Friday, from 9:00 AM to 5:00 PM.
 Weekend testing will be scheduled on an as-needed basis.
Test Deliverables:
 Test plan
 Test cases and test scripts
 Test results report
 Defects and issues report
Test Environment and Infrastructure:
 The testing environment will consist of the following:
 Windows 10 operating system
 Chrome, Firefox, and Edge browsers
 Mobile devices (iOS and Android)
 The testing infrastructure will include the following:
 Testing tools, including Selenium WebDriver and JMeter
 Test management tool, including Jira
Test Resources:
 The testing team will consist of three manual testers and one automation tester.
 The testing team will work with the development team to resolve any issues found during
testing.

Test Risks and Mitigation Strategies:


 Risk: Compatibility issues with different devices and browsers
 Mitigation: Conduct cross-browser and cross-device testing to ensure compatibility.
 Risk: Security vulnerabilities and data breaches
 Mitigation: Conduct security testing to identify and fix any security issues.
 Risk: Lack of test coverage
 Mitigation: Develop comprehensive test cases to cover all functional and non-functional
requirements.

You might also like