0% found this document useful (0 votes)
111 views108 pages

QA Principles

QA Principles

Uploaded by

Aseel Alomari
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)
111 views108 pages

QA Principles

QA Principles

Uploaded by

Aseel Alomari
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/ 108

Quality Assurance

Principles
Tahaluf Training Center 2022
1 Quality Control Introduction

2 Test objectives and necessities

3 Developer VS Tester

4 Quality assurance VS Quality control

5 Software Development Life Cycle (SDLC)

6 Software Development Life Cycle Model


Quality Control
Introduction
Quality software refers to software that satisfies specifications and expectations, is
produced on time and within budget limits, and is maintainable.

Software quality in the context of software engineering refers to both functional and
structural quality.
Software functional quality refers to how well a particular design is met, depending on
the functional specifications or requirements.

Software Structural Quality This relates to the handling of non-functional needs, such
as performance, security, or maintainability, that help achieve the functional
requirements, as well as the degree to which the software was created correctly.
Software that does not work correctly can lead to many
problems, including:

loss of money and Loss of business Injury or death


time reputation (Embedded system).
Software Testing
Software testing is a process that includes
many different activities. Execution is only
one of these activities. ≠
Test Execution
Test objectives and
necessities
Identifies faults to reduce live defect

Why is Testing Increase reliability

Necessary
To ensure live failures don’t impact costs & profitability

To ensure requirements plus legal requirements are met

Maintain the organization’s reputation


Finding
defects & failure

Evaluate work Preventing


product defects

Test Objectives

Share information
Reducing Risk
to stakeholder

build confidence
The Learning Hub Copyright
2022- All Right Reserved

Let’s Get Exercises


😃 Exercises
If the tester reviewed the requirements and found a contradiction
between two requirements, which objective of testing can be obtained
using this activity?

A. Building confidence

B. Compliance with laws

C. Preventing defects

10/6/2022
Component(unit) testing is a test level that focuses on individual
hardware or software components, and it always happens early in the
software lifecycle.

Depending on this definition, what testing objective can be obtained


using component testing?

A. Reduce risk
B. Give information to stakeholders
C. Compliance with laws

10/6/2022
Which of the following is Not an objective of software testing?

A. requirements fulfillment

B. building confidence in components

C. Preventing defects

D. reducing project duration

10/6/2022
If you are making sure that what you have built is the same as what the
client wants, which test objective is mostly met by this activity?

A. reducing risks

B. finding defects

C. requirements fulfilment

10/6/2022
Developer VS Tester
❑ The person who writes and maintains the source code of computer programs
used to create software is known as a software developer.

❑ Software developers assist with software maintenance and updates.

❑ In order to create software, the developer first develops each component


and plans how they will all work together.
❑ A software tester is someone who evaluates the accuracy, completeness,
and quality of created software.

❑ A software tester’s role is important since it makes sure that everything


produced and delivered is a bug - free, which assures the software's quality.

❑ He reduces maintenance expenses and offers increased functionality and


usage.
Developer Tester
It is responsible for creating It is responsible for evaluating
individual software. software.

Check to see if the code behaves as


write code to develop software.
expected.

The primary goal is to create The primary goal is to find bugs and
software that is free of bugs errors in software if present

Focus on client’ requirements while Focus on the behavior of end-user


developing software. while testing software.
Developer Tester
Should have a deep understanding of
Should have programming skills,
the system, good communication
proficiency in writing code, etc.
skills, critical thinking, etc.

They understand problems, improve They report a problem, help in saving


the quality of business, and reduce money and provide security and
costs. quality software.

provide suggestions to improve the find its root cause so that it can be
software. resolved permanently
Quality Assurance
VS
Quality Control
Quality Assurance

Quality Control
Quality Assurance (process-focused action)
a set of procedures to guarantee the quality of the software
engineering processes that, in the end, provide high-quality
software products.

Quality Control (product-focused action)


a collection of procedures used to make sure that software
products are of a high-quality level. Identifying the defects in
the actual products produced is the main goal of these
activities.
The Learning Hub Copyright
2022- All Right Reserved

Let’s Get Exercises


😃 Exercises
Quiz

Which of the following answers describe the difference between Quality


assurance(QA) and Quality control(QC)?

A. QA is focused on adherence to proper processes but QC is focused on


activities that support the achievements of quality levels of a certain
product

