Software Quality. Richard Harris

Similar documents
Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Bridge Course On Software Testing

Lecture 15 Software Testing

Verification and Validation

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Non Functional Product Requirements (illeties)

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

MONIKA HEINER.

Types of Software Testing: Different Testing Types with Details

Software Testing Strategies. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Chapter 8 Software Testing. Chapter 8 Software testing

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Part 5. Verification and Validation

Higher-order Testing. Stuart Anderson. Stuart Anderson Higher-order Testing c 2011

Chapter 9. Software Testing

Cursul Aprilie

CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018

Topic: Software Verification, Validation and Testing Software Engineering. Faculty of Computing Universiti Teknologi Malaysia

Comparison Study of Software Testing Methods and Levels- A Review

Basic Concepts of System Testing - A Beginners Guide.

10. Software Testing Fundamental Concepts

Chapter 8. Achmad Benny Mutiara

Client-server application testing plan

Examination Questions Time allowed: 1 hour 15 minutes

Beta Mobile app Testing guidelines

Aerospace Software Engineering

LEVELS OF TESTING AND SPECIAL TESTS

Product Quality Engineering. RIT Software Engineering

The OWASP Foundation. Compliance driven vulnerabilities The effect of a quality aspect on software security. BeNeLux OWASP Day 2009

Software Engineering

Chapter 11, Testing. Using UML, Patterns, and Java. Object-Oriented Software Engineering

Advanced Software Engineering: Software Testing

Topics in Software Testing

Introduction to Software Testing

Object Oriented Programming

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

Sample Exam Syllabus

Software Development. Software Testing: Verification and Validation. Verification and Validation (V&V) Verification. Validation

ΗΜΥ 317 Τεχνολογία Υπολογισμού

All the subjective part of 2011 papers solved complete reference numbers

NCC EDUCATION INTERNATIONAL DIPLOMA IN COMPUTER STUDIES SYSTEMS DEVELOPMENT. 5 th June 2005

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

Tutorial 1 Answers. Question 1

Software Design Models, Tools & Processes. Lecture 6: Transition Phase Cecilia Mascolo

Chapter 10. Testing and Quality Assurance

Terminology. There are many different types of errors and different ways how we can deal with them.

Manuel Oriol, CHCRC-C, Software Testing ABB

Patterns and Testing

Software Testing Strategies. Software Engineering: A Practitionerʼs Approach, 7/e by Roger S. Pressman

Integrated Software Environment. Part 2

Introduction To Software Testing. Brian Nielsen. Center of Embedded Software Systems Aalborg University, Denmark CSS

CERT C++ COMPLIANCE ENFORCEMENT

Ingegneria del Software II academic year: Course Web-site: [

Software Engineering Testing and Debugging Testing

Verification and Validation

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Sample Question Paper. Software Testing (ETIT 414)

Testing Web Applications. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Software Testing and Maintenance

CS 160: Evaluation. Professor John Canny Spring /15/2006 1

Introduction to Software Engineering

IST A blueprint for the development of new preservation action tools

HCI and Design SPRING 2016

IEC Why the IEC standard was developed, The languages and concepts defined in the standard, How to obtain further information

Software Testing CS 408

Analysis of the Test Driven Development by Example

Learning outcomes. Systems Engineering. Debugging Process. Debugging Process. Review

Requirements Engineering: Specification & Validation. Software Requirements and Design CITS 4401 Lecture 18

CS 160: Evaluation. Outline. Outline. Iterative Design. Preparing for a User Test. User Test

Auditing in an Automated Environment: Appendix E: System Design, Development, and Maintenance

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

Testing Object-Oriented Applications. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S.

OWASP Top 10 The Ten Most Critical Web Application Security Risks

CSE 403: Software Engineering, Fall courses.cs.washington.edu/courses/cse403/16au/ Unit Testing. Emina Torlak

Technical and Functional Standards for Digital Court Recording

Verification, Testing, and Bugs

Quality and usability: A new framework

Event Driven Architecture in software development projects

Chapter 9 Quality and Change Management

TSW Reliability and Fault Tolerance

NST: A Unit Test Framework for Common Lisp

Pearson Education 2007 Chapter 9 (RASD 3/e)

Concepts of Usability. Usability Testing. Usability concept ISO/IS What is context? What is context? What is usability? How to measure it?

Certified Tester Foundation Level(CTFL)

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

Unit 6 - Software Design and Development LESSON 8 QUALITY ASSURANCE

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Software Testing. Hans-Petter Halvorsen, M.Sc.

Object Oriented Software Design - I

Software Engineering (CSC 4350/6350) Rao Casturi

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides

ANZSCO Descriptions The following list contains example descriptions of ICT units and employment duties for each nominated occupation ANZSCO code. And

Introduction to Programming

Testing Objectives. Successful testing: discovers previously unknown errors

VERIFYING SOFTWARE ROBUSTNESS. Ross Collard Collard & Company

Lose It! Weight Loss App Heuristic Evaluation Report

SOFTWARE ENGINEERING SOFTWARE VERIFICATION AND VALIDATION. Saulius Ragaišis.

Transcription:

Software Quality Richard Harris

Part 1 Software Quality 143.465 Software Quality 2

Presentation Outline Defining Software Quality Improving source code quality More on reliability Software testing Software quality factors 143.465 Software Quality Slide 3

What is Software Quality? In the context of software engineering, software quality measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance). One interpretation contained within Steve McConnell's Code Complete divides software into two pieces: internal and external quality characteristics. External quality characteristics are those parts of a product that face its users, where internal quality characteristics are those that do not. 143.465 Software Quality Slide 4

