SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
High Octane
Dev Teams

Brendan Humphreys
High Octane?
Concepts / History
Four rules of code review
Rik Tamm-Daniels, Attivio, Inc.
High Octane?
Machines vs Humans
Smarter Tools
• Checkstyle, Lint, PMD
• Findbugs
• Clover
Continuous Feedback
Feedback and Audience
1998
2007
Adoption in Atlassian
#1:
Strive for
Ego-Free
Reviews
#1: Ego-Free Reviews
#1: Ego-Free Reviews
• No personal Pronouns
#1: Ego-Free Reviews
• No personal Pronouns
• No point scoring
#1: Ego-Free Reviews
• No personal Pronouns
• No point scoring
• Moderator to police
#2:
Don’t be
a Pedant
#2: Don’t be a
   Pedant
#2: Don’t be a
   Pedant
• Use tools to catch
  coding style,
                enforce

  common errors
#2: Don’t be a
   Pedant
• Use tools to catch
  coding style,
                enforce

  common errors

• Look fortrees forrest,
  not the
            the
#3: Find
 Problems,
Not Solutions
#3: Find Problems, Not Solutions
#3: Find Problems, Not Solutions

•   Except for trivial fixes
#3: Find Problems, Not Solutions

•Except for trivial fixes

• Pair program instead
#4: Embrace Feedback
#4: Embrace Feedback

• Especially if you are
 a junior developer

• You will learn to
 love it!
Agile Quality: High-Octane Style

           Rik Tamm-Daniels
            VP, Engineering
             June 1st, 2009
About Attivio

 •      Located in Newton, MA
 •      Founded August 2007
 •      45+ Employees
 •      What we do: Unified Information Access




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

What are we building?

 •  Attivioʼs Active Intelligence Engine
          –  Unified Information Access Platform
          –  Query Unstructured and Structured Information with the
             Precision of SQL and the Fuzziness of Search
 •  Shipped Product (OEM and Direct)
          –  Maintenance Release Window at the end of each sprint
          –  Minor Release every 3-4 months
          –  Major Releases Every 12-18 months
 •  Product Specs:
          –  100% Java
          –  200 MB Install
          –  200K Lines of Code (8000+ automated tests)




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

What makes Attivio High-Octane?

 •  Our Team
          –  15 Engineers (10 very senior) – Expertise in
             Enterprise Search, Data Warehousing, ETL,
             Linguistics, Data Mining
 •  Our Process
          –  Agile Development
                    •  4 week Sprints: 3 weeks of design/code/document/test and 1
                       week of “Reflection”
          –  Agile QA



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Attivio and Atlassian: How it all began

 •  Atlassian Tools installed on Day 1
          –  Bamboo
          –  JIRA
          –  Confluence
          –  Fisheye
          –  Clover
          –  First Bamboo build was Green!




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Our Process

 •  Evolutionary Process
          –  Sprint-by-sprint incremental process changes
 •  Reliance on Tools
          –  Process Tools: JIRA, Confluence, Clover, Bamboo,
             Fisheye
          –  Dev Tools: SVN, Ant, Eclipse, JMeter
 •  Comprehensive Quality Strategy




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Agile Quality Challenges

 •  Maintaining “Releaseability” of code
          –  Ensure unit tests are built concurrently with code
          –  Have a “light” Release Process
          –  Getting green builds
 •  Where does QA fit in?
          –  Options
                    •  QA “follows” development by one sprint
                    •  Use a traditional QA waterfall model step
                    •  Our Model: a QA sprint before each release
 •  What do QA Engineers do?
          –  Our model: Expert team for critical testing hotspots, critical
             performance tests, higher-level system testing



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Agile + Quality

 •  We focus on three metrics of Code Quality:
          –  How much code is tested and how often?
          –  How quickly can we detect defects?
          –  How quickly can we resolve defects?
 •  We address these with:
          –  Continuous Integration
          –  Code Coverage
          –  Unified Testing



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Continuous Integration - Build Process

 •  We use Bamboo for Continuous Integration,
    Nightly Builds and System Test Builds
          –  Continuous Builds run on each check-in 
          –  Nightly Builds of each Branch are scheduled and
             staggered
          –  System Test Builds depend upon Nightly Builds
 •  All Bamboo Agents run on VMWare Virtual
    Machines



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Build Agent Configuration 
                                                                                                                 Build
