Software Quality Assurance

Slides:



Advertisements
Similar presentations
Testing and Quality Assurance
Advertisements

Chapter 4 Quality Assurance in Context
Verification and Validation: A Quick Introduction 1-2 Lectures.
Verification and Validation: A Quick Introduction Authors Massood Towhidnejad Massood Towhidnejad Mike Rowe Mike Rowe David Dampier David Dampier Sponsored.
RIT Software Engineering
SE 450 Software Processes & Product Metrics 1 Defect Removal.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Software Defects Defect Prevention and Removal 1.
Chapter 13: Defect Prevention & Process Improvement
Chapter 3 Software Processes.
What Exactly are the Techniques of Software Verification and Validation A Storehouse of Vast Knowledge on Software Testing.
Chapter 20: Defect Classification and Analysis  General Types of Defect Analyses.  ODC: Orthogonal Defect Classification.  Analysis of ODC Data.
Ch.4: QA in Context  QA and the overall development context Defect handling/resolution How alternative QA activities fit in process Alternative perspectives:
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
COURSE TITLE: 1 Software Quality Assurance. Course Aims Introduction to software quality assurance. Software testing terminology. Role and responsibility.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
CPIS 357 Software Quality & Testing I.Rehab Bahaaddin Ashary Faculty of Computing and Information Technology Information Systems Department Fall 2010.
Software Quality Assurance Activities
Chapter 14: Inspection  Basic Concept and Generic Process  Fagan Inspection  Other Inspection and Related Activities.
Chapter 6: Testing Overview Basic idea of testing - execute software and observe its behavior or outcome. If failure is observed, analyze execution record.
Week 2 Quality Assurance Quality Assurance in Context
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Instructor: Peter Clarke
Teaching material for a course in Software Project Management & Software Engineering – part II.
Software Quality Engineering Chapters 1-3 Overview, Software Quality and Quality Assurance.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Quality Assurance.
Defect resolution  Defect logging  Defect tracking  Consistent defect interpretation and tracking  Timely defect reporting.
Software Defects.
Ensure that the right functions are performed Ensure that the these functions are performed right and are reliable.
Software Quality Assurance SOFTWARE DEFECT. Defect Repair Defect Repair is a process of repairing the defective part or replacing it, as needed. For example,
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Week#2 Software Quality Assurance Software Quality Engineering.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
1 Week 3 Software Engineering Spring Term 2016 Marymount University School of Business Administration Professor Suydam.
Announcements/Assignments
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
CIS 375 Bruce R. Maxim UM-Dearborn
Lecture 3 Prescriptive Process Models
Software Engineering (CSI 321)
Software Quality Engineering
School of Business Administration
Chapter 10 Software Quality Assurance& Test Plan Software Testing
Software Quality Engineering
The Systems Engineering Context
TechStambha PMP Certification Training
IEEE Std 1074: Standard for Software Lifecycle
Verification & Validation
CHAPTER 2 Testing Throughout the Software Life Cycle
HCI in the software process
Software Processes.
Requirements and the Software Lifecycle
Software Quality Assurance
Engineering Processes
Software Quality Engineering
Fault Injection: A Method for Validating Fault-tolerant System
Software Quality Engineering
Chapter 14: Inspection Basic Concept and Generic Process
Verification and Validation Unit Testing
Fault Tolerance Distributed Web-based Systems
HCI in the software process
Baisc Of Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Quality Assurance
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Software Development Overview
Presentation transcript:

Software Quality Assurance QA & QA in Context

Defect vs. QA QA ==> Quality Assurance Focus on correctness aspect of quality QA as dealing with defects Post-release: Impact on consumers Pre-release: What producer can do What? Testing & many other activities When? Earlier ones desirable (lower cost), but may not be feasible How? Classification next slide

Classification of QA activities What are the QA activities to deal with defects? QA activities can be classified into three generic categories – Defect Prevention Defect Reduction Defect Containment

Error/Fault/Failure & QA Preventing fault injection Error blocking ( error ==> faults ) Error source removal Removal of faults ( pre: detection) Inspection : Fault discovered/removed Testing : Failures trace back to faults Failure prevention and containment Local failure ==> Global failure Via dynamic measures to tolerate faults Failure impact ==> Safety Assurance

