Software quality engineering. Quality assurance. Testing



Similar documents
Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Title: Topic 3 Software process models (Topic03 Slide 1).

(Refer Slide Time: 01:52)

Process Models and Metrics

Fault Slip Through Measurement in Software Development Process

Metrics in Software Test Planning and Test Design Processes

Software Engineering Reference Framework

What is a life cycle model?

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

Advancements in the V-Model

Software Development Process

Measurement Information Model

Failure Mode and Effect Analysis. Software Development is Different

Software Process Models. Xin Feng

Software Development Life Cycle

CS 451 Software Engineering Winter 2009

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

A system is a set of integrated components interacting with each other to serve a common purpose.

Presentation: 1.1 Introduction to Software Testing

Software Project Models

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

V-Modell XT. Part 1: Fundamentals of the V-Modell

A Survey of Software Development Process Models in Software Engineering

Software Process for QA

RAMS Software Techniques in European Space Projects

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

CSTE Mock Test - Part I - Questions Along with Answers

How To Model Software Development Life Cycle Models

CSE 435 Software Engineering. Sept 16, 2015

Software Engineering. An Introduction. Fakhar Lodhi

How era Develops Software

How To Write Software

International Software Test Institute

Basic Testing Concepts and Terminology

Course/Year W080/807 Expected Solution Subject: Software Development to Question No: 1

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Information Technology Policy

PROJECT QUALITY MANAGEMENT

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Software Testing Trends in Australia and Beyond

Noorul Islam College of Engineering M. Sc. Software Engineering (5 yrs) IX Semester XCS592- Software Project Management

The most suitable system methodology for the proposed system is drawn out.

Application of software product quality international standards through software development life cycle

Using TechExcel s DevSuite to Achieve FDA Software Validation Compliance For Medical Software Device Development

Nova Software Quality Assurance Process

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Information Systems Development Process (Software Development Life Cycle)

Karunya University Dept. of Information Technology

How To Develop Software

A Comparison of System Dynamics (SD) and Discrete Event Simulation (DES) Al Sweetser Overview.

PROJECT RISK MANAGEMENT

JOURNAL OF OBJECT TECHNOLOGY

SECTION 4 TESTING & QUALITY CONTROL

SOFTWARE PROCESS MODELS

Meeting DO-178B Software Verification Guidelines with Coverity Integrity Center

Procurement Programmes & Projects P3M3 v2.1 Self-Assessment Instructions and Questionnaire. P3M3 Project Management Self-Assessment

2015. All rights reserved.

D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

Software Development Process Models

Estimating Software Reliability In the Absence of Data

IT3205: Fundamentals of Software Engineering (Compulsory)

Classical Software Life Cycle Models

Notes on the Critical Path Method for project planning and management.

Chakra Vs Spiral Model - A Practical Approach

Umbrella: A New Component-Based Software Development Model

SoMA. Automated testing system of camera algorithms. Sofica Ltd

Common Tools for Displaying and Communicating Data for Process Improvement

Process Mapping Guidelines

Develop Project Charter. Develop Project Management Plan

Unit I. Introduction

JOURNAL OF OBJECT TECHNOLOGY

EXHIBIT L. Application Development Processes

Software Engineering UNIT -1 OVERVIEW

Sample Exam Syllabus

Chapter 8 Software Testing

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Chapter 4 Software Lifecycle and Performance Analysis

Test Data Management Best Practice

Agile Software Development Methodologies and Its Quality Assurance

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

P3M3 Portfolio Management Self-Assessment

Total Quality. 1) Quality

Keywords Software Engineering, Software cost, Universal models. Agile model, feature of software projects.

Benefits of Test Automation for Agile Testing

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Controlling Risks Safety Lifecycle

Overview. The Concept Of Managing Phases By Quality and Schedule

To introduce software process models To describe three generic process models and when they may be used

CHAPTER. Software Process Models

Transcription:

4 Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 Software quality engineering Quality assurance Testing Figure 1.1. engineering Scope and content hierarchy: Testing, quality assurance (QA), and software quality In addition, all these QA activities need to be managed in an engineering process we call the software quality engineering process, with quality goals set early in the product development, and strategies for QA selected, carried out, and monitored to achieve these preset quality goals. As part of this overall process, data collected during the QA activities, as well as from the overall development activities, can be analyzed to provide feedback to the software development process for decision making, project management, and quantifiable quality improvement. This book also provides a comprehensive coverage of these topics. 1.2 BOOK ORGANIZATION AND CHAPTER OVERVIEW Figure 1.1. illustrates the general scope of the topics introduced above: Testing is an important subset of QA activities; and QA is an important subset of quality engineering activities. This diagram also explains our book title: Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement. This book is organized in four major parts and 22 chapters, with the main topics outlined below. Part I: Overview and basics Part I gives a general introduction and overview of the topics covered in the book, and presents the basic concepts and definitions related to quality, QA, ing, quality engineering, etc.. Specific questions answered include: About this book: What it is? How to use it? How is it organized? In addition, what background knowledge is needed to have a thorough understanding of the technical aspects of this book? These questions are answered in Chapter 1. What is software quality? In particular, what are the different views of quality? Is quality a single, atomic concept, or does it consist of many different attributes or characteristics? What is the relationship between quality, correctness, and defect? Can we narrow down the definition of quality to better focus our attention on various QA activities commonly carried out during software life cycles? These questions are answered in Chapter 2. What is QA? The question is answered from a particular perspective in Chapter 3, representing a defect-based interpretation of quality and QA. What are the different QA activities and related techniques? A defect-based classification is presented, also in Chapter 3, for the major QA alternatives and techniques, such as ing, inspection, formal verification, fault tolerance, etc.

28 Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 Input to S/w Dev. e1 e: error source Software System f1 f: fault Usage Scenarios and Results (input/output) x: failure e2 e3 e5 e4 e6 f2 f3 f4 x1 x2 Error Removal Fault Removal Failure Prevention Failure Containment Legend: a a a b presence of "a" removal of "a" "a" causes "b" defect barrier/remover Figure 3.1. Generic ways to deal with defects between these QA activities and related errors, faults, and failures through some specific examples, as follows: Some of the human conceptual errors, such as error source e6, are directly removed by error source removal activities, such as through better education to correct the specific human conceptual mistakes. Other incorrect actions or errors, such as some of those caused by error source e3 and e5, are blocked. If an error source can be consistently blocked, such as e5, it is equivalent to being removed. On the other hand, if an error source is blocked sometimes, such as e3, additional or alternative defect prevention techniques need to be used, similar to the situation for other error sources such as e1, e2, and e4, where faults are likely to be injected into the software system because of these error sources. Some faults, such as f4, are detected directly, i.e., without involving the observation of failures, through inspection or other static analysis, and removed as a part of or as followup to these activities. Other faults, such as f3, are detected through ing or other execution-based QA alternatives by observing their dynamic behavior. If a failure is observed in these QA activities, the related faults are located by examining the execution record and

Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 43 Requirement & Specification Quality gates: Inspection, review, etc. Design Focus on defect prevention Coding QA Phase Testing Focus on defect removal Release & Support Other QA activities and focus areas Focus on defect containment Figure 4.1. QA activities in waterfall process Because of the possibilities of defect propagations and the increasing cost over time or successive development phases to fix defects once they are injected into the system, we need to reduce the number of faults in software systems by the combination of defect prevention and application of QA techniques that can help remove software faults early. Some defect detection and removal techniques, such as inspection, can be applied to early phases, such as inspecting requirement documents, product specifications, and different levels of product designs. On the other hand, there are practical obstacles to the early fixing of injected defects. For example, dynamic problems may only become apparent during execution; and inter-dependency only becomes apparent with the implementation of related components or modules. Because of these reasons, other fault detection and removal activities, such as ing, are typically concentrated in the middle to late phases of software development. Finally, failure prevention and containment activities, such as fault tolerance and safety assurance, are typically the focus of operational phases. However, their planning, design, and implementation need to be carried out throughout the software development process. In some sense, they are equivalent to adding some necessary functions or features into the existing product to make them safe or fault tolerant. Figure 4.1. illustrate how the different QA activities fit into the waterfall process. Three key characteristics of this activity distribution are illustrated: The phase with QA as the focus: Testing phase. QA activities, typically inspections and reviews, carried out at the transitions from one phase to the next are shown as barriers or gates to pass. The exception to this is between ing and release, where the reviews are typically accompanied by acceptance ing. Other QA activities scatter over all other development phases: The general distribution scope is shown by the dotted bracket, with a focus on defect prevention in the early phases, a focus on defect removal during coding and ing phases, and a focus on defect containment in operational support.

Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 47 Customer requirements validate Operational use Product specifications verify/validate System other V&V activities High level design Low level design verify verify Component Integration Coding & unit Figure 4.2. Verification and validation activities associated with the V-Model addition, system also validates the product by focusing on how the overall operations under an environment that resembles that for target customers. In a sense, the users operational environment is captured as part of the product specification or as part of the ing model. At the bottom, coding and unit ing are typically grouped in a single phase, where the code itself specifies the expected behavior and needs to be verified through unit. Sometimes, various other QA activities, such as inspections, reviews, walkthroughs, analyses, formal verification, etc., are also associated with the left arm of the V-model and illustrated by additional dotted lines pointed to the specific phases. Similar to the mapping of QA activities to other process models above, validation and verification activities can be mapped into non-sequential processes such as incremental, iterative, spiral, and extreme programming processes. Typically, there is some level of user involvement in each part or iteration. Therefore, validation plays a more important role in these processes than in waterfall process or V-model. 4.4 RECONCILING THE TWO VIEWS The above descriptions of verification and validation activities included examples of specific QA activities. These specific QA activities were also classified using our scheme according to the generic ways of dealing with defects. Through this connection and the inter-relations represented therein, we can establish the relationship and the mapping between the verification and validation (V&V) view on the one hand and our defect-centered (DC) view and classification on the other hand. In addition, we can use the process information as presented in Figure 4.1., Figure 4.2., and related discussions to help us with this mapping, as discussed below.