Software Product Quality Product quality conformance to requirements or program specification; related to reliability Scalability Correctness Completeness Absence of bugs Fault-tolerance Extensibility Maintainability Documentation 143.465 Software Quality Slide 5

Source Code Quality From our point of view, source code can be written in a way that has an effect on the effort needed to comprehend its behaviour. Many source code programming style guides, which often stress readability and usually language-specific conventions are aimed at reducing the cost of source code maintenance. Some of the issues that affect code quality include: Readability Ease of maintenance, testing, debugging, fixing, modification and portability Low complexity Low resource consumption: memory, CPU Number of compilation or lint warnings Robust input validation and error handling, established by software fault injection 143.465 Software Quality Slide 6

Improving Source Code Quality 3 Methods to improve the quality: Refactoring Code refactoring is the process of changing a computer program's internal structure without modifying its external functional behaviour or existing functionality, in order to improve internal quality attributes of the software, such as improving code readability, simplifying code structure, changing code to adhere to a given programming paradigm, improving maintainability, performance, or extensibility. Code Inspection or Software Review "A process or meeting during which a software product is [examined by] project personnel, managers, users, customers, user representatives, or other interested parties for comment or approval" Documenting code 143.465 Software Quality Slide 7

Back to Reliability! Requirements Analysis A program cannot be expected to work as desired if the developers of the program do not, in fact, know the program's desired behaviour in advance, or if they cannot at least determine its desired behaviour in parallel with development, in sufficient detail. Whether a program's desired behaviour can be successfully specified in advance is a moot point if the behaviour cannot be specified at all, and this is the focus of attempts to formalize the process of creating requirements for new software projects. In situ with the formalization effort is an attempt to help inform non-specialists, particularly nonprogrammers, who commission software projects without sufficient knowledge of what computer software is in fact capable. 143.465 Software Quality Slide 8

Back to Reliability! Design While requirements are meant to specify what a program should do, design is meant, at least at a high level, to specify how the program should do it. Software design usually involves the use of more abstract and general means of specifying the parts of the software and what they do. So it can be seen as a way to break a large program down into many smaller programs, such that those smaller pieces together do the work of the whole program. 143.465 Software Quality Slide 9

Software Testing Software testing, when done correctly, can increase overall software quality of conformance by testing that the product conforms to its requirements. Testing includes, but is not limited to: 1. Unit Testing 2. Functional Testing 3. Regression Testing 4. Performance Testing 5. Failover Testing 6. Usability Testing A number of agile methodologies use testing early in the development cycle to ensure quality in their products. For example, the test-driven development practice, where tests are written before the code they will test, is used in Extreme Programming to ensure quality. 143.465 Software Quality Slide 10

Unit Testing In computer programming, unit testing is a software verification and validation method in which a programmer tests if individual units of source code are fit for use. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., In object-oriented programming, the smallest unit is a class, which may belong to a base/super class, abstract class or derived/child class. 143.465 Software Quality Slide 11

Functional Testing System or functional testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. System testing falls within the scope of black box testing, and as such, should require no knowledge of the inner design of the code or logic. 143.465 Software Quality Slide 12

