SlideShare a Scribd company logo
GW SDAB | DEV TOOLS
Hervé Vũ Roussel
September, 12th 2012
1
Point of views
Questions?
Ask as they come to you!
Agenda

 SVN
 ANT
 JUnit
 Ticketing system

4
5
France
Vietnam
Hervé Vũ Roussel

Unusual name
Career choice
Brain surgeon
Engineer
Astronaut
B.S.,GWU
Honors Scholarship
Gelman Library
CS department
Civil Engineering department
Weekends
Web dev at French consulate
M. Eng., Cornell University
Going to classes
ME

Siemens Medical Solutions, 3.5k emp.
ME

CA (Computer Associates), 15k emp.
Unstoppable
Day 0 | Linked Senior
Day 1 | Linked Senior
Day 2 | Linked Senior
Day 3 | Linked Senior
Day 4 | Linked Senior
Day 5 | Linked Senior
Day 6 | Linked Senior
Day 7 | Linked Senior
Day 8: Happy seniors | Linked Senior
Day 9: More happy seniors | Linked Senior
Today | Linked Senior
Office | Linked Senior
ME

Team | Linked Senior
More team | Linked Senior
Amazing adventure | Linked Senior
40
School VS Real world
Team size
Team location
Project life
Complexity
Customers
47
48
Where will you store your SD code?

To: hroussel@gmail.com
Attachment:
2003-02-01-post-simha-pres.zip

49
Storage
Concurrent access
Version tracking
History
Architecture

54
Hands on | Project
 Project: ZooZooPet
 Educational game for kids

 Web & Android version
 API team

 Company

55
Hands on 1 /3
 Development stage
 Teams
 Team #1: Make the Lion speak
 Team #2: Make the Tiger speak

 Goal: 1.0 release

56
Initial download: svn checkout

57
Code
Submit code: svn commit

59
Submit code: svn commit

60
Submit code commit

History view on repo

61
svn log
svn log [path]
com/linkedsenior

games

video

audio

tic-tac-toe

sudoku

word-search

63
svn diff
svn diff
What was I working on?
Synchronize: svn update

67
68
2-way merge

69
2-way merge GUI

70
71
SVN | Workflow
Synchronize
• svn checkout
• svn update

Publish

Work

• svn commit

• svn add
• svn mkdir
• svn del

Resolve (optional)

Review changes

• svn resolve
• svn merge

• svn diff
• svn status
• svn revert
72
Hands on 1/3 | Outcome

73
ZooZooPet | Best game ever
 1.0 released (1 billion download)
 Thinking about 2.0 features
 More animals
 Team#2 assigned

 Bug found in public release of 1.0!

74
Hands on 2/3
 1.0 released
 Bug #1 filed
 Bug fix on 1.0, release 1.1
 2.0 release

75
Release management
Fix version 1.0 in the wild
Tagging
Tagging 1.0
svn switch [rev] [path]
Creeped up bug
20 sec.
Time to switch revision
30 sec.
Time to clean re-build app
5 min.
Time to find if bug exists
2 sec.
Wiping sweat
<-- 150 rev. -->
Num of rev between v1.0 and v1.8
(20+30+5*60)
*
log2(150)
Calculating…
42 min 6 sec

Time to find guilty rev
Branching
Hands on 2/3 | Outcome

90
svn copy
 Tagging
svn copy -r {rev} http://.../trunk http://.../branches/1.x

 Branching
svn copy -r {rev} http://.../trunk http://.../tags/1.0

91
svn copy
ZooZooPet

trunk

tags

branches

1.0

1.x
92
Problem with evolution of code

93
SVN: 3-way merge

94
Best practices

 What to version control?
 When to commit?
 What to say?
 Trunk policy

95
96
97
98
Runnable
Deliverable
Release early, release often
Versatile build
Complex builds
Overview

 Scripting language
 XML based
 Written in Java

104
Hands on 3/3
 Write a build file for our application
 Follow instructions on SetupAnt wiki page

 Follow instructions on HandsOn3 wiki page

105
Sample build file

106
Target (order)
<target name="init">…
<target name="compile" depends="init“…
<target name="dist" depends="compile“…

