0% found this document useful (0 votes)
30 views20 pages

STQA-Chapter 1

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

STQA-Chapter 1

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

CHAPTER 1

Fundamentals of Testing

❖ What is Software Testing?


Software testing is an important process in the software development lifecycle. It involves
verifying and validating that a software application is free of bugs, meets the technical
requirements set by its design and development, and satisfies user requirements efficiently and
effectively.
This process ensures that the application can handle all exceptional and boundary cases,
providing a robust and reliable user experience. By systematically identifying and fixing issues,
software testing helps deliver high-quality software that performs as expected in various
scenarios.
Software Testing is a method to assess the functionality of the software program. The process
checks whether the actual software matches the expected requirements and ensures the
software is bug-free. The purpose of software testing is to identify the errors, faults, or missing
requirements in contrast to actual requirements. It mainly aims at measuring the specification,
functionality, and performance of a software program or application.
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.
Helps with scalability: Software testing type non-functional testing helps to identify the
scalability issues and the point where an application might stop working.
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.

❖ What is Debugging?
Debugging is the process of identifying and resolving errors, or bugs, in a software system. It is
an important aspect of software engineering because bugs can cause a software system to
malfunction, and can lead to poor performance or incorrect results. Debugging can be a time
consuming and complex task, but it is essential for ensuring that a software system is
functioning correctly.

Compiled By : Mr. Vinod S Mahajan


Advantages of Debugging:
➢ Improved system quality: By identifying and resolving bugs, a software system can be made
more reliable and efficient, resulting in improved overall quality.
➢ Reduced system downtime: By identifying and resolving bugs, a software system can be
made more stable and less likely to experience downtime, which can result in improved
availability for users.
➢ Increased user satisfaction: By identifying and resolving bugs, a software system can be
made more user-friendly and better able to meet the needs of users, which can result in
increased satisfaction.
➢ Reduced development costs: By identifying and resolving bugs early in the development
process, it can save time and resources that would otherwise be spent on fixing bugs later in the
development process or after the system has been deployed.
➢ Increased security: By identifying and resolving bugs that could be exploited by attackers,
a software system can be made more secure, reducing the risk of security breaches.
➢ Facilitates change: With debugging, it becomes easy to make changes to the software as it
becomes easy to identify and fix bugs that would have been caused by the changes.
➢ Better understanding of the system: Debugging can help developers gain a better
understanding of how a software system works, and how different components of the system
interact with one another.
➢ Facilitates testing: By identifying and resolving bugs, it makes it easier to test the software
and ensure that it meets the requirements and specifications.

Testing versus Debugging


Aspects Testing Debugging
Definition Testing is the process to find bugs Debugging is the process of
and errors. correcting the bugs found during
testing.
Purpose The purpose of testing is to identify The purpose of debugging is to fix
defects or errors in the software those defects or errors.
system
Focus It is the process to identify the It is the process to give absolution to
failure of implemented code. code failure.
Timing Testing is done before debugging Debugging is done after testing
Approach Testing involves executing the Debugging involves analyzing the
software system with test cases symptoms of a problem and
identifying the root cause of the
problem

Compiled By : Mr. Vinod S Mahajan


Tools and Testing can involve using Debugging typically involves using
Technique automated or manual testing tools tools and techniques such as
logging, tracing, and code
inspection.
Methodology Testing is the display of errors. Debugging is a deductive process.
Team Involve Testing is done by the tester. Debugging is done by either
programmer or the developer.
Design There is no need of design Debugging can’t be done without
Knowledge knowledge in the testing process. proper design knowledge.
Access Testing can be done by insiders as Debugging is done only by insiders.
well as outsiders. An outsider can’t do debugging.
Categorization It is based on different testing Debugging is based on different
Basic levels i.e. unit testing, integration types of bugs.
testing, system testing, etc.
SDLC Testing is a stage of the software Debugging is not an aspect of the
development life cycle (SDLC). software development life cycle, it
occurs as a consequence of testing.
Process Testing is composed of the Debugging process seeks to match
Nature validation and verification of symptoms with cause, by that it
software. leads to error correction.
Initiation Testing is initiated after the code is Debugging commences with the
written. execution of a test case.

❖ Verification and Validation