[1] Defect prevention Defect prevention can be done in two generic ways- Error source removal Error blocking These QA activities prevent certain types of faults from being injected into the software Since errors are the missing/incorrect human actions that lead to injection of faults into software systems, we can directly correct or block these actions, or remove the underlying causes for them

[1] Defect prevention Error source removal : Eliminating certain error sources such as eliminating ambiguities or correcting human misconceptions, which are the root causes for errors. Root cause analysis  identify error sources Remove through education/training/etc.

[1] Defect prevention 2) Error blocking: Fault prevention or blocking by directly correcting or blocking these missing or incorrect human actions. Error : missing/incorrect actions Direct intervention to block errors fault injections prevented Systematic defect prevention via process improvements

[1] Defect prevention Defect prevention activities can be used for most software systems to reduce the chance for defect injections and the subsequent cost to deal with these injected defects.

[1] Defect prevention Most defect prevention activities assume that there are known error sources or missing/incorrect actions that result in fault injections, as follows: If human misconceptions are the error sources, education and training can help us remove these error sources If imprecise designs and implementations that deviate from product specifications or design intensions are the causes for faults, formal methods can help prevent such deviations If non-conformance to selected processes or standards is the problem that leads to fault injections, then process conformance/standard enforcement can help prevent the injection of related faults If certain tools/technologies can reduce fault injections under similar environments, they should be adopted

[1] Defect prevention Root cause analyses are needed to establish these pre-conditions, or root causes for injected or potential faults, so that appropriate defect prevention activities can be applied to prevent injection of similar faults in the future. Once such causal relations are established, appropriate QA activities can then be selected & applied for defect prevention. Education and training provide people-based solutions for error source elimination. Formal method provide a way to eliminate certain error sources and to verify the absence of related faults. Other defect prevention techniques Analysis & modeling for defect prevention Technologies, standards, and methodologies for defect prevention Software tools to block defect injection

[2] Defect Reduction Defect Reduction through fault detection and removal. These QA alternatives detect and remove certain faults once they have been injected into the software systems. Most traditional QA activities fall into this category. Inspection directly detects and removes faults from the software code, design etc. Testing removes faults based on related failure observations during program execution Various other means, based on either static analyses or observations of dynamic executions, can be applied to reduce the # of faults in a software system.

[2] Defect Reduction For most large software systems in use today, it is unrealistic to expect the defect prevention activities surveyed above to be 100% effective in preventing accidental fault injections. Need effective techniques to remove as many of the injected faults as possible under project constraints. Inspection Testing Other techniques & risk identification

[2] Defect Reduction Inspection: Direct fault detection & removal Inspection is the most commonly used static technique for defect detection and removal Inspections are critical reading & analysis of software code or other software artifacts, such as designs, product specifications, test plans etc. Inspection are typically conducted by multiple human inspectors, through some coordination process. Faults are detected directly in inspection by inspectors Formality and structures of Inspections vary Informal reviews /Walkthroughs ( self-conducted, independent, group-wise) Formal inspections Inspection is most commonly applied to code, but it could be used throughout the development process (particularly early in s/w dev.)

[2] Defect Reduction Testing: Failure observation & fault removal One of the most important activities of QA Most commonly performed QA activity Involves the execution of software and the observation of the program behavior/outcome. If a failure is observed, the execution record is then analyzed to locate & fix the fault(s) that caused the failure When can a specific testing activity be performed & related faults be detected? What to test, and what kind of faults are found? When, or at what defect level , to stop testing?

[2] Defect Reduction Other techniques & risk identification:Besides Inspection & Testing, there are other static analyses and dynamic activities. Various other static techniques –boundary value analysis, control flow and data flow analyses Various other dynamic, execution-based techniques also available –symbolic execution, simulation, prototyping They can help us detect and remove various defects early in the software development process, before large-scale testing becomes a viable alternative

[3] Defect Containment Defect Containment through fault tolerance, failure prevention, or failure impact minimization, to assure software reliability and safety. Defect reduction activities can only reduce the number of faults to a fairly low level, but not completely eliminate them ( because of the large size & high complexity of most software systems in use today) The containment measures focus on the failures by either containing them to local areas so that there are no global failures observable to users, or limiting the damage caused by software system failures Local failure ==> Global failure

