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

STQA UNIT-01 Self Notes

The document discusses concepts related to software testing and quality assurance including basic testing vocabulary, quality assurance versus quality control, the cost of quality, software quality factors, software defects, the roles of software testers, scope of testing, testing constraints, software development life cycles, independent testing, QA processes, levels of testing, and the V concept of testing.

Uploaded by

ac8198905
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)
567 views

STQA UNIT-01 Self Notes

The document discusses concepts related to software testing and quality assurance including basic testing vocabulary, quality assurance versus quality control, the cost of quality, software quality factors, software defects, the roles of software testers, scope of testing, testing constraints, software development life cycles, independent testing, QA processes, levels of testing, and the V concept of testing.

Uploaded by

ac8198905
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/ 14

SOFTWARE TESTING AND QUALITY ASSURANCE

UNIT-01: BASIC CONCEPTS:


• Basic Testing Vocabulary,
• Quality Assurance versus Quality Control,
• The Cost of Quality,
• Software Quality Factors,
• Software Defect,
• The Multiple Roles of the Software Tester(People Relationships),
• Scope of Testing,
• Testing Constraints,
• Various software development Life cycles (SDLC),
• Independent Testing,
• QA Process,
• Levels of Testing,
• The “V” Concept of Testing.
__________________________________________________________________

Software Testing- Testing is the process of evaluating a system or its component(s) with the intent
to find whether it satisfies the specified requirements or not.
Testing is executing a system in order to identify any gaps, errors, or missing requirements in
contrary to the actual requirements.

➢ Applications of Software Testing:

• Cost Effective Development - 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.

• Product Improvement - 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.

• Test Automation - 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

TANISHA BANGAR 1
the software has been manually tested and is stable to some extent. Moreover, test automation
can never be used if requirements keep changing.

• Quality Check - Software testing helps in determining following set of properties of any
software such as

o Functionality
o Reliability
o Usability
o Efficiency
o Maintainability
o Portability

➢ 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

TANISHA BANGAR 2
2. Detection costs include the cost of creating test cases, setting up testing environments,
revisiting testing requirements.
1. Internal failure costs include costs incurred in fixing defects just before delivery.
2. External failure costs include product support costs incurred by delivering poor
quality software.

➢ Product Operation Software Quality Factors:

According to McCall’s model, product operation category includes five software quality factors,
which deal with the requirements that directly affect the daily operation of the software. They are
as follows −
• Correctness
These requirements deal with the correctness of the output of the software system. They include −
o Output mission
o The required accuracy of output that can be negatively affected by inaccurate data or
inaccurate calculations.
o The completeness of the output information, which can be affected by incomplete data.
o The up-to-dateness of the information defined as the time between the event and the
response by the software system.
o The availability of the information.
o The standards for coding and documenting the software system.

• Reliability: Reliability requirements deal with service failure. They determine the
maximum allowed failure rate of the software system, and can refer to the entire system or
to one or more of its separate functions.

• Efficiency: It deals with the hardware resources needed to perform the different functions
of the software system. It includes processing capabilities (given in MHz), its storage
capacity (given in MB or GB) and the data communication capability (given in MBPS or
GBPS). It also deals with the time between recharging of the system’s portable units, such
as, information system units located in portable computers, or meteorological units placed
outdoors.

• Integrity: This factor deals with the software system security, that is, to prevent access to
unauthorized persons, also to distinguish between the group of people to be given read as
well as write permit.

• Usability: Usability requirements deal with the staff resources needed to train a new
employee and to operate the software system.

TANISHA BANGAR 3
➢ Product Revision Quality Factors:

According to McCall’s model, three software quality factors are included in the product revision
category. These factors are as follows −
Maintainability
This factor considers the efforts that will be needed by users and maintenance personnel to identify
the reasons for software failures, to correct the failures, and to verify the success of the corrections.
Flexibility
This factor deals with the capabilities and efforts required to support adaptive maintenance
activities of the software. These include adapting the current software to additional circumstances
and customers without changing the software. This factor’s requirements also support perfective
maintenance activities, such as changes and additions to the software in order to improve its service
and to adapt it to changes in the firm’s technical or commercial environment.
Testability
Testability requirements deal with the testing of the software system as well as with its operation.
It includes predefined intermediate results, log files, and also the automatic diagnostics performed
by the software system prior to starting the system, to find out whether all components of the
system are in working order and to obtain a report about the detected faults. Another type of these
requirements deals with automatic diagnostic checks applied by the maintenance technicians to
detect the causes of software failures.

➢ Product Transition Software Quality Factor:

According to McCall’s model, three software quality factors are included in the product transition
category that deals with the adaptation of software to other environments and its interaction with
other software systems. These factors are as follows −
Portability
Portability requirements tend to the adaptation of a software system to other environments
consisting of different hardware, different operating systems, and so forth. The software should be
possible to continue using the same basic software in diverse situations.
Reusability
This factor deals with the use of software modules originally designed for one project in a new
software project currently being developed. They may also enable future projects to make use of
a given module or a group of modules of the currently developed software. The reuse of software
is expected to save development resources, shorten the development period, and provide higher
quality modules.
Interoperability
Interoperability requirements focus on creating interfaces with other software systems or with
other equipment firmware. For example, the firmware of the production machinery and testing
equipment interfaces with the production control software.

TANISHA BANGAR 4
➢ Software Defects:
A software bug arises when the expected result don't match with the actual results. It can also be
error, flaw, failure, or fault in a computer program. Most bugs arise from mistakes and errors made
by developers, architects.
Following are the methods for preventing programmers from introducing bugs during
development:
• Programming Techniques adopted
• Software Development methodologies
• Peer Review
• Code Analysis

➢ Common Types of Defects:

Following are the common types of defects that occur during development:
• Arithmetic Defects
• Logical Defects
• Syntax Defects
• Multithreading Defects
• Interface Defects
• Performance Defects

➢ The Multiple Roles of the Software Tester(People Relationships):

o Before going to the People Challenges, I would like to reiterate Few Useful Points on Role of
Software Testing:
o Testing is finally recognized as a profession which needs specialized skills set and
qualifications.
o Also it is convinced testing will not start once the development is completed.
o Testing needs to be start in every stage of the software development Life Cycle.
o Testers need to validate whether the requirements specification documents is developed based
on the needs of the organization.
o Testers need to be ensuring that the design documents developed based on the requirements
specifications.
o Testers need to be ensure that the test cases and test plan are created based on the requirements
specifications.
o Testers need to be ensuring that the defects need to find out before the test cycle starts so that
the cost spends will gradually decreases.
o Testers need to be ensuring that the defects can be reproducible by developers.
o Testers need to be ensuring that they are finding defects of the high priority scenarios first.
o If you are in Agile methodology, then testers need to make sure that defects are getting fixed
on priority.
TANISHA BANGAR 5
o Finding out defects in the later stage of the product will leads the cost spend to rectify the
defects is very costly.

➢ Scope of Testing:

Technically, Software Testing is an investigation conducted to provide stakeholders with


information about the quality of a particular product or service under test. In other words, software
testing is a process of verification and validation.

Test techniques include, but are not limited to the process of executing a program or application
with the intent of finding software bugs (errors or other defects). – Wikipedia
To test software, a tester is expected to know the software that is to be tested, plus the tools required
to test it. Often, it can be very specialized, and your employer company may have to train you. To
be a good tester, you need to be very organized, logical, meticulous, thorough, and patient

Software Testing as a career Over the last few years, the profile of the software tester has seen
phenomenal growth. Testing has become crucial for several application/product implementations
and businesses have begun to realize the importance of structured testing of applications before
their release.

➢ Constraints of Software testing :

1. At the present time, most of the web application is shifting towards mobile application
which itself is a huge challenge for development team as well as testing team. As mobile
testing, approach are entirely different from what we are performing for web.
2. No fixed approach in order to test the application. Every individual and plan their own
test plan.
3. As most of the companies are trying to shift more on Automation wheras manual is more
important.
4. Time consuming as it takes 30–40% of SDLC life cycle.
5. You need to continuously learn and update your knowledge on multiple testing tools.

Software testing constraints are guidelines that provide direction and define acceptable parameters
for software testing activities. They are used to help testers follow a general testing strategy and
provide a framework for testing. Software testing constraints often address the scope and depth of
testing, the level of the testing effort, and the testing techniques that will be used. Some examples
of software testing constraints include test scope, test depth, test effort, and testing techniques.

TANISHA BANGAR 6
➢ What is SDLC?

SDLC is a process followed for a software project, within a software organization. It consists of a
detailed plan describing how to develop, maintain, replace and alter or enhance specific software.
The life cycle defines a methodology for improving the quality of software and the overall
development process.
The following figure is a graphical representation of the various stages of a typical SDLC.

The stages of SDLC are as follows:

• Stage 1: Planning and requirement analysis-

Requirement Analysis is the most important and necessary stage in SDLC.


The senior members of the team perform it with inputs from all the stakeholders and domain
experts or SMEs in the industry.
Planning for the quality assurance requirements and identifications of the risks associated with the
projects is also done at this stage.

• Stage 2: Defining Requirements-

Once the requirement analysis is done, the next stage is to certainly represent and document the
software requirements and get them accepted from the project stakeholders.

