Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.

Slides:



Advertisements
Similar presentations
Software testing.
Advertisements

Lecture 8: Testing, Verification and Validation
Chapter 10 Software Testing
Testing and Quality Assurance
Software testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Final Project Account for 40 pts out of 100 pts of the final score 10 pts from.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Illinois Institute of Technology
Chapter 8 – Software Testing
Chapter 9 – Software Evolution and Maintenance
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
 Software inspections Concerned with analysis of the static system representation to discover problems (static verification)  May be supplement by tool-based.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
 Dr. Syed Noman Hasany 1.  Review of known methodologies  Analysis of software requirements  Real-time software  Software cost, quality, testing.
Lecture # 22 Software Evolution
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 23 Slide 1 Software testing Slightly adapted by Anders Børjesson.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Acceptance Testing Senior Design Fall 2013
Software testing techniques 3. Software testing
Software Engineering Chapter 23 Software Testing Ku-Yaw Chang Assistant Professor Department of Computer Science and Information.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
 CS 5380 Software Engineering Chapter 8 Testing.
Software Testing Testing types Testing strategy Testing principles.
CSc 461/561 Information Systems Engineering Lecture2 – Software Testing.
Chapter 8 – Software Testing Lecture 2 1Chapter 8 Software testing.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Chapter 8 – Software Testing Part 2 1Chapter 8 Software testing.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Software Testing Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
This chapter is extracted from Sommerville’s slides. Textbook chapter
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
Software process model from Ch2 Chapter 2 Software Processes1 Requirements Specification Design and Implementation ValidationEvolution.
Chapter 8 – Software Testing Chapter 8 Software Testing1.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Testing 1Software testing. V model Software testing2.
Chapter 8 – Software Testing Chapter 8 Software Testing130/10/2014.
Chapter 5 – Software Testing & Maintenance (Evolution) 1.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
This chapter is extracted from Sommerville’s slides. Textbook chapter 22 1 Chapter 8 Validation and Verification 1.
Software change Software change is inevitable –New requirements emerge when the software is used –The business environment changes –Errors must be repaired.
Interdisciplinary Aalto YYT-C3002 Application Programming in Engineering Spring 2016 Application programming in engineering; Software testing
Chapter 8 – Software Testing 1Chapter 8 Software testing Note: These are a modified version of Ch 8 slides available from the author’s site
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Chapter 18 Maintaining Information Systems
Chapter 8 – Software Testing
Chapter 7 Software Testing.
Software Engineering (CSI 321)
Introduction to Software Testing
Chapter 8 – Software Testing
Lecture 09:Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Chapter 8 – Software Testing
Chapter 9 – Software Evolution and Maintenance
Software testing.
Software Testing & Quality Management
CS310 Software Engineering Dr.Doaa Sami Khafaga
Chapter 7 Software Testing.
Chapter 8 – Software Testing
Presentation transcript:

Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L

Outline USC CSCI 201L2/20 ▪T▪Testing ▪E▪Evolution

Software Testing ▪The testing process has two goals ›To demonstrate to the developer and the customer that the software meets its requirements ›To discover situations in which the behavior of the software is incorrect, undesirable, or does not conform to its specification ▪Testing cannot demonstrate that the software is free of defects or that it will behave as specified in every circumstance ›Dijkstra stated that “testing can only show the presence of errors, not their absence” USC CSCI 201L3/20 Testing

Validation and Verification ▪Barry Boehm stated the difference as ›Validation: Are we building the right product? ›Verification: Are we building the product right? ▪V&V processes are concerned with checking that software being developed meets its specification and delivers the functionality expected by the people paying for the software USC CSCI 201L4/20 Testing

Software Inspections ▪V&V involves software inspections and reviews, which have three advantages over solely testing ›With testing, errors can mask other errors, but inspection can discover multiple errors ›Incomplete versions of a system can be inspected ›Inspections can also consider broader quality attributes of a program, such as compliance with standards, portability, and maintainability USC CSCI 201L5/20 Testing

Testing Stages ▪A commercial software system will go through three stages of testing ›Development Testing – tests during development that discover bugs and defects ›Release Testing – separate testing team tests a complete version of the system before it is released to users ›User Testing – users or potential users of a system test the system in their own environment USC CSCI 201L6/20 Testing

Development Testing ▪Development testing includes all testing activities that are carried out by the team developing the system ▪There are three levels of granularity for development testing ›Unit Testing – where individual program units or object classes are tested ›Component Testing – where several individual units are integrated to create composite components ›System Testing – where some or all of the components in a system are integrated and the system is tested as a whole USC CSCI 201L7/20 Testing

