STQA-Chapter 1
STQA-Chapter 1
Fundamentals of Testing
❖ 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.
❖ 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.
❖ 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.
❖ 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.
❖ 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.
❖ 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.
❖ 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.
❖ 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.
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.
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
******