This exercise is reasonably straightforward. You answers should look something like this.
Stories:
Add item to shopping cart
Remove item from shopping cart
Show running total for cart
Tasks for Story 1: Add Item to Shopping Cart | |
---|---|
Task | Estimated Time |
Test for adding normal item to cart | 10 minutes |
Test for adding null item to cart | 10 minutes |
Test for adding non existent item to cart | 10 minutes |
Code to make tests run | 20 minutes |
User interface to add items | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 2: Remove Item from Shopping Cart | |
---|---|
Task | Estimated Time |
Test for removing item from cart that is in cart | 10 minutes |
Test for removing null item from cart | 10 minutes |
Test for removing item from cart that is not in cart | 10 minutes |
Code to make tests run | 20 minutes |
User interface to remove items from the cart | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 3: Show Running Total for Cart | |
---|---|
Estimated Time | |
Test for running total being zero when cart is empty | 10 minutes |
Test for cart with one item in | 10 minutes |
Test for cart with 1,000 items in | 10 minutes |
Test for cart with multiples of the same item | 10 minutes |
Code to make tests run | 20 minutes |
User interface to display running total of items | 15 minutes |
in the cart Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
This exercise is a little more difficult than the first because some unknowns need to be investigated before we can give certain timeframes.
Stories:
Spike the existing software to understand how to access the portfolio data
Spike on how to collect all the quote prices for the day
Calculate open price
Calculate the high price
Calculate the low price
Calculate the close price Calculate the profit made on a stock
Tasks for Story 1: Spike the Existing Software to Understand How to Access the Portfolio Data | |
---|---|
Task | Estimated Time |
Does the existing software provide a .NET interface? Web service? Remoting? | 30 minutes |
Does the existing software provide a COM interface? | 30 minutes |
Examine the files saved by the existing software | 1 hour |
Tasks for Story 2: Spike on How to Collect All the Quote Prices for the Day | |
---|---|
Task | Estimated Time |
Does the existing software provide a mechanism for accessing this data? | 30 minutes |
What other software does the customer have that would allow us to gather the data | 1 hour |
Search for a Web service that can provide the data | 1 hour |
Tasks for Story 3: Calculate Open Price | |
---|---|
Task | Estimated Time |
Test that the open on a non trading day is not calculated | 15 minutes |
Test open is calculated correctly based on some hard-coded data | 10 minutes |
Test software performs as expected when no data is obtained for that day | 10 minutes |
Write code to make tests pass | 20 minutes |
Design user interface to display open price | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 4: Calculate the High Price | |
---|---|
Task | Estimated Time |
Test that the high on a non trading day is not calculated | 15 minutes |
Test high is calculated correctly based on some hard coded data | 10 minutes |
Test software performs as expected when no data is obtained for that day | 10 minutes |
Write code to make tests pass | 20 minutes |
Design user interface to display high price | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 5: Calculate the Low Price | |
---|---|
Task | Estimated Time |
Test that the low on a non trading day is not calculated | 15 minutes |
Test low is calculated correctly based on some hard-coded data | 10 minutes |
Test software performs as expected when no data is obtained for that day | 10 minutes |
Write code to make tests pass | 20 minutes |
Design user interface to display low price | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 6: Calculate the Close Price | |
---|---|
Task | Estimated Time |
Test that the close on a non trading day is not calculated | 15 minutes |
Test close is calculated correctly based on some hard-coded data | 10 minutes |
Test software performs as expected when no data is obtained for the previous day | 10 minutes |
Write code to make tests pass | 20 minutes |
Design user interface to display close price | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
Tasks for Story 7: Calculate the Profit Made on a Stock | |
---|---|
Estimated Time | |
Obtain stock volume held from portfolio data | ?(Depends on outcome of the spikes) |
Obtain stock purchase price from portfolio data | ?(Depends on outcome of the spikes) |
Obtain current stock price | ?(Depends on outcome of the spikes) |
Test that a positive profit is calculated correctly | 15 minutes |
Test that a negative profit is calculated correctly | 15 minutes |
Test software performs as expected when no data is obtained from the portfolio | 10 minutes |
Test software performs as expected when the current price cannot be obtained | 10 minutes |
Write code to make tests pass | 20 minutes |
Design user interface to display profit made on a stock | 15 minutes |
Connect user interface to code | 10 minutes |
Check into source control and integrate with rest of system | 5 minutes |
This exercise has an interesting feature in that it has a potentially repeatable story. For every site that the portal connects to, the tasks will be the same.
Stories:
Spike for weather Web sites with data we can use
Spike for severe weather warning information on the Web
Create a Web site with a world map that can be clicked
For every weather source on the Web, provide a clickable area on the world map to access that source’s data
Display sever weather warnings on the Web page
Tasks for Story 1: Spike for Weather Web Sites with Data We Can Use | |
---|---|
Task | Estimated Time |
Do a Web search for world weather sites | 1 hour |
Search for Web services that supply weather information | 1 hour |
Tasks for Story 2: Spike for Severe Weather Warning Information on the Web | |
---|---|
Task | Estimated Time |
Do a Web search for sites containing severe weather warnings | 1 hour |
Search for news sites that might supply severe weather warnings | 1 hour |
Tasks for Story 3: Create a Web Site with a World Map That Can Be Clicked | |
---|---|
Task | Estimated Time |
Create a basic ASPX Web application | 5 minutes |
Add a map of the world image to the index page | 10 minutes |
Add a frame on the page to display the weather for the area clicked | 10 minutes |
Create an image map for the world map image | 10 minutes |
Change the test at the top of the frame to indicate which area has been clicked | 10 minutes |
Check into source control | 5 minutes |
Tasks for Story 4: For Every Weather Source on the Web, Provide a Clickable Area on the World Map to Access That Source’s Data | |
---|---|
Task | Estimated Time |
Associate an area of the world map with the weather source | 10 minutes |
Display the data from the source in the frame (weather for the area) | 20 minutes |
Check into source control | 5 minutes |
This is such a common scenario that I had to include it as one of the exercises. The real problem here is that you do not really know what you are starting with, and the customer has already gone through explaining what he wants and does not want to go through the whole thing again.
Stories:
Validate existing code
Allow user to enter message
Allow user to add tags to message
Send message to each contact in list
Customize e-mail message for each contact based on tags in profile and e-mail message
Tasks for Story 1: Validate Existing Code | |
---|---|
Task | Estimated Time |
Skim through existing code to understand classes | 20 minutes |
Write tests to validate any theories about how the code works | 30 minutes |
Check into source control and integrate with existing system | 5 minutes |
Tasks for Story 2: Allow User to Enter Message | |
---|---|
Task | Estimated Time |
Test to disallow a blank e-mail | 10 minutes |
Test to validate correct processing of non character input to the message | 20 minutes |
Test for a message of maximum length (string length?) | 10 minutes |
Code to pass tests | 20 minutes |
User interface to allow user to type the message | 10 minutes |
Connect code to user interface | 10 minutes |
Check into source control and integrate with existing system | 5 minutes |
Tasks for Story 3: Allow User to Add Tags to Message | |
---|---|
Task | Estimated Time |
Test that a tag in any profile can be added to the message | 15 minutes |
Test that a tag that doesn’t exist in any profile cannot exist in a message | 10 minutes |
Test that a message can contain no tags | 15 minutes |
Test that a message can contain only tagged input | 15 minutes |
Code to pass tests | 20 minutes |
User interface to allow user to select a tag for input | 10 minutes |
Connect code to user interface | 10 minutes |
Check into source control and integrate with existing system | 5 minutes |
Tasks for Story 4: Send Message to Each Contact in List | |
---|---|
Task | Estimated Time |
Test that each contact in the list is sent the message | 10 minutes |
Test when the contact list is empty | 10 minutes |
Test when the contact list contains a maximum number of contacts (have to autogenerate contacts) | 15 minutes |
Test when message is empty | 10 minutes |
Code to pass tests | 20 minutes |
User interface to allow user to send message (button?) | 10 minutes |
Connect code to user interface | 10 minutes |
Check into source control and integrate with existing system | 5 minutes |
Tasks for Story 5: Customize E-mail Message for Each Contact Based on Tags in Profile and E-mail Message | |
---|---|
Estimated Time | |
Test that a profile with no tags is not sent a message containing only tags | 10 minutes |
Test that a profile with all the tags receives the correct message | 10 minutes |
Test that a known (hard-coded) profile receives the correct message from a hard-coded tagged message | 15 minutes |
Test when message is empty | 10 minutes |
Code to pass tests | 20 minutes |
Integrate code with user interface from story 4 | 10 minutes |
Check into source control and integrate with existing system | 5 minutes |
3.12.163.175