Agent

                                                                     Linux
x64

                                                                        VM
                                        Build
Type


                                                          Default

                                                          Agent



Linux
x64
             Linux
x64
               Linux
x64
           Linux
x86
        Windows
         Windows
         Solaris
x64

   VM
                    VM
                      VM
                  VM
            x86
VM
          x64
VM
              VM


  Con,nuous
              Old
Version
              QA
Install/        Full
Nightly
                     Full
Nightly
      Full
Nightly

                                                                                        Code
Check

  Trunk
Build
            Con,nuous
               System
Tests
          Build
                            Build
             Build


  Full
Nightly
                                                                         Full
Nightly

     Build
                                                                                Build





 ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Branching Methodology




                                                         Source:
Collabnet




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Branching Methodology

 •  We use the Unstable Branching Strategy
          –  Fits with the agile methodology better that the Agile
             Branching strategy
                    •  No need to deal with too many branches
                    •  Since our modules are already self contained we are
                       continually integrating all modules right in trunk
                    •  Less merging more branching
                    •  Ready to release code at any time without merging or
                       branching
                             –  In large part because of our test coverage 
                             –  Having system, integration, smoke and performance testing as
                                part of our daily activity




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Code Coverage

 •  High Coverage numbers have produced low-
    defect releases
 •  We ship with better than 80% coverage for ALL
    Releases
 •  80% based on industry best practices
 •  Clover produces reports for our core and add-on
    modules
 •  Integration Points: GUnit (grails), Selenium/
    JUnit, Fluint (Flex)


©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Code Coverage Build

 •  Run separately from other builds to reduce build
    times
 •  Produces Code Coverage Artifacts
          –  Clover
          –  Cobertura
          –  Findbugs
 •  We donʼt use Bambooʼs integrated Clover
    Report because it doesnʼt ft our build directory
    structure (each module built separately)


©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Code Coverage Build Artifacts




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Unified Testing

 •  Unified Testing Defined:
          –  Common Infrastructure (Execution, Reporting)
                    •  Execution: Bamboo
                    •  Reporting: Clover/Bamboo
          –  Single point of defect detection and investigation
                    •  Bamboo + JIRA and Fisheye Integration
 •  Benefits
          –     Fewer systems for QA to learn
          –     Easier to maintain than traditional QA environments
          –     Consistent format for defect reporting and notification
          –     Unified view of system quality
          –     Easier to identify testing gaps



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Unified Testing – How we do it

 •  JUnit - unit and integration tests
 •  Custom ant-based install automation framework
    and system test framework
          –  Generic Ant Build Model
                    •  Heavy use of MacroDefs and AntCalls
                    •  Custom Ant Tasks
          –  Mimics JUnit response and output format
          –  Can be run on build box or run on multiple build boxes
             (multi-node tests, performance tests)



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Unified Testing - Reporting

 •  The combination of Bamboo and Clover give us a
    complete view of product quality
          –     High-level build status 
          –     Test Failure Reports
          –     Build Logs
          –     Build Artifacts (Clover, Findbugs)
 •  JIRA and Fisheye integration allows us to quickly
    identify and resolve problems
          –  JIRA tickets
          –  Check-in Diffs



©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Unified Testing Demo




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Conclusions

 •  Being a High-Octane Dev Team requires focus
    on Quality
 •  A High-Octane Agile Quality Program Needs:
          –  Continuous Integration for Early Defect Detection and
             Resolution
          –  A High-level of Code Coverage
          –  Unified Test Execution for Simplicity
          –  Unified Test Reporting for Visibility
          –  Tooling to Tie it all Together


©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

Discussion Time!




©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.


