SlideShare a Scribd company logo
1 of 35
NoahSussman
ns@noahsussman.com
@noahsussman
ToolsandTechniques
JavaScriptStaticAnalysis
SoftwareTestProfessionalsonlinesession
NewYork
May2013
“Lint”
“StaticAnalysis”means“AutomatedReading”
spinroot.com/gerard/pdf/ScrubPaper_rev.pdf
Thegoalofstaticanalysisisto
automateyourselfreadingcode.
—SebastianBergmann
TheCaseForStaticAnalysis
Static analysis can reveal interesting places to start
reading in an unfamiliar code base.
It can also be used to locate areas of the code base
that may benefit from refactoring.
Additionally static analysis may highlight potential
sources of latent bugs.
“Errors”aren’tnecessarilybad.
Edsger Dijkstra famously said that tests can show the
presence of bugs, but never their absence.
Static analysis can tell you where to start reading, but
it can’t tell you where and when to stop reading and
take action.
The feedback from any of these tools is ultimately just
another data point. How to respond to that data is a
problem static analysis can’t solve ;-)
Goodhart’sLaw
Anymetricthatisusedtogauge
performance,willbegamedsuch
thatitisnolongeranaccurate
measureofperformance.
—GerardHolzmann(NASA/JPL)
"reliabilityisasystemproperty,notacomponentproperty"
"sincesmalldefectscanlineupandleadtoabiganomaly…being
meticulousaboutevensmalldefectscanreallypayoff.Everysmall
defectthatyoueliminate,eliminatesonelinkinthechainthatcould
buildtowardalargerproblem.
Acodingstandardcouldhelp.Almosteveryorganizationhasacoding
standardandinmostcasesthedevelopersarecompletelyunawareofit
--theydon'treadit...Ifyoucomeupwithacodingstandardyoubetter
haverulesthatmatter,thatcorrelatewithriskandyoubettermakesure
thatyoucancheckcompliancemechanically."
UniformityandComprehensibility
Checksfordetectableerrors
Find places where semicolon insertion might
produce unintended results
Detect unintentional declaration of global variables
Detect undeclared variables
Warn about potential unintended behavior from ==
Flag usages of eval()
Firstweneedanexistingcodebase.
wget http://code.jquery.com/jquery-1.10.1.js
mv jquery-1.10.1.js jquery.js
JSLint
npm -g install jslint
jslint jquery.js
JSLint is Douglas Crockford's personal linting tool.
It ships with a great default ruleset -- Crockford's own,
constantly updated as he continues to learn about
JavaScript and its pitfalls.
JSLint is highly opinionated. While this is generally
seen as a good thing, there's a limited amount of
flexibility when it comes to disabling individual rules.
It’s hard to apply JSLint to legacy code.
JSHint
npm -g install jshint
jshint jquery.js
JSHint is very similar to JSLint (in fact it began life as
JSLint fork) but all of JSHint’s warnings and errors can
be configured or disabled via command line options or
with a .jshintrc configuration file.
JSONLint
npm -g install jsonlint
jsonlint myFile.json
JSONLint is a validator for the JSON data-interchange
format. JSON is used by almost all modern Web APIs.
JSONLint automates the process of testing whether
there are parsiing errors in a block of JSON.
GoogleClosureCompiler
curl -sO http://closure-compiler.googlecode.com/files/compiler-latest.zip
unzip -qo compiler-latest.zip
java -jar compiler.jar jquery.js
Closure compilation is the closest thing that JavaScript
has to an "interpreter" syntax check like php	
  -­‐l or
ruby	
  -­‐c	
  