52 Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 Set quality goals Entry Quality Planning Selected QA activities Quality Assurance Activities Feedbcak & adjustments No Quality goals satisfied? Yes Exit Measurements Selected measurements & models Quality Assessment & Improvement Analysis/ modeling results Figure 5.1. Quality engineering process 1. Pre-QA activities: Quality planning. These are the activities that should be carried out before carrying out the regular QA activities. There are two major types of pre-qa activities in quality planning, including: (a) Set specific quality goals. (b) Form an overall QA strategy, which includes two sub-activities: i. Select appropriate QA activities to perform. ii. Choose appropriate quality measurements and models to provide feedback, quality assessment and improvement. A detailed description of these pre-qa activities is presented in Section 5.2. 2. In-QA activities: Executing planned QA activities and handling discovered defects. In addition to performing selected QA activities, an important part of this normal execution is to deal with the discovered problems. These activities were described in the previous two chapters. 3. Post-QA activities: Quality measurement, assessment and improvement These are the activities that are carried out after normal QA activities have started but not as part of these normal activities. The primary purpose of these activities is to provide quality assessment and feedback so that various management decisions can be made and possible quality improvement initiatives can be carried out. These activities are described in Section 5.3. Notice here that post-qa does not mean after the finish of QA activities. In fact, many of the measurement and analysis activities are carried out parallel to QA activities after they are started. In addition, pre-qa activities may overlap with the normal QA activities as well. Pre-QA quality planning activities play a leading role in this quality engineering process, although the execution of selected QA activities usually consumes the most resources. Quality goals need to be set so that we can manage the QA activities and stop them when the quality goals are met. QA strategies need to be selected, before we can carry out specific QA activities, collect data, perform analysis, and provide feedback.

Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 59 Quality Planning: Setting quality goals Select quality assurance strategies Making adjustments based on feedback Quality Assurance: QA Phase: Testing Quality gates: at phase transition pairs, e.g., passing design reviews before coding Other QA activities scattered over all phases, e.g. inspecting specs/desing/code/ cases Quality Assessment and Improvement INPUT: measurement from QA and development activities OUTPUT: quality assessment and other analysis results Requirement & Specification Design Coding Testing Release & Support Figure 5.2. Quality engineering in the waterfall process All these activities typically last over the whole development process, with different subactivities carried out in different phases. This is particularly true for the QA activities, with ing in the phase, various reviews or inspections at the transition from one phase to its successor phase, and other QA activities scattered over other phases. Minor modifications are needed to integrate quality engineering activities into other development processes. However, the distribution of these activities and related effort is by no means uniform over the activities or over time, which is examined next. 5.4.2 Effort profile Among the three major types of activities in the quality engineering process, the execution of specific QA activities is central to dealing with defects and assuring quality for the software products. Therefore, they should and normally do consume the most resources in terms of human effort as well as utilization of computing and other related resources. However, the effort distribution among the three is not constant over time because of the process characteristics described above and the shifting focus over time. Some key factors that affect and characterize the effort profile, or the effort distribution over time, include: Quality planning drives and should precede the other two groups of activities. Therefore, at the beginning part of product development, quality planning should be the dominant part of quality engineering activities. Thereafter, occasional adjustments

Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 61 Total Effort Product Release Quality Analysis Quality Assurance Quality Planning Development Time Figure 5.3. effort Quality engineering effort profile: The share of different activities as part of the total In addition, the general shape and pattern of the profile such as in Figure 5.3. should preserve regardless of the specific development process used. Waterfall process would see more dominance of quality planning in the beginning, and dominance of ing near product release, and measurement and quality assessment activities peak right before product release. Other development processes, such as incremental, iterative, spiral, and extreme programming processes, would be associated with curves that vary less between the peaks and valleys. QA is spread out more evenly in these processes than in the waterfall process, although it is still expected to peak a little bit before product release. Similarly, measurement and analysis activities are also spread out more evenly to monitor and assess each part or increment, with the cumulative modeling results used in product release decisions. There are also more adjustments and small scale planning activities involved in quality planning, which also makes the corresponding profiles less variable as well. 5.5 CONCLUDING REMARKS To manage the quality assurance (QA) activities and to provide realistic opportunities of quantifiable quality improvement, we need to go beyond QA to perform the following: Quality planning before specific QA activities are carried out, in the so-called pre-qa activities in software quality engineering. We need to set the overall quality goal by managing customer s quality expectations under the project cost and budgetary constraints. We also need to select specific QA alternatives and techniques to implement as well as measurement and models to provide project monitoring and qualitative feedback. Quality quantification and improvement through measurement, analysis, feedback, and followup activities. These activities need to be carried out after the start of specific QA activities, in the so-called post-qa activities in software quality engineering. The analyses would provide us with quantitative assessment of product quality, and

Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 67 Set reliability/coverage goals Planning & Preparation Entry goal setting information gathering model construction cases procedure Test cases & procedure Measurements Execution No Reliability/ coverage goals Feedbcak & satisfied? adjustments Yes Exit Selected measurements & models Defect handling Analysis & Followup Analysis/ modeling results Figure 6.1. Generic ing process observations. In fact, many forms of informal ing include just this middle group of activities related to execution, with some informal ways to communicate the results and fix the defects, but without much planning and preparation. However, as we will see in the rest of Part II, in all forms of systematic ing, the other two activity groups, particularly planning and preparation activities, play a much more important role in the overall ing process and activities. The execution of a specific case, or a sub-division of the overall execution sequence for some systems that require continuous operation, is often referred to as a run. One of the key component to effective execution is the handling of problems to ensure that failed runs will not block the executions of other cases. This is particularly important for systems that require continuous operation. To many people, defect fixing is not considered to be a part of ing, but rather a part of the development activities. However, re-verification of problem fixes is considered as a part of ing. In this book, we consider all of these activities as a part of ing. Data captured during execution and other related measurements can be used to locate and fix the underlying faults that led to the observed failures. After we have determined if a run is a success or failure, appropriate actions can be initiated for failed runs to locate and fix the underlying faults. In addition, further analyses can be performed to provide valuable feedback to the ing process and to the overall development process in general. These analysis results provide us with assessments of the current status with respect to progress, effort, defect, and product quality, so that decisions, such as when to stop ing, can be made based on facts instead of on people s gut feelings. In addition, some analyses can also help us identify opportunities for long term product quality improvement. Therefore, various other activities, such as measurement, analysis, and followup activities, also need to be supported. Sub-activities in planning and preparation Because of the increasing size and complexity of today s software products, informal ing without much planning and preparation becomes inadequate. Important functions, features, and related software components and implementation details could be easily overlooked in such informal ing. Therefore, there is a strong need for planned, monitored, managed and optimized ing strategies based on systematic considerations for quality, formal models, and related techniques. Test cases can be planned and prepared using such ing