107
Target (function body)
<target name="compile" depends="init"
description="compile the source " >
<javac srcdir="${src}" destdir="${build}"/>
</target>

108
Some built-in ANT tasks (API)
<mkdir dir="${dist}/lib"/>
<delete dir="${dist}"/>
<javac srcdir="${src}" destdir="${build}"/>
<jar jarfile="${dist}/lib/MyProject${DSTAMP}.jar" basedir="${build}"/>

109
Variables
<property name=“compile.debug" value=“true"/>

<javac srcdir="src" destdir="build"
debug="${compile.debug}" />

110
Running

111
Advanced ANT
113
114
YAY!!
WHY? | TESTING
WHY? | TESTING
What is it?| Test

Initial state
Scenario
Verification

118
What’s JUnit?
JUnit sample code
@Test
public void simpleAdd() {
Money m12CHF= new Money(12, "CHF");
Money m14CHF= new Money(14, "CHF");
Money expected= new Money(26, "CHF");
Money result= m12CHF.add(m14CHF);
assertTrue(expected.equals(result));
}

120
JUnit | Running
JUnit | Reporting
Test driven development
1. Create a
new test

4. Repeat
steps 2 & 3
until test pass.

2. Run test

3. Code

123
TDD example #1
TicTacToe t = new TicTacToe();
t.makeMove(Position.TOP_LEFT);
t.makeMove(Position.TOP_RIGHT);
t.makeMove(Position.MIDDLE_LEFT);
t.makeMove(Position.MIDDLE_RIGHT);
t.makeMove(Position.BOTTOM_LEFT);
assertTrue(t.getWinnerId(), 1);

124
TDD example #2
TicTacToe t = new TicTacToe("John", "Jim");
t.set(Token.X,
t.set(Token.Y,
t.set(Token.X,
t.set(Token.Y,

0,
2,
0,
2,

0);
0);
1);
1);

t.set(Token.X, 0, 2);
assertEquals(t.getWinner(), "John");

125
Test as living documentation
127
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget
Bust or Budget game rule
class BustOrBudgetGameTest {
@Test
void itShouldEndWhenThereIsOnlyOnePlayingTeam()
{
// Given ...
bobGameDriver.startGame(team1, team2);
// ...
// When ...
bobGameDriver.endTurn(team2, true);
assert bobGameDriver.teamInPlay.size == 1;
// Then
assert bobGameDriver.matchOver == true;
}
}

138
Poll: When to run tests?
1. Before a major deadline
2. After major code change
3. When Prof. Simha looks over your

shoulder
4. When Prof. Parmer looks over your
shoulder
5. All of the above
6. None of the above
139
Fixing a bug
Finding the culprit
7 stages of debugging
println “Hello world :)”