Regression Testing Regression testing is any type of software testing that seeks to uncover software regressions. Such regressions occur whenever previously working software functionality stops working as intended. Typically, regressions occur as an unintended consequence of program changes. Common methods of regression testing include rerunning previously run tests and checking whether previously fixed faults have reemerged. 143.465 Software Quality Slide 13

Performance Testing Software performance testing is used to determine the speed or effectiveness of a computer, network, software program or device. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS (millions of instructions per second) at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing. 143.465 Software Quality Slide 14

Failover Testing In software testing, recovery testing is the activity of testing how well an application is able to recover from crashes, hardware failures and other similar problems. Recovery testing is the forced failure of the software in a variety of ways to verify that recovery is properly performed. Recovery testing should not be confused with reliability testing, which tries to discover the specific point at which failure occurs. 143.465 Software Quality Slide 15

Recovery Testing Examples of recovery testing: 1. While an application is running, suddenly restart the computer, and afterwards check the validity of the application's data integrity. 2. While an application is receiving data from a network, unplug the connecting cable. After some time, plug the cable back in and analyse the application's ability to continue receiving data from the point at which the network connection disappeared. 3. Restart the system while a browser has a definite number of sessions. Afterwards, check that the browser is able to recover all of them. 143.465 Software Quality Slide 16

Usability Testing Usability testing is a technique used to evaluate a product by testing it on users. This can be seen as an irreplaceable usability practice, since it gives direct input on how real users use the system. This is in contrast with usability inspection methods where experts use different methods to evaluate a user interface without involving users. Usability testing focuses on measuring a human-made product's capacity to meet its intended purpose. Examples of products that commonly benefit from usability testing are web sites or web applications, computer interfaces, documents, or devices. Usability testing measures the usability, or ease of use, of a specific object or set of objects, whereas general humancomputer interaction studies attempt to formulate universal principles. 143.465 Software Quality Slide 17

Software Quality Factors - 1 A large number of different factors have been identified in the studies of software quality. Common ones are: Understandability clarity of purpose. This goes further than just a statement of purpose; all of the design and user documentation must be clearly written so that it is easily understandable. This is obviously subjective in that the user context must be taken into account: for instance, if the software product is to be used by software engineers it is not required to be understandable to the layman. Completeness presence of all constituent parts, with each part fully developed. This means that if the code calls a subroutine from an external library, the software package must provide reference to that library and all required parameters must be passed. All required input data must also be available. Conciseness minimization of excessive or redundant information or processing. This is important where memory capacity is limited, and it is generally considered good practice to keep lines of code to a minimum. It can be improved by replacing repeated functionality by one subroutine or function which achieves that functionality. It also applies to documents. 143.465 Software Quality Slide 18

Software Quality Factors - 2 Portability ability to be run well and easily on multiple computer configurations. Portability can mean both between different hardware such as running on a PC as well as a smartphone and between different operating systems such as running on both Mac OS X and GNU/Linux. Consistency uniformity in notation, symbology, appearance, and terminology within itself. Maintainability propensity to facilitate updates to satisfy new requirements. Thus the software product that is maintainable should be well-documented, should not be complex, and should have spare capacity for memory, storage and processor utilization and other resources. Testability disposition to support acceptance criteria and evaluation of performance. Such a characteristic must be built-in during the design phase if the product is to be easily testable; a complex design leads to poor testability. 143.465 Software Quality Slide 19

Software Quality Factors - 3 Usability convenience and practicality of use. This is affected by such things as the human-computer interface. The component of the software that has most impact on this is the user interface (UI), which for best usability is usually graphical (i.e. a GUI). Reliability ability to be expected to perform its intended functions satisfactorily. This implies a time factor in that a reliable product is expected to perform correctly over a period of time. It also encompasses environmental considerations in that the product is required to perform correctly in whatever conditions it finds itself (sometimes termed robustness). Structuredness organisation of constituent parts in a definite pattern. A software product written in a block-structured language such as Pascal will satisfy this characteristic. Efficiency fulfillment of purpose without waste of resources, such as memory, space and processor utilization, network bandwidth, time, etc. Security ability to protect data against unauthorized access and to withstand malicious or inadvertent interference with its operations. Besides the presence of appropriate security mechanisms such as authentication, access control and encryption, security also implies resilience in the face of malicious, intelligent and adaptive attackers. 143.465 Software Quality Slide 20