Software Testing and Quality Attributes Software Testing Module (0721430) Dr. Samer Hanna.

Slides:



Advertisements
Similar presentations
Lecture 8: Testing, Verification and Validation
Advertisements

Chapter 12 Prototyping and Testing Design of Biomedical Devices and Systems By Paul H. King Richard C. Fries.
System Integration Verification and Validation
Testing and Quality Assurance
Term Paper OLOMOLA,Afolabi( ). Dependability Modellling.
1 Software Testing and Quality Assurance Lecture 33 – Software Quality Assurance.
Overview Lesson 10,11 - Software Quality Assurance
EEC 688/788 Secure and Dependable Computing Lecture 2 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
Software Quality Metrics
Unit 251 Implementation and Integration Implementation Unit Testing Integration Integration Approaches.
Aims and Motivation The goal of this project is to produce a secure and dependable way of distributing and storing data securely over a distributed system.
WM Software Process & Quality Generic Processes - Slide #1  P. Sorenson SPiCE Reference Model - how to read Chapter 5 Capability Levels (process.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Understand.
EEC 693/793 Special Topics in Electrical Engineering Secure and Dependable Computing Lecture 2 Wenbing Zhao Department of Electrical and Computer Engineering.
1 Software Testing and Quality Assurance Lecture 1 Software Verification & Validation.
Testing - an Overview September 10, What is it, Why do it? Testing is a set of activities aimed at validating that an attribute or capability.
Software Process and Product Metrics
Introduction to Software Testing
Chapter 24 - Quality Management
Software Reliability Growth. Three Questions Frequently Asked Just Prior to Release 1.Is this version of software ready for release (however “ready” is.
System Testing There are several steps in testing the system: –Function testing –Performance testing –Acceptance testing –Installation testing.
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
Based on D. Galin, and R. Patton.  According to D. Galin  Software quality assurance is:  A systematic, planned set of actions necessary to provide.
Software Metrics - Data Collection What is good data? Are they correct? Are they accurate? Are they appropriately precise? Are they consist? Are they associated.
1 Software Quality CIS 375 Bruce R. Maxim UM-Dearborn.
Instructor: Peter Clarke
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
1 Software Testing and Quality Assurance Lecture 33 – Software Quality Assurance.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
Software Quality Assurance SE Software Quality Assurance What is “quality”?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 3 Slide 1 Critical Systems 1.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
OHT 1.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 The uniqueness of software quality assurance The environments for which.
This chapter is extracted from Sommerville’s slides. Textbook chapter
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
Testing Techniques Software Testing Module ( ) Dr. Samer Hanna.
Verification and Validation Assuring that a software system meets a user's needs.
Software Testing Definition Software Testing Module ( ) Dr. Samer Odeh Hanna.
CSSE Software Engineering Process and Practice Lecture 5 Q UALITY A SSURANCE.
Fault Tolerance Benchmarking. 2 Owerview What is Benchmarking? What is Dependability? What is Dependability Benchmarking? What is the relation between.
Software Testing and Quality Assurance Software Quality Assurance 1.
Basic Concepts of Dependability Jean-Claude Laprie DeSIRE and DeFINE Workshop — Pisa, November 2002.
LOGO TESTING Team 8: 1.Nguyễn Hoàng Khánh 2.Dương Quốc Việt 3.Trang Thế Vinh.
Software Quality Assurance and Testing Fazal Rehman Shamil.
©Ian Sommerville 2000Dependability Slide 1 Chapter 16 Dependability.
This chapter is extracted from Sommerville’s slides. Textbook chapter 22 1 Chapter 8 Validation and Verification 1.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY © Varvana Myllärniemi, T Sotfware Engineering Seminar.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
by: Er. Manu Bansal Deptt of IT Software Quality Assurance.
SOFTWARE TESTING AND QUALITY ASSURANCE. Software Testing.
 System Requirement Specification and System Planning.
Software Dependability
Software Metrics and Reliability
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Software Quality Control and Quality Assurance: Introduction
Regression Testing with its types
Software Verification and Validation
TQS - Teste e Qualidade de Software (Software Testing and Quality) Introduction To Software Testing Concepts João Pascoal.
Verification and Testing
Verification and Validation Overview
Software engineering.
Introduction to Software Testing
Software Quality Assurance Lecture 3
Chapter 10 – Software Testing
Baisc Of Software Testing
Presentation transcript:

Software Testing and Quality Attributes Software Testing Module ( ) Dr. Samer Hanna

Quality Attributes Quality attributes are the key factors in the success of any software system. Also Quality attributes are important for the user of the software system to evaluate how good a system is. However, software quality is a complex and subjective mixture of several attributes or factors and there is no universal definition or a unique metric to quantify software quality (Raghavan, 2002). Software quality is measured by analyzing the various attributes that are significant to a certain domain or application (Raghavan, 2002).

Main quality models The quality attributes literature includes the following main quality models: Boehm (Boehm, 1976), McCall (McCall, 1977), Adrion (Adrion et al. 1982), and ISO 9126:2001 (ISO , 2001).

Quality models shared understanding When analyzing the main quality models, it is noticed that there is no agreement between researchers about a fixed general quality attributes because there is no shared understanding about the quality attributes (or characteristics). It is also noticed that some sub attributes are related to different attribute. For example: accuracy is related to functionality attribute in ISO 9126, while it is related to reliability attribute in Boehm’s model

Trustworthiness Trustworthiness is defined as: “Assurance that the system will perform as expected”. (Avizienis et al., 2004). Some quality attributes have sub-attributes which are considered as requirements for the main attribute (see Fig. 1); trustworthiness requires many quality attribute such as: security, reliability, safety, survivability, interoperability, availability, fault tolerance, and robustness, etc. (Zhang, J., 2005).

Trustworthiness However, fault-tolerance and robustness are sub- attributes of reliability (ISO , 2001) (Adrion, 1982); Fig. 1 describes the trustworthiness quality model according to these relations between the quality attributes. To assess the trustworthiness of any software system, researchers and practitioners must find methods to assess the trustworthiness sub-attributes such as reliability, security, and so on.

Trustworthiness Security Reliability Safety Survivability Fault Tolerance Robustness ……. Interoperability Availability …….. Fig. 1 Trustworthiness Quality Model

Dependability Avizienis (Avizienis et al., 2004) stated that dependability and trustworthiness have the same goals and they both face the same threats (faults, errors, and failures). Dependability is defined as “Ability to deliver a Service that can justifiably be trusted” or “ability of a system to avoid Service failures that are more frequent or more severe than is acceptable” (Avizienis, 2004). Dependability encompasses the following sub-attributes: availability, reliability, safety, integrity, maintainability. (Avizienis, 2004).

Reliability Reliabilty is defined as: “Ability to tolerate various severe conditions and perform intended function” (Raghavan, 2002). Another definition of reliability is: “The probability that software will not cause that failure of a system for a specified time under specified conditions”

Reliability The first definition implies that reliability is related to fault-tolerance and robustness (tolerate severe conditions), also reliability us related to correctness in this definition (perform intended function) The second definition implies that reliability is related to robustness and fault tolerance. To assess how reliable a software system is, these entire requirement (or sub-attributes) of reliability must be assessed.

Testing and Related Terms' Definitions The testing literature is mired with confusing and inconsistent terminology because it has evolved over decades and by different writers (Jorgensen, 2002). This section will introduce a definition of testing and the related terms. The testing literature has the following main definitions of testing: Hetzel (Hetzel, 1973) “The process establishing confidence that a program or system does what it suppose to”.

Testing Definition Myers (Myers, 1979) “The process of executing a program or system with the intent of finding errors”. Beizer (Beizer, ) “A process that is part of quality assurance and aims to show that a program has bugs (faults)”. IEEE (IEEE, 1990) “An activity in which a system or component is executed under specified conditions, the results are observed or recorded, and evaluation is made of some aspect of the system or components”.

Testing Definition Voas (Voas and McGraw, 1998) “the process of determining whether software meets its defined requirements”. Harrold (Harrold, 2000) “One of the old forms or verification that is performed to support quality assurance”.

Testing Definition Sommerville (Sommerville, 2004) defines testing as: “Software testing involves running an implementation of the software with test data. You examine the outputs of the software and its operational behavior to check that it is performing as required. Testing is a dynamic technique of verification and validation”

Testing related terms The previous definitions introduce testing related terms such as quality assurance, fault, error, verification and validation. The goal of quality assurance is to improve software quality and to determine the degree to which the actual behavior of the software is consistent with the intended behavior or quality of this software. Testing related terms are defined to enable a better understand of testing definitions:

Fault, Errors, and Failure As mentioned before, Fault, error, and failure are considered as a threat to the dependability and they are defined as follows: Fault is defined as: “A defect in the system that may lead to an error” (Osterweil, 1996); another name of a fault is bug or defect. For a certain quality attribute there exist faults that affect this quality attribute. Examples of faults that may affect robustness quality attribute include: wrong input accepted, correct input rejected (IEEE, 1995). Some faults can affect more than one quality attribute, for example, wrong input accepted fault affects robustness, fault tolerance and security.

Fault, Errors, and Failure Error is defined as “The part of the total state of the system that may lead to a failure” (Avizienis et al. 2004). Failure is defined as “the deviation of the execution of a program from its intended behavior” (Osterweil, 1996) Another definition of failure is: “An event that occurs when the delivered service deviates from correct service” (Avizienis et al. 2004).

Verification and Validation Verification and validation (V & V) is the process of checking that a program meets its specification and delivers the functionality expected by the people paying for the software (Sommerville, 2004). Verification and validation are defined as follows:

V & V Verification is defined as: “Checking that the software conforms to its specification and meets its specified functional and non-functional requirements” (Sommerville, 2004) Validation is defined as “Ensure that the software system meets the customer’s expectations” (Sommerville, 2004) Another definition of validation is “Determination of the correctness of the final program or software produced from a development project with respect to the user needs and requirements” (Adrion, et al. 1982).

Roles of software testing It is noticed that different researchers view software testing differently, however, the following roles or goals of software testing can be included from the definitions: –Testing involves running or executing the system under test with test data. –Testing is a performed to support quality assurance by assessing the quality attributes

Roles of software testing –Testing is performed to find faults before they cause an error and consequently a failure –Testing is a form of verification. –Testing is a form of validation.

Relation of roles of software testing definitions Table 1. analyzes the roles in each definition of software testing in order to reach a definition that contains all the testing roles. The table indicates whether we can infer a role (column) based on a particular definition (row). The symbols shown in the table are: The full circle (●) indicates that the definition explicitly states the role. The symbol (≈) indicates that the definition does not explicitly express that specific role, but the context of the definition suggests it. The empty circle (○) indicates that the role is not included in a specific definition.

Relation of roles of software testing definitions

General Defenition It is noticed from table1 that Sommerville (Sommerville, 2004) definition contains more of the software testing roles than the other definitions. After analyzing all the definitions, this module will use the following definition of software testing that includes all the roles mentioned in Table 1: Software testing is a quality assurance process that is part of the verification and validation processes, and involves executing the system under test with test data for the purpose of detecting faults and assessing the quality attributes of that system or software component.

References Adrion W., Branstad M. & Cherniavsky, J. (1982) Validation, Verification, and Testing of Computer Software. ACM Computing Surveys, (Vol. 14, No. 2), pp Avizienis, A., Laprie, J.-C., Randell, B. & Landwehr, C. (2004) Basic Concepts and Taxonomy of Dependable and Secure Computing. IEEE Transactions on Dependable and Secure Computing, (Vol. 1, No. 1), China, pp Boehm, B. W., Brown, J. R. & Lipow, M. (1976) Quantitative Evaluation of Software Quality. Proceedings of the 2nd International Conference on Software Engineering (ICSE), California, USA, 1976, pp ISO : 2001 (2001) Software Engineering – Product quality – Part 1: Quality Model, International Organization of Standardization, Geneva, Switzerland.

References McCall, J. A., Richards, P. K. & Walters, G. F. (1977) Factors in Software Quality. Three volumes, US Department of Commerce, National Technical Information Service (NTIS). Neumann, P. (2004). Principled assuredly trustworthy composable architecture. Emerging draft of the final report for DARPA’s composable high assurance trustworthy systems (CHATS) program. [Retrieved from Raghavan, G. (2002). Improving Software Quality in Product Families therough Systematic Reengineering. Proceedings of the Software Quality- ESSQ conference, Berlin, Germany, Springer-Verlag, pp Zhang, J. & Zhang, L.-J. (2005) Web Services Quality Testing. International Journal for Web Services Research, (Vol. 2, No. 2), pp. 1-4.