StageI: Denial
println “Before call”
println “After call”
Stage II: Acceptance
println “test”
println “bla”
println “here”
Stage III: Depression
println “1”
println “2”
Stage IV: Acceptance
println “a”
println “aa”
println “aaa”
Stage V: Fatigue
println “!)(@&#$!!!”

Stage VI: Anger
println “why”
println “god”
println “oh”
println “why”
Stage VII: Despair
Deliverance
The bottleneck
When to test?
Rethinking testing
Build tools | Continuous integration
Build tools | CI Report

155
156
157
Bug submission
Bug lifecycle
Bug search
Organization tool
Collaboration tool
Context | Ticket
Velocity
165
166

More Related Content

Viewers also liked

How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
How I learned to stop worrying and love the bugs with Jenkins & Continuous In...How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
Hervé Vũ Roussel
 
Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS
Hervé Vũ Roussel
 
หนังสือ Yii Framework Application Workshop เล่ม 1
หนังสือ Yii Framework Application Workshop เล่ม 1หนังสือ Yii Framework Application Workshop เล่ม 1
หนังสือ Yii Framework Application Workshop เล่ม 1
Manop Kongoon
 
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐานหนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
Manop Kongoon
 
หนังสือ Yii framework Tip 50 เทคนิค Yii Framework
หนังสือ Yii framework Tip 50 เทคนิค Yii Frameworkหนังสือ Yii framework Tip 50 เทคนิค Yii Framework
หนังสือ Yii framework Tip 50 เทคนิค Yii Framework
Manop Kongoon
 
Yii framework 2 basic training
Yii framework 2 basic trainingYii framework 2 basic training
Yii framework 2 basic training
Manop Kongoon
 
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
Manop Kongoon
 
The Climate Challenge: Saving Ourselves
The Climate Challenge: Saving OurselvesThe Climate Challenge: Saving Ourselves
The Climate Challenge: Saving Ourselves
Sustento
 
Envisaging the future
Envisaging the futureEnvisaging the future
Envisaging the future
Sustento
 
Developing a resilient money system
Developing a resilient money systemDeveloping a resilient money system
Developing a resilient money system
Sustento
 
Defusing the debt bomb talk
Defusing the debt bomb talk Defusing the debt bomb talk
Defusing the debt bomb talk
Sustento
 
Human Capital as 21st Century Infrastructure
Human Capital as 21st Century Infrastructure Human Capital as 21st Century Infrastructure
Human Capital as 21st Century Infrastructure
Sustento
 

Viewers also liked (14)

How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
How I learned to stop worrying and love the bugs with Jenkins & Continuous In...How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
How I learned to stop worrying and love the bugs with Jenkins & Continuous In...
 
Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS
 
หนังสือ Yii Framework Application Workshop เล่ม 1
หนังสือ Yii Framework Application Workshop เล่ม 1หนังสือ Yii Framework Application Workshop เล่ม 1
หนังสือ Yii Framework Application Workshop เล่ม 1
 
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐานหนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
 
หนังสือ Yii framework Tip 50 เทคนิค Yii Framework
หนังสือ Yii framework Tip 50 เทคนิค Yii Frameworkหนังสือ Yii framework Tip 50 เทคนิค Yii Framework
หนังสือ Yii framework Tip 50 เทคนิค Yii Framework
 
Yii framework 2 basic training
Yii framework 2 basic trainingYii framework 2 basic training
Yii framework 2 basic training
 
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
HTML PHP MySQL สำหรับเว็บโปรแกรมเมอร์มือใหม่
 
Sierra Club Pro
Sierra Club ProSierra Club Pro
Sierra Club Pro
 
Portfolio Slides
Portfolio SlidesPortfolio Slides
Portfolio Slides
 
The Climate Challenge: Saving Ourselves
The Climate Challenge: Saving OurselvesThe Climate Challenge: Saving Ourselves
The Climate Challenge: Saving Ourselves
 
Envisaging the future
Envisaging the futureEnvisaging the future
Envisaging the future
 
Developing a resilient money system
Developing a resilient money systemDeveloping a resilient money system
Developing a resilient money system
 
Defusing the debt bomb talk
Defusing the debt bomb talk Defusing the debt bomb talk
Defusing the debt bomb talk
 
Human Capital as 21st Century Infrastructure
Human Capital as 21st Century Infrastructure Human Capital as 21st Century Infrastructure
Human Capital as 21st Century Infrastructure
 

Similar to GW SDAB Dev Tools 2012

Real life test; real life situations
Real life test; real life situationsReal life test; real life situations
Real life test; real life situations
Andre Verschelling
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
Ben Hall
 
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for EveryoneAlexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Zabbix
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
Anne Nicolas
 
Velocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing SystemsVelocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing Systems
SOASTA
 
Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)
SOASTA
 
SAST, fight against potential vulnerabilities
SAST, fight against potential vulnerabilitiesSAST, fight against potential vulnerabilities
SAST, fight against potential vulnerabilities
Andrey Karpov
 
Software Testing:
 A Research Travelogue 
(2000–2014)
Software Testing:
 A Research Travelogue 
(2000–2014)Software Testing:
 A Research Travelogue 
(2000–2014)
Software Testing:
 A Research Travelogue 
(2000–2014)
Alex Orso
 
Mutation Testing with PIT
Mutation Testing with PITMutation Testing with PIT
Mutation Testing with PIT
Rafał Leszko
 
Node.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitterNode.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitter
Simen Li
 
Test driven development
Test driven developmentTest driven development
Test driven development
christoforosnalmpantis
 
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in MicroservicesLife Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Sean Chittenden
 