Verification: It refers to the set of tasks that ensure that the software correctly implements a
specific function. It means “Are we building the product, right?”.
Validation: It refers to a different set of tasks that ensure that the software that has been built
is traceable to customer requirements. It means “Are we building the right product?”.
Sr.No. Verification Validation
1 Verification addresses the concern: Validation addresses the concern: "Are
"Are you building it right?" you building the right thing?"
2 Ensures that the software system meets Ensures that the functionalities meet
all the functionality. the intended behavior.
3 Verification takes place first and Validation occurs after verification and
includes the checking for mainly involves the checking of the
documentation, code, etc. overall product.

Compiled By : Mr. Vinod S Mahajan


4 Done by developers. Done by testers.
5 It has static activities, as it includes It has dynamic activities, as it includes
collecting reviews, walkthroughs, and executing the software against the
inspections to verify a software. requirements.
6 It is an objective process and no It is a subjective process and involves
subjective decision should be needed to subjective decisions on how well a
verify a software. software works.

❖ Root Cause Analysis


Root Cause Analysis (RCA) is basically a step in greater problem-solving exercise. Problems or
defects can arise in system even if system is of best quality. Solving defect or problems is not
greater issue. But some defects or problems can be experienced in future also. Therefore, it is
needed to identify true cause of defect. If root cause of defect is not determined and resolved
then there are chances of reoccurrence of defects. Therefore, RCA is very much essential and
required tool to identify root cause i.e. true cause of defects.
Steps to perform in RCA:
For effective root cause analysis, structural and logical approach is needed. There are several
steps in RCA that are needed to be performed. This is considered to be a general process for
performing and documenting RCA. These steps are given below :

Compiled By : Mr. Vinod S Mahajan


Define Problem or Defect:
Defining defect simply means to identify or determine defect if present in a system. It includes
what exactly is happening, what are particular symptoms of it, what are issues that you observe,
its severity, etc.
Collect Data regarding defect:
Collecting data simply means collecting all information and data regarding defect. It must
include its impact, proof that defect exists, how much time defect existed, is it a reoccurring
defect. One should also communicate with customers or employees. Before identifying root
cause, one needs to analyze defect or problem completely. One needs to gather all required
information or evidence.
Identify Root Cause of defect:
Identifying root cause simply means to identify main cause that is causing defect to arise. It must
include why does defect exists and what’s main reason for its existence. Several tools are
available nowadays to identify root cause of defect. One need to choose correct tool that will
lead to effective result. To identify root causes, brainstorming session should also be performed
session. It is basically a technique by which various efforts are made to define a specific problem
or defect. There might be more than one root cause of defect. So, one needs to identify as many
causes as possible.
Implement Root Cause Corrective Action (RCCA):
After identifying root cause, one to take some measures and actions to resolve or eliminate
defect. Main focus should be on eliminating root cause of problem or defect so that it does not
occur in future. One needs to identify some effective measures and corrective actions that are
required to be taken. Before choosing any method, make sure that it does not cause any other
side effect or problem in system.
Implement Root Cause Prevention Action (RCPA):
One needs to make some plan regarding defect reoccurrence. Defect should not reoccur in
future therefore, one needs to improve skill, perform tasks in proper way, follow proper
documents of preventive actions.

❖ Cost of Quality:
It is the most established, effective measure of quantifying and calculating the business value of
testing. There are four categories to measure cost of quality: Prevention costs, Detection costs,
Internal failure costs, and External failure costs.
These are explained as follows below.
1. Prevention costs include cost of training developers on writing secure and easily
maintainable code
2. Detection costs include the cost of creating test cases, setting up testing environments,
revisiting testing requirements.
3. Internal failure costs include costs incurred in fixing defects just before delivery.

Compiled By : Mr. Vinod S Mahajan


4. External failure costs include product support costs incurred by delivering poor
quality software.
Major parts of total cost are detecting defects and internal failure cost. But, these costs less than
external failure costs. That’s why testing provides good business value.