This is accomplished through "SRS"- Software Requirement Specification document which


contains all the product requirements to be constructed and developed during the project life cycle.

TANISHA BANGAR 7
• Stage 3: Designing the Software-

The next phase is about to bring down all the knowledge of requirements, analysis, and design of
the software project. This phase is the product of the last two, like inputs from the customer and
requirement gathering.

• Stage 4: Developing the project-

In this phase of SDLC, the actual development begins, and the programming is built. The
implementation of design begins concerning writing code. Developers have to follow the coding
guidelines described by their management and programming tools like compilers, interpreters,
debuggers, etc. are used to develop and implement the code.

• Stage 5: Testing-

After the code is generated, it is tested against the requirements to make sure that the products are
solving the needs addressed and gathered during the requirements stage. During this stage, unit
testing, integration testing, system testing, acceptance testing are done.

• Stage 6: Deployment-

Once the software is certified, and no bugs or errors are stated, then it is deployed.Then based on
the assessment, the software may be released as it is or with suggested enhancement in the object
segment. After the software is deployed, then its maintenance begins.

• Stage 7: Maintenance-

Once when the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.

➢ What is Independent Testing?

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.

• Levels of Independent Testing-

The following list shows the increasing levels of independence for testing:
• Testing done by developer himself
• Independent testers ceded to the development team
• Independent Testing Team within Organization
• Independent Testers of different Organization
• Outsourced test team members of other organization

TANISHA BANGAR 8
➢ Stages of QA Process-

1. Analyze Requirements:
It costs more to fix a bug that has been detected during testing as compared to just preventing them
at the stage of requirements design. QA professionals should be involved in analyzing and defining
software requirements, both functional and non-functional. QAs must be offered consistent,
comprehensive, traceable requirements and clearly marked. This helps the QA team design tests
specifically tailored to the software being tested.

2. Plan the tests:


The information gained during the requirements analysis phase is used for test planning. The test
plan should comprise the software testing strategy, the scope of testing, the project budget, and
established deadlines. It should also outline the types and levels of testing required, methods, and
tools for tracking bugs and allocate resources and responsibilities to individual testers.

3. Design the tests:


QA teams have to craft test cases and checklists that encompass the software requirements at this
stage. Each test case must contain conditions, data, and the steps needed to validate each
functionality. Every test must also define the expected test result so that testers know what to
compare actual results to.

4. Execute Tests and Report Defects:


Tests start at the unit level with developers performing unit tests. Then, the quality assurance
testing team runs tests at API and UI levels. Manual tests are run in accordance with previously
designed test cases. All bugs detected are submitted in a defect tracking system for effective defect
management. Additionally, test automation engineers can use an automated test framework such
as Selenium, Cypress, or Appium to execute test scripts and generate test summary reports.

5. Run Re-Tests and Regression Tests:


Once bugs have been found, submitted, and fixed, QAs test the functions again to ensure that they
didn’t miss any anomalies. They also run regression tests to verify that the fixes have not affected
the existing functions.

TANISHA BANGAR 9
6. Run Release Tests:
Once developers issue a release notification detailing a list of already implemented features, fixed
bugs, recurring issues, and limitations, the QA team must identify the functionalities affected by
these changes. Then, the team must design modified test suites that cover the scope of the new
build.

➢ Different Levels of Testing-

The levels of software testing involve the different methodologies, which can be used while we
are performing the software testing.

In software testing, we have four different levels of testing, which are as discussed below:

1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

• Level 1: Unit Testing-

Unit testing is the first level of software testing, which is used to test if software modules are
satisfying the given requirement or not.

The first level of testing involves analyzing each unit or an individual component of the
software application.

Unit testing is also the first level of functional testing. The primary purpose of executing unit
testing is to validate unit components with their performance.

• Level 2: Integration Testing-

The second level of software testing is the integration testing. The integration testing process
comes after unit testing.

It is mainly used to test the data flow from one module or component to other modules.

In integration testing, the test engineer tests the units or separate components or modules of the
software in a group.

The primary purpose of executing the integration testing is to identify the defects at the interaction
between integrated components or units.

TANISHA BANGAR 10
• Level 3: System Testing-

The third level of software testing is system testing, which is used to test the software's functional
and non-functional requirements.

It is end-to-end testing where the testing environment is parallel to the production environment.
In the third level of software testing, we will test the application as a whole system.

• Level 4: Acceptance Testing-

The last and fourth level of software testing is acceptance testing, which is used to evaluate
whether a specification or the requirements are met as per its delivery.

The software has passed through three testing levels (Unit Testing, Integration Testing, System
Testing). Some minor errors can still be identified when the end-user uses the system in the actual
scenario.

