an introduction to software development - ending an iteration, part 1
TRANSCRIPT
An Introduction To Software
Development Using Python
Spring Semester, 2014
Class #17:
Ending an iteration, Part
1
Where Do We Stand Now?
• User stories and tasks are complete.
• The software development team has been working hard.
• Next:
– How can we spend any extra time that we have?
– How can we fit user testing in?
– Can we do more refactoring or redesign?
– When will we ever fix those bugs?
Image Credit: thecommunicationsstrategist.wordpress.com
Software Development DashboardUser Stories
Burn Down
Next
Completed
Work
Left
Days Left
89
80 60 40 20
Pay with
Visa
Pay with
MCPay with
Paypal
3
3
5
CompleteIn Progress
Pay with Visa / MC / Paypal
What We’ve Accomplished
• Customer driven functionality
• Compiling code
• Monitored builds
• Continuously tested code
• Solid test coverage
• Reliable process tracking
• Pacing that adapts to the team
Test driven development
and automated testing
means
that the code works and
you’ll know if it stops
working!
The burn down graph and your use of velocity means that
your
schedules have real dates and deliverables.
You will know if someone tries to check-in code
that won’t build because of continuous
integration.
Based on user stories and frequent customer
interaction
Image Credit: www.canstockphoto.com
What Most Iterations Don’t Have
• Process improvements
• System testing
• Refactoring of code using lessons learned
• Code cleanup and documentation updates
• Development environment updates
• R&D on new technology being considered
• Personal development time
How can you improve your process next time?
Image Credit: www.clipartof.com
System Testing
• Have to use the system in order to ensure that it works.
– Dedicated end-to-end system testing period
– Let the real users work on the system
• Test the system in a situation that is as close to real-world as is possible.
• System testing is all about reality – the system as a whole, not the individual parts.
Image Credit: cpsobsessed.com
Why Do System Testing?
• Unit testing is a great way to make sure that your specific piece of code works.
• Unit testing can miss the bugs that only show up when different pieces of code are hooked together or when real users start to use the system.
• System testing hooks everything together and treats the system like a black box. The goal is to test the functionality that the user expects.
System testing exercises the functionality of the
system from front-to-back using real-world,
black box scenarios.
Image Credit: joyin6th.blogspot.com
Who Will Do The System Testing?
• Developer Testing
– Already know how the system works
– Know how things work underneath the covers
– Hard to put themselves in the role of a user
• Tester Testing
– Bring a fresh perspective
– Trying to find bugs
– Just want the system to work
Bob
Jane
Image Credit: www.clipartpanda.com
You Need A System To Test!
• You won’t have extra days in your iteration for testing
• You won’t have a system to test until the end of your iteration
• Minimum requirement: the system needs to be system tested at the end of every iteration
– System will not have all of its functionally in the early iterations
– Some user stories will be complete and can be tested
Testing should be done all along – unit
testing. No complete system to test…
A complete system to test
will not be available until the
end of the iteration.
Good System Testing Requires Two Iteration Cycles
• Iterations allow the development team to stay focused
• Provide checkpoints with customers
• You need the same things for good system testing
• How about having two cycles of iteration going at the same time?
Iteration1
Iteration2
Iteration3
FixBugs
Prep for IT
1
Test It. 1 Build
Test It. 2 Build
Test It. 3 Build
Test team signs off on working
version
Mo Iterations Means Mo Problems
• Communication problems
– Inter-team communication issues
– Problem: testing team has questions about last iteration and development team wants to move on
– Solution: Involve testing team rep in development meetings
Image Credit: barbaradenny.com
Mo Iterations Means Mo Problems
• Limited amount of time available for testing
– Need to keep both iterations in synch
– Forcing testing to fit into a limited amount of time
– Need testing estimates for user stories
– Will show you where testing may get hung up
Image Credit: galleryhip.com
Mo Iterations Means Mo Problems
• Fixing bugs while still developing new code
– Development team gets bug reports on 1st iteration while they are working on the 3rd iteration
– Decision: fix immediately, fix in next version, put off for later on
– Treat each bug like a new user story and prioritize accordingly
– Alternative: save time during each iteration to work on bugs
Image Credit: galleryhip.com
Mo Iterations Means Mo Problems
• Dealing with a moving target
– Functionality in user stories can change
– This can frustrate the testing team
– The key is communication!
– Let everyone know when you think something might change
– Make sure that testing team knows that change may occur
Image Credit: www.dreamstime.com
More Iterations =More Communication
• Messy issues: multiple team members, changing requirements, incomplete requirements
• More iteration cycles means more of the same issues – no new issues
• Use your tools to stay in touch with the development team and the testing team
The key to solving most of the problems that you’ll run into while doing
software development is communication. When in doubt, talk with your
team, other teams, the customer, etc…
Image Credit: www.clipartpanda.com
What We Covered Today
1. System testing
2. Iteration problems
Image Credit: http://www.tswdj.com/blog/2011/05/17/the-grooms-checklist/