0% found this document useful (0 votes)
47 views43 pages

W-1 Introduction To QA

The document outlines a course on Advanced Quality Assurance (QA) at Astana IT University, focusing on software testing theory and practice. It covers various aspects of the software development lifecycle, testing methods, and the importance of quality assurance in software development. Additionally, it highlights key principles of software testing and real-world examples of software failures to emphasize the necessity of effective 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)
47 views43 pages

W-1 Introduction To QA

The document outlines a course on Advanced Quality Assurance (QA) at Astana IT University, focusing on software testing theory and practice. It covers various aspects of the software development lifecycle, testing methods, and the importance of quality assurance in software development. Additionally, it highlights key principles of software testing and real-world examples of software failures to emphasize the necessity of effective 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/ 43

Astana IT University

1 Introduction to QA
Basic Aspects of Software testing

Advanced QA
Lecture: Thursday, 20:00-21:50 (2
hours) PhD Adamova Aigul Dyusenbinovna
Practical: Fri., Sat. 18:00-19:50/20:00- Aigul.adamova@astanait.edu.kz
21:50/16:00-17:50 (2 hours)
Course title: Advanced QA
Number of credits: 4

Purpose of the course: This course examines the theory and practice
behind software testing and quality assurance. Emphasis is placed on
understanding the software testing process, planning, strategy, criteria,
and testing methods, as well as software quality assurance concepts &
control process. The main goal of the course is to provide a solid
foundation in the study of quality assurance processes, and how to use
them to inform in the MSc students of “Computer Science and
Engineering” Program in preparation for either industry jobs or more
advanced courses at the graduate level.
Week Course Content
1 Introduction to QA. Basic Aspects of Software testing
2 Software development Lifecycle
Assignment 1
3 SDLC Models
4 Testing concepts and Manual testing
Assignment 2
5 Agile Model, Types of testing
Mid Term Exam
6 Levels of Testing
7 LoadRunner
Assignment 3
8 Selenium Project Management
9 Selenium Introduction
Assignment 4
10 Selenium IDE and WebDriver
End-Term Exam
EXAM Final Assignment (Individual Project)
Recommended Reading Materials
• “The Self-Taught Software Tester. A Step By Step Guide to Learn Software
Testing Using Real-Life Project” (2020) by Chhavi Raj Dosaj
• “Selenium WebDriver Recipes in C#” (2024) by Courtney Zhan, Zhimin Zhan
• “Enhanced Test Automation with WebdriverIO” (2023) by Paul M. Grossman,
Larry C. Goddard
• “Advanced Software Testing—Vol. 3” Guide to the ISTQB Advanced Certification
as an Advanced Technical Test Analyst, 2nd Edition © 2015 by Jamie L. Mitchell
and Rex Black
Today's agenda
• What is Testing?
• Testing, Quality Assurance and Quality Control
• Why to Learn Software Testing?
Who Cares about Software Quality?
Who Cares about Software Quality?
Defining Software Quality
What is Testing?

https://padlet.com/aigul_dyusenbinovna/what-is-testing-m6wlzk3nc8edhi6m
What is 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.
What is 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. In
simple words, testing is executing a system in order to identify any
gaps, errors, or missing requirements in contrary to the
actual requirements.
According to ANSI/IEEE 1059 standard, Testing can be defined as
- A process of analyzing a software item to detect the
differences between existing and required conditions (that
is defects/errors/bugs) and to evaluate the features of the software
item
Types of Software Testing

Functional Testing Non-Functional Testing Maintenance Testing


Integration Testing
Interoperability

Globalization

Maintenance
Performance
Localization
Unit Testing

Regression
Endurance

Scalability

Usability
Volume
Smoke

Load

This is not the complete list as there are more than 150 types of testing types and still adding. Also, note that not all testing types are applicable to all projects but depend on the nature & scope of
the project. To explore a variety of testing tools and find the ones that suit your project requirements, visit this list of testing tools.
Importance of Software Testing?

Why is Software Testing is important?


- Ensures quality and reliability
- Consequences can be severe, even life threatening
Basics Concepts

Bugs, Errors and Failures


Basics Concepts

Bugs, Errors and Failures


Bugs – code defect causing unexpected behaviour
Basics Concepts

Bugs, Errors and Failures


Bugs – code defect causing unexpected behaviour
Errors – human action producing incorrect result
Basics Concepts

Bugs, Errors and Failures


Bugs – code defect causing unexpected behaviour
Errors – human action producing incorrect result
Failures – software unable to perform intended function
(as result of bug and error)
Basics Concepts

