SlideShare a Scribd company logo
eXtreme Programming Introduction TELEFÓNICA I+D Date: © 2010 Telefónica Investigación y Desarrollo, S.A. Unipersonal With Test-Driven Development  Jacob Cañadas <jcr@tid.es> Marc Planagumà <mpv@tid.es> Mauricio Cappella <mauricio@pollenizer.com>
01 XP with TDD 02 TDD = Test + driven development   03 V-model for testing   04 Driven Development, why? 05 Steer your project with tests (V-model for TDD) 06 TDD is easy and optimal 07 TDD is the easier way to implement XP and Agile 08 Examples 09 Questions Part 1: overview (1h)
01 Reference architecture. 02 Web frontend and integration of 3rd party services.  03 Mobile applications and services. 04 Provisioning framework. 05 (your example or question here) Part 2: examples (1h)
eXtrem Programing  Practices:  TDD is core 01
eXtrem Programing  Practices:  TDD is core 01 TDD
Test-Driven Development is: Test Drive Development 02
  03
 
  Ex: Control access to building Check user credentials, if ok store date
  Card Reader DataBase
  OPenPCD Mysql
 
  func storeUserAccess(userId,accessDate) :  mysql.query(“insert into user (id,date)  values(userId,accessDate)”) func readUserAccess() :   userId,accessDate=openPcd.getLastAccess()  return userId,accessDate
func accessControlSystem() : userId,accessDate =  readUserAccess() if(userAllowed(userId))   print( userId enter building on  accessDate) storeUserAccess(userId,accessDate) return true else print( userId can’t enter) return false
 
Uni Test Method level Test boundaries values Test extreme values Without dependences If (x>=2) return(x) else return(2x)
  func storeUserAccess(userId,accessDate) :  mysql.query(“insert into user (id,date)  values(userId,accessDate)”)   func storeUserAccessTest() :  storeUserAccess(‘user123’,’06/04/2010’) accessDate = readLastUserAccess(‘user123’) assertTrue (accessDate = ‘06/04/2010‘)
func accessControlSystem() : userId,accessDate =  readUserAccess() if(userAllowed(userId))   print( userId enter building on  accessDate) storeUserAccess(userId,accessDate) return true else print( userId can’t enter) return false
  func storeUserAccessMock(userId,accessDate) :  //Nothing to do func readUserAccessMock() : if(firstTime) return ‘userOk’,’06/04/2010’ else return ‘userKo’,’06/04/2010’
func accessControlSystem() : userId,accessDate =  readUserAccessMock() if(userAllowed(userId))   print( userId enter building on  accessDate) storeUserAccessMock(userId,accessDate) return true else print( userId can’t enter) return false
  func accessControlSystemTest() :  result =accessControlSystem() AssertTrue(result) result =accessControlSystem() AssertFalse(result)
 
  func accessControlSystemTestIt() :  result =accessControlSystem() AssertTrue(result) result =accessControlSystem() AssertFalse(result)
 
 
Driven Development: where should we go? 04
Only doing Test is NOT TDD 05
1. Describe intent with tests. 2. Use the tests to validate our solution iteratively 3. Do the simplest thing that could possibly work.
Clear user stories and backlog  Contract Check the acceptance criteria Doc Based Script Based User interaction
Simple design and constant review about: Tecnologines Architecture Ensure you are using the right tools. Deployment  Connectivity Performance and SLA
Correct orchestration  : Interchangeable components. Code simultaneously. Moularization. Define good components contracts and interfaces. Protocol Interfaces API’s
Get better Code: Atomic functions No bugs Simple code Test is documnetation. Clear goals minimum effort: Paremeters pre & post conditions
 