Weitere ähnliche Inhalte

Was ist angesagt?

How to secure your web applications with NGINX
How to secure your web applications with NGINXHow to secure your web applications with NGINX
How to secure your web applications with NGINXWallarm
 
What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015Leslie Carr
 
Performance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptPerformance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptjeresig
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
Unlocked Nov 2013: Main Slide Pack
Unlocked Nov 2013: Main Slide PackUnlocked Nov 2013: Main Slide Pack
Unlocked Nov 2013: Main Slide PackRackspace Academy
 
The State of WebSockets in Django
The State of WebSockets in DjangoThe State of WebSockets in Django
The State of WebSockets in DjangoRami Sayar
 
Introduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleIntroduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleMartin Etmajer
 
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...Puppet
 
Making Security Usable: Product Engineer Perspective
Making Security Usable: Product Engineer PerspectiveMaking Security Usable: Product Engineer Perspective
Making Security Usable: Product Engineer PerspectiveC4Media
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matterTomas Doran
 
Fedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacFedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacLoretta Auvil
 
Microservices on Application Container Cloud Service
Microservices on Application Container Cloud ServiceMicroservices on Application Container Cloud Service
Microservices on Application Container Cloud ServiceMaarten Smeets
 
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...Acquia
 
HTML5 Multimedia Support
HTML5 Multimedia SupportHTML5 Multimedia Support
HTML5 Multimedia SupportHenry Osborne
 

Was ist angesagt? (17)

How to secure your web applications with NGINX
How to secure your web applications with NGINXHow to secure your web applications with NGINX
How to secure your web applications with NGINX
 
What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015
 
Performance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptPerformance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScript
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Unlocked Nov 2013: Main Slide Pack
Unlocked Nov 2013: Main Slide PackUnlocked Nov 2013: Main Slide Pack
Unlocked Nov 2013: Main Slide Pack
 
Web Application Defences
Web Application DefencesWeb Application Defences
Web Application Defences
 
The State of WebSockets in Django
The State of WebSockets in DjangoThe State of WebSockets in Django
The State of WebSockets in Django
 
Introduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleIntroduction to Automated Deployments with Ansible
Introduction to Automated Deployments with Ansible
 
Unsafe SSL webinar
Unsafe SSL webinarUnsafe SSL webinar
Unsafe SSL webinar
 
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
 
Unit testing js
Unit testing jsUnit testing js
Unit testing js
 
Making Security Usable: Product Engineer Perspective
Making Security Usable: Product Engineer PerspectiveMaking Security Usable: Product Engineer Perspective
Making Security Usable: Product Engineer Perspective
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
Fedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacFedora App Slide 2009 Hastac
Fedora App Slide 2009 Hastac
 
Microservices on Application Container Cloud Service
Microservices on Application Container Cloud ServiceMicroservices on Application Container Cloud Service
Microservices on Application Container Cloud Service
 
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
 
HTML5 Multimedia Support
HTML5 Multimedia SupportHTML5 Multimedia Support
HTML5 Multimedia Support
 

Andere mochten auch

Confluence State Of The Union 2009
Confluence State Of The Union 2009Confluence State Of The Union 2009
Confluence State Of The Union 2009Atlassian
 
Scaling Continuous Integration in the Cloud
Scaling Continuous Integration in the CloudScaling Continuous Integration in the Cloud
Scaling Continuous Integration in the CloudAtlassian
 
Plugin Exchange
Plugin ExchangePlugin Exchange
Plugin ExchangeAtlassian
 
Supercharging Share Point with Enterprise Wiki
Supercharging Share Point with Enterprise WikiSupercharging Share Point with Enterprise Wiki
Supercharging Share Point with Enterprise WikiAtlassian
 
Charlie Talk - Everything At The Click Of A Button
Charlie Talk - Everything At The Click Of A ButtonCharlie Talk - Everything At The Click Of A Button
Charlie Talk - Everything At The Click Of A ButtonAtlassian
 
Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010Atlassian
 