Closure also warns you about potential issues such
as missing parameters and undeclared or redefined
variables.
If code won't compile with the Closure Compiler, then
you can be certain said code is deeply hosed in some
fundamental way.
TheGoogleJavaScriptLinter(gjslint)
fixjsstyle
yardstick
ProjectMessDetector(PMD)
Copy-PasteDetector(CPD)
CSSLint
TidyforHTML5
PHPCodeSniffer
JSONLint
GoogleClosureCompiler
JSHint
UseandConfiguration
jsonlint myFile.json
JSONLintinaction
GoogleClosureCompilerinaction
jslint jquery.js
JSLintinaction
jshint jquery.js
JSHintinaction
ConfigureJSHintandClosureCompiler
.jshintrcfile
Usea.jshintrcfile
OutputTuning
http://www.jslint.com/lint.html#options
http://www.jshint.com/docs/#enforcing_options
http://jslinterrors.com
https://developers.google.com/closure/compiler/docs/error-ref
In-the-wildexamplesofoutputtuning
RegularExpressions
jslint jquery.js | 
egrep -v 'is OK.$' | 
egrep -v '^ *$'
This relatively simple regex suppresses status
messages from JSLint. The only lines that will be
printed are lines containing errors and warnings.
RegularExpressions
tidy_ignore_regex='(DOCTYPE|title|not
approved|proprietary attribute|
implicit <body>|trimming empty|
missing <li>)|"tabindex" has invalid
value "-1"|missing </template> before
<li>|inserting implicit <ul>|missing
</ul> before </template>|missing
quote mark for attribute value'
TunetheToolsToMatchTheCode
jslint --predef Meteor --predef Template --predef '$' 
--predef '_' --predef Session --predef setTitle --predef Conf 
--predef google --predef Npm 
--predef makeInfoWindowEvent 
--predef IS_DEV 
--predef IS_PRODUCTION 
--plusplus 
--devel 
--vars 
--nomen 
--sloppy 
--white 
--terse 
--browser jquery.js | 
egrep -v 'is OK.$' | 
egrep -v '^ *$'
TunetheToolsToMatchTheCode
java compiler.jar jquery.js 
--warning_level DEFAULT 
--jscomp_off missingProperties 
--compilation_level ADVANCED_OPTIMIZATIONS 
--externs ../../tests/conf/externs.js | 
> /dev/null
Don’tFeartheFilter
yardstick_runner () {
reasonable_upper_bound_for_CCN=10
result=$(echo $* | 
xargs yardstick | 
grep -v @ | egrep -v '^ ' | 
perl -lnwe 's{^(S+)(s+)(d+).*}{$3$2$1} and print' | 
sort -rn | 
head -n1 | 
xargs -I @ echo @: high cyclomatic complexity.)
count=`echo $result | cut -d ' ' -f1`
if [ $count -gt $reasonable_upper_bound_for_CCN ]
then
echo WARNING: $result >&2
fi
}
Don’tFeartheFilter
ThewholetimeI’mwritingcode,
I’mconstantlytestingmy
assumptions.
—RasmusLerdorf
Questions?
@noahsussman
ns@noahsussman.com
infiniteundo.com

More Related Content

What's hot

Web development basics (Part-4)
Web development basics (Part-4)Web development basics (Part-4)
Web development basics (Part-4)Rajat Pratap Singh
 
Advanced debugging
Advanced debuggingAdvanced debugging
Advanced debuggingAli Akhtar
 
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...Iosif Itkin
 
[Srijan Wednesday Webinars] Choosing the Right Testing Framework
[Srijan Wednesday Webinars] Choosing the Right Testing Framework[Srijan Wednesday Webinars] Choosing the Right Testing Framework
[Srijan Wednesday Webinars] Choosing the Right Testing FrameworkSrijan Technologies
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy CodeEyal Golan
 
Code analyzer: FindBugs and PMD
Code analyzer: FindBugs and PMDCode analyzer: FindBugs and PMD
Code analyzer: FindBugs and PMDKan-Han (John) Lu
 
Functional programming principles and Java 8
Functional programming principles and Java 8Functional programming principles and Java 8
Functional programming principles and Java 8Dragos Balan
 
Specifications pattern
Specifications patternSpecifications pattern
Specifications patternTung Nguyen
 