❖ Inhouse Testing
Inhouse Testing is the traditional way of doing testing activities within an organization. It
involves the employment of specialist teams of testers and developers who have an accurate
understanding and vision of the objects and purposes of the project. This method provides
companies with complete control of the testing process and makes it possible to get immediate
answers, when necessary at all stages of the testing process.
One of the most common examples of this is in a software firm. Such as when an in-house QA
team works to ensure the sound testing of their proprietary applications. These internal testers
work closely with developers, ensuring that every feature meets specific quality standards
before releasing the product to customers.
The Benefits of Inhouse Testing:
Thorough Knowledge: The in-house testers have an intimate knowledge of the product, its
objectives, and the methods and tools used to develop it, thus guaranteeing effectiveness in the
bug identification and rectification processes.
Constant Communication: Because the in-house testers are so close to the in-house
developers, challenges are immediately addressed, reducing development roadblocks.
Data Privacy: Inhouse testing holds all the organization's confidential data on its premises,
thereby eliminating issues regarding data confidentiality.
Control and Flexibility: The ability to exercise complete managerial authority throughout the
entire testing process and total flexibility to suit a given project.
More in sync with the Company's Goals: It is a general observation that testers, who are in-
house staff, are more in sync with the company's vision and goals, which helps improve the
quality of products.
Returns Cost Predictability: The cost incurred in hiring testers as company staff is generally
fixed, so budget planning is easier.

The Drawbacks of Inhouse Testing:


Limited resources: Since the in-house team is likely to be provided with limited resources such
as devices, tools, and testing environments, the product, more often than not, will have
incomplete test coverage.
Tester bias: If the testers are used to some features of the software before the testing itself,
they might tend to ignore some issues, which would provide them with a biased opinion about
how the software behaves.

Compiled By : Mr. Vinod S Mahajan


Scalability challenges: Scaling is complex because an in-house testing team can expand slowly
and prove expensive, thus making it challenging to handle larger projects or projects that evolve
faster.
Resource overheads: The in-house testing setup increases business overheads significantly.
As they Require additional hiring, training, and capital for equipment.
Potential for groupthink: There could be a groupthink mindset in the case of in-house teams,
where everyone is like-minded; hence, there would be very little or no variety in the approach
towards testing.
Limited testing hours: Inhouse teams usually work on official shifts, catering to no scope for
round-the-clock testing.

❖ Outsourced Testing
This refers to entering partnerships with third-party testing service providers. These providers
are software testing and quality assurance experts who can help businesses test their software
more rigorously and, in more ways, due to their accessibility to expensive specialists and
equipment. This also grants enterprises access to the partner's knowledge and cross-industry
experience, freeing up internal resources so that the enterprise’s teams can concentrate on main
development tasks.
For instance, suppose a startup is getting ready to release a newly developed mobile app and
needs to use specialized testing. This may also be an outsourced activity, where this kind of
activity ensures comprehensive quality review by this kind of service expertise through
prediction and elimination of problems before the application's formal introduction into a
business environment. In other words, outsourced testing services are highly appreciated since
they can provide cost-effective solutions and access to all the various tools and testing
methodologies on the market.
Benefits of Outsourced Testing:
Specialized Expertise: Outsourced testing providers come with specialized and specific
knowledge and expertise and maintain diverse teams, including testers with different skills and
backgrounds. That expertise ensures your software will be subjected to rigorous testing by
professionals mindful of industry best practices.
Cost-Effectiveness: One of the prime advantages of outsourced testing is that it is cost-effective.
By smartly opting for external services for testing, you free yourself from the investment and
maintenance liability of an in-house setup. This will reduce operational costs and other
overheads to free up resources more effectively for other critical areas in your project.
Scalability: As far as scalability is concerned, no other solution beats outsourced testing hands
down. It can quickly and easily adjust to the demands of your project that remain dynamic,
increasing or decreasing your testing requirements accordingly. This agility is especially handy
for projects that experience varying loads unexpectedly or require sudden adjustments to meet
stringent deadlines.

Compiled By : Mr. Vinod S Mahajan


Reduced Management Burden: Once partnered with an outsourced testing provider,
responsibilities such as recruitment, training, and management of testers are entrusted to your
partner. Testers would otherwise have to be supervised on their tasks, but with these tasks
taken care of, companies free up internal teams to concentrate their time on core development
tasks.
An Objective Perspective: The third-party testers give your software testing an objective,
untainted perspective. This objectivity starts becoming important in order to identify the issues
that the in-house team might overlook on account of being too used to a product. With external
testers, you benefit from a critical, objective evaluation that helps uncover potential issues
before they impact users.
Access to Advanced Tools: Outsourced testing providers often have access to cutting-edge
testing tools and technologies. This access empowers them to enhance the testing process,
ensuring comprehensive test coverage and meticulous evaluation of your software. By
leveraging advanced tools, outsourced testing can uncover even the most subtle issues,
contributing to a higher-quality end product.