Bugs, Errors and Failures

Software testing aims to identify and fix these issues


Goals of Software Testing

- Validate software meets requirements


- Verify correct functionality
- Identify areas for improvement
- Assess usability, performance and security
- Complies with industry standards and legal regulations

Testing as part of Software Development Life Cycle


Software Development Life Cycle (SDLC)
Testing Plays a crucial role in the SDLC
Goals of Software Testing

Testing as part of Software Development Life Cycle

Software Development Life Cycle (SDLC)


From initial planning to final deployment
Stages include: requirement analysis, design, implementation,
testing and deployment
Testing carried out at all stages of SDLC
Software Bugs in the Real World
NASA Mars Climate Orbiter

In 1999, NASA lost the $125 million Mars Climate


Orbiter due to a software bug. The error originated
from a mismatch between metric and English
Imperial units of measurement in a piece of software.
This caused the spacecraft to enter Mars' atmosphere
at an incorrect angle, leading to disintegration due to
atmospheric stresses.
The Mars Climate Orbiter bug is a stark reminder
that even the smallest bugs can lead to massive
failures, particularly in mission-critical systems
where there's little margin for error.
Software Bugs in the Real World
Knight Capital Group

Knight Capital Group, a large American global


financial services firm, had a financial
catastrophe in 2012 due to a software bug. They
released a new software version to a computer
server without removing the outdated one. As a
result, both programs ran at the same time,
causing millions of flawed trades within 45
minutes. The company's stocks plunged and they
suffered a loss of $440 million.
Software Bugs in the Real World
Southwest Airlines December 2022 Meltdown

In December 2022, Southwest Airlines


experienced a massive operational failure due to
a software glitch in its crew scheduling system.
A severe winter storm initially caused flight
delays and cancellations.
However, the airline's outdated crew
management system couldn't handle the
cascading changes, leading to a complete
breakdown in scheduling.
Thousands of flights were canceled, affecting
millions of passengers.
Testing, Quality Assurance and Quality Control
Quality Assurance Quality Control Testing
QA includes activities that ensure It includes activities that ensure It includes activities
the implementation of the verification of a developed software that ensure
processes, procedures and with respect to documented (or not in the identification of bugs/error
standards in context to verification some cases) requirements /defects in a software
of developed software
and intended requirements.
Focuses on processes and Focuses on actual testing by executing Focuses on actual testing
procedures rather than conducting the software with an aim to identify
actual testing on the system. bug/defect through implementation of
procedures and process
Process – oriented activities Product – oriented activities Product – oriented activities
Preventive activities. It is a corrective process. It is a preventive process.
It is a subset of Software Test Life QC can be considered as the Testing is the subset of
Cycle (STLC) subset of Quality Assurance Quality Control
Why to Learn Software Testing?
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 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 Functionality, Reliability, Usability, Efficiency, Maintainability,
Portability
Testing Principles
Software testing is a procedure of
implementing software or the application to
identify the defects or bugs. For testing an
application or software, we need to follow
some principles to make our product defects
free, and that also helps the test engineers to
test the software with their effort and time.
Here, in this section, we are going to learn
about the seven essential principles of
software testing.

https://letzdotesting.com/software-testing-principles/
1 Testing shows presence of defects

• Testing is done to find as many defects as possible


• Testing is not done to prove that the software is bug-free
• Testing helps us to identify potential undiscovered defects in the software
• Even after testing is complete with no bugs found, we can’t say that the
product is 100% defect free

Example:
A software tester is testing an android mobile application. He should be
working hard to identify potential defects rather than providing defect free
product. This will help him to identify more bugs rather than achieving
correctness.
2 Exhaustive Testing is impossible

• Testing all combinations of input data values and scenarios are


impossible
• Testing all combinations would cost more time and money
• Smarter ways of testing should be adopted in order to complete the
project timelines
• Prioritize important tests based on risk
Example:
Assume you are testing the email subscription feature of an
application. There are 1000 users subscribed. Testing email subscription is
working for 1000 users consumes a lot of time and cost. Instead, identify
sample or prioritize the important test based on the requirement.
3 Early Testing

• Software testing starts from requirement gathering


• Testing should be done parallelly along with other product development
phases.
• Finding defects early on will save a lot of money and rework time

Example:
Consider product requirement gathering is completed and developer started
coding. Once the development is done, tester identifies a defect in the
requirement gathering and found that the requirement should be changed.
This costs lots of money and time loss for the company and also finally end
up in rework. Instead, if it’s found early on that would have saved the
company a lot of money and time.
4 Defects Clustering