TDD is easy and  optimal. 06 Create Time Create Team Create effectiveness
TDD is easy and  optimal. Use tests to:  Define and mockup integration interfaces. Make clear how your app works. Show how your components or libraries may be used Document what do you expect from 3rd party tools, libraries and services and check compatibility Evaluate implementation alternatives Demo your user stories Refactor your code without breaking something 06
TDD is easy, and optimal replaces more expensive practices  Do you write a &quot;main&quot; to try a function? make it readable, keep it, and it's TDD (and your documentation too!) Tests are better than Word documents and UML and flow charts:  just can run them to know if they are accurate they change with your code and are where you need them. Avoid being blocked by integration problems. Save expensive bug finding.  Reduce risks due to long build and release cycles. 06
TDD, the easier way to XP and Agile Acceptance criteria : Clear user stories and backlog. Customer tests. Acceptance test : do exactly what the customer asks, no less, no more (the simplest thing that may possibly work) Continuous testing: bug free, easy to deploy (CI) Everybody runs and tests everything: Whole team, Collective Ownership and Coding Standard. TDD makes each developer also an architect and clearly documents her reasoning and decisions: Simple design (KISS) Refactor Without TDD = disaster  07
 
Example User Story 08 As a: Mobile phone user I want to: receive a list of 3 places to eat at less than 30min from where me and the contacts I select are So that: I can propose my contacts to meet there
Use Acceptance Tests to validate UserStory 08 Test 0:  create wireframes showing the sequence of screens the user views and validate them with the PO and user Test 0.1: is feasible?  write tests to check you can always get the information to generate the right screens in each scenario allContacts= phoneDriver.getContacts()  selectedContacts= ui.selectFromList(allContacts) result= nearUsApp.find(selectedContacts,&quot;placeToEat&quot;,30m) if result.length<1 { showMsg(&quot;ERROR: no places found&quot;) } else { m= new List(); foreach place in result {      m.add(place.desc);  foreach path in place.contactPath {         m.add(&quot; >&quot;+path.contact+&quot;: &quot;+path.transport)    }}   ui.showList(m) } (most of the mentioned application classes and methods have to be written yet!) BUT now you now exactly what the PO wants and you need!
Use Acceptance Test to drive Behavior (more on how to do this in your projects in part 2) 08 Test 0.2:  implement what you need as stubs and pass the tests for all thinkable scenarios (you wrote the top layer of your app as) ... result= nearUsApp.find(selectedContacts,&quot;placeToEat&quot;,30m) if result.length<1 { showMsg(&quot;ERROR: no places found&quot;) } else { ...  ui.showList(m) } (now you can use mock objects like) ... phoneDriver.getContacts(){ return [&quot;Juan35m&quot;,&quot;Pedro20m&quot;]} ui.selectFromList(l) { return l[0] } nearUsApp.find(contacts, kindOfPlace, timeToGetThereMax) {    if (contacts[0]==&quot;Juan35m&quot;) { return [] }    return [...3 lugares...] //you must try none, 3 near, etc.  } And  TEST  that running the application code you already wrote with different inputs (selecting different contacts) gives the expected results (no places to meet Juan35m in less tha 30min, etc.)
 
Use System Tests to drive Architecture (more on how to do this in your projects in part 2) 08 How do you get all the information the past tests show you need? How do you transport it from one place to another? Are the tools you intend to use available in the all target environments? How reliable are this tools? How fast?  Can you accommodate more than one alternative? Test:  write tests connecting to all the needed data sources and services, check your app understands all the results and errors Test:  deploy simple stress test applications using each of the tools you may use to the target environments Test:  stress test the architecture implement all the communications and data handling required by the components, using stubs only to simulate errors and ensuring you return data for all the relevant scenarios So:  the team is sure the tools work, the application can be deployed, what are the performance limits, etc.
 
Use Integration Tests to drive Design (more on how to do this in your projects in part 2) 08 Test:  write tests to define which requests and responses must support each component of your application Use simple drivers for the requests and stubs to return examples for all the possible responses So:    the team can work simultaneously in various components without integration problems the contracts and dependencies for the components are clear you can refactor anything inside as long as you respect the interface (pass the tests)
 
Use Unit Tests to find the best implementation (more on how to do this in your projects in part 2) 08 Test:  write tests to understand what do you need of each class and method Test:  write tests to show what inputs and outputs are supported So:    anyone can use, extend or modify any class or component without breaking something your code is free of defects you write only what you need in some cases you can have more than one implementation (e.g. critical algorithms, drivers, transport/communication protocols)
QUESTIONS?
Example: withdraw cash from an ATM 03
Unit test each component separately unit test unit test unit test 03
Integration test interaction of two or more components integration test integration test 03
System test usability, load, connectivity, deployment, etc . system test 03
Example: Web +integration of 3p services (GiffGaff) 03
Example: Web +integration of 3p services (GiffGaff) 03 ManInTheMiddle (developers) Selenium-IDE (developers) ManInTheMiddle (developers)
Example: Mobile +integration of 3p services (Walkopedia) 03 curl (developers)

More Related Content

DOCX
Test Driven Development
PDF
Model-Based Testing with Keywords
PPT
Acceptance Testing With Selenium
PDF
Test design techniques
PDF
Software Testing
DOC
Online examination
PPTX
Salesforce connector Example
PDF
Diving into VS 2015 Day2
Test Driven Development
Model-Based Testing with Keywords
Acceptance Testing With Selenium
Test design techniques
Software Testing
Online examination
Salesforce connector Example
Diving into VS 2015 Day2

Viewers also liked (14)

PDF
Hoe word ik een Informatie Held?
PPT
Presentacion 4 slidshare
PDF
Acuril 2016: Transition to customer focused Information services
ODP
Presentacion 4 slidshare
PPTX
Эволюция корпоративных культур
PPTX
2015 03-31 diplomauitreiking go - nationaal archief
PPTX
Introductie Social Media voor Informatieprofessionals
PDF
Introductie Open Data tijdens KBenP Zomerevent 2014
PDF
HTC_Final_Presentation_Team_1 - Copy
PPTX
Спиральная Динамика: Управляемые кризисы.
PPT
Presentatie linked in
PPT
Intermediate referee powerpoint(fhb modify)
PDF
Sociology Essays - Mental health & illness within Sociology
PDF
Análisis de la cadena de valor de la industria de algodón. Caso de estudio de...
Hoe word ik een Informatie Held?
Presentacion 4 slidshare
Acuril 2016: Transition to customer focused Information services
Presentacion 4 slidshare
Эволюция корпоративных культур
2015 03-31 diplomauitreiking go - nationaal archief
Introductie Social Media voor Informatieprofessionals
Introductie Open Data tijdens KBenP Zomerevent 2014
HTC_Final_Presentation_Team_1 - Copy
Спиральная Динамика: Управляемые кризисы.
Presentatie linked in
Intermediate referee powerpoint(fhb modify)
Sociology Essays - Mental health & illness within Sociology
Análisis de la cadena de valor de la industria de algodón. Caso de estudio de...
Ad

Similar to XP through TDD (20)

PDF
AUTOCODECOVERGEN: PROTOTYPE OF DATA DRIVEN UNIT TEST GENRATION TOOL THAT GUAR...
PDF
Anders Claesson - Test Strategies in Agile Projects - EuroSTAR 2010
PDF
Unit Testing in Flutter - From Workflow Essentials to Complex Scenarios
PDF
How to complement TDD with static analysis
DOCX
Dot Net Accenture
ODP
Grails unit testing
PPTX
Test Driven Development (TDD) Preso 360|Flex 2010
PPTX
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
PPT
Why test with flex unit
PPT
The Magic Of Application Lifecycle Management In Vs Public
PPT
Stopping the Rot - Putting Legacy C++ Under Test
PDF
maXbox Starter 36 Software Testing
PPTX
Test driven development in .Net - 2010 + Eclipse
PDF
Test Case Design Techniques in Software Testing_ Elements, Types, and Best Pr...
PDF
Microservices and Prometheus (Microservices NYC 2016)
PPTX
Test-Driven Development
DOCX
PDF
Android Test Driven Development & Android Unit Testing
PPT
PPT
Final Project
AUTOCODECOVERGEN: PROTOTYPE OF DATA DRIVEN UNIT TEST GENRATION TOOL THAT GUAR...
Anders Claesson - Test Strategies in Agile Projects - EuroSTAR 2010
Unit Testing in Flutter - From Workflow Essentials to Complex Scenarios
How to complement TDD with static analysis
Dot Net Accenture
Grails unit testing
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Why test with flex unit
The Magic Of Application Lifecycle Management In Vs Public
Stopping the Rot - Putting Legacy C++ Under Test
maXbox Starter 36 Software Testing
Test driven development in .Net - 2010 + Eclipse
Test Case Design Techniques in Software Testing_ Elements, Types, and Best Pr...
Microservices and Prometheus (Microservices NYC 2016)
Test-Driven Development
Android Test Driven Development & Android Unit Testing
Final Project
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Machine learning based COVID-19 study performance prediction
PDF
KodekX | Application Modernization Development
PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Approach and Philosophy of On baking technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Electronic commerce courselecture one. Pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Dropbox Q2 2025 Financial Results & Investor Presentation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Spectral efficient network and resource selection model in 5G networks
Machine learning based COVID-19 study performance prediction
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Advanced methodologies resolving dimensionality complications for autism neur...
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
MYSQL Presentation for SQL database connectivity
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Approach and Philosophy of On baking technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
Electronic commerce courselecture one. Pdf

XP through TDD

  • 1. eXtreme Programming Introduction TELEFÓNICA I+D Date: © 2010 Telefónica Investigación y Desarrollo, S.A. Unipersonal With Test-Driven Development Jacob Cañadas <jcr@tid.es> Marc Planagumà <mpv@tid.es> Mauricio Cappella <mauricio@pollenizer.com>
  • 2. 01 XP with TDD 02 TDD = Test + driven development 03 V-model for testing 04 Driven Development, why? 05 Steer your project with tests (V-model for TDD) 06 TDD is easy and optimal 07 TDD is the easier way to implement XP and Agile 08 Examples 09 Questions Part 1: overview (1h)
  • 3. 01 Reference architecture. 02 Web frontend and integration of 3rd party services. 03 Mobile applications and services. 04 Provisioning framework. 05 (your example or question here) Part 2: examples (1h)
  • 4. eXtrem Programing Practices:  TDD is core 01
  • 5. eXtrem Programing Practices:  TDD is core 01 TDD
  • 6. Test-Driven Development is: Test Drive Development 02
  • 8.  
  • 9.   Ex: Control access to building Check user credentials, if ok store date
  • 10.   Card Reader DataBase
  • 12.  
  • 13.   func storeUserAccess(userId,accessDate) : mysql.query(“insert into user (id,date) values(userId,accessDate)”) func readUserAccess() : userId,accessDate=openPcd.getLastAccess() return userId,accessDate
  • 14. func accessControlSystem() : userId,accessDate = readUserAccess() if(userAllowed(userId)) print( userId enter building on accessDate) storeUserAccess(userId,accessDate) return true else print( userId can’t enter) return false
  • 15.  
  • 16. Uni Test Method level Test boundaries values Test extreme values Without dependences If (x>=2) return(x) else return(2x)
  • 17.   func storeUserAccess(userId,accessDate) : mysql.query(“insert into user (id,date) values(userId,accessDate)”)   func storeUserAccessTest() : storeUserAccess(‘user123’,’06/04/2010’) accessDate = readLastUserAccess(‘user123’) assertTrue (accessDate = ‘06/04/2010‘)
  • 18. func accessControlSystem() : userId,accessDate = readUserAccess() if(userAllowed(userId)) print( userId enter building on accessDate) storeUserAccess(userId,accessDate) return true else print( userId can’t enter) return false
  • 19.   func storeUserAccessMock(userId,accessDate) : //Nothing to do func readUserAccessMock() : if(firstTime) return ‘userOk’,’06/04/2010’ else return ‘userKo’,’06/04/2010’
  • 20. func accessControlSystem() : userId,accessDate = readUserAccessMock() if(userAllowed(userId)) print( userId enter building on accessDate) storeUserAccessMock(userId,accessDate) return true else print( userId can’t enter) return false
  • 21.   func accessControlSystemTest() : result =accessControlSystem() AssertTrue(result) result =accessControlSystem() AssertFalse(result)
  • 22.  
  • 23.   func accessControlSystemTestIt() : result =accessControlSystem() AssertTrue(result) result =accessControlSystem() AssertFalse(result)
  • 24.  
  • 25.  
  • 26. Driven Development: where should we go? 04
  • 27. Only doing Test is NOT TDD 05
  • 28. 1. Describe intent with tests. 2. Use the tests to validate our solution iteratively 3. Do the simplest thing that could possibly work.
  • 29. Clear user stories and backlog Contract Check the acceptance criteria Doc Based Script Based User interaction
  • 30. Simple design and constant review about: Tecnologines Architecture Ensure you are using the right tools. Deployment Connectivity Performance and SLA
  • 31. Correct orchestration : Interchangeable components. Code simultaneously. Moularization. Define good components contracts and interfaces. Protocol Interfaces API’s
  • 32. Get better Code: Atomic functions No bugs Simple code Test is documnetation. Clear goals minimum effort: Paremeters pre & post conditions
  • 33.  
  • 34. TDD is easy and optimal. 06 Create Time Create Team Create effectiveness
  • 35. TDD is easy and optimal. Use tests to:  Define and mockup integration interfaces. Make clear how your app works. Show how your components or libraries may be used Document what do you expect from 3rd party tools, libraries and services and check compatibility Evaluate implementation alternatives Demo your user stories Refactor your code without breaking something 06
  • 36. TDD is easy, and optimal replaces more expensive practices Do you write a &quot;main&quot; to try a function? make it readable, keep it, and it's TDD (and your documentation too!) Tests are better than Word documents and UML and flow charts: just can run them to know if they are accurate they change with your code and are where you need them. Avoid being blocked by integration problems. Save expensive bug finding. Reduce risks due to long build and release cycles. 06
  • 37. TDD, the easier way to XP and Agile Acceptance criteria : Clear user stories and backlog. Customer tests. Acceptance test : do exactly what the customer asks, no less, no more (the simplest thing that may possibly work) Continuous testing: bug free, easy to deploy (CI) Everybody runs and tests everything: Whole team, Collective Ownership and Coding Standard. TDD makes each developer also an architect and clearly documents her reasoning and decisions: Simple design (KISS) Refactor Without TDD = disaster 07
  • 38.  
  • 39. Example User Story 08 As a: Mobile phone user I want to: receive a list of 3 places to eat at less than 30min from where me and the contacts I select are So that: I can propose my contacts to meet there
  • 40. Use Acceptance Tests to validate UserStory 08 Test 0: create wireframes showing the sequence of screens the user views and validate them with the PO and user Test 0.1: is feasible? write tests to check you can always get the information to generate the right screens in each scenario allContacts= phoneDriver.getContacts() selectedContacts= ui.selectFromList(allContacts) result= nearUsApp.find(selectedContacts,&quot;placeToEat&quot;,30m) if result.length<1 { showMsg(&quot;ERROR: no places found&quot;) } else { m= new List(); foreach place in result {     m.add(place.desc); foreach path in place.contactPath {        m.add(&quot; >&quot;+path.contact+&quot;: &quot;+path.transport)   }}   ui.showList(m) } (most of the mentioned application classes and methods have to be written yet!) BUT now you now exactly what the PO wants and you need!
  • 41. Use Acceptance Test to drive Behavior (more on how to do this in your projects in part 2) 08 Test 0.2: implement what you need as stubs and pass the tests for all thinkable scenarios (you wrote the top layer of your app as) ... result= nearUsApp.find(selectedContacts,&quot;placeToEat&quot;,30m) if result.length<1 { showMsg(&quot;ERROR: no places found&quot;) } else { ...  ui.showList(m) } (now you can use mock objects like) ... phoneDriver.getContacts(){ return [&quot;Juan35m&quot;,&quot;Pedro20m&quot;]} ui.selectFromList(l) { return l[0] } nearUsApp.find(contacts, kindOfPlace, timeToGetThereMax) {   if (contacts[0]==&quot;Juan35m&quot;) { return [] }   return [...3 lugares...] //you must try none, 3 near, etc. } And TEST that running the application code you already wrote with different inputs (selecting different contacts) gives the expected results (no places to meet Juan35m in less tha 30min, etc.)
  • 42.  
  • 43. Use System Tests to drive Architecture (more on how to do this in your projects in part 2) 08 How do you get all the information the past tests show you need? How do you transport it from one place to another? Are the tools you intend to use available in the all target environments? How reliable are this tools? How fast? Can you accommodate more than one alternative? Test: write tests connecting to all the needed data sources and services, check your app understands all the results and errors Test: deploy simple stress test applications using each of the tools you may use to the target environments Test: stress test the architecture implement all the communications and data handling required by the components, using stubs only to simulate errors and ensuring you return data for all the relevant scenarios So: the team is sure the tools work, the application can be deployed, what are the performance limits, etc.
  • 44.  
  • 45. Use Integration Tests to drive Design (more on how to do this in your projects in part 2) 08 Test: write tests to define which requests and responses must support each component of your application Use simple drivers for the requests and stubs to return examples for all the possible responses So:   the team can work simultaneously in various components without integration problems the contracts and dependencies for the components are clear you can refactor anything inside as long as you respect the interface (pass the tests)
  • 46.  
  • 47. Use Unit Tests to find the best implementation (more on how to do this in your projects in part 2) 08 Test: write tests to understand what do you need of each class and method Test: write tests to show what inputs and outputs are supported So:   anyone can use, extend or modify any class or component without breaking something your code is free of defects you write only what you need in some cases you can have more than one implementation (e.g. critical algorithms, drivers, transport/communication protocols)
  • 49. Example: withdraw cash from an ATM 03
  • 50. Unit test each component separately unit test unit test unit test 03
  • 51. Integration test interaction of two or more components integration test integration test 03
  • 52. System test usability, load, connectivity, deployment, etc . system test 03
  • 53. Example: Web +integration of 3p services (GiffGaff) 03
  • 54. Example: Web +integration of 3p services (GiffGaff) 03 ManInTheMiddle (developers) Selenium-IDE (developers) ManInTheMiddle (developers)
  • 55. Example: Mobile +integration of 3p services (Walkopedia) 03 curl (developers)

Editor's Notes

  • #8: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #9: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #10: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #11: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #12: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #13: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #14: 2 funciones simples y una que llama a estas dos   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #15: 2 funciones simples y una que llama a estas dos   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #16: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #18: Ejemplo de unit test   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #19: 2 funciones simples y una que llama a estas dos   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #20: Ejemplos de Mocks  
  • #21: 2 funciones simples y una que llama a estas dos   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #23: V tradicional, tipos de test y que se testea en cada uno   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #25: Se explica que dada una carga el sistema sigue comportandose de manera normal, es concurrente, etc.   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio
  • #26: El cliente puede comprobar que la aplicacion hace lo que el espera   UserStory=&amp;quot;como titular de una cuenta quiero extaer dinero del ATM&amp;quot; (seria bueno que las partes de la V paso a paso, desde aceptación hasta unit, mostrando que se testea en cada paso: 1. acept= una persona hace la oon peracion con/sin fondos suficientes 2. sys= concurrencia, etc. 3. Integracion= ATM Backend del banco 4. unit= modulo &amp;quot;Cuenta&amp;quot; con extraer(monto), depositar(monto) y getSaldo() Por ahi conviene hacer un slide para cada nivel e ir mostrando la V cada vez mas completa en el medio