5 levels of api test automation
5 levels of api test automation5 levels of api test automation
5 levels of api test automationShekharRamphal
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. David Gómez García
 
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...Laura M. Castro
 

What's hot (14)

Web development basics (Part-4)
Web development basics (Part-4)Web development basics (Part-4)
Web development basics (Part-4)
 
20151117 es lint
20151117 es lint20151117 es lint
20151117 es lint
 
me-and-python
me-and-pythonme-and-python
me-and-python
 
Advanced debugging
Advanced debuggingAdvanced debugging
Advanced debugging
 
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
 
[Srijan Wednesday Webinars] Choosing the Right Testing Framework
[Srijan Wednesday Webinars] Choosing the Right Testing Framework[Srijan Wednesday Webinars] Choosing the Right Testing Framework
[Srijan Wednesday Webinars] Choosing the Right Testing Framework
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy Code
 
Code analyzer: FindBugs and PMD
Code analyzer: FindBugs and PMDCode analyzer: FindBugs and PMD
Code analyzer: FindBugs and PMD
 
Functional programming principles and Java 8
Functional programming principles and Java 8Functional programming principles and Java 8
Functional programming principles and Java 8
 
Specifications pattern
Specifications patternSpecifications pattern
Specifications pattern
 
Thinking Functionally
Thinking FunctionallyThinking Functionally
Thinking Functionally
 
5 levels of api test automation
5 levels of api test automation5 levels of api test automation
5 levels of api test automation
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min.
 
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
 

Viewers also liked

Tablas dinamicas
Tablas dinamicasTablas dinamicas
Tablas dinamicasallisonog
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de serviciosLavacentro
 
Hidup Lebih Mulia 2
Hidup Lebih Mulia 2Hidup Lebih Mulia 2
Hidup Lebih Mulia 2suman sutra
 
Criteria Recursos Humanos
Criteria Recursos HumanosCriteria Recursos Humanos
Criteria Recursos HumanosCriteria RRHH
 
Static Analysis: The Art of Fighting without Fighting
Static Analysis: The Art of Fighting without FightingStatic Analysis: The Art of Fighting without Fighting
Static Analysis: The Art of Fighting without FightingRob Ragan
 
Chapter19 foreigncurrencytransactions2008
Chapter19 foreigncurrencytransactions2008Chapter19 foreigncurrencytransactions2008
Chapter19 foreigncurrencytransactions2008Sajid Ali
 
Chapter 1 introduction to computers
Chapter 1   introduction to computersChapter 1   introduction to computers
Chapter 1 introduction to computersMuhammad Faisal
 
Información, Trucos y Consejos de impresión
Información, Trucos y Consejos de impresiónInformación, Trucos y Consejos de impresión
Información, Trucos y Consejos de impresiónimpresum
 
La experiencia estética.- Estefania Cabezas.
La experiencia estética.- Estefania Cabezas.La experiencia estética.- Estefania Cabezas.
La experiencia estética.- Estefania Cabezas.sharonbr96
 
Management de projet agile vs classique pmi atlantic 20120322
Management de projet agile vs classique pmi atlantic 20120322Management de projet agile vs classique pmi atlantic 20120322
Management de projet agile vs classique pmi atlantic 20120322Jean-Luc MAZE
 
Nunca.conte.com.ratinhos
Nunca.conte.com.ratinhosNunca.conte.com.ratinhos
Nunca.conte.com.ratinhosLuzania Lima
 
Code style 2014-07-18-pub
Code style 2014-07-18-pubCode style 2014-07-18-pub
Code style 2014-07-18-pubpersia cai
 
淺談 QR Code
淺談 QR Code淺談 QR Code
淺談 QR CodeKun Chen
 

Viewers also liked (20)

Tablas dinamicas
Tablas dinamicasTablas dinamicas
Tablas dinamicas
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de servicios
 
Manual uh DCS
Manual uh DCSManual uh DCS
Manual uh DCS
 
Hidup Lebih Mulia 2
Hidup Lebih Mulia 2Hidup Lebih Mulia 2
Hidup Lebih Mulia 2
 