Andere mochten auch (6)

Confluence State Of The Union 2009
Confluence State Of The Union 2009Confluence State Of The Union 2009
Confluence State Of The Union 2009
 
Scaling Continuous Integration in the Cloud
Scaling Continuous Integration in the CloudScaling Continuous Integration in the Cloud
Scaling Continuous Integration in the Cloud
 
Plugin Exchange
Plugin ExchangePlugin Exchange
Plugin Exchange
 
Supercharging Share Point with Enterprise Wiki
Supercharging Share Point with Enterprise WikiSupercharging Share Point with Enterprise Wiki
Supercharging Share Point with Enterprise Wiki
 
Charlie Talk - Everything At The Click Of A Button
Charlie Talk - Everything At The Click Of A ButtonCharlie Talk - Everything At The Click Of A Button
Charlie Talk - Everything At The Click Of A Button
 
Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010
 

Ähnlich wie High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality

The Lean Startup at Web 2.0 Expo
The Lean Startup at Web 2.0 ExpoThe Lean Startup at Web 2.0 Expo
The Lean Startup at Web 2.0 ExpoVenture Hacks
 
2009 05 01 How To Build A Lean Startup Step By Step
2009 05 01 How To Build A Lean Startup Step By Step2009 05 01 How To Build A Lean Startup Step By Step
2009 05 01 How To Build A Lean Startup Step By StepEric Ries
 
Working With People Adl Uni
Working With People Adl UniWorking With People Adl Uni
Working With People Adl UniMatthew Landauer
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)jjhuff
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08kingsfleet
 
Soa R 7 16 08 Appistry Private Clouds Etc Bob Lozano
Soa R 7 16 08   Appistry   Private Clouds Etc Bob LozanoSoa R 7 16 08   Appistry   Private Clouds Etc Bob Lozano
Soa R 7 16 08 Appistry Private Clouds Etc Bob LozanoGovCloud Network
 
Cloud computing, Virtualisation and the Future
Cloud computing, Virtualisation and the FutureCloud computing, Virtualisation and the Future
Cloud computing, Virtualisation and the FutureAke Edlund
 
Nevmug Lighthouse Automation7.1
Nevmug   Lighthouse   Automation7.1Nevmug   Lighthouse   Automation7.1
Nevmug Lighthouse Automation7.1csharney
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAtlassian
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAtlassian
 
Agile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksAgile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksViraf Karai
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationLong Nguyen
 
Secrets of Top Pentesters
Secrets of Top PentestersSecrets of Top Pentesters
Secrets of Top Pentestersamiable_indian
 
An Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord AulkeAn Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord Aulkedpc
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft HelpsSteve Lange
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testingguestc8adce
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static AnalysisConSanFrancisco123
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And MavenPerconaPerformance
 

Ähnlich wie High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality (20)

The Lean Startup at Web 2.0 Expo
The Lean Startup at Web 2.0 ExpoThe Lean Startup at Web 2.0 Expo
The Lean Startup at Web 2.0 Expo
 
2009 05 01 How To Build A Lean Startup Step By Step
2009 05 01 How To Build A Lean Startup Step By Step2009 05 01 How To Build A Lean Startup Step By Step
2009 05 01 How To Build A Lean Startup Step By Step
 
Working With People Adl Uni
Working With People Adl UniWorking With People Adl Uni
Working With People Adl Uni
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08
 
Soa R 7 16 08 Appistry Private Clouds Etc Bob Lozano
Soa R 7 16 08   Appistry   Private Clouds Etc Bob LozanoSoa R 7 16 08   Appistry   Private Clouds Etc Bob Lozano
Soa R 7 16 08 Appistry Private Clouds Etc Bob Lozano
 
Cloud computing, Virtualisation and the Future
Cloud computing, Virtualisation and the FutureCloud computing, Virtualisation and the Future
Cloud computing, Virtualisation and the Future
 
Nevmug Lighthouse Automation7.1
Nevmug   Lighthouse   Automation7.1Nevmug   Lighthouse   Automation7.1
Nevmug Lighthouse Automation7.1
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA Hum
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA Hum
 
