Chapter 11 Life Cycle-Based Testing. Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In.

Slides:



Advertisements
Similar presentations
Software development process improvement Ville Wettenhovi Master thesis presentation Supervisor:Professor Jukka Manner Instructor:M.Sc. Markus Aalto Date:23th.
Advertisements

Software Process Models
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
What is Agile? Agile is a software methodology based on iterative and incremental development, where requirements and solutions evolve through collaboration.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
Agile Project Management with Scrum
An Introduction to Agile SCRUM Methodology
Intro to Scrum. What is Scrum? An answer to traditional “fixed cost / strict requirements” contracts which had very high rates of failure Recognizes the.
Scrum CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile development By Sam Chamberlain. First a bit of history..
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Iterative development and The Unified process
Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Agile.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 2: Approaches to System Development
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1 CMPT 275 Software Engineering Software life cycle.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
What is Scrum Process? Where is it used? How is it better?
Current Trends in Systems Develpment
Teaching material for a course in Software Project Management & Software Engineering – part II.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
Stephen Chief Strategy Officer Telerik
Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Software Life Cycle Models. Waterfall Model  The Waterfall Model is the earliest method of structured system development.  The original waterfall model.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Software Project Management Team 04 – K15T2. Content Summarizing your view on “Software development process”. Answer 3 question: ◦ What is Software Development.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Systems Analysis and Design in a Changing World, Fourth Edition
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Presentation from: See Also: scrumreferencecard.com/ScrumReferenceCard.pdf.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
CSPC 464 Fall 2014 Son Nguyen. 1. The Process of Software Architecting, Peter Eeles, Peter Cripss 2. Software Architecture for Developers, Simon Brown.
Chapter 10 Information Systems Development. Learning Objectives Upon successful completion of this chapter, you will be able to: Explain the overall process.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Teaching slides Chapter 2. Chapter 2 Software Engineering Methodologies Introduction Why a methodology? Agile methodologies Waterfall model Rational Unified.
Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Systems Development Life Cycle
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
CS 4500: Software Development Software Process. Materials Sommmerville Chapters 1, 2 and 3 Software Cycle and Models:
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Software Quality Assurance Chip Ene, February 14, 2015.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
#msdevcon Community Track IMPLEMENTATION OF SCRUM Bernardin Katić Insa Investment Software AG.
Informed Traveler Program and Applications Agile / Scrum Overview Jerry Inberg.
Chapter 2- Software Development Process  Product Components  Software Project Staff  Software Development Lifecycle Models.
Scuola Politecnica Dipartimento DITEN Università degli Studi di Genova An Introduction to Scrum and XP Prof. Riccardo Berta.
Embedded Systems Software Engineering
Software Development - Methodologies
Teaching slides Chapter 2
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Chapter 2 SW Process Models
Information Systems Development
Scrum MODULE 3 – Part 3.
Chapter 12 Levels of Testing
Teaching slides Chapter 1.
Extreme Programming.
Presentation transcript:

Chapter 11 Life Cycle-Based Testing

Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems, there are many programs (sometimes thousands) that formulate various levels of functions - to components - to a complete application. For example a typical ERP (Enterprise Resource Processing) package such as SAP or PeopleSoft or CRM may be composed of multiple layers of application: – A comprehensive ERP package to satisfy a wide range of requirements contains Human Resource –Benefits management –Payroll Manufacturing –Production Planning and Scheduling –Inventory Distribution –Warehouse management –Logistics Financial.

Levels of Testing Testing at the program unit level is not enough to handle medium and large software systems. The different levels of software must be integrated and tested step-by-step until the complete package is integrated and tested as a whole system: 1.Integration Test (Functional or higher Component level) monthly pay computation for regular employees, not including direct bank deposit or check printing - (“big” functional level) Complete Payroll - (“very big functional” or component level) Complete Human Resource - (“big component” or system level) 2.System Test (component or complete system level) Human resource - (“big component” or system level) Manufacturing - (“big component” or system level) Manufacturing and Finance - (Integrated system level) Complete ERP - (“very large” Integrated system level)

Integration and System tests 1.Integration test can be helped with insights to the “structural” design of the software. –Which are the pieces ? - would help us decide what pieces need to be tested –How are the pieces put together? - would help us decide where the “linkages” or couplings are and where the test focus points are. 2.System test can be helped with insights to the “behavior” or “functional behavior” of the software as specified in the requirements –Given (a) some pre-conditional state and (b) some input or stimuli what should the i) output be and ii) the post-conditional state be.