204 Software Quality Engineering c Jeff Tian, to be published by John Wiley, 2005 Customer requirements validate Operational use diagnosis beta Product specifications verify/validate System acceptance other V&V activities High level design Low level design verify verify Integration Component regression Coding & unit Figure 12.1. Testing sub-phases associated with the V-Model Testing sub-phases Figure 12.1. illustrates the ing sub-phases through the use of V-model, a variation of the commonly used waterfall process with an emphasis on verification and validation activities. It shows an annotated V-model with additional information about the specific ing subphases. All the sub-phases not included in the original V-model are shown in dashed boxes, with their relationship to the other sub-phases also illustrated. Specific information about these sub-phases is described below: When problems are reported by customers during operational use, diagnosis ing can be used to recreate and diagnose the problems. Diagnosis ing can also be used for other sub-phases of ing for the same purpose as well, as illustrated by the downward arrow in Figure 12.1.. Controlled product release and operational use by limited customers lead to beta ing. Beta ing can be considered as an additional ing sub-phase closely linked to operational use. It often directly precedes operational use or is carried out at the very beginning of it, as depicted accordingly in Figure 12.1.. A special ing sub-phases, acceptance ing, is attached to the end of system ing, because it is typically performed right after system ing to determine if the product should be released. Sometimes, the late part of system ing is used as acceptance instead of a dedicated acceptance ing sub-phases. Therefore, we also show possible overlap between the two in Figure 12.1.. As a direct division of the ing phase in the waterfall process, several specific subphases of ing, such as system ing, integration ing, and component ing