➢ The “V” Concept of Testing:

The V-model is an SDLC model where execution of processes happens in a sequential manner in
a V-shape. It is also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the association of a testing
phase for each corresponding development stage. This means that for every single phase in the
development cycle, there is a directly associated testing phase. This is a highly-disciplined model
and the next phase starts only after completion of the previous phase.

• V-Model – Design:

Under the V-Model, the corresponding testing phase of the development phase is planned in
parallel. So, there are Verification phases on one side of the ‘V’ and Validation phases on the other
side. The Coding Phase joins the two sides of the V-Model.
The following illustration depicts the different phases in a V-Model of the SDLC.

TANISHA BANGAR 11
➢ V-Model - Verification Phases-

There are several Verification phases in the V-Model, each of these are explained in detail below.
• Business Requirement Analysis:
This is the first phase in the development cycle where the product requirements are understood
from the customer’s perspective. This phase involves detailed communication with the customer
to understand his expectations and exact requirement. This is a very important activity and needs
to be managed well, as most of the customers are not sure about what exactly they need.
The acceptance test design planning is done at this stage as business requirements can be used
as an input for acceptance testing.
• System Design:
Once you have the clear and detailed product requirements, it is time to design the complete
system. The system design will have the understanding and detailing the complete hardware and
communication setup for the product under development. The system test plan is developed based
on the system design. Doing this at an earlier stage leaves more time for the actual test execution
later.
• Architectural Design:
Architectural specifications are understood and designed in this phase. Usually more than one
technical approach is proposed and based on the technical and financial feasibility the final
decision is taken. The system design is broken down further into modules taking up different
functionality. This is also referred to as High Level Design (HLD).
The data transfer and communication between the internal modules and with the outside world
(other systems) is clearly understood and defined in this stage. With this information, integration
tests can be designed and documented during this stage.
• Module Design:
In this phase, the detailed internal design for all the system modules is specified, referred to as Low
Level Design (LLD). It is important that the design is compatible with the other modules in the
system architecture and the other external systems. The unit tests are an essential part of any
development process and helps eliminate the maximum faults and errors at a very early stage.
These unit tests can be designed at this stage based on the internal module designs.

➢ Coding Phase-

The actual coding of the system modules designed in the design phase is taken up in the Coding
phase. The best suitable programming language is decided based on the system and architectural
requirements.
The coding is performed based on the coding guidelines and standards. The code goes through
numerous code reviews and is optimized for best performance before the final build is checked
into the repository.

TANISHA BANGAR 12
➢ Validation Phases-

The different Validation Phases in a V-Model are explained in detail below.


• Unit Testing:
Unit tests designed in the module design phase are executed on the code during this validation
phase. Unit testing is the testing at code level and helps eliminate bugs at an early stage, though
all defects cannot be uncovered by unit testing.
• Integration Testing:
Integration testing is associated with the architectural design phase. Integration tests are performed
to test the coexistence and communication of the internal modules within the system.
• System Testing:
System testing is directly associated with the system design phase. System tests check the entire
system functionality and the communication of the system under development with external
systems. Most of the software and hardware compatibility issues can be uncovered during this
system test execution.
• Acceptance Testing:
Acceptance testing is associated with the business requirement analysis phase and involves testing
the product in user environment. Acceptance tests uncover the compatibility issues with the other
systems available in the user environment. It also discovers the non-functional issues such as load
and performance defects in the actual user environment.

➢ V- Model ─ Application-

V- Model application is almost the same as the waterfall model, as both the models are of
sequential type. Requirements have to be very clear before the project starts, because it is usually
expensive to go back and make changes. This model is used in the medical development field, as
it is strictly a disciplined domain.
The following pointers are some of the most suitable scenarios to use the V-Model application.
• Requirements are well defined, clearly documented and fixed.
• Product definition is stable.
• Technology is not dynamic and is well understood by the project team.
• There are no ambiguous or undefined requirements.
• The project is short.

➢ V-Model - Pros and Cons-

The advantage of the V-Model method is that it is very easy to understand and apply. The
simplicity of this model also makes it easier to manage. The disadvantage is that the model is not
flexible to changes and just in case there is a requirement change, which is very common in today’s
dynamic world, it becomes very expensive to make the change.

TANISHA BANGAR 13
➢ The advantages of the V-Model method are as follows −
• This is a highly-disciplined model and Phases are completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Simple and easy to understand and use.
• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a
review process.

➢ The disadvantages of the V-Model method are as follows −


• High risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing.
• Once an application is in the testing stage, it is difficult to go back and change a functionality.
• No working software is produced until late during the life cycle.

TANISHA BANGAR 14

You might also like