• Defects are not necessarily spread even


• They may be clustered in one or few modules
• Place where one bug found, likely to find some more
• It’s more like 80-20 Pareto principle that is 20% of the defects cause
80% of the problem

Example:
Assume a new programmer developed a complex module. So, it is very
likely to find more defects in that particular module.
5 Pesticide Paradox

• Executing same test cases, again and again, will not help us to identify
new defects
• To overcome this, it is really important to review test cases regularly and
modify them if required
• Different and new test cases should be added to find more defects in the
software
Example:
Executing the functional test cases, again and again, will not help to
identify defects regarding the performance of the software or the defects
regarding the security threat. Our test cases should be different to
potentially identify new defects.
6 Testing is context dependent

• Testing is always context dependent


• Software should be tested based on the purpose of the product that has
been built
• Different software are tested differently
• Banking site cannot be tested same as the E-commerce website
• Functionally both are different, so obviously they cannot be tested same
Example:
Banking site will have functionality features like transactions,
interests, savings, etc., the E-Commerce site will have some features like
shopping cart, order, payments, etc. So both are completely different in their
functionality. Test scenarios and tests conducted on the software should also
be different and depend on the context.
7 Absence of errors fallacy

• Finding and fixing defects doesn’t help if the built software fail to meet
user’s requirements
• Test designed should catch most defects and also should cover all client’s
requirements and specifications before shipping the product

Example:
Software tester completely tested the product and the software is 100%
defect free. Is that mean the product is ready to be shipped? No! Software
tester should verify the test design covers the customer’s requirements and
specifications. If the built software fails to meet requirements, then finding
and fixing bugs doesn’t really help.
Discussion Prompt Real-world software failures and consequences
Your task is in four parts:
• Spend around 10 minutes conducting some online
research and find an example of real-world software
failures and their consequences.
• Share your findings in the discussion. Outline what
the failure and its consequences were, and also
perhaps say how software testing could have
potentially prevented these issues.
• Read through your fellow learners' posts – do you
notice any similarities?
• Please comment on one or two of your fellow
learners' posts. Select 'Reply' to post your comment.
Quality is a desirable characteristic (based on the expectations set by all stakeholders)
in construction. At its core, quality in construction means that a construction project
is completed within the defined guidelines set out in the Scope of Work (SOW). SOW
serves as a set of rules for the project based on the client’s expectations, and sheds light
on how to execute the project in a way that meets these standards.

Quality Assurance (QA): is a set of planned and systematic actions which are laid
out before and after a construction project starts. This is an additional layer of quality
review (in addition to the QC cycle) to provide adequate confidence that the
construction work satisfies quality requirements.

Quality Control (QC): The operational techniques and activities (such as


reviewing, checking, inspecting, testing, etc.) that are used to fulfill requirements for
quality in construction works. In simple words QC is the process of inspecting the
construction site to identify and correct defects.
Quality System (QS): A set of documented processes that seeks to provide
confidence that the project outputs will fulfill the functional requirements. The
Quality System should enclose the organization, responsibilities, human resources,
materials, equipment, processes, inspections, testing, and other parameters of
subproject. A key element of QS is the QA / QC Manual.

Deficiency: This shall be any deviation from the plan or specification that results
in lower quality of work, reduces useful life circle of work and impairs functionality of
work and unsafe condition, or materials change in the appearance than is deemed by the
Site Engineer to be unsatisfactory and to require fulfillment according to the contract,
technical specifications and Bill of Quantities (BOQ).
Questions
1 What is Software Testing?
2 Why is Software Testing Important?
3 Who Conducts Software Testing?
4 How is Software Testing done?
Types of Testing
5 Levels of Software Testing
6 When do we start Software Testing?
7 When to Stop Testing?
8 QA/QC/QS?
https://artoftesting.com/what-is-software-testing
Summary

1. Software testing is essential for ensuring software quality and reliability, as


it helps identify and fix bugs, errors and failures.
2. The goals of software testing include validating that the software meets its
requirements, verifying that it works correctly and identifying areas for
improvement.
3. The seven essential principles of software testing are: Testing shows
presence of defects; Exhaustive testing is impossible; Early testing; Defect
Clustering; Testing is context dependent; Pesticide Paradox; Absence-of -
errors fallacy.
Next steps:

Software development Lifecycle (SDLC)


What Is SDLC? Understand the Software Development Life Cycle
How the SDLC Works?
How does SDLC address security?
How can DevSecOps be integrated into SDLC?
SDLC models?
Which SDLC model is the best and most commonly used?

You might also like