Drawbacks of Outsourced Testing:


Communication Challenge: Companies have issues related to differences in time zones when
working with remote teams. There can be communication breakdowns as well due to language
barriers.
Reduced Control: Outsourcing could mean reduced on-the-ground control of the testing
process that could create room for misalignment with project objectives.
Transition Period: Properly onboarding the third-party tester, and translating an
understanding of your project, will take time. During this period, testing at the outset can be
slower and less efficient.

Who does Testing?


It depends on the process and the associated stakeholders of the project(s). In the IT industry,
large companies have a team with responsibilities to evaluate the developed software in context
of the given requirements. Moreover, developers also conduct testing which is called Unit
Testing. In most cases, the following professionals are involved in testing a system within their
respective capacities –
• Software Tester
• Software Developer
• Project Lead/Manager
• End User
Different companies have different designations for people who test the software on the basis
of their experience and knowledge such as Software Tester, Software Quality Assurance
Engineer, QA Analyst, etc.

Compiled By : Mr. Vinod S Mahajan


❖ Independent Testing:
Independent testing in software testing is a process where the testing of a software product is
carried out by a specialized team or a third-party organization that is not involved in the
development of the software.
Independent testing corresponds to an independent team, who involve in testing activities
other than developer to avoid author bias and is often more effective at finding defects and
failures.
Features of Independent Testing
Independent Testing services possess some beneficial features throughout the process, some of
them are as follows:
Quality of Testing: The testing cycle does not get affected due to the absence of time or budget.
Finds more defects compared to testers of the project team by adhering to the goals of the
customer.
Fewer management Efforts: With the support of the Independent Testing team, it becomes
easy to respond quickly to market changes keeping up with the competition.
Access to the Best Testing Talent: Independent testing corporations provide access to recent
testing practices and resources skills to upcoming technologies.
Total Cost Ownership: No need to start extra setups for hardware and software. Businesses do
not have the load to maintain the testing practices. Automation reduces the workload and
pricing range.
Time to market: Independent testing is all about tried and tested processes, it engages the right
skilled people to get the most out of it. This ensures a faster turnaround time, thereby reducing
the time to market.

Levels of Independent Testing


In Independent testing, there are several levels of testing which are known as Level of
Independence.
• Testing done by the developer means who developed the item/product.
• Testing is done by another programmer of the same development team.
• Testing is done by testers integrated with the developer.
• Testing is done by some independent testing team from another group of the same
organization.
• Testing is done by some independent testers from other organizations.

Benefits of Independent Testing


• Finds out more defects as compared to other testers working inside the programming
team.

Compiled By : Mr. Vinod S Mahajan


• Unique side assumptions and ideas of independent testers result in identifying hidden
defects.
• The independent testers are unbiased.
• Cost-effective as it has a separate budget, which helps in tracking money spent on
training, testing tools, and equipment.
• Provides improved Software Quality.
• Supplies more Experienced and skilled power.
• One can easily switch between manual and automation testing using independent testing
due to being more flexible.
• Reduces time to market by providing access to expert skills in test automation skills
ensuring faster testing cycles.

Drawbacks of Independent Testing


• The isolating feature can sometimes lead to outdated documentation references.
• Easily gets affected by delays in the early stage because it’s the execution of the last stage.
• Developers don’t take responsibility for quality and let the testing team deal with the
whole issue.
• Sometimes independent testing adds hindrance to communication.
• Faces lack identification in project goals and a few more uncertain things.

❖ Buddy Testing
Buddy Testing as the name suggests involves two team members, one from the development
team and one from the testing team.
Buddy system practice is used in this type of testing, wherein two team members AT are
identified as buddies. The buddies mutually help each other, with a common goal of
identifying defects early and correcting them. A developer and a tester usually become
buddies. It may be advantageous to team up with people with good working relationships as
buddies to overcome any apprehensions.
On the other hand, if this is mapped to a complete agreement of views and approaches
between the buddies, the diversity required between the two may not be achieved. This may
make buddy testing less effective, Buddying people with good working relationships yet
diverse backgrounds is a kind of safety measure that improves the chances of detecting errors
in the program very early.
In this technique, two team members work on the same machine where one of the team
members will work with the system and the other one is responsible for making notes and
scenarios.
One person known as the primary tester performs the testing while the other person, known as
the buddy tester, observes and provides assistance as needed.