Seminar - JBoss Migration
Seminar - JBoss MigrationSeminar - JBoss Migration
Seminar - JBoss Migration
 
Rich Web Clients 20081118
Rich Web Clients 20081118Rich Web Clients 20081118
Rich Web Clients 20081118
 
Agile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source FrameworksAgile Java Testing With Open Source Frameworks
Agile Java Testing With Open Source Frameworks
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Secrets of Top Pentesters
Secrets of Top PentestersSecrets of Top Pentesters
Secrets of Top Pentesters
 
An Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord AulkeAn Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord Aulke
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft Helps
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static Analysis
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And Maven
 

Mehr von Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Mehr von Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Kürzlich hochgeladen

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Kürzlich hochgeladen (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality

  • 2. High Octane? Concepts / History Four rules of code review Rik Tamm-Daniels, Attivio, Inc.
  • 4.
  • 5.
  • 7.
  • 8.
  • 9.
  • 10. Smarter Tools • Checkstyle, Lint, PMD • Findbugs • Clover
  • 12.
  • 13.
  • 15.
  • 16.
  • 17. 1998
  • 18.
  • 19.
  • 20.
  • 21. 2007
  • 25. #1: Ego-Free Reviews • No personal Pronouns
  • 26. #1: Ego-Free Reviews • No personal Pronouns • No point scoring
  • 27. #1: Ego-Free Reviews • No personal Pronouns • No point scoring • Moderator to police
  • 29. #2: Don’t be a Pedant
  • 30. #2: Don’t be a Pedant • Use tools to catch coding style, enforce common errors
  • 31. #2: Don’t be a Pedant • Use tools to catch coding style, enforce common errors • Look fortrees forrest, not the the
  • 33. #3: Find Problems, Not Solutions
  • 34. #3: Find Problems, Not Solutions • Except for trivial fixes
  • 35. #3: Find Problems, Not Solutions •Except for trivial fixes • Pair program instead
  • 37. #4: Embrace Feedback • Especially if you are a junior developer • You will learn to love it!
  • 38. Agile Quality: High-Octane Style Rik Tamm-Daniels VP, Engineering June 1st, 2009
  • 39. About Attivio •  Located in Newton, MA •  Founded August 2007 •  45+ Employees •  What we do: Unified Information Access ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 40. What are we building? •  Attivioʼs Active Intelligence Engine –  Unified Information Access Platform –  Query Unstructured and Structured Information with the Precision of SQL and the Fuzziness of Search •  Shipped Product (OEM and Direct) –  Maintenance Release Window at the end of each sprint –  Minor Release every 3-4 months –  Major Releases Every 12-18 months •  Product Specs: –  100% Java –  200 MB Install –  200K Lines of Code (8000+ automated tests) ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 41. What makes Attivio High-Octane? •  Our Team –  15 Engineers (10 very senior) – Expertise in Enterprise Search, Data Warehousing, ETL, Linguistics, Data Mining •  Our Process –  Agile Development •  4 week Sprints: 3 weeks of design/code/document/test and 1 week of “Reflection” –  Agile QA ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 42. Attivio and Atlassian: How it all began •  Atlassian Tools installed on Day 1 –  Bamboo –  JIRA –  Confluence –  Fisheye –  Clover –  First Bamboo build was Green! ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 43. Our Process •  Evolutionary Process –  Sprint-by-sprint incremental process changes •  Reliance on Tools –  Process Tools: JIRA, Confluence, Clover, Bamboo, Fisheye –  Dev Tools: SVN, Ant, Eclipse, JMeter •  Comprehensive Quality Strategy ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 44. Agile Quality Challenges •  Maintaining “Releaseability” of code –  Ensure unit tests are built concurrently with code –  Have a “light” Release Process –  Getting green builds •  Where does QA fit in? –  Options •  QA “follows” development by one sprint •  Use a traditional QA waterfall model step •  Our Model: a QA sprint before each release •  What do QA Engineers do? –  Our model: Expert team for critical testing hotspots, critical performance tests, higher-level system testing ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 45. Agile + Quality •  We focus on three metrics of Code Quality: –  How much code is tested and how often? –  How quickly can we detect defects? –  How quickly can we resolve defects? •  We address these with: –  Continuous Integration –  Code Coverage –  Unified Testing ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 46. Continuous Integration - Build Process •  We use Bamboo for Continuous Integration, Nightly Builds and System Test Builds –  Continuous Builds run on each check-in –  Nightly Builds of each Branch are scheduled and staggered –  System Test Builds depend upon Nightly Builds •  All Bamboo Agents run on VMWare Virtual Machines ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 47. Build Agent Configuration Build
Agent
 Linux
x64
 VM
 Build
Type
 Default
 Agent
 Linux
x64
 Linux
x64
 Linux
x64
 Linux
x86
 Windows
 Windows
 Solaris
x64
 VM
 VM
 VM
 VM
 x86
VM
 x64
VM
 VM
 Con,nuous
 Old
Version
 QA
Install/ Full
Nightly
 Full
Nightly
 Full
Nightly
 Code
Check
 Trunk
Build
 Con,nuous
 System
Tests
 Build
 Build
 Build
 Full
Nightly
 Full
Nightly
 Build
 Build
 ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 48. Branching Methodology Source:
Collabnet
 ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 49. Branching Methodology •  We use the Unstable Branching Strategy –  Fits with the agile methodology better that the Agile Branching strategy •  No need to deal with too many branches •  Since our modules are already self contained we are continually integrating all modules right in trunk •  Less merging more branching •  Ready to release code at any time without merging or branching –  In large part because of our test coverage –  Having system, integration, smoke and performance testing as part of our daily activity ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 50. Code Coverage •  High Coverage numbers have produced low- defect releases •  We ship with better than 80% coverage for ALL Releases •  80% based on industry best practices •  Clover produces reports for our core and add-on modules •  Integration Points: GUnit (grails), Selenium/ JUnit, Fluint (Flex) ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 51. Code Coverage Build •  Run separately from other builds to reduce build times •  Produces Code Coverage Artifacts –  Clover –  Cobertura –  Findbugs •  We donʼt use Bambooʼs integrated Clover Report because it doesnʼt ft our build directory structure (each module built separately) ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 52. Code Coverage Build Artifacts ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 53. Unified Testing •  Unified Testing Defined: –  Common Infrastructure (Execution, Reporting) •  Execution: Bamboo •  Reporting: Clover/Bamboo –  Single point of defect detection and investigation •  Bamboo + JIRA and Fisheye Integration •  Benefits –  Fewer systems for QA to learn –  Easier to maintain than traditional QA environments –  Consistent format for defect reporting and notification –  Unified view of system quality –  Easier to identify testing gaps ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 54. Unified Testing – How we do it •  JUnit - unit and integration tests •  Custom ant-based install automation framework and system test framework –  Generic Ant Build Model •  Heavy use of MacroDefs and AntCalls •  Custom Ant Tasks –  Mimics JUnit response and output format –  Can be run on build box or run on multiple build boxes (multi-node tests, performance tests) ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 55. Unified Testing - Reporting •  The combination of Bamboo and Clover give us a complete view of product quality –  High-level build status –  Test Failure Reports –  Build Logs –  Build Artifacts (Clover, Findbugs) •  JIRA and Fisheye integration allows us to quickly identify and resolve problems –  JIRA tickets –  Check-in Diffs ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.

  • 57. Conclusions •  Being a High-Octane Dev Team requires focus on Quality •  A High-Octane Agile Quality Program Needs: –  Continuous Integration for Early Defect Detection and Resolution –  A High-level of Code Coverage –  Unified Test Execution for Simplicity –  Unified Test Reporting for Visibility –  Tooling to Tie it all Together ©
2007
Confiden,al
&
Proprietary.
All
Rights
Reserved.