B. QA is focused on adherence to proper process but QC is focused on


activities that support the cost of the project and the budget available for
a certain release

C. QC is focused on development stage but QA is focused on production


stage

10/6/2022
Quiz

Who Is focused on the behavior of end-user while testing software?

A. Tester
B. Developer

10/6/2022
Quiz

Who Is primary goal is to create software that is free of bugs?

A. Tester
B. Developer

10/6/2022
Software Development
Life Cycle (SDLC)
➢ Software Development Life Cycle (SDLC) is the application of standard
business practices to building software applications.

➢ There are usually six to eight phases involved: planning, requirements,


design, build, document, test, deployment, and maintenance. Depending on
the size and complexity of the project, some project managers may combine,
divide, or eliminate steps.
Planning and
Requirements

Maintenance Design

SDLC
Implementation or
Deployment
coding

Testing
➢ Requirements gathering and planning

At this stage, the project conditions are evaluated, This includes estimating labor
and material costs, developing a schedule with specific deadlines, and defining
the scope and purpose of the application.
➢ Requirements gathering and planning

During this phase, all the relevant information is collected from the customer to
develop a product as per their expectation. Any ambiguities must be resolved in
this phase.
➢ Requirements gathering and planning

The business analyst and Project Manager set up a meeting with the customer
to gather all the information like what the customer wants to build, who will be
the end-user, and what is the purpose of the product. Before building a product
a core understanding or knowledge of the product is very important.
➢ Design

In this phase, the requirement gathered in the SRS document is used as input,
and the software architecture, User Interface, Platforms, Programming,
Communications, and Security that is used for implementing system
development is derived.
➢ Implementation or coding

Implementation/Coding starts once the developer gets the Design document.


The Software design is translated into source code. All the components of the
software are implemented in this phase
➢ Testing

Before making an application accessible to consumers, testing is essential.


Each function should be tested to make sure it operates properly. The testing
stage assists in decreasing the number of bugs and glitches users face. This
results in improved utilization rates and enhanced user satisfaction.
➢ Deployment

Once the product is tested, it is deployed in the production environment or first


UAT (User Acceptance testing) is done depending on the customer expectation.
➢ Maintenance

The software application is finished and in use in the market. However,


the Maintenance phase is still important. Users find bugs in this stage that
weren't detected during testing. These errors must be fixed, which may lead to
new development cycles.
The Learning Hub Copyright
2022- All Right Reserved

How To Implement The Basic Six


Phases For A Calculator
Application Discussion
1. Requirements gathering and planning

a) scientific or basic?

b) How many functions the calculator will have?

c) What are the features we are looking for


2. Design

Determines where the buttons will locate,


the operator order, …etc.
3. Implementation

Use an agreed programming language to


write calculator code
4. Testing

1. Check if the calculator is a normal calculator or a


scientific calculator.

2. Verify that all the buttons are present, and the text
written on them is readable.

3. Check the arithmetic operations are working fine- +, -,


/, * etc.
4. Testing

4. Verify that the calculator gives the correct result in case


of operations containing decimal numbers.

5. Verify the working of the ON-OFF button in the


calculator.

6. Verify that on pressing two operators one after the


other, the latest one will override the previous
operator.
4. Testing

7. Verify if the user can delete digits one by one using the
backspace key.

8. Check if the calculator is battery operated or works on


solar power. (hardware)

9. Verify the outer body material of the calculator.


(hardware)
5. Deployment

Once the product is tested, it is deployed in the


production environment, this is the final
product.
6. Maintenance

suppose that the Management decided that


they need a scientific calculator base on a new
need.
The Learning Hub Copyright
2022- All Right Reserved

Let’s Get Exercises


😃 Exercises
Quiz

Which of the following is the correct order of activities in the Software


Development Life Cycle (SDLC)?

A – Implementation B - Requirement identification C - Design


D – Deployment E – Testing F – Maintenance

a) D, B, C, A, E and F
b) B, D, C, A, F and E
c) B, C, A, E, D and F
d) B, C, D, A, E and F

10/6/2022
Quiz

The first step in the systems development life cycle (SDLC) is:

A. Analysis.
B. Design.
C. Planning
D. Development and Documentation.

10/6/2022
Quiz

Enhancements, upgrades, and bug fixes are done during the ____________ step
in the SDLC.

A. Maintenance and Evaluation