Levels and Life Cycle Models Levels of testing depend primarily on the software life cycle used. BUT, most forms of testing levels are derived from the V-Model version of the good, old Waterfall Model. Iterative models introduce the need for regression testing. System testing is greatly enhanced when an executable specification is used.

The Waterfall Lifecycle

Requirements specification High Level Design DetailedDesign Coding Unit, Integration, and System Testing Maintenance

The V-Model

Evaluation of the Waterfall Model Advantages –hierarchical structure maps nicely into large projects –phases have well-defined end products (see IBM’s entry and exit criteria) –Unit level work can be done in parallel, reducing overall project interval Disadvantages –Extremely long feedback cycle for customer –Very late synthesis (begins at integration testing) –Staff limitations may not support the advantage of massive parallel development at the unit level –Requires “perfect foresight”, otherwise early faults propagate

Spin-off Models Practitioner responses to waterfall limitations Iterative Development The Spiral Model Rapid Prototyping Executable Specification Agile models –Scrum –eXtreme Programming (XP) –Test-Driven Development Two promising hybrids –Agile Model-Driven Development (AMDD) –Model-Driven Agile Develoipment (MDAD)

Iterative Development

Preserves a single high level design phase –amortizing design across increments is risky. Early design decisions may eliminate later design choices –defines the sequence and content of “builds” (or increments) Builds create the need for regression testing Preserves the advantages of Waterfall, AND Responds to Waterfall defects –staffing limitations –late synthesis –long feedback cycle with customer

The Spiral Model Proposed by Barry Boehm in 1988 Very similar to the Iterative Model –builds are selected based on risk and feasibility Pictured as an expanding spiral superimposed on the x-y plane (see internet for copyrighted images) “Quadrants” correspond to a sequence of build activities –determining objectives –risk analysis –development and test –planning next increment Single high level design phase is lost (which might be an inherent risk)

“Perfect Foresight?” Waterfall and the iterative variations have no answer for the customer who does not have a clear, complete idea of what is needed. “Requirements Elicitation” is the process of helping customers and developers reach a common understanding of a proposed system. Three lifecycle responses... –Rapid Prototyping –Executable Specification –the Agile methods

Rapid Prototyping

Helps customer identify needs and defects –“I’ll know what I want when I see it.” –provides the “does view” that customers appreciate –ideal to give the “look and feel” of menu-driven systems –modify prototype per customer feedback –Sometimes done for feasibility Advantages: –improved and early feedback with customer –better basis for design Keep or dispose? –once it has served its purpose, the prototype can be archived. –possible to use to identify test scenarios

Executable Specification

Very similar to Rapid Prototyping –early feedback –“look and feel” Best for event-driven systems Executable model is the specification –finite state machine –StateChart Need an “engine” –model is executed by the engine –usually interactively with customer Executable Specification

Intended for “reactive systems” (event-driven) Advantages –early feedback –automatic generation of system test cases –can be used for operator training –support for early analysis Disadvantages –modeling can be difficult –training may be necessary –engine can be expensive Evaluation of Executable Specification

Generic Agile Lifecycle

Agile Development Best response to the customer who does not know what is needed, i.e., “perfect foresight” Customer-driven, hence excellent customer feedback Short increments (early synthesis) We look at –eXtreme Programming (XP) –Test-Driven Development (TDD) –Scrum

eXtreme Programming

Kent Beck, 1996 Distinguishing characteristic: pair programming –one person has the detailed view (and the keyboard) –partner has the overall view, and acts as a constant reviewer –roles can change Bottom-up development precludes a single, high level design phase –(but that might not be possible with an uncertain customer anyway)

Test-Driven Development (TDD)

Extreme case of agile development Bottom-up development based on test cases –derived from customer-provided user stories –very quick feedback Very small increments –early synthesis –excellent fault isolation –refactoring results in clean code BUT, no opportunity for a comprehensive design

TDD Example: a Boolean Function to Determine Leap Years Definition: A year is a leap year if it is a multiple of 4, but century years are leap years only if they are multiples of 400. Test-Driven Development would break this into small, individual user stories (also called tasks). “Coded” here in a pseudo-code (a lingua franca) that resembles Visual Basic.