Compiled By : Mr. Vinod S Mahajan


Process of Buddy Testing:
The process of buddy testing involves the following steps:
1. Identify the primary tester and the buddy tester: The primary tester is typically an
experienced tester with a strong understanding of the software or system being tested,
while the buddy tester may be a less experienced tester or a subject matter expert with
knowledge of the domain being tested.
2. Define the scope and objectives of the testing: The primary tester and the buddy
tester should agree on the scope and objectives of the testing, including the specific
features or functionality that will be tested and the expected results.
3. Plan the testing: The primary tester and the buddy tester should develop a testing plan
that outlines the specific test cases and test scenarios that will be executed, as well as the
resources and tools needed to complete the testing.
4. Execute the testing: The primary tester performs the testing while the buddy tester
observes and provides assistance as needed. The buddy tester may also be responsible for
documenting defects and issues that are identified during the testing.
5. Review and debrief: After the testing is complete, the primary tester and the buddy
tester should review the results of the testing and debrief to discuss any issues or
challenges that were encountered.
Benefits of Buddy Testing:
• Enhanced effectiveness: By working together, the primary tester and the buddy tester
can share knowledge and expertise, and catch defects more quickly.
• Increased efficiency: Buddy testing can help reduce the time and resources needed to
complete the testing process.
• Improved quality: Buddy testing can help ensure that the software or system being
tested is of high quality, as defects and issues are more likely to be identified and
addressed.
• Enhanced collaboration: Buddy testing promotes collaboration between team members
and can help build trust and teamwork within the team.
• Less workload: There will be less workload in presence of another team member and
the tester can think clearly and use more scenarios for testing.
Limitations of Buddy Testing:
• Training required: They are trained (if required) on the philosophy and objective of
buddy training. They should also be made to appreciate that they have a responsibility to
one another.
• Both have to agree on working terms: They also have to agree on the modalities and
the terms of working before actually starting the testing work. They stay close together
to be able to follow the agreed plan. The code is unit tested to ensure what it is supposed
to do before buddy testing starts.

Compiled By : Mr. Vinod S Mahajan


• Lengthy review session: After the code is successfully tested through unit testing the
developer approaches the testing buddy. Starting buddy testing before completing unit
testing may result in a lengthy review session for the buddy on a code that may not meet
specified requirements. This in turn may cause unnecessary rework and erode the
confidence of the buddy.
• Dependence on the buddy tester: If the buddy tester is not available or is not able to
provide assistance, the testing process may be slowed down or disrupted.
• Limited scalability: Buddy testing may not be practical for large-scale testing projects,
as it requires close collaboration between two individuals.
• Limited flexibility: Buddy testing may not be suitable for testing scenarios that require
a high degree of flexibility or adaptability.

❖ V-Model
V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC
must complete before the next phase starts. It follows a sequential design process same as the
waterfall model. Testing of the device is planned in parallel with a corresponding stage of
development.

Verification: It involves a static analysis method (review) done without executing code. It is
the process of evaluation of the product development process to find whether specified
requirements meet.
Validation: It involves dynamic analysis method (functional, non-functional), testing is done by
executing code. Validation is the process to classify the software after the completion of the
development process to determine whether the software meets the customer expectations and
requirements.

Compiled By : Mr. Vinod S Mahajan


Phases of Verification Phase of V-model:
Business requirement analysis: This is the first step where product requirements understood
from the customer's side. This phase contains detailed communication to understand
customer's expectations and exact requirements.
System Design: In this stage system engineers analyze and interpret the business of the
proposed system by studying the user requirements document.
Architecture Design: The baseline in selecting the architecture is that it should understand all
which typically consists of the list of modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture diagrams, technology detail, etc. The
integration testing model is carried out in a particular phase.
Module Design: In the module design phase, the system breaks down into small modules. The
detailed design of the modules is specified, which is known as Low-Level Design
Coding Phase: After designing, the coding phase is started. Based on the requirements, a
suitable programming language is decided. There are some guidelines and standards for coding.
Before checking in the repository, the final build is optimized for better performance, and the
code goes through many code reviews to check the performance.