Curriculum vitae 03-29-2016
Curriculum vitae 03-29-2016Curriculum vitae 03-29-2016
Curriculum vitae 03-29-2016
 
Noriman
NorimanNoriman
Noriman
 
Criteria Recursos Humanos
Criteria Recursos HumanosCriteria Recursos Humanos
Criteria Recursos Humanos
 
Herramientas web 2
Herramientas web 2Herramientas web 2
Herramientas web 2
 
Static Analysis: The Art of Fighting without Fighting
Static Analysis: The Art of Fighting without FightingStatic Analysis: The Art of Fighting without Fighting
Static Analysis: The Art of Fighting without Fighting
 
Chapter19 foreigncurrencytransactions2008
Chapter19 foreigncurrencytransactions2008Chapter19 foreigncurrencytransactions2008
Chapter19 foreigncurrencytransactions2008
 
Museo Hermitage
Museo HermitageMuseo Hermitage
Museo Hermitage
 
Maestria En Pedagogia
Maestria En PedagogiaMaestria En Pedagogia
Maestria En Pedagogia
 
Chapter 1 introduction to computers
Chapter 1   introduction to computersChapter 1   introduction to computers
Chapter 1 introduction to computers
 
Información, Trucos y Consejos de impresión
Información, Trucos y Consejos de impresiónInformación, Trucos y Consejos de impresión
Información, Trucos y Consejos de impresión
 
Luz y el movimiento ondulatorio
Luz y el movimiento ondulatorioLuz y el movimiento ondulatorio
Luz y el movimiento ondulatorio
 
La experiencia estética.- Estefania Cabezas.
La experiencia estética.- Estefania Cabezas.La experiencia estética.- Estefania Cabezas.
La experiencia estética.- Estefania Cabezas.
 
Management de projet agile vs classique pmi atlantic 20120322
Management de projet agile vs classique pmi atlantic 20120322Management de projet agile vs classique pmi atlantic 20120322
Management de projet agile vs classique pmi atlantic 20120322
 
Nunca.conte.com.ratinhos
Nunca.conte.com.ratinhosNunca.conte.com.ratinhos
Nunca.conte.com.ratinhos
 
Code style 2014-07-18-pub
Code style 2014-07-18-pubCode style 2014-07-18-pub
Code style 2014-07-18-pub
 
淺談 QR Code
淺談 QR Code淺談 QR Code
淺談 QR Code
 

Similar to JavaScript Static Analysis Tools and Techniques - STP Online Session 2013

Static and Dynamic Code Analysis
Static and Dynamic Code AnalysisStatic and Dynamic Code Analysis
Static and Dynamic Code AnalysisAndrey Karpov
 
Looking for Bugs in MonoDevelop
Looking for Bugs in MonoDevelopLooking for Bugs in MonoDevelop
Looking for Bugs in MonoDevelopPVS-Studio
 
Static Analysis
Static AnalysisStatic Analysis
Static Analysisalice yang
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
 
Copy-Paste and Muons
Copy-Paste and MuonsCopy-Paste and Muons
Copy-Paste and MuonsAndrey Karpov
 
PVS-Studio: analyzing ReactOS's code
PVS-Studio: analyzing ReactOS's codePVS-Studio: analyzing ReactOS's code
PVS-Studio: analyzing ReactOS's codePVS-Studio
 
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsIRJET Journal
 
Six reasons to learn JavaScript
Six reasons to learn JavaScriptSix reasons to learn JavaScript
Six reasons to learn JavaScriptOtto Kekäläinen
 
Checking PVS-Studio with Clang
Checking PVS-Studio with ClangChecking PVS-Studio with Clang
Checking PVS-Studio with ClangAndrey Karpov
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsMike Wilcox
 
Concurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and GotchasConcurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and Gotchasamccullo
 
ProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and TricksProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and Tricksnetomi
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniqueAndrey Karpov
 
BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32OpenEBS
 
Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1Max De Marzi
 
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11Profiling PHP - WordPress Meetup Nijmegen 2015-03-11
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11Dennis de Greef
 
How to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningHow to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningPVS-Studio
 
Testing Storm components with Groovy and Spock
Testing Storm components with Groovy and SpockTesting Storm components with Groovy and Spock
Testing Storm components with Groovy and SpockEugene Dvorkin
 

Similar to JavaScript Static Analysis Tools and Techniques - STP Online Session 2013 (20)

Static and Dynamic Code Analysis
Static and Dynamic Code AnalysisStatic and Dynamic Code Analysis
Static and Dynamic Code Analysis
 
Looking for Bugs in MonoDevelop
Looking for Bugs in MonoDevelopLooking for Bugs in MonoDevelop
Looking for Bugs in MonoDevelop
 
Static Analysis
Static AnalysisStatic Analysis
Static Analysis
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShell
 
Copy-Paste and Muons
Copy-Paste and MuonsCopy-Paste and Muons
Copy-Paste and Muons
 
PVS-Studio: analyzing ReactOS's code
PVS-Studio: analyzing ReactOS's codePVS-Studio: analyzing ReactOS's code
PVS-Studio: analyzing ReactOS's code
 
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript Programs
 
Six reasons to learn JavaScript
Six reasons to learn JavaScriptSix reasons to learn JavaScript
Six reasons to learn JavaScript
 
Checking PVS-Studio with Clang
Checking PVS-Studio with ClangChecking PVS-Studio with Clang
Checking PVS-Studio with Clang
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatterns
 
All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
Concurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and GotchasConcurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and Gotchas
 
ProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and TricksProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and Tricks
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis technique
 
BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32
 
Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1
 
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11Profiling PHP - WordPress Meetup Nijmegen 2015-03-11
Profiling PHP - WordPress Meetup Nijmegen 2015-03-11
 
How to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningHow to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one evening
 
Testing Storm components with Groovy and Spock
Testing Storm components with Groovy and SpockTesting Storm components with Groovy and Spock
Testing Storm components with Groovy and Spock
 
All of javascript
All of javascriptAll of javascript
All of javascript
 

More from Noah Sussman

The Invisible Art Of Software Testing
The Invisible Art Of Software TestingThe Invisible Art Of Software Testing
The Invisible Art Of Software TestingNoah Sussman
 
Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Noah Sussman
 
Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Noah Sussman
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Noah Sussman
 
The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012Noah Sussman
 
Selenium in the enterprise what went right and what went wrong so far - sel...
Selenium in the enterprise   what went right and what went wrong so far - sel...Selenium in the enterprise   what went right and what went wrong so far - sel...
Selenium in the enterprise what went right and what went wrong so far - sel...Noah Sussman
 
Software Entomology or Where Do Bugs Come From?
Software Entomology or Where Do Bugs Come From?Software Entomology or Where Do Bugs Come From?
Software Entomology or Where Do Bugs Come From?Noah Sussman
 
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011Noah Sussman
 

More from Noah Sussman (9)

The Invisible Art Of Software Testing
The Invisible Art Of Software TestingThe Invisible Art Of Software Testing
The Invisible Art Of Software Testing
 
Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014
 
Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
 
The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012
 
Selenium in the enterprise what went right and what went wrong so far - sel...
Selenium in the enterprise   what went right and what went wrong so far - sel...Selenium in the enterprise   what went right and what went wrong so far - sel...
Selenium in the enterprise what went right and what went wrong so far - sel...
 
Software Entomology or Where Do Bugs Come From?
Software Entomology or Where Do Bugs Come From?Software Entomology or Where Do Bugs Come From?
Software Entomology or Where Do Bugs Come From?
 
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
 
Scaling Selenium
Scaling SeleniumScaling Selenium
Scaling Selenium
 

Recently uploaded

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Recently uploaded (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

JavaScript Static Analysis Tools and Techniques - STP Online Session 2013