[3] Defect Containment Defect Containment can be done in two generic ways: Some QA alternatives, such as the use of fault-tolerance techniques, break the causal relation between faults and failures so that local faults will not cause global failures, thus “tolerating” these local faults. A related extension to fault-tolerance is containment measures to avoid catastrophic consequences, such as death, personal injury, and severe property or environmental damages, in case of failures.

[3] Defect Containment Software fault-tolerance Motivation Fault present but removal infeasible/impractical Fault tolerance ==> contain defects FT techniques: break fault-failure link Recovery: rollback & redo NVP: N-Version programming ==> Fault blocked

[3] Defect Containment Safety Assurance & Failure Containment Extending FT idea for safety. Fault tolerance to failure “tolerance” Safety : Accident free Accident: Failure with severe consequences Hazard: Pre-condition to accident Safety Assurance: Hazard analysis, hazard elimination/reduction/control, damage control

Defect prevention, reduction & containment Existing software quality literature generally covers defect reduction techniques such as testing & inspection in more details than defect prevention activities, while largely ignore the role of defect containment in QA.

QA in Context Defect handling is an integral part of QA activities, and different QA alternatives & related activities can be viewed as a concerted effort to ensure software quality. These activities can be integrated into software development & maintenance processes as an integral part of the overall process activities, typically in the following fashion – Testing is an integral part of any development process, forming an important link in the overall development chain. Quality reviews/inspections often accompany the transition from one phase to another. Various defect prevention activities are typically carried out in the early stages. Defect containment activities typically focus on the later, operational part of the development process (although their planning & implementation need to be carried out throughout the development process).

QA in Context QA and the overall development context Defect handling/resolution Activities in process Alternative perspectives: Verification & Validation view Status & tracking Causal (root-cause) analysis Resolution: defect removal/etc. Improvement: break causal chain

Defect Measurement & Analysis Parallel to defect handling Where injected/found? Type/severity/impact? More detailed classification possible? Consistent interpretation Timely defect reporting Defect analyses/quality models As follow up to defect handling Data & historical baselines Goal: assessment/prediction/improvement Causal /risk/reliability/etc. analyses

QA in Software Processes Mega-process: initiation, development, maintenance, termination Development components: Requirement, Specification, Design, Coding, Testing, Release Process variations: Waterfall development process Iterative development process Spiral development process Lightweight /agile development process & XP Maintenance process too Mixed/Synthesized /customized processes

QA in Waterfall Process Focus on defect Requirement & Specification Prevention Design Coding Focus on defect Testing Removal Focus on defect Containment Release & Support

QA in Waterfall Process QA throughout process: Defect prevention in early phases Focused defect removal in testing phase Defect containment in late phases Phase transition: Inspection/Review/etc.

QA in Software Processes Process variation( not Waterfall) and QA: Iterative: QA in iterative/increments Spiral: QA & risk management XP: test-driven development QA in maintenance processes: Focus on defect handling Some defect containment activities for critical or highly-dependable systems Data for future QA activities QA scattered through all processes

V&V Core QA activities grouped into V&V Validation: w. r. t. requirement( what?) Appropriate/fit-for-use/”right things”? Scenario & usage inspection/testing System/integration/ acceptance testing Beta testing & operational support Verification: w. r. t. specification/design (how?) Correct/“doing things right” Design as specification for components Structural & functional testing Inspections and formal verification

V&V vs. DC View Two views of QA: Mapping between V&V and DC view: V&V(verification & validation) view DC ( defect-centered) view Interconnected: mapping possible? Mapping between V&V and DC view: V&V after commitment ( defect injected directly) defect removal & containment focus Verification: more internal focus Validation: more external focus In V-model: closer to user (near top) or developer(near bottom)?

QA Activities: Mapping from DC view to V&V view QA activity V&V view Defect prevention Both, mostly indirectly Requirement-related Validation, indirectly Other defect prevention Verification indirectly Formal specification Formal verification Verification Defect Reduction Both, but mostly verification Testing type- Unit integration Both, more verification system Both acceptance Both, more validation beta Validation Defect Containment Both, but mostly validation Operation Design & implementation