Professional Documents
Culture Documents
Software Testing and Quality Assurance Chapter 01 Introduction #01
Software Testing and Quality Assurance Chapter 01 Introduction #01
Introduction
AHMED A. QAZZAZ SEP 2021
Special Thanks
• Special Thanks to Prof. Alaa El-Halees for all the efforts he gave to create the content of the
original course of software testing and quality assurance in the software development
department.
• شكر خاص ألستاذ الدكتور عالء الهليس على جهودة في تجميع وانشاء هذا المحتوى للمساق األساسي ” فحص البرمجيات
وتأكيد الجودة ” الخاص بقسم تطوير البرمجيات
Index
• Quality Definition. • Activities of SQA
• Importance of Quality • Elements of SQA
• Software • Objectives of SQA
• Software Quality • Causes of low quality
• Software Quality Factors • Software Testing
• Software Quality Aspects • Testing Life cycle
• Software Quality Effects
• Software Quality Costs
Definitions
Lecture #1
Quality Definition
• Any organization aims to achieve high quality products, or services. What does ‘quality` term
means?
• The quality can be defined as the degree of matching between the final product and the original
requirements or with the customer expectations.
• Quality of Service, can be the delivery of reliable service or product on time, under agreed
conditions within reasonable cost, and with the appropriate aftercare (maintenance).
• Reliable Service • Cost
• Time • AfterCare
• Agreed Conditions
Quality Definition
• The achievement of high quality is related directly to testing
• This testing process should be from the first day of the project cycle
• The Quality and Testing should not be checked on the end of the project or to be applied on a
final product.
• The high quality can not be achieved accidentally it is an on going process
Importance of Quality
• Service providers can easily provide any service or product without any attention to the quality
level, but the importance of the quality and the motives to achieve quality can be for one or
more of the following reasons.
• Morality motives.
• Legal commitments.
• Reputation, professionalism, and best practices.
• Profitability motives.
Software
• IEEE definition of software
• It is the Computer Code that is produced in specific procedures and based on associated
documents, along with data passed to the system during development, testing, and
production phases
Software Quality
• refers to the degree a system, component, or process conforms to specific requirements or
expectations.
• In many instances, end users know “quality” software when they see it.
• This software is easy to use and error free. It also enables users to perform tasks quickly and
effortlessly, on any device, and at any time.
•
Quality Factors
Lecture #1
Software Quality Factors
• Software quality factors are the non-functional requirements for the software.
• Operational Factors: How well it run
• Revision Factors: How well it can be changed, tested, redeployed
• Transition Factors: How well it can be moved to different platform or system
Software Quality Factors / Operational
• Correctness: The ability to perform the exact task
• Reliability: Allowed number of failures in software
• Efficiency(Performance): Use of hardware resources
• Integrity: Deals with security and authorization
• Usability: The efforts needed to learn the system, and perform a complete task.
Software Quality Factors / Revision
• Maintainability: The ability and correct it ,of identifying failure reasons
• Flexibility: The cost and efforts for requirement changes.
• Testability: The ability of testing the app/features
• Controllability: control over each module independently.
• Observability: Testing of visible items of the app.
• Availability: The existing of object or entity to carry out the testing.
• Simplicity: The simplest app structure .
• Stability: less changes better for testing.
Software Quality Factors / Transition
• Portability: Adaptation of the system when moving to another environment.
• Reusability: Using pre implemented module for one project, in another different project.
• Interoperability: The ability of a software to exchange information with other softwares.
PROFITS
More Shares means more PROFITS more satisfaction will give more good quality
Good Quality
AHMED A. QAZZAZ SEP 2021
Software Quality Effects
MORE BUGS AND ERRORS MORE TIME FOR BUGS FIXING COST STRESS
REFUNDS
EMPLOYEES TURNOVER
BAD Quality
AHMED A. QAZZAZ SEP 2021
Software Quality Cost
Prevention Inspection Internal Failure External Failure
• Do not allow bugs • Searching inside • Fix the failures of • Give support and
to raise from the all parts of the the system while maintenance for
first place software looking it still inside the the client after the
for errors development release of the
company software
Software Quality Cost
Prevention Inspection Internal Failure External Failure
Software Quality Cost
Prevention Inspection Internal Failure External Failure
Software Quality Cost
Prevention Inspection Internal Failure External Failure
Software Quality Cost
Prevention Inspection Internal Failure External Failure
• Bugs Fixing
• Staff training • Reviews • Support and Help
• Reworking
• Testing tools • Code inspection • Return or
• Restart replacement
• Requirements • Testing
• Late delivery • warranty
• Clear understanding
Software Quality Cost
• The greatest payback is with prevention. Increasing the emphasis on prevention costs reduces
the number of defects that go to the customer undetected, improves product quality, and
reduces the cost of production and maintenance.
• External failure can be devastating because they may damage the organization’s reputation or
result in the loss of future sales.
Assurance
Lecture #2
Software Quality Assurance
• Software Quality Assurance (SQA) is the process of making sure that the software is in high
quality.
• The functionality of SQA is monitoring processes and products throughout the software
development lifecycle to ensure the quality of the delivered product(s).
Activities of SQA (Monitoring)
• In SQA process we monitor several phases
• Requirement gathering and analysis.
• Design
• Coding
• Source Control
• Code Reviews
• Management
• Releases
Activities of SQA (Monitoring)
Requirements Analysis Software Design
Code Review
CUSTOMER SATISFACTION
WELL STRUCTURED
Objectives of SQA
• Customer Satisfaction
• Part of SQA is to ensure that software development was made according to their needs,
wants and exceeding their expectations. Even if the bugs and errors are minimized by the
system, customer satisfaction is more important and should be emphasized.
Objectives of SQA
• Well Structured
• SQA ensures that each application are build in an understandable manner. Their applications
could easily be transferred from one developer to another.
Elements of SQA
Lecture #3
Elements of SQA
STANDARDS ERROR ANALYSIS
Elements of SQA
• Testing
• The job of SQA is to ensure that testing is properly planned and efficiently conducted so
that it has the highest likelihood of achieving its primary goal.
• Error/defect collection and analysis
• SQA collects and analyzes error and defect data to better understand how errors are
introduced and what software engineering activities are best suited to eliminating them
Elements of SQA
• Management
• SQA ensures that management activities applied on the activities of software development
• Also SQA should follow up with the team members and manage tasks along with PM (Project Manager)
• Education
• The SQA team should have a proper education level about the business logic of the software being
developed
• Customer management
• SQA team should be involved with all customer meetings from the first meeting (Requirement
analysis, and contract), till the final delivery.
Elements of SQA
• Security management
• SQA ensures that appropriate process and technology are used to achieve software security.
• Safety
• SQA may be responsible for assessing the impact of software failure and for initiating those
steps required to reduce risk.
• Risk management
• Although the analysis and mitigation of risk is the concern of software engineers, the SQA
organization ensures that risk management activities are properly conducted and that risk-
related contingency plans have been established.
Low Quality
Lecture #4
Causes of low quality
• Human factor:
• It is because human beings develop software. Human beings are not perfect. They make
mistakes.
• As human beings develop software, it would be foolish to expect the software to be perfect
and without any defects in it.
Causes of low quality
• Communication failure:
• Another common reason for software defects can be miscommunication, lack of communication or
erroneous communication during software development.
• The communication failure can happen at different levels
• requirement gathering stage
• requirement interpretation
• documentation stage
• requirement-to-implementation translation stage
• etc…
Causes of low quality
• Unrealistic development timeframe:
• More often than not software are developed under crazy release schedules, with limited/
insufficient resources and with unrealistic project deadlines.
Causes of low quality
• Poor design logic:
• In this era of complex software systems development, sometimes the software is so
complicated that it requires some level of Research and brainstorming to reach a reliable
solution.
Causes of low quality
• Poor coding practices:
• Sometimes errors are slipped into the code due to simply bad coding. Bad coding practices
such as inefficient or missing error/exception handling, lack of proper validations (datatypes,
field ranges, boundary conditions, memory overflows etc.) may lead to introduction of errors
in the code.
Causes of low quality
• Lack of version control:
• Concurrent version systems (e.g. Visual SourceSafe) help in keeping track of all work and all
changes in a set of code base.
Causes of low quality
• Buggy third-party tools:
• Quite often during software development we require many third-party tools, which in turn
are software and may contain some bugs in them. These tools could be tools that aid in the
programming (e.g. class libraries, shared DLLs, compilers, HTML editors, debuggers etc.)
• A bug in such tools may in turn cause bugs in the software that is being developed.
Causes of low quality
• Last minute changes:
• Changes that are made to requirement, infrastructure, tools, platform can be dangerous,
especially if are being made at the 11th hours of a project release.
Software Testing Introduction
Lecture #4
Introduction to Software testing
• Software Testing is a method to check whether the actual software product matches expected
requirements and to ensure that software product is Defect free
AHMED A. QAZZAZ SEP 2021
Software testing life cycle
• Software testing life cycle identifies what test activities to carry out and when (what is the best
time) to accomplish those test activities.
• It takes a sequence of steps that are carried out in order to validate the software
Software testing life cycle