A science-gateway for workflow executions: online and non-clairvoyant self-h...
A science-gateway for workflow executions: online and non-clairvoyant self-h...A science-gateway for workflow executions: online and non-clairvoyant self-h...
A science-gateway for workflow executions: online and non-clairvoyant self-h...
Rafael Ferreira da Silva
 
Esem2014 presentation
Esem2014 presentationEsem2014 presentation
Esem2014 presentation
Tanja Vos
 
Test Driven Development in Python
Test Driven Development in PythonTest Driven Development in Python
Test Driven Development in PythonAnoop Thomas Mathew
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
Johannes Brodwall
 
ncurses in your hobostove
ncurses in your hobostovencurses in your hobostove
ncurses in your hobostoveSmartLogic
 
Brace yourselves, leap second is coming
Brace yourselves, leap second is comingBrace yourselves, leap second is coming
Brace yourselves, leap second is coming
Nati Cohen
 
Testing Automaton - CFSummit 2016
Testing Automaton - CFSummit 2016Testing Automaton - CFSummit 2016
Testing Automaton - CFSummit 2016
Ortus Solutions, Corp
 
Testing automaton
Testing automatonTesting automaton
Testing automaton
ColdFusionConference
 

Similar to GW SDAB Dev Tools 2012 (20)

Real life test; real life situations
Real life test; real life situationsReal life test; real life situations
Real life test; real life situations
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for EveryoneAlexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 
Velocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing SystemsVelocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing Systems
 
Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)
 
SAST, fight against potential vulnerabilities
SAST, fight against potential vulnerabilitiesSAST, fight against potential vulnerabilities
SAST, fight against potential vulnerabilities
 
Software Testing:
 A Research Travelogue 
(2000–2014)
Software Testing:
 A Research Travelogue 
(2000–2014)Software Testing:
 A Research Travelogue 
(2000–2014)
Software Testing:
 A Research Travelogue 
(2000–2014)
 
Mutation Testing with PIT
Mutation Testing with PITMutation Testing with PIT
Mutation Testing with PIT
 
Node.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitterNode.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitter
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in MicroservicesLife Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
 
A science-gateway for workflow executions: online and non-clairvoyant self-h...
A science-gateway for workflow executions: online and non-clairvoyant self-h...A science-gateway for workflow executions: online and non-clairvoyant self-h...
A science-gateway for workflow executions: online and non-clairvoyant self-h...
 
Esem2014 presentation
Esem2014 presentationEsem2014 presentation
Esem2014 presentation
 
Test Driven Development in Python
Test Driven Development in PythonTest Driven Development in Python
Test Driven Development in Python
 
DevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web DevelopmentDevDay.lk - Bare Knuckle Web Development
DevDay.lk - Bare Knuckle Web Development
 
ncurses in your hobostove
ncurses in your hobostovencurses in your hobostove
ncurses in your hobostove
 
Brace yourselves, leap second is coming
Brace yourselves, leap second is comingBrace yourselves, leap second is coming
Brace yourselves, leap second is coming
 
Testing Automaton - CFSummit 2016
Testing Automaton - CFSummit 2016Testing Automaton - CFSummit 2016
Testing Automaton - CFSummit 2016
 
Testing automaton
Testing automatonTesting automaton
Testing automaton
 

Recently uploaded

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 

Recently uploaded (20)

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 

GW SDAB Dev Tools 2012

