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

Software Testing Reading Note

This document provides an introduction to software testing, including what it is, its importance in the software development life cycle, and its objectives. It discusses test planning, design techniques like equivalence partitioning and boundary value analysis, and test data preparation. The goals of testing are to verify requirements are met, validate the software meets user needs, detect defects, and improve quality. Proper test planning and design help ensure effective and efficient testing.

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)
30 views

Software Testing Reading Note

This document provides an introduction to software testing, including what it is, its importance in the software development life cycle, and its objectives. It discusses test planning, design techniques like equivalence partitioning and boundary value analysis, and test data preparation. The goals of testing are to verify requirements are met, validate the software meets user needs, detect defects, and improve quality. Proper test planning and design help ensure effective and efficient testing.

Uploaded by

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

WEEK 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 end-
users. 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.

WEEK 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.

WEEK 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.

WEEK FIVE
Definition of non-functional testing

Non-functional testing is a crucial aspect of software testing that focuses on evaluating the attributes
and characteristics of a software system that are not directly related to its specific functionality. It
involves testing the system's performance, security, usability, reliability, and other non-functional
aspects.

Importance of non-functional testing in software development

Non-functional testing plays a vital role in ensuring the overall quality and success of a software
system. While functional testing ensures that the software meets the intended requirements and
performs its desired functions, non-functional testing goes beyond that to assess the system's
behavior under various conditions and scenarios. It aims to uncover any issues or weaknesses related
to performance, security, usability, and reliability.

By conducting comprehensive non-functional testing it can result to:

Enhance Performance: Non-functional testing helps evaluate the system's performance under
different workloads, such as high user traffic or data processing loads. It allows for identifying and
optimizing any bottlenecks, scalability issues, or resource constraints that could impact the system's
performance.

Ensure Security: Security testing focuses on assessing the system's ability to protect sensitive data,
prevent unauthorized access, and resist security threats. By conducting thorough security testing,
potential vulnerabilities, loopholes, or weaknesses can be identified and addressed, ensuring the
system's robustness against potential attacks.

BY CONDUCTING COMPREHENSIVE NON-FUNCTIONAL TESTING IT CAN RESULT TO:

Improve Usability: Usability testing helps assess the system's user-friendliness, intuitiveness, and
overall user experience. It aims to ensure that the system is easy to navigate, understand, and interact
with, ultimately enhancing user satisfaction and productivity.

Ensure Reliability: Reliability testing evaluates the system's stability, fault tolerance, and ability to
perform consistently over time. By subjecting the system to different scenarios, reliability testing helps
identify and address any issues related to system failures, crashes, or data inconsistencies, ensuring
a reliable and dependable software solution.

Performance Testing

Performance testing is a non-functional testing technique that evaluates the responsiveness,


scalability, stability, and resource usage of a software system under various workloads. It assesses
how well the system performs under different conditions and measures its ability to meet performance
requirements.

Importance of performance testing

Performance testing is of utmost importance to ensure that a software system can handle expected
user loads, deliver optimal performance, and provide a seamless user experience. By conducting
performance testing, potential bottlenecks, performance degradation, and limitations can be identified
and addressed proactively. It helps validate whether the system meets performance objectives,
ensures customer satisfaction, and avoids any negative impact on the business.
Types of performance testing:

Load Testing: Load testing simulates real-world user loads on the system to evaluate its behavior
under normal and peak usage scenarios. It helps determine how the system handles increased user
traffic, transactions, and data processing.

Stress Testing: Stress testing pushes the system beyond its normal operational limits to evaluate
its stability and robustness.

Endurance Testing: Endurance testing, also known as soak or longevity testing, assesses the
system's performance over an extended period.

Scalability Testing: Scalability testing measures how well the system can handle increased
workloads by adding more resources, such as servers, network bandwidth, or processing power.

SECURITY TESTING

Security testing is a non-functional testing technique that assesses the robustness of a software
system against unauthorized access, data breaches, and vulnerabilities. It aims to identify potential
security risks, weaknesses, and vulnerabilities within the system.

COMMON SECURITY TESTING TECHNIQUES

Vulnerability Scanning: This technique involves using automated tools to scan the system for
known security vulnerabilities, such as outdated software versions, misconfigurations, or weak access
controls.

Penetration Testing: Penetration testing, also known as ethical hacking, involves simulating real
world attacks on the system to identify vulnerabilities and assess its resistance against exploitation.

Security Code Reviews: Security code reviews involve a thorough examination of the software's
source code to identify security weaknesses or coding flaws that could lead to vulnerabilities.