User Story 1: A year divisible by 4 is a leap year Test Case 1 Input: 2012 Expected Output: True (existing) Pseudo-Code in normal font Function isLeap(year) As Boolean End isLeap Running Test Case 1 on this code fails. Add just enough code to make the test pass.

User Story 1: A year divisible by 4 is a leap year Test Case 1 Input: 2012 Expected Output: True (updated) Pseudo-Code in bold face font Function isLeap(year) As Boolean dim year AS Integer 'MOD is the modulo arithmetic built-in operator in most languages If (( year MOD 4) = 0) Then IsLeap = True EndIf End isLeap Test Case 1 passes. Now do User Story 2.

User Story 2: A year not divisible by 4 is a common year Test Case 1Input: 2012 Expected Output: True Test Case 2Input: 2007 Expected Output: False (existing) Pseudo-Code in normal font Function isLeap(year) As Boolean dim year AS Integer If (( year MOD 4) = 0) Then IsLeap = True EndIf End isLeap Test Case 1 passes. Test Case 2 fails. Now add just enough code so that Test Case 2 passes.

User Story 2: A year not divisible by 4 is a common year Test Case 1Input: 2012 Expected Output: True Test Case 2Input: 2011 Expected Output: False (updated) Pseudo-Code In bold face font Function isLeap(year) As Boolean dim year AS Integer isLeap = False If (( year MOD 4) = 0) Then IsLeap = True EndIf End isLeap Test Cases 1 and 2 pass. Now do User Story 3

User Story 3: A century year not divisible by 400 is a common year Test Case 1Input: 2012, Expected Output: True Test Case 2Input: 2011, Expected Output: False Test Case 3Input: 1900, Expected Output: False (existing) Pseudo-Code In normal font Function isLeap(year) As Boolean dim year AS Integer isLeap = False If (( year MOD 4) = 0) Then IsLeap = True EndIf End isLeap Test Cases 1 and 2 pass. Test Case 3 fails. Now add just enough code so that Test Case 3 passes.

User Story 3: A century year not divisible by 400 is a common year Test Case 1Input: 2012, Expected Output: True Test Case 2Input: 2011, Expected Output: False Test Case 3Input: 1900, Expected Output: False (updated) Pseudo-Code In bold face font Function isLeap(year) As Boolean dim year AS Integer isLeap = False If ((( year MOD 4) = 0) AND NOT((year MOD 100) = 0))) Then IsLeap = True EndIf End isLeap Test Cases 1, 2 and 3 pass. Now do User Story 4

User Story 4: A century year divisible by 400 is a leap year Test Case 1Input: 2012, Expected Output: True Test Case 2Input: 2011, Expected Output: False Test Case 3Input: 1900, Expected Output: False Test Case 4Input: 2000, Expected Output: True (existing) Pseudo-Code In normal font Function isLeap(year) As Boolean dim year AS Integer isLeap = False If ((( year MOD 4) = 0) AND NOT((year MOD 100) = 0))) Then IsLeap = True EndIf End isLeap Test Cases 1, 2 and 3 pass. Test case 4 fails. Now add just enough code so that test case 4 passes.

User Story 4: A century year divisible by 400 is a leap year Test Case 1Input: 2012, Expected Output: True Test Case 2Input: 2011, Expected Output: False Test Case 3Input: 1900, Expected Output: False Test Case 4Input: 2000, Expected Output: True (updated) Pseudo-Code In bold face font Function isLeap(year) As Boolean dim year AS Integer isLeap = False If ((( year MOD 4) = 0) AND NOT((year MOD 100) = 0))) OR ((year MOD 400 = 0)) Then IsLeap = True EndIf End isLeap Test Cases 1, 2, 3 and 4 pass. Done with function isLeap.

Advantages of Test Driven Development In this example, the steps are deliberately small. Customer and developer can (should!) jointly determine granularity of user stories. Fault isolation is greatly simplified (in fact, trivial). If a test case fails, the fault must be in the most recently added code. Once a new test case passes, a working (subset) of the desired software can always be delivered. Something always works!

Disadvantages of Test Driven Development Useful granularity is an issue. There is no guarantee that user stories “arrive” in a sensible order. There is no guarantee that user stories are the “same size” (or require similar effort) Bottom-up coding often results in poorly structured code, making refactoring necessary.