Phases of Validation Phase of V-model:


Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design
phase. These UTPs are executed to eliminate errors at code level or unit level. A unit is the
smallest entity which can independently exist, e.g., a program module. Unit testing verifies that
the smallest entity can function correctly when isolated from the rest of the codes/ units.
Integration Testing: Integration Test Plans are developed during the Architectural Design
Phase. These tests verify that groups created and tested independently can coexist and
communicate among themselves.
System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit
and Integration Test Plans, System Tests Plans are composed by the client?s business team.
System Test ensures that expectations from an application developer are met.
Acceptance Testing: Acceptance testing is related to the business requirement analysis part. It
includes testing the software product in user atmosphere. Acceptance tests reveal the
compatibility problems with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like load and performance
defects within the real user atmosphere.

❖Software Testing Life Cycle (STLC)


The Software Testing Life Cycle (STLC) is a systematic approach to testing a software
application to ensure that it meets the requirements and is free of defects. It is a process that
follows a series of steps or phases, and each phase has specific objectives and deliverables. The

Compiled By : Mr. Vinod S Mahajan


STLC is used to ensure that the software is of high quality, reliable, and meets the needs of the
end-users.
The main goal of the STLC is to identify and document any defects or issues in the software
application as early as possible in the development process. This allows for issues to be
addressed and resolved before the software is released to the public.
Phases of STLC
1. Requirement Analysis: Requirement Analysis is the first step of the Software Testing Life
Cycle (STLC). 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.
2. 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. This phase gets started once the requirement-
gathering phase is completed.
3. Test Case Development: The test case development phase gets started once the test
planning phase is completed. 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.
4. 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.
5. Test Execution: After the test case development and test environment setup test execution
phase gets started. In this phase testing team starts executing test cases based on prepared
test cases in the earlier step.
6. Test Closure: Test closure is the final stage of the Software Testing Life Cycle (STLC) where
all testing-related activities are completed and documented. The main objective of the test
closure stage is to ensure that all testing-related activities have been completed and that the
software is ready for release.

❖ Manual Testing
Manual testing is a type of testing in which we do not take the help of any tools (automation)
to perform the testing. In this testing, testers make test cases for the codes test the software,
and give the final report about that software. Manual testing is time-consuming testing
because it is done by humans and there is a chance of human errors.
• Manual testing is conducted to discover bugs in the developed software application.
• The tester checks all the essential features of the application.

Compiled By : Mr. Vinod S Mahajan


• The tester executes test cases and generates test reports without any help from
the automation tools.
• It is conducted by the experienced tester to accomplish the testing process.
Manual testing should be conducted when:
• Flexibility is required: With manual tests, QA can quickly test and provide fast
feedback.
• Short-term projects: It is not advisable to invest more money and effort to set up
short-term projects that focus on minor features because such setup will require
huge effort and money that would be too high for such small projects.
• When testing end-user usability: Humans can use their sensibilities to
understand the application behavior if the application offers a satisfactory user
journey. No machine can perform this task as humans can.
Benefits of Manual Testing
• Easy hiring: In manual testing, anyone can test so it helps in easy hiring.
• Fast feedback: Manual testing helps to provide fast and accurate feedback.
• Versatile: Manua test cases can be applied to many test cases.
• Flexible: Manual testing is flexible as it can adapt easily to changes in the user
interface.
• Less expensive: Manual testing is less expensive as one does not need to spend a
budget on automation tools and processes.
Limitations of Manual Testing
• Not all defects detected: In manual cases, there is no assurance that there will be
100% test coverage as a result some of the defects may not be detected.
• High expertise: Although manual testing can be done by anyone, in some
complex cases high expertise is required.
• Lots of time: Manual testing times extensive activity. It requires a lot of time to
manually develop test cases so that all the functionalities are covered and tested.
• Cannot be recorded: Manual testing process cannot be recorded so it is not
possible to reuse the manual test cases.
• Less reliable: Manual testing is less reliable as it is conducted by humans and all
test cases are designed by humans so there are chances for human error.

❖ Automation Testing
Automation testing is a type of testing in which we take the help of tools (automation) to
perform the testing. It is faster than manual testing because it is done with some automation
tools. There is no chance of any human errors.

Compiled By : Mr. Vinod S Mahajan


