2. Contents
• Background of QA Workshop
• Basic Definitions
• Quality Attributes
• Software Quality Assurance (SQA) Concepts
– Definitions
– Quality Control
– SQA Applied
– SQA Life Cycle
– Software Testing
• Types and Techniques
• Pre-Requisites and Deliverables
• Questions
3. Definitions
• Quality - the totality of features and characteristics of a
product or service that bear on its ability to satisfy specified
or implied needs
• Quality Software - Software Quality is the existence of
characteristics of a product which can be assigned to
requirements
4. More Definitions
• Quality
– The degree to which a system, component, or process
meets
• specified requirements
• customer/user needs or expectations
• Quality Software
– Software quality is the fitness for use of the software
product
– Software quality is the degree to which software possesses
a desired combination of attributes
5. Product Characteristics (Customer Oriented )
• There is a triad of customer oriented product characteristics:
– quality
– cost
– schedule
6. Effect of Quality on Cost and Schedule
• Poor quality in earlier phases eventually affects cost and schedule.
• The earlier a defect occurs in the development process, if not detected, the more it will cost to repair
because of the following reasons
– Amount of work increase as the dependents/followers part also needs to be updated
– High cost of reentering any passed phase/activity as all the processes of that phase has to be
followed again)
– Late initiation and execution of Dependent tasks/activities
– Hinder the execution of plans
• Cost and schedule can be predicted and controlled by mature organizational processes:
– process maturity does translate automatically into product quality (to some extent)
• Preventive approach is always cost effective
• Cost and Schedule are the major factors in defining required Level of Quality
7. Quality Software - Attributes
IEEE Std. 1061 - ISO Std. 9126
Functionality
Reliability
Usability
Efficiency
Maintainability
Portability
Following are the Quality Attributes defined by different Quality Standards,
these can help in evaluating the product’s quality.
8. Quality Software – Defining Quality
Attributes
• For each project appropriate Quality Attributes needs to be identified and defined
as each project has its own specific requirements and environment.
• In real time there is always TRADE OFFS while defining the Quality Attributes
• Following factors needs to consider while identifying and defining Quality
Attributes
– Each type of requirement (performance, security, etc)
– Include implicit requirements also
– Type and size of project, intended users and environment
– Constraints (Cost, Schedule, etc)
– Practicality and implications
– Project’s Business goals/values
– Organizational Standards
– Organizational internal goals
9. An Attribute Taxonomy Template
<Attribute> Concerns the parameters by which
the attribute is judged,
specified, measured
Factors the properties of the
system that affect the
concerns
Methods the techniques used to
address the concern
11. Software Quality Assurance (SQA)
• A planned and systematic pattern of all actions
necessary to provide adequate confidence that an
item or product conforms to established technical
requirements
• SQA is the set of systematic activities providing
evidence of the ability of the software process to
produce a software product that is fit to use
• Preventive Approach
12. Quality Control (QC)
• A set of activities designed to evaluate a developed work
product
• Detective Approach
• Integral Part of SQA - So all QC activities are part of SQA)
• More an Industrial Term - In Software overlapping activities
between SQA & QC
Recommendations
– Testing should not be called as QC.
– All other QC activities should be called as SQA activities.
13. TQM/Standardization
- emphasis on Quality that encompasses the entire company by
• Defining Quality Framework (normally done by targeting a
particular Standard like ISO, CMM)
• Providing basis for Continuous improvement by analysis of
statistical data
• Facilitating the Quality Culture in the organization
14. SQA Applied
• The focus of SQA is to monitor continuously throughout the Software
Development Life Cycle (SDLC) to ensure the quality of the delivered
product. This is achieved by
– Process Definition/Customization
• In process definition and customization set of processes/activities is defined and
customized as per the specific need.
– Process Assurance
• In process assurance, SQA provides feedback regarding compliance to approved
plans, procedures, standards, and analyses
– Product Assurance
• In product assurance SQA activities focus on the changing level of product quality
within each phase of the life cycle, such as the requirements, design, code, and test
plan.
15. SQA Applied – Process Assurance
Process Assurance can be applied by :
• Process Need Analysis at project initiation (concept phase)
• Ensuring that standards and procedures are defined and established
• Process Customization and Process Optimization. (Granularity Level is scenario
based )
• By Process monitoring, product evaluation, and audits to ensure compliance with
agreed-upon standards and procedures
• By introducing quality assurance approval points, where an SQA evaluation can be
performed in relation to the applicable standards
• Measurements for Process Improvement
16. SQA Applied – Product Assurance
Product Assurance can be applied by performing verification and validation
at each phase of the SDLC. V&V can be performed by
• Reviews, inspections, walkthroughs
• Testing
• Traceability
• Metrics for Measurement
• Involvement of SQA resources in activity execution of different phases (like
analysis, FS writing, etc)
17. Verification & Validation
• Verification - process of determining whether or not
the products of a given phase of the software
development cycle fulfill the requirements
established during the previous phase, i.e., whether
or not it is internally complete, consistent, and
correct enough to support the next phase
• Validation - Validation is the process of evaluating to
ensure compliance with software requirements
18. Software Testing
Software Testing is :
• Exercising a system [component] in its intended environment
– on some predetermined input data
– capturing the behavior and output data
– comparing with test oracle
– For the purpose of
• identifying inconsistencies and wrong behaviors
• validating against user needs
19. Testing Types
• Unit Testing – individual unit (basic component) of the application is tested to verify that the
detailed design for the unit has been successfully implemented
• Integration Testing – larger groups of tested software components corresponding to
elements of the architectural design are integrated and tested until the software works as a
whole. (testing of interfaces between integrated units)
• System Testing (Functional Testing) – focuses on testing the functional behavior of the
system and to ensure that system meets all the functional requirements
• Regression Testing – tested parts of the application are re-executed to ensure that no
anomalies appear in the system due to the changes made.
• Load/Stress Testing – is an evaluation of system under normal conditions, all the way up to
the maximum number of users supported by your configuration to evaluate system
performance and scalability.
• Usability Testing – application is executed (not necessary functional) to verify the ease of
use, ease of remembering, Efficiency of use and Effectiveness of use
20. Testing Techniques
• Black Box - tests the functionality
of the system by observing its
external behavior and evaluating
the outputs with requirements
without knowledge of internal
working of the system.
• White Box - tests the code
structure of the system using
criteria based on control flow,
data flow and expected flows by
having explicit knowledge of the
internal workings of item (unit,
component)
SELECTED
INPUTS
RESULTANT
OUTPUTS
INTERNAL
BEHAVIOR
DESIRED
OUTPUT
SOFTWARE
DESIGN
“BLACK BOX” TESTING
“WHITE BOX” TESTING
SELECTED
INPUTS
RESULTANT
OUTPUTS
DESIRED
OUTPUT
21. Testing Techniques Contd.
• Grey Box Testing – Strategy based on limited knowledge of
system internals e.g. architectural model, state model, UML
design and DB design. E.g. Individual Process State
Verification, DB Verifications, Partial Path Execution, etc.
• Why Recommended
– Scope definition based on Architecture and Design
– More Reliable
– Effective and Efficient
– Decreases dependencies
22. Pre-Requisites for Testing
• Involvement in all brain storming discussions (requirement gathering, domain meetings, con calls, etc)
• Reviewed and Verified Baseline document
• Domain Expertise by having understanding of
– Business processes and business rules
– Business processes flows and their dependencies
– System actors, stakeholders and end users
– System boundaries, interactions with other systems.
• High level understanding of application architecture and design plus high comfort with DB design.
• Knowledge of development tools and technologies.
• Knowledge regarding testing of different types of applications (web, client/server, etc).
• Adherence to SQA Processes
• Well aware of Quality Attributes of the Project
• Overall Project Scope, Vision, Business objective
23. Testing Deliverables
• Test Plan
• Test Specifications
• Tested Application
• User Manuals
• Application Installers
• Read Me/Installation Instructions
• Test Data (Script Files, DB Dumps)
• Automation Scripts
• Status Reports
• Open Bug Reports.
• Release Notes
*The mentioned deliverables include both internal and external deliverables. The deliverables may vary project to project.