Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Aug. 25, 2009•0 likes
13 likes
Be the first to like this
Show More
•22,600 views
views
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download to read offline
Report
Technology
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level, presented by Craig Smith & Paul King at the Agile 2009 conference in Chicago
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking:
Taking Your Agile Development
Tools To The Next Level
Craig Smith Dr Paul King
Suncorp ASERT
Overview
Welcome
Images: http://1.bp.blogspot.com/_FNT-_PKRcfs/R-uigRW64pI/AAAAAAAAA7M/iLGM-vOzlRM/s400/vegemite.jpg
http://www.sciencenews.net.au/images/kangaroo-and-baby-joey1.jpg http://www.vtxpress.com/tripleheader-fluke-rigs/knife.jpg I
http://www.sail-world.com/photos/Alt_AustraliaII.jpg http://geology.com/world/map/map-of-australia.gif
According to the
Compact Oxford
Dictionary:
Tool (noun)
1. a device or
implement used to
carry out a
particular function.
2. a thing used to help
perform a job.
3. a person used by
another.
Image: http://i.ehow.com/images/GlobalPhoto/Articles/2065416/dictionary_Full.jpg
Stories
&
Iterations
The
Manual
Way
Images http://www.selfishprogramming.com/wp-content/uploads/2008/10/building-kanban-board.jpg
http://ssmirnov.files.wordpress.com/2009/02/still-life.jpg
Development
Environments
The Manual
Way
Image http://www.xtrasens.com/support/manual/install%20flow.png
http://img.dailymail.co.uk/i/pix/2007/07_01/hammerDM0607_468x584.jpg
Example Environment Tools
Open Source / Free:
VirtualBox: http://www.virtualbox.org
NSIS: http://nsis.sourceforge.net
Linux distributions (various)
http://www.linux.org
http://distrowatch.com
Commercial:
VMWare: http://www.vmware.com
Cloud computing options
http://code.google.com/appengine/
http://aws.amazon.com/ec2/
http://github.com
Environment Tool Maturity
Beginner Intermediate Advanced
Instructions for Automated builds for Automated build for
application environments developer machines
building environments
manually / consistently
Automated environment Testers, team members
tests on demand using similar environment
Plan for pragmatic
programmer techniques
Required hardware / Consider cloud
software computing opportunities
Manual tests for
checking environments
Physical environment Zero cubicles, pairing
renovations stations, breakout /
Co-located team team area
Development Tools
Developers:
Craftsmanship / clean code
Quality non-negotiable
Tool Types:
Integrated Development
Environment (IDE)
Database SQL clients
Version control
Web Service / SOAP tools
File & operating system tools
Image http://www.cornetdesign.com/images/bowling_all2s.jpg
Metrics
http://cybernetnews.com/wp-content/uploads/2007/07/hacker.jpg
Development
Environments
The Manual
Way
Image http://www.domainlanguage.com/_library/images_people_working/designing_at_whiteboard.jpg
http://4.bp.blogspot.com/_9kQQgQD35rY/SaV5p8YBGhI/AAAAAAAAAkg/HOvlhIo7yGI/s1600-
h/06_Red_Green_Refactor.JPG
Example Development Tools
Open Source / Free:
IDE’s (multiple language support)
Eclipse: http://www.eclipse.org
NetBeans: http://www.netbeans.org
SharpDevelop: http://www.icsharpcode.net
RadRails: http://www.aptana.com/rails
Visual Studio Express:
http://www.microsoft.com/express/
Database Clients
DBVisualizer: http://www.dbvis.com/
SQuirreL: http://squirrel-sql.sourceforge.net
Web Service / SOAP Tools
soapUI: http://www.soapui.org
Example Development Tools
Open Source / Free:
Version Control Systems
Subversion: http://subversion.tigris.org
Git: http://git-scm.com
Bazaar: http://bazaar-vcs.org
Mercurial: http://mercurial.selenic.com
File & operating system tools
PowerShell: http://www.microsoft.com/
windowsserver2003/technologies/
management/powershell/default.mspx fish:
http://fishshell.org
Cygwin: http://www.cygwin.com
Miscellaneous OS tools
Example Development Tools
Commercial:
IDE’s (multiple language support)
IntelliJ IDEA / RubyMine / ReSharper:
http://www.jetbrains.com/
Visual Studio:
http://www.microsoft.com/visualstudio
Web Service / SOAP Tools
Oxygen: http://www.oxygenxml.com/
Metrics
Clover: http://www.atlassian.com/software/
clover
Simian: http://www.redhillconsulting.com.au
Profilers
YourKit: http://www.yourkit.com
Development Tool Maturity
Beginner Intermediate Advanced
Usage of IDE with team Mastery of IDE Mastery of advanced
agreed setup keystrokes / features / IDE features / plugin
plugins development
Awareness / use of Usage of advanced
basic tools / metrics Team commitment to
react to metrics output metrics tools & features
Use of version control Usage of distributed
Usage of advanced
version control features version control
Team understanding of
quality Advanced clean code /
Quality non-negotiable /
software craftsman
clean code
Testing Tools
Testers:
Automate
Continuous feedback
Bridge communication gaps
Tool types:
Test specification generation
Test execution / record / log
Test user interfaces
Performance test
Test / incident management
Reporting
Image http://blogs.msdn.com/blogfiles/willy-
peter_schaub/WindowsLiveWriter/VSTSRangersProjectsWCFLoadTestToo.0Sh
ips_7D80/CLIPART_OF_13165_SM_2.jpg
http://2.bp.blogspot.com/_U08AbEz5lx4/Ra9UkCi4EeI/AAAAAAAAAAY/vLpsqL
3uqE0/s320/swisstoolcsopen.jpg
Testing
The Manual
Way
Image http://tell.fll.purdue.edu/JapanProj/FLClipart/Verbs/understand.gif
http://thedailystandup.com/wp-content/uploads/2008/12/istock_000004776276xsmall.jpg
Example Testing Tools
Open Source / Free:
Test Specification – xUnit Tools
JUnit: http://www.junit.org
Nunit: http://www.nunit.org
Test Specification Tools – Expressive/BDD
Spock: http://code.google.com/p/spock/
FitNesse: http://fitnesse.org
Concordion: http://www.concordion.org
Cucumber: http://cukes.info
easyb: http://www.easyb.org
Test Specification Tools – Mocking
NMock: http://www.nmock.org
EasyMock: http://easymock.org
Example Testing Tools
Open Source / Free:
Test Execution / Record / Log / UI
Selenium: http://seleniumhq.org
Watir: http://wtr.rubyforge.org
Tellurium: http://kenai.com/projects/tellurium
WebTest: http://webtest.canoo.com
Performance Test
JMeter: http://jakarta.apache.org/jmeter/
Grinder: http://grinder.sourceforge.net/
Test Management
Radi: http://radi-testdir.sourceforge.net
RTH: http://sourceforge.net/projects/rth/
Example Testing Tools
Commercial:
Test Execution / Record / Log / UI
Twist: http://studios.thoughtworks.com/
twist-agile-test-automation
GreenPepper:
http://www.greenpeppersoftware.com/en/
Squish: http://www.froglogic.com
Integrated
HP Quality Center / QTP / LoadRunner:
https://h10078.www1.hp.com/cda/hpms/
display/main/hpms_home.jsp
?zn=bto&cp=1_4011_100__
SpiraTest: http://www.inflectra.com/SpiraTest/
Testing Tool Maturity
Beginner Intermediate Advanced
Automated developer Test driven 100% test coverage
unit tests development (unit / acceptance /
functional)
Some automated BDD / mock testing
acceptance / functional Developer / tester
tests Automated regression pair programming
tests – new / legacy
Developers / testers Automated performance
working together plus All tests run in CI build testing with functional
combined definition of (unit / acceptance / test reuse
done functional)
Risk based testing
Usage of GUI test Usage of expressive /
robots DSL testing
Based on Elements of Enterprise CI
http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
Continuous Integration
Advantages:
Early warning
Consistent test / integrate
Centrepiece for quality
Practices:
Version control / automated
build / automated test
Commit early & often
Fast feedback
Visible / audible results
Artefacts
Image http://www.michaelfransen.com/wp-
content/uploads/2008/02/wheresthebuild-small.jpg
Continuous
Integration
The Manual
Way
Image http://farm4.static.flickr.com/3122/3121915858_06a783e594.jpg?v=0
http://www.michaelfransen.com/wp-content/uploads/2008/02/wheresthebuild-small.jpg
Continuous Integration Maturity
Beginner Intermediate Advanced
Implementation of Implementation of Usage of build clusters /
core build steps continuous integration slaves / VM snapshots
server to auto-run build
Frequent check-in to Dependency management
version control system Dedicated build & internal repository
machine
Adequate hardware
to run build Advanced / refactored / High frequency check-in
multiple builds to version control
Team commitment to system
fixing broken builds Broken build alerts &
team procedures Builds for environment /
project impediments
Deployment Tools
Advantages:
Repeatable from development
to Production
No “fight night” surprises
Practices:
Automated deployment script
Environment management
Environment tokens
Automated & manual steps
Smoke test / confirmation
Image http://www.serena.com/images/products/dimensions-deploy/deploy-
illustration2-286-23.jpg
http://ciadvantage.com/cs/photos/storage/ctd.gif
Deployment
The Manual
Way
Image http://www.thekua.com/rant/wp-content/uploads/2006/03/RetrospectiveTimelineEvents.jpg
http://farm4.static.flickr.com/3645/3340381990_fa9f004e5b.jpg
Example Deployment Tools
Open Source / Free:
Roll your own (scripts / build / CI server)
Cargo: http://cargo.codehaus.org
Capistrano: http://www.capify.org
SmartFrog: http://www.smartfrog.org
Commercial:
Tableaux: http://www.incanica.com
IBM Rational Suite:
http://www-01.ibm.com/software/rational/
BMC BladeLogic: http://www.bmc.com/
products/offering/bmc-bladelogic-application-
release-manager.html
Deployment Tool Maturity
Beginner Intermediate Advanced
Documented manual Fully scripted Usage of deployment
deployment & rollback deployment & rollback tool (roll your own /
process / checklist where applicable open source /
commercial)
Documented manual Roll your own basic
smoke tests deployment to test Repeatable deployment
environments using to all environments
Automated helper CI server (tokenized)
scripts
Repeatable build for Automated production
“go-live” processes deployment (push
button or automatic)
Based on Elements of Enterprise CI
http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
Cucumber Feature
Feature: Deployment
In order to use the latest version of testApp
A support officer should be able to
Check that testApp.war has been deployed to the remote machine
Scenario: User deploys
Given app testApp
When I deploy
Then the testApp.war file should be deployed to remote
Cucumber / Capistrano Step Definition
[...]
When /^I deploy$/ do
Dir.chdir(@app_dir) do
system "cap deploy:setup"
system "cap deploy"
end
end
Then /^ the testApp.war file should be deployed
to remote$/ do
[...]
Hacking Deployment Tests
Monitoring
The Manual
Way
Image http://upload.wikimedia.org/wikipedia/commons/5/52/Unix-process-list.png
http://www.petri.co.il/images/virtual_vmware_files_explained_03.jpg
http://trubke.net/_nw/1/17916.png
Example Monitoring Tools
Open Source / Free:
Roll your own (scripts / CI server)
Cacti: http://www.cacti.net
Zabbix: http://www.zabbix.com
Nagios: http://www.nagios.org
Monit: http://mmonit.com/monit/
Commercial:
Splunk: http://www.splunk.com
IBM Tivoli: http://www.ibm.com/software/tivoli
Hyperic: http://www.hyperic.com
NetIQ: http://www.netiq.com
Monitoring Tool Maturity
Beginner Intermediate Advanced
Base level / centralised Roll your own basic Usage of monitoring
monitoring on critical monitoring for tools at all levels
components processes / logs / including application
(eg. hardware, operating environments at level
system, web server, application level
database) Monitoring alert process
Refactored logs
Useful logs (logging (central location, Visual display of
levels, log rolling, known redundant details monitoring tool / status
support procedures) fixed / removed)
Monitoring of advanced
Ad-hoc usage of tools / Ad-hoc usage of tools / items (eg. configuration,
procedures for procedures for accounting)
reactive support proactive support
2009-07-14 17:10:00,028 [ERROR,au.com.suncorp.ldocs.web.AbstractAction] Unhandled exception caught in action: null
java.lang.NullPointerException
at au.com.suncorp.ldocs.web.RetrieveSADSAction.retrieveRtf(RetrieveSADSAction.java:98)
at au.com.suncorp.ldocs.web.RetrieveSADSAction.executePost(RetrieveSADSAction.java:59)
at au.com.suncorp.ldocs.web.AbstractAction.performIt(AbstractAction.java:66)
at au.com.suncorp.ldocs.web.AbstractAction.performPost(AbstractAction.java:60)
at com.thoughtworks.web.AbstractAction.execute(AbstractAction.java:58)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at com.thoughtworks.web.struts.CustomRequestProcessor.process(CustomRequestProcessor.java:159)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
2009-07-14 17:10:00,028 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] END REQUEST
2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] Processing a 'GET' for path '/ChibaSADS'
2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] BEGIN REQUEST
2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.command.Command] BEGIN COMMAND
au.com.suncorp.ldocs.command.DocumentGenerationServiceCommand
2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH EFFECTIVE TEMPLATE
2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH TEMPLATE VERSION
2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH TEMPLATE VERSION
2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH EFFECTIVE TEMPLATE
2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] DEEPEN THE QUERY
Hacking Log Files
Wrap Up:
Plan your
tools &
approach
Image http://jenn98.com/bugs/images/bugs-elmer-daffy.jpg
Wrap Up:
Manual
first
Image http://jellyflux.files.wordpress.com/2008/11/woman-surrounded-by-robots.jpg
Wrap Up:
Think
like
Macgyver
Image http://jira.atlassian.com/secure/attachment/16943/macgyver.gif
Wrap Up:
Act like
an A-
Team
Image http://www.popartuk.com/g/l/lgpp31670+i-love-it-when-a-plan-comes-together-weenicons-a-team-poster.jpg
Want More Information?
Craig Smith
http://www.suncorp.com.au
http://www.agileacademy.com.au
craig.smith@suncorp.com.au
@smithcdau
Dr. Paul King
http://www.asert.com.au
paulk@asert.com.au
@paulk_asert
Download this presentation at:
http://www.agile2009.org/node/2840
http://www.slideshare.net/smithcdau
Acknowledgments
Suncorp is one of Australia and New Zealand's largest
diversified financial services providers, supplying banking,
insurance and wealth management products to around 7
million customers through well-established and recognised
brands such as AAMI, Australian Pensioners Insurance
Agency, Shannons, Vero, Asteron and Tyndall, as well as
Suncorp and GIO. Today, Suncorp is Australia's fifth
largest bank and second largest domestic general
insurance group, with over 16,000 staff. Suncorp has
representation in 450 offices, branches and agencies
throughout Australia and New Zealand.
ASERT is one of Australia’s leading suppliers of
development services, mentoring and training in Agile,
Web Services, Web Applications, Java, Groovy and Grails.