B. Problem/Opportunity Identification
C. Design
D. Development and Documentation

10/6/2022
Quiz

Actual programming of software code is done during the ____________ step in


the SDLC.

A. Maintenance and Evaluation


B. Design
C. Analysis
D. Development and Documentation

10/6/2022
Software Development
Life Cycle Model
A software life cycle model is a descriptive representation of the software
development cycle. SDLC models might have a different approach, but the basic
phases and activity remain the same for all the models.
Software Development Life Cycle (SDLC) Model:

➢ Sequential development models


➢ Iterative and incremental development models
SDLC Model

Waterfall Iterative
V Model Spiral Model
model Model

Incremental
Agile Model
Model
The waterfall model is a Sequential development model that presents the software
development process as linear, sequential process steps. This implies that the
beginning of every phase in the development process should occur after the
conclusion of the phase before it. Although there shouldn't be any overlap between
phases in principle, in practice it might be helpful to have early input from the phase
that comes after.
The Agile model is the combination of iterative and incremental process models.
The requirements are broken down into several small pieces in the Agile approach so
they may be produced incrementally. Iterative development is an aspect of the Agile
approach. Iterations are used to construct each incremental component. Each
iteration should only take a few weeks to complete and be minimal and simple to
manage.
Agile Modal
The Learning Hub Copyright
2022- All Right Reserved

Let’s Get Exercises


😃 Exercises
A waterfall model is also known as ____.

A. Prototype model
B. Linear sequential model
C. Iterative Model
D. None of the mentioned above

10/6/2022
The iterative Model should be used when,

A. The system project is large


B. Requirements are defined clearly and easy to understand
C. There is a requirement of changes in future
D. All of the mentioned above

10/6/2022
____ begins after successful testing of the developed system in
waterfall model.

A. System Design
B. Requirement Analysis
C. Deployment
D. None of the mentioned above

10/6/2022
The waterfall model is suitable for small projects with clear
requirement

A. True
B. False

10/6/2022
With reference to the waterfall model, each phase must be completed
before the ___ can begin and there is no overlapping in the phases.

A. Previous phase
B. Next phase
C. Both A and B
D. None of the mentioned above

10/6/2022
An iterative life cycle model does not attempt to start with a full
specification of requirements.

A. True
B. False

10/6/2022
In waterfall model, output of one phase is input to next phase.

A. True
B. False

10/6/2022
1 Static Testing VS Dynamic Testing

2 Static Testing Type

3 Dynamic Testing Type

4 White-Box Testing

5 Black-Box Testing

6 Seven Testing Principle


Static Testing
VS
Dynamic Testing
Data/Control flow
White-Box Testing
testing
Component Testing

System Testing
Dynamic Testing
Functional Testing
Integration Testing
Testing

Black-Box Testing Acceptance Testing

Performance Testing
Review
Static Testing Security Testing
Non-Functional
Static Analysis
Testing
Usability Testing

Compatibility
Testing
Testing

Static Dynamic
Testing Testing
Let’s break down the basic definition of Software testing into the
following parts:

1. Static Testing: find defects without executing code. For example:


reviewing documents, walkthrough, inspection, etc.

2. Dynamic Testing: The software code is executed to Show the result


of running tests.
Static Testing Type
Static
Testing

Static
Review
Analysis
Both types of static testing(Reviews & static analysis) assess the code
or other work product being tested without actually executing the
code or work product being tested.
Static testing includes:

1. Review: static testing relies on the manual examination of work


products

2. Static Analysis: static testing relies on the tool-driven evaluation of


the code or other work products
The Learning Hub Copyright
2022- All Right Reserved

Let’s Get Exercises


😃 Exercises
If you get a code from the developer and your task is to test whether the
developer added proper commenting to his code or not, which type of
testing is this?

A. Static Testing
B. Dynamic Testing

10/6/2022
If a developer runs his code and finds a defect in it, this is called............

A. Static Testing
B. Dynamic Testing

10/6/2022
Which of the following is a correct definition of a review?

A. The review is mostly a manual activity in which work products like


requirements, code, and design are reviewed in order to find defects
in them.
B. The review is an automated activity in which work products like
requirements, code, and design are reviewed in order to find defects
in them.
C. The review is an automated activity in which the code is reviewed in
order to find warnings and errors in it.

10/6/2022
Which of the following is correct?

A. Reviews rely on the manual examination of work products while