Editor's Notes

  1. During this talkExpress my opinionAs you move on with your careerYou may find people with different opinionsWhen you talk to these peopleAll I want you to remember Is that I was right
  2. Why?Most commonJoel Spolsky12 Steps to Better Code
  3. … Let me introduce myself
  4. At the same time!
  5. $1M
  6. 2 promotions in 2 yearsManager of dev teamYoungest managerLed team of 5, within team of 40 spread over in 4 continentsDelivered AV/AS sig to 3M+ customers (AOL, Verizon, Fortune 500 etc.)Earned more money than my parents combined
  7. … Looking for a challengeUse tech to empower
  8. …Friend tells me about Charles
  9. … Build prototype1st customer
  10. …Great achievements
  11. … Build beautiful interface&gt;&gt; Pull out table tablet
  12. …Deliver to kiosks, tablets
  13. …We use tech to supportwellness &amp; prog at senior communitiesAlexandria, VA
  14. Customers in 30 states11 people in our team
  15. …We work hard but have fun too
  16. Unlimited vacation
  17. Learning opportunityHumbling experienceToughest challenge
  18. …I like to think that …great soft eng product …is the result of the effort of a great teamLed by vision and strategyEveryone on the team is moving together in the same directionIn order to be efficient, need for structureTools help
  19. …Before I talk about toolsHighlight the differences
  20. …Work with a lot more peopleCommunication (MMM)Everyone is differentCollaborate and come together on product
  21. …Having worked at CA
  22. … Land on project with few years of existenceExpected to last more yearsProject needs to be sustainableand maintainableDecision are made for the long term
  23. … Land on project with existing codeMore developers, more code: dauntingCode not written by youUnderstand the existing and improve on it
  24. …So far you have been dealing with nice professors$$$Expectation, Support
  25. …First feature of SVNImportant because:Code=Asset, IPBackupSecure locationRestricted access
  26. …Second feature of SVNImportant because:Collaborationand sharing
  27. …Third feature of SVNAudit &amp; reviewWho, when, whatRelease management
  28. 1972: SCCS (Bell Labs)2000: SVN (Apache)Most commonBloomberg migrated to SVN in 2010Chromium OSSwas using in SVN as of 20102008: GitHub - Git, Gitorious - Git, BitBucket – Mercurial (Distributed)
  29. … SVN is made up of 2 components:ServerClient
  30. …When you join a project and are granted access to the codeThe first thing you will do isStorage = File structureLocal/working vs repo
  31. … Edit code (working copy)
  32. Uploadchangeset to serverAdd, modify, deletesvn add, svnmkdirPublish to everyoneWho, when, is automatically recorded with what.
  33. …Commit creates a new revCreate new, not modifyLatest rev. no. auto-incrementsEach commit results in snapshot of entire file system treeDeletefile = Removea file from future revision, still exists in past revision
  34. Review, track progressWay to communicateList history of changes@Head
  35. …Ifproject is properly structured, an interesting thing to do is2nd dimension
  36. …If you want to get more details on a changesetCompare file and folder changes
  37. …Another use case for diff
  38. …Other developers will be working on same repo at the same timeSync by downloading latestcode from server
  39. …When you do an SVN update, you may run into an interesting scenarioSame portion of the fileShared data w/ concurrent R/W What design change to avoid conflicts?
  40. ….When yourun into conflictsContent of working copy need to be selected
  41. …Two common scenariosin soft eng delivery
  42. …During dev, typically @HEADDebug version in the wildFind last revision thatledto release
  43. … Use technique calledtaggingBookmark revision with label
  44. …Here label is “1.0”
  45. Revert to state of codebase to given point in time
  46. … Customer reports bug. Latest release was 1.8, didn’t exist in 1.0Find bug by finding rev that introduced the bugDivide and conquer
  47. Run steps that leads to bug
  48. Customers is on my back
  49. …Another common scenario is maintaining a releaseFix bugsDivert from main line of devIsolation
  50. Main line of dev = trunkEach line has own release, purpose1.xTrunkSwitch to branch
  51. Technically, branch = tagPurpose, branch != tag
  52. …SVN copy: snapshot of revision subtree
  53. Can you spot it?
  54. … Bug fix is branchNeed to port to main line of dev
  55. What to version control?Everything you need to buildSource codeResources (config, properties file, etc.)Exclude Generated (class files)Large files: library binariesStatic filesWhen to commit?Too few VS too many changesCohesiveness What to say?Commit commentsTrunk policyMin requirementDon’t break the trunkEveryone is using itMust compileMust pass unit tests (tests coverage)
  56. StorageCollaboration, communicationRelease managementRecommendation: use oneGoogle codeGithub
  57. …Running your app is necessary in order to testWeb:deployed to web serverMobile:SimulatorDesktop: IDE
  58. …Building your app is necessary in order to deliver to end userReady to useWith build tool, you create script to automate steps to have your app in a deliverable state.Web: deployed to web serverMobile: deliver to app storeDesktop: deliver installer to web or CDDistribute for betaPhone Ad-Hoc build Provisioning Portal
  59. Concept popularized by OSS world in late 90sTight feedbackloop with usersCommon todayAdvocated by GoogleToday’s norm:users expect frequent updatesLS = ~6, 7 production release per monthWhy automate? Expected to build veryoften.
  60. …Projects are expected produce different buildsProduce build for target profileDev: debug, local, unsecuredProd: optimized, cloud/domain, securedProduce build for target platformsWhy automate? Consistentparameterized build.
  61. …In academia, run onlyOr simple build with basic steps: compile, link, package or deployLinked Senior4 web projects2 compiled languagesCloud integration100+ library dependenciesDigital signatureEmail notificationInternal web update500+ lines long with 30+ stepsAmazonLarge companiesDedicated build teamsFirefoxInstructions to run a build gives me a headachehttps://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions?redirectlocale=en-US&amp;redirectslug=Build_DocumentationBefore you can build Firefox, you&apos;ll need the build tools listed below and a few gigabytes of free disk space. Builds will be slow unless you have at least 2GB of RAM.Builds do more
  62. Targets = functionTargets can be executed on their own
  63. Built-in ANT tasksArchive TasksAudit/Coverage TasksDeployment TasksDocumentation TasksFile TasksMail TasksSCM Taskshttp://ant.apache.org/manual/tasksoverview.htmlWrite your custom taskExternal ANT tasks (Third party)
  64. Recommendation: do you need to build? Web apps
  65. Have to do itSD storyManualTediousError prone (missed tests)
  66. Beautiful, qualityHappy customers
  67. … Who here has writtennew feature and broken an existingcollaterally?Write code = risk of changing qualityEvolution of codeis unavoidableFramework = easy to run testSafety netRefactor = clarity
  68. Unittesting framework VS integrated1 test per class1 test per componentVery fast
  69. Currency adderRegular java@Test annotationintercepted by JUnit
  70. …Working new feature?Write test first
  71. …Start feature byBDDHelps designTend to write simple code
  72. Easy to changedesignNot restricted by existing classes
  73. …Doc drifts away from code (design changes, new features)Doc often has low priorityTest must passTest must compileTight bond with actual codeSimpleHigh level
  74. Spend as much as possible w/o going over budget
  75. Charles’ turn
  76. Hit / stay
  77. https://linkedsenior.unfuddle.com/a#/projects/4/tickets/by_number/1677I write a test
  78. Excellent steps to reproduceNo crash = doesn’t work as expectedWorst bugs No stacktraceNo starting pointEven with stacktrace, real cause maybe somewhere elseNPEClassCastException
  79. …Searching for cause for bug is painful: That’s why they invented debuggersCowboy style
  80. Short &amp; sweetPragmatic
  81. 5 minutesto edit code
  82. Find the cause:95%
  83. When to test?Every time code changesWhy?early feedbackOverkill?So what?
  84. Wasting time running even if automatedHave someone else runs?ToolsSVN client to download codeBuild scriptAutomated tests=&gt; Integrate the 3?
  85. Continuous integrationBuild serverNotify &amp; report
  86. Early feedbackIf fail, still fresh
  87. Web apps: SeleniumJavascript: JasmineRecommendation: Give unit testing a try
  88. Communication with external/internal usersSteps to reproduce are important
  89. Search for dupsReopen bugKB (How did you fix this?)
  90. Not just for bugsNew featureRoadmap featureIdeasNew features come from: users, yourselfHard to keep track
  91. Agile envSmall iterative cyclesListof ticketsAssignTODO list on steroidFocus, track progress
  92. Ticket tied to IDE resource filteringTicket tied to SVN commit comments
  93. … In one cycle, you close 20 tickets for total of 33 pointsIn another cycle, you close 15 tickets for total of 27 pointsTicketing system allows you to track thisVelocity ~= 30 points per cycleVelocity = speed at which you release featureAbility to predict your release scheduleNew feature? When is it going to comeout?Provide better estimates = happy customers
  94. Recommendation: use one even if it’s excel
  95. Streamline communicationStructure your workflowGuidelines