Scrum Lifecycle

Scrum (not an acronym) Created in 1993 by Jeff Sutherland Formalized in 1995 by Ken Schwaber Very popular today, both in US and Europe Named for the importance of teamwork in rugby n.b.: material in the series of slides on Scrum is taken from

Scrum—New Terms for Existing Ideas Three roles –Product owner –Scrum Master –Self-organizing team Three ceremonies –Sprint planning meeting –Daily scrum meeting –Sprint review meeting Three artifacts –Product backlog, –Sprint backlog –Burndown chart

Product Owner Responsibilities Define the features of the product; Decide on release date and content; Be responsible for the profitability of the product (ROI); Prioritize features according to market value; Adjust features and priority every 30 days, as needed; and Accept or reject work results. Question: Product Owner = Customer?

Scrum Master Responsibilities Ensure that the team is fully functional and productive Enable close cooperation across all roles and functions Remove barriers Shield the team from external interferences Ensure that the process is followed (sprint planning, daily meeting, sprint review) Question: Scrum Master = Supervisor?

Scrum Team Responsibilities Cross-functional with 7 +/- 2 members Selects the Sprint goal and specifies work results Has the right to do everything within the boundaries of the project guidelines to reach the Sprint goal Organizes itself and its work Demonstrates work results to Product Owner. Question: Scrum Team = Development Team?

Comparison of Model Driven Development (MDD) and Test Driven Development (TDD) First American’s view of Eagles and Mice –Eagles have the “big picture” –Mice focus on the details –(both views are important!) MDD is a rigorous, top-down approach. TDD is a bottom-up approach.

TDD isLeap in Visual Basic (refactored) Public Function isLeap(year) As Boolean Dim year As Integer Dim c1, c2, c3 As Boolean 1.c1 = (year Mod 4 = 0) 2.c2 = (year Mod 100 = 0) 3.c3 = (year Mod 400 = 0) 4,isLeap = False 5.If ( (c1 AND NOT(c2)) OR (c3)) Then 6.IsLeap = True 7.Else 8.IsLeap = False 9.EndIf End Function

Decision Table Model of isLeap Conditionsr1r2r3r4r5r6r7r8 C1. year is a multiple of 4TTTTFFFF C2. year is a century yearTTFFTTFF C3. year is a multiple of 400TFTFTFTF Actions (logically impossible)XXXX A1. year is a common yearXx A2. year is a leap yearXX test case: year =

Agile Model-Driven Development Scott Ambler Model just enough for the present user story Design is necessary! BUT the modeling is still not in one phase

Agile Model-Driven Development

Model-Driven Agile Development

TDD isLeap in Visual Basic (refactored) Public Function isLeap(year) As Boolean Dim year As Integer Dim c1, c2, c3 As Boolean 1.c1 = (year Mod 4 = 0) 2.c2 = (year Mod 100 = 0) 3.c3 = (year Mod 400 = 0) 4,isLeap = False 5.If ( (c1 AND NOT(c2)) OR (c3)) Then 6.IsLeap = True 7.Else 8.IsLeap = False 9.EndIf End Function

Decision Table Model of isLeap Conditionsr1r2r3r4r5r6r7r8 C1. year is a multiple of 4TTTTFFFF C2. year is a century yearTTFFTTFF C3. year is a multiple of 400TFTFTFTF Actions (logically impossible)XXXX A1. year is a common yearXx A2. year is a leap yearXX test case: year =

MDD isLeap in Visual Basic Public Function isLeap(year) As Boolean Dim year As Integer Dim c1, c2, c3 As Boolean 1. c1 = (year Mod 4 = 0) 2. c2 = (year Mod 100 = 0) 3. c3 = (year Mod 400 = 0) 4, isLeap = False 5. If c1 Then 6. If c2 Then 7. If c3 Then 8. isLeap = True ‘rule r1 9. Else 10. isLeap = False ‘rule r2 11. End If 12. Else 13. isLeap = True ‘rule r4 14. End If 15. Else 16. isLeap = False ‘rule r8 17. End If End Function

Observations The TDD version is less complex (really?) –Why? The TDD version gradually built up to a compound condition (that might be hard to understand, and to modify). The decision table model assures –What? Both versions require 4 test cases