Threat Modeling: Threat modeling involves analyzing the system's architecture, data flow, and
potential threats to identify potential security risks and vulnerabilities.

SECURITY TESTING BEST PRACTICES

Conducting Security testing Throughout the Software Development Life Cycle (SDLC):
Security testing should be an integral part of the entire SDLC, starting from the requirements
gathering phase through design, development, testing, and deployment.

Employing Secure Coding Practices: Adhering to secure coding practices, such as input
validation, output encoding, and proper error handling, reduces the likelihood of introducing
vulnerabilities.
Implementing Access Control Measures: Proper user authentication and authorization
mechanisms should be in place to ensure that only authorized users can access specific functionalities
and sensitive data.

Encrypting Sensitive Data: Encryption should be used to protect sensitive data at rest and in
transit. Implementing appropriate encryption algorithms and key management practices helps ensure
data confidentiality and integrity.

USABILITY TESTING

Usability testing is a non-functional testing technique that evaluates how user-friendly and intuitive a
software system is, assessing its ease of use and effectiveness. It focuses on understanding how well
the system meets user expectations and allows users to accomplish tasks efficiently and effectively.

Usability testing methods

User Interviews: User interviews involve conducting one-on-one sessions with selected users to
gather feedback about their experience with the software system.

Surveys: Surveys can be used to collect quantitative data from a large number of users. The survey
questions can focus on aspects such as ease of use, navigation, clarity of instructions, and overall
satisfaction.

Task-Based Evaluations: Task-based evaluations involve assigning specific tasks to users and
observing their interaction with the system.

User Observation: User observation involves directly observing users as they interact with the
system. Testers can identify usability issues, user behavior patterns, and areas where users may
struggle or require assistance.

SOFTWARE RELIABILITY

Software reliability is a measure of how well a software system can perform its intended functions
under stated conditions for a defined period. It reflects the probability of the software system to
operate without failure and deliver consistent and accurate results.

Several factors contribute to software reliability. These factors include:

Fault Tolerance: The ability of a software system to continue functioning in the presence of faults
or errors. A fault-tolerant system can recover from failures and maintain its intended functionality.

Error Handling: The effectiveness of the software system in handling and managing errors. Proper
error handling ensures that the system gracefully handles unexpected situations and provides
appropriate feedback or recovery mechanisms.
Input Validation: The process of validating and verifying user inputs to ensure that they are within
the expected range and conform to the defined rules.

Robustness: The ability of the software system to handle unexpected inputs, conditions, or
exceptional situations without crashing or producing incorrect results.

Effective Exception Handling: The proper handling of exceptions, such as catching and managing
errors or exceptional conditions, prevents system failures and ensures the software system can
recover or continue functioning in the presence of exceptions.

Importance of Software Reliability

User Satisfaction: Reliable software systems provide a seamless user experience, ensuring that
users can perform their tasks efficiently and without interruptions.

System Availability: Software reliability directly affects the availability of the system. Reliability
ensures that the software system is accessible and operational when users need it.

Business Reputation: The reliability of software systems reflects directly on the reputation of the
business or organization that provides the software.

Financial Stability: Software reliability has financial implications for organizations. Unreliable
software can result in financial losses due to system failures, downtime, or the need for expensive
emergency fixes.

TEST CASE FORMAT

Test Case ID: SHOP001


Test Case Description: Verify that a user can successfully search for and add items
to their cart.
Test Steps:
1. Open the online shopping platform.
2. Enter a search term in the search bar.
3. Verify that the search results are displayed on the screen.
4. Click on an item to view its details.
5. Verify that the item details are displayed on the screen.
6. Click on the "Add to Cart" button.
7. Verify that the item is added to the cart.
8. Navigate to the cart page.
9. Verify that the item is displayed in the cart.
Expected Results:
 Step 3: The search results should be displayed on the screen.
 Step 5: The item details should be displayed on the screen.
 Step 7: The item should be added to the cart.
 Step 9: The item should be displayed in the cart.
Test Data:
 Search term: "shoes"
 Item to add to cart: "Nike Air Max"
Test Priority and Severity:
 Priority: High
 Severity: High

Test Result Format


Test Case ID: TC001 Test Case
Description: Browse Products
Test Result: Pass
Test Notes: No issues were encountered during testing. Defects/Issues Found: None

Test Summary and Conclusions: Overall, the online shopping platform


performed well during testing. However, there is a bug with the Add to Cart
button that needs to be addressed before the application can be released to
the public.

You might also like