Development Testing – Unit Testing ▪Unit testing is the process of testing program components, such as methods or object classes ▪Unit tests should show: ›When used as expected, the component you are testing does what it is supposed to ›Defects in the component should be revealed ▪When designing test cases, you should: ›Choose inputs that force the system to generate all error messages ›Design inputs that cause input buffers to overflow ›Repeat the same input or series of inputs numerous times ›Force invalid outputs to be generated ›Force computation results to be too large or too small USC CSCI 201L8/20 Testing

Development Testing – Unit Testing ▪With all types of testing, there are black box and white box testing ▪Black box testing uses the specifications of a system to identify the test cases ▪White box testing looks at the code to identify additional test cases USC CSCI 201L9/20 Testing

Development Testing – Component Testing ▪Software components are composite components that are made up of several interacting objects ▪Since unit testing should have already found errors in the individual components, the testing should focus on the interfaces between the components ▪Here are some of the interfaces ›Parameter Interfaces – interfaces in which data or function references are passed from one component to another ›Shared Memory Interfaces – interfaces in which a block of memory is shared between components ›Procedural Interfaces – interfaces in which one component encapsulates a set of procedures that can be called by other components ›Message Passing Interfaces – interfaces in which one component request a service from another component by passing a message to it USC CSCI 201L10/20 Testing

Development Testing – System Testing ▪System testing during development involves integrating components to create a version of the system and then testing the integrated system ▪There is some overlap with component testing, but two differences exist ›During system testing, reusable components that may have been separately developed or COTS products may be integrated with the other components ›Components developed by different team members or groups will be integrated at this stage USC CSCI 201L11/20 Testing

Test-Driven Development ▪Test-Driven Development (TDD) is an approach to program development in which you interleave testing and code development ›TDD was introduced as part of agile methods including XP ›TDD greatly reduces the cost of regression testing USC CSCI 201L12/20 Testing

Release Testing ▪Release testing is the process of testing a particular release of a system that is intended for use outside the development team ▪There are two distinctions between release testing and system testing ›A separate team that has not been involved in the system development should be responsible for release testing ›Release testing checks that the system meets its requirements and is good enough for external use USC CSCI 201L13/20 Testing

Release Testing Types ▪Requirements-based testing provides one or more test cases for each requirement ›Based on good requirements engineering, this should be possible ▪Scenario testing devises typical scenarios of use of the system, then develops test cases based on them ▪Performance testing ensures that the system can process its intended load ›These are often called load tests or stress tests as well USC CSCI 201L14/20 Testing

User Testing ▪User testing is a stage in the testing process where users or customers provide input and advice on system testing ▪There are three types of user testing ›Alpha Testing – users work with the development team to test the software at the developer’s site ›Beta Testing – a release of the software is made available to users to allow them to experiment and to raise problems they discover with the developers ›Acceptance Testing – customers test a system to decide whether it is read to be accepted from the developers and deployed in the customer environment USC CSCI 201L15/20 Testing

User Testing – Acceptance Testing ▪There are six stages in the acceptance testing process ›Define acceptance criteria ›Plan acceptance testing ›Derive acceptance tests ›Run acceptance tests ›Negotiate test results ›Reject or accept system USC CSCI 201L16/20 Testing

Outline USC CSCI 201L17/20 ▪T▪Testing ▪E▪Evolution

Software Evolution ▪Even after a system is delivered, it will inevitably have to change to remain useful ▪Software is expensive, so organizations need to use it for a number of years to get a return on their investment ›This often results in multiple releases of software so the system evolves with the organization USC CSCI 201L18/20 Evolution

Software Maintenance ▪Software maintenance is the general process of changing a system after it has been delivered ▪There are three different types of software maintenance ›Fault Repairs – coding errors are relatively cheap to repair, design errors are more expensive, and requirements errors are the most expensive ›Environmental Adaptation – hardware, OS, or other support software changes, causing the system to be modified to adapt ›Functionality Addition – when the system requirements change in response to organizational or business change ▪Here is a chart showing a distribution of the maintenance costs USC CSCI 201L19/20 Evolution

Functionality Addition ▪It is usually more expensive to add functionality after a system is in operation than it is to implement the same functionality during development because ›Team Stability – the development team may be broken up and reassigned after a system has been delivered ›Poor Development Practice – a maintenance contract may be given to a different company than the original development company ›Staff Skills – maintenance staff are often inexperienced and unfamiliar with the application domain ›Program Age and Structure – as programs age, they become harder to understand and change since changes to programs tend to degrade the program structure USC CSCI 201L20/20 Evolution