static analysis is tool-driven
B. Static analysis relies on the manual examination of work products
while reviews are tool-driven
C. Both reviews and static analysis are tool-driven

10/6/2022
Dynamic Testing Type
Dynamic
Testing

Black-Box White-Box
Testing Testing
Dynamic testing includes:

Black-Box Testing: concentrate on the inputs and outputs of the test


object without reference to its internal structure, also called
behavioral or behavior-based test.

Input Output
Dynamic testing includes:

White-Box Testing: concentrate on the structure and processing


within the test object, also called structural or structure-based
techniques

Input Output
White-Box Testing
Input White-Box Testing Output

White-Box Testing
White-Box
Testing

Data/Control
flow testing
Data/Control flow testing:
This testing is concentrated on the points in the source code that initializes and
utilizes variables also used to determine whether an execution path is broken, and
data is not passing to the next component. Additionally, it assists in detecting
dead code that the application cannot reach, as well as infinite loops where the
program keeps running.
Black-Box Testing
Input Output

Black-Box Testing
Black-Box
Testing

Non-
Functional
Functional
Testing
Testing
Functional Testing:
Functional testing makes that the software is prepared with all the required
functionalities that are listed in the functional requirements. Additionally, it looks
at whether the actual output for a given input matches the expected output. This
kind of testing entails assessing and comparing each software function with
business requirements.
Non-Functional Testing:
Non-functional testing is the process of evaluating an application based on factors
other than its functionality, such as its performance, compatibility, usability,
reliability, memory utilization, etc. This kind of testing saves money since it allows
for the early identification of system hazards related to performance, memory,
and multiple user logins.
Functional
Testing

Component System Integration Acceptance


Testing Testing Testing Testing
Component Testing: Also called unit testing, the smallest testable unit of code is
used in this testing. The developers used this type of testing In order to test their
methods, functions, or classes in the code.

Integration Testing: Integration testing is carried out when many pieces of code
are combined to perform a larger function.
System Testing: After all the modules have been merged, system testing is an end-
to-end evaluation. It is used to verify that the system operates in accordance with
the specifications. Once the system is ready in its entirety, this testing is
performed.

Acceptance Testing: This is performed to see if the system satisfies all business
needs and is prepared for end users to utilize.
Non-
Functional
Testing

Performance Compatibility Security Usability


Testing Testing Testing Testing
Performance Testing: This testing will determine whether the test application
responds to user actions within the expected time frames.

Compatibility Testing: Through this testing, it will be ensured that the


application's quality is not impacted across many platforms and that it performs
as intended under various hardware and software setups.
Security Testing: To find the security vulnerabilities of a software application, a
security test is performed. Testing is done by identifying the parts of the code in
which the attack is most likely to occur.

Usability Testing: usability testing that focuses on the user experience. These are
some of the questions that we attempt to respond to such as: How user-friendly
is the application? How satisfying was your experience using the system? How
simple is it to learn if it's not familiar?
Quiz

"Integration testing" focuses on:

A. Testing the code early as possible


B. Interactions between components or systems
C. Functionality of each component that can be tested separately

10/6/2022
Quiz

Which of the following is a correct definition of System testing?

A. Testing components that are separately testable.


B. Testing the behavior and capabilities of a whole system or product
C. Testing interactions between components or systems.

10/6/2022
Quiz

Your project is currently in Acceptance testing phase, and your testing


team is reporting too many defects, what does this situation indicate?

A. This is a good situation and it indicates that the product quality is


increasing and testers are making good effort
B. This is a bad situation because finding defects is often not an
objective of acceptance testing, and finding a significant number of
defects during acceptance testing may in some cases be considered
a major project risk.

10/6/2022
Quiz

which of the following is a test basis for Non-functional testing?

A. Load, performance and security


B. Agile, Scrum and Kanban
C. User stories, Epics and use cases

10/6/2022
Quiz

Which of the following describes non-functional testing correctly?

A. Non-functional testing focuses on what the system performs


B. Non-functional testing focuses on writing the test plan of the project
C. Non-functional testing focuses on how well the system behaves

10/6/2022
References
1. Complete Guide to Test Automation Arnon Axelrod 2018.

2. https://martinfowler.com/articles/is-tdd-dead/

Overview of Database
3. https://seleniumhq.wordpress.com/2017/08/09/firefox-55-and-selenium-ide/

You might also like