• It relies entirely on pre-scripted test which runs automatically to compare actual
results with expected results.
• Automation testing helps the tester determine whether the application performs
as expected or not.
• It allows the execution of repetitive tasks and regression tests.
• Automation requires manual effort to create initial testing scripts.
When to Perform Automation Testing?
• When need to run repetitive tasks: Automated tests are the best option in
scenarios where there is a requirement to run repetitive tests. For example, in the
case of regression tests must be executed periodically to make sure that the newly
added code does not disrupt the existing functionality of the software.
• When human resources are scarce: Automated tests are viable and the best
option to get tests executed within deadlines when there are only a limited number
of dedicated testers.
Benefits of Automation Testing
• Finds more bugs: Automation testing helps to find more bugs and defects in the
software.
• Reduce time for regression tests: Automated tests are suitable for regression
tests as the tests can be executed in a repetitive manner periodically.
• The process can be recorded: This is one of the benefits of using automation
tests as these tests can be recorded and thus allows to reuse of the tests.
• No fatigue: As automation, tests are executed using software tools so there is no
fatigue or tiring factor as in manual testing.
• Increased test coverage: Automation tests help to increase the test coverage as
using the tool for testing helps to make sure that not even the smallest unit is left
for testing.
Limitations of Automation Testing
• Difficult to inspect visual elements: In automated tests, it is difficult to get
insight into the visual elements like color, font size, font type, button sizes, etc as
there is no human intervention.
• High cost: Automation tests have a high cost of implementation as tools are
required for testing, thus adding the cost to the project budget.
• Test maintenance is costly: In automation tests, test maintenance is costly.
• Not false proof: Automation tests also have some limitations and mistakes in
automated tests can lead to errors and omissions.
• Trained employees required: For conducting automated tests, trained
employees with knowledge of programming languages and testing knowledge are
required.

Compiled By : Mr. Vinod S Mahajan


❖Test Metrics:
Software testing metrics are quantifiable indicators of the software testing process progress,
quality, productivity, and overall health. The purpose of software testing metrics is to increase
the efficiency and effectiveness of the software testing process while also assisting in making
better decisions for future testing by providing accurate data about the testing process. A metric
expresses the degree to which a system, system component, or process possesses a certain
attribute in numerical terms. A weekly mileage of an automobile compared to its ideal mileage
specified by the manufacturer is an excellent illustration of metrics.

Types of Software Testing Metrics


Software testing metrics are divided into three categories:
1. Process Metrics: A project’s characteristics and execution are defined by process metrics.
These features are critical to the SDLC process’s improvement and maintenance (Software
Development Life Cycle).
2. Product Metrics: A product’s size, design, performance, quality, and complexity are defined
by product metrics. Developers can improve the quality of their software development by
utilizing these features.
3. Project Metrics: Project Metrics are used to assess a project’s overall quality. It is used to
estimate a project’s resources and deliverables, as well as to determine costs, productivity, and
flaws.

Important Metrics
The following are some of the other important software metrics:
➢ Defect metrics: Defect metrics help engineers understand the many aspects of software
quality, such as functionality, performance, installation stability, usability, compatibility, and so
on.
➢ Schedule Adherence: Schedule Adherence’s major purpose is to determine the time
difference between a schedule’s expected and actual execution times.
➢ Test case efficiency: Test case efficiency is a measure of how effective test cases are at
detecting problems
➢ Defects finding rate: It is used to determine the pattern of flaws over a period of time.

➢ Defect Fixing Time: The amount of time it takes to remedy a problem is known as defect
fixing time.
➢ Defect cause: It’s utilized to figure out what’s causing the problem.

Compiled By : Mr. Vinod S Mahajan


❖ Types of risks
1. Schedule Risk:
Schedule related risks refer to time related risks or project delivery related planning risks. The
wrong schedule affects the project development and delivery. These risks are mainly indicating
to running behind time as a result project development doesn’t progress timely and it directly
impacts to delivery of project. Finally, if schedule risks are not managed properly, it gives rise
to project failure and at last it affects to organization/company economy very badly. Some
reasons for Schedule risks –
• Time is not estimated perfectly
• Improper resource allocation
• Tracking of resources like system, skill, staff etc
• Frequent project scope expansion
• Failure in function identification and its’ completion
2 Budget Risk: Budget related risks refers to the monetary risks mainly it occurs due to budget
overruns. Always the financial aspect for the project should be managed as per decided but if
financial aspect of project mismanaged then there budget concerns will arise by giving rise to
budget risks. So proper finance distribution and management are required for the success of
project otherwise it may lead to project failure.
Some reasons for Budget risks –
• Wrong/Improper budget estimation
• Unexpected Project Scope expansion
• Mismanagement in budget handling
• Cost overruns
• Improper tracking of Budget
3 Operational Risks: Operational risk refers to the procedural risks means these are the risks
which happen in day-to-day operational activities during project development due to improper
process implementation or some external operational risks.
Some reasons for Operational risks –
• Insufficient resources
• Conflict between tasks and employees
• Improper management of tasks
• No proper planning about project
• Less number of skilled people
• Lack of communication and cooperation
• Lack of clarity in roles and responsibilities

Compiled By : Mr. Vinod S Mahajan


• Insufficient training
4. Technical Risks: Technical risks refers to the functional risk or performance risk which
means this technical risk mainly associated with functionality of product or performance part
of the software product.
Some reasons for Technical risks –
• Frequent changes in requirement
• Less use of future technologies
• Less number of skilled employee
• High complexity in implementation
• Improper integration of modules

5. Programmatic Risks: Programmatic risks refers to the external risk or other unavoidable
risks. These are the external risks which are unavoidable in nature. These risks come from
outside and it is out of control of programs.
Some reasons for Programmatic risks –
• Rapid development of market
• Running out of fund / Limited fund for project development
• Changes in Government rules/policy
• Loss of contracts due to any reason

❖Myths and Reality of Testing

➢ Myth 1: Testing is Too Expensive


Reality - There is a saying, pay less for testing during software development or pay more for
maintenance or correction later. Early testing saves both time and cost in many aspects,
however reducing the cost without testing may result in improper design of a software
application rendering the product useless.
➢ Myth 2: Testing is Time-Consuming
Reality - During the SDLC phases, testing is never a time-consuming process. However
diagnosing and fixing the errors identified during proper testing is a time consuming but
productive activity.
➢ Myth 3: Only Fully Developed Products are Tested
Reality - No doubt, testing depends on the source code but reviewing requirements and
developing test cases is independent from the developed code. However iterative or
incremental approach as a development life cycle model may reduce the dependency of testing
on the fully developed software.

Compiled By : Mr. Vinod S Mahajan


➢ Myth 4: Complete Testing is Possible
Reality - It becomes an issue when a client or tester thinks that complete testing is possible. It
is possible that all paths have been tested by the team but occurrence of complete testing is
never possible. There might be some scenarios that are never executed by the test team or the
client during the software development life cycle and may be executed once the project has been
deployed
Myth 5: A Tested Software is Bug-Free
Reality - This is a very common myth that the clients, project managers, and the management
team believes in. No one can claim with absolute certainty that a software application is 100%
bug-free even if a tester with superb testing skills has tested the application.
➢ Myth 6: Missed Defects are due to Testers
Reality - It is not a correct approach to blame testers for bugs that remain in the application
even after testing has been performed. This myth relates to Time, Cost, and Requirements
changing Constraints. However the test strategy may also result in bugs being missed by the
testing team.
➢ Myth 7: Testers are Responsible for Quality of Product
Reality - It is a very common misinterpretation that only testers or the testing team should be
responsible for product quality. Testers’ responsibilities include the identification of bugs to the
stakeholders and then it is their decision whether they will fix the bug or release the software.
Releasing the software at the time puts more pressure on the testers, as they will be blamed for
any error.
➢ Myth 8: Test Automation should be used wherever possible to Reduce Time
Reality - Yes, it is true that Test Automation reduces the testing time, but it is not possible to
start test automation at any time during software development. Test automaton should be
started when the software has been manually tested and is stable to some extent. Moreover, test
automation can never be used if requirements keep changing.
➢ Myth 9: Anyone can Test a Software Application
Reality - People outside the IT industry think and even believe that anyone can test a software
and testing is not a creative job. However, testers know very well that this is a myth. Thinking
alternative scenarios, try to crash a software with the intent to explore potential bugs is not
possible for the person who developed it.
➢ Myth 10: A Tester's only Task is to Find Bugs
Reality - Finding bugs in a software is the task of the testers, but at the same time, they are
domain experts of the particular software. Developers are only responsible for the specific
component or area that is assigned to them but testers understand the overall workings of the
software, what the dependencies are, and the impacts of one module on another module.

******

Compiled By : Mr. Vinod S Mahajan

You might also like