Stqa M2
Stqa M2
and Quality
Assurance
(COURSE CODE - E2UC502T)
Course Outline
Module-2 Importance of Software Testing
Software Testing And Its Importance.
Software development life cycle verses software testing life cycle.
Verification and Validation.
Deliverables.
version and error control.
Software Development Process
Introduction
Software testing is a crucial part of the software development life cycle.
Testing is the process of executing a program to find errors.
To make our software perform well it should be error-free.
Software testing is the process of checking the quality, functionality, and
performance of a software product before launching.
As defined by the ANSI/IEEE 1059 standard,“ Testing is the process of
analysing a software item to detect the differences between existing and
required conditions (that is, defects/errors/bugs) and to evaluate the features of
the software item.”
Importance of Software Testing:
Defects can be identified early: Software testing is important because if there are any
bugs they can be identified early and can be fixed before the delivery of the software.
Improves quality of software: Software Testing uncovers the defects in the software,
and fixing them improves the quality of the software.
Increased customer satisfaction: Software testing ensures reliability, security, and high
performance which results in saving time, costs, and customer satisfaction.
Saves time and money: After the application is launched it will be very difficult to
trace and resolve the issues, as performing this activity will incur more costs and time.
Thus, it is better to conduct software testing at regular intervals during software
development.
Principles of Testing
Identifying the presence of defects: Testing is not about proving that software is error-free but
about finding defects that need to be fixed. Defects can include code bugs, missing requirements,
incorrect functionality, and other issues.
Absence-of-errors fallacy: Finding no defects in the software application does not mean that it
is error-free. Testers must be aware of potential risks and unknown issues.
Exhaustive testing is time consuming: It is impossible to test all possible combinations and
scenarios in software applications, so testers must focus on the most critical and high-risk areas.
Early testing saves time and money: It is more cost-effective to identify and fix defects early in
the software development life cycle than later in the process.
Defect clustering: In software development, defects often occur in clusters, meaning that a
small number of modules or components are responsible for the majority of defects. Testers
should focus on these high-risk areas.
Need of Software Testing
There are many examples in history that clearly depicts that without the testing phase in
software development lot of damage was incurred. Below are some examples:
1985: Canada’s Therac-25 radiation therapy malfunctioned due to a software bug and resulted
in lethal radiation doses to patients leaving 3 injured and 3 people dead.
1994: China Airlines Airbus A300 crashed due to a software bug killing 264 people.
1996: A software bug caused U.S. bank accounts of 823 customers to be credited with 920
million US dollars.
1999: A software bug caused the failure of a $1.2 billion military satellite launch.
2015: A software bug in fighter plan F-35 resulted in making it unable to detect targets
correctly.
2015: Bloomberg terminal in London crashed due to a software bug affecting 300,000 traders
on the financial market and forcing the government to postpone the 3bn pound debt sale.
Types of Software Testing
Types of Software Testing:
Manual Testing
Manual Testing: It includes testing software manually, i.e., without
using any automation tool. In this type of testing , the tester takes
over the role of an end-user and tests the software to identify any
unexpected behavior or bug.
There are different stages for manual testing such as unit testing,
integration testing, system testing, and user acceptance testing.
Testers use test plans, test cases, or test scenarios to test software
to ensure the completeness of testing.
Types of Software Testing:
Automated Testing
Automated Testing is a technique where the Tester writes scripts on their
own and uses suitable Software or Automation Tool to test the software.
Automated testing uses test scripts and specialized tools to automate the
process of software testing.
Automation Testing is used to re-run the test scenarios quickly and
repeatedly, that were performed manually in manual testing.
It increases the test coverage, improves accuracy, and saves time and
money when compared to manual testing.
It allows for executing repetitive tasks without the intervention of a
Manual Tester.
Types of Software Testing:
Black Box Testing
Black Box Testing: Black-box testing is a type of software testing in which the tester is not
concerned with the internal knowledge or implementation details of the software, but rather
focuses on validating the functionality based on the provided specifications or requirements.
The primary source of black box testing is a specification of requirements
that is stated by the customer.
Types of Software Testing:
White Box Testing
White box testing techniques analyze the internal structures the used data
structures, internal design, code structure, and the working of the software
rather than just the functionality as in black box testing.
It is also called glass box testing or clear box testing or structural testing.
White Box Testing is also known as transparent testing or open box testing.
Types of Software Testing: Grey Box
Testing
Grey Box Testing: Grey Box Testing is a software testing technique to test a
software product or application with partial knowledge of internal structure of
the application. The purpose of grey box testing is to search and identify the
defects due to improper code structure or improper use of applications.
The internal structure of the application is partially known by the tester.
The tester will check both the internal structure and the functionality of the
application manually.
Benefits of Software Testing
•Product quality: Testing ensures the delivery of a high-quality product as the errors are
discovered and fixed early in the development cycle.
•Customer satisfaction: Software testing aims to detect the errors or vulnerabilities in
the software early in the development phase so that the detected bugs can be fixed
before the delivery of the product. Usability testing is a type of software testing that
checks the application for how easily usable it is for the users to use the application.
•Cost-effective: Testing any project on time helps to save money and time for the long
term. If the bugs are caught in the early phases of software testing, it costs less to fix
those errors.
•Security: Security testing is a type of software testing that is focused on testing the
application for security vulnerabilities from internal or external sources.
SOFTWARE DEVELOPMENT
LIFE CYCLE (SDLC)
The software development life cycle (SDLC) is a
structured process that is used to design, develop,
and test good-quality software.
The goal of the SDLC life cycle model is to
deliver high-quality, maintainable software that
meets the user’s requirements.
SDLC is a method, approach, or process that is
followed by a software development organization
while developing any software.
SDLC models were introduced to follow a disciplined
and systematic method while designing software.
SOFTWARE TESTING LIFE
CYCLE(STLC)
Software Testing Life Cycle (STLC) is a sequence of specific activities conducted during the
testing process to ensure software quality goals are met. STLC involves both verification and
validation activities. Software Testing is not just a single/isolate activity. It consists of a series of
activities carried out methodologically to help certify your software product.
STLC Phases:
Requirement Analysis.
Test Planning.
Test case development.
Test Environment setup.
Test Execution.
Test Cycle closure.
Requirement Analysis
In this phase quality assurance team understands the requirements like what is
to be tested. If anything is missing or not understandable then the quality
assurance team meets with the stakeholders to better understand the detailed
knowledge of requirements.
Reviewing the software requirements document (SRD) and other related
documents.
Interviewing stakeholders to gather additional information
Identifying any ambiguities or inconsistencies in the requirements
Identifying any missing or incomplete requirements
Identifying any potential risks or issues that may impact the testing process
Test Planning
Test Planning is the most efficient phase of the software testing life cycle where all testing
plans are defined. In this phase manager of the testing team calculates the estimated effort and
cost for the testing work.
The activities that take place during the Test Planning stage include:
Identifying the testing objectives and scope
Developing a test strategy: selecting the testing methods and techniques that will be used
Identifying the testing environment and resources needed
Identifying the test cases that will be executed and the test data that will be used
Estimating the time and cost required for testing
Identifying the test deliverables and milestones
Assigning roles and responsibilities to the testing team
Reviewing and approving the test plan
Test Case Development
In this phase testing team notes down the detailed test cases. The testing team also prepares
the required test data for the testing. When the test cases are prepared then they are reviewed
by the quality assurance team.
The activities that take place during the Test Case Development stage include:
Identifying the test cases that will be developed
Writing test cases that are clear, concise, and easy to understand
Creating test data and test scenarios that will be used in the test cases
Identifying the expected results for each test case
Reviewing and validating the test cases
Updating the requirement traceability matrix (RTM) to map requirements to test cases
Test Environment Setup
Test Environment Setup: Test environment setup is a vital part of the STLC.
Basically, the test environment decides the conditions on which software is
tested.
This is independent activity and can be started along with test case
development.
In this process, the testing team is not involved. either the developer or the
customer creates the testing environment.
Test Execution
The activities that take place during the test execution stage of the Software Testing Life Cycle (STLC)
include:
Test execution: The test cases and scripts created in the test design stage are run against the software
application to identify any defects or issues.
Defect logging: Any defects or issues that are found during test execution are logged in a defect tracking
system, along with details such as the severity, priority, and description of the issue.
Test data preparation: Test data is prepared and loaded into the system for test execution
Test environment setup: The necessary hardware, software, and network configurations are set up for test
execution
Test execution: The test cases and scripts are run, and the results are collected and analyzed.
Test result analysis: The results of the test execution are analyzed to determine the software’s performance
and identify any defects or issues.
Defect retesting: Any defects that are identified during test execution are retested to ensure that they have
been fixed correctly.
Test Reporting: Test results are documented and reported to the relevant stakeholders.
Test Closure
The main activities that take place during the test closure stage include:
Test summary report: A report is created that summarizes the overall testing process, including
the number of test cases executed, the number of defects found, and the overall pass/fail rate.
Defect tracking: All defects that were identified during testing are tracked and managed until they
are resolved.
Test environment clean-up: The test environment is cleaned up, and all test data and test artifacts
are archived.
Test closure report: A report is created that documents all the testing-related activities that took
place, including the testing objectives, scope, schedule, and resources used.
Knowledge transfer: Knowledge about the software and testing process is shared with the rest of
the team and any stakeholders who may need to maintain or support the software in the future.
Feedback and improvements: Feedback from the testing process is collected and used to improve
future testing processes
Verification and Validation
Verification: Verification means Are we building the product right?
It is the process of checking that a software achieves its goal without any bugs.
It is the process to ensure whether the product that is developed is right or not.
It verifies whether the developed product fulfills the requirements that we have.
Validation: Validation means Are we building the right product?
It is the process of checking whether the software product is up to the mark or in other
words product has high level requirements.
It is the process of checking the validation of product.
It checks what we are developing is the right product.
It is validation of actual and expected product.
Validation is the dynamic testing.
Test Deliverables in Software
Testing
Test Deliverables are the artifacts
which are given to the stakeholders of
software project during the software
development lifecycle. There are
different test deliverables at every
phase of the software development
lifecycle. Some test deliverables are
provided before testing phase, some
are provided during the testing phase
and some after the testing cycles is
over.
Error Control in Software
Testing
Error handling testing is a type of software testing that is performed to check
whether the system is capable of or able to handle the errors that may happen
in future.
This type of testing is basically performed with the help of both developers and
the testers.
Error handling testing not only focuses on the determination of error but also
focuses on the exception handling.
Objective of Error Control in
Software Testing
The objective of error handling testing is:
To check the system ability to handle errors.
To check the system highest soak point.
To make sure errors can be handles properly by the system in the future.
To make system capable of exception handling also.
Advantages and
Disadvantages of Error
Control
Advantages of Error control in testing:
It helps in construction of an error handling powered software.
It makes the software ready for all circumstances.
It develops the exception handling technique in the software.
It helps is maintenance of the software.
Disadvantages of the control in testing
It is costly as both the developing and testing team is involved.
It takes lot of time to perform the testing operations.
Steps involved in the Error
Handling/control testing