SlideShare ist ein Scribd-Unternehmen logo
1 von 110
Downloaden Sie, um offline zu lesen
Towards
Tooling
what is missing
from our toolbox?
Loren Segal
@lsegal

Friday, November 8, 13
Are Rubyists
good at testing
because they
have good tools?
Friday, November 8, 13
Do Rubyists have
good tools
because they are
good at testing?
Friday, November 8, 13
Do Rubyists have
good tools
because they are
good at testing?
Friday, November 8, 13
Friday, November 8, 13
Tools are
important
Friday, November 8, 13
We have
good tools
Friday, November 8, 13
...sometimes.
Friday, November 8, 13
This talk is
about the

not-so-good

tools

Friday, November 8, 13
Goals
Friday, November 8, 13
1.
Introduce
different tools
Friday, November 8, 13
2.
Find out which
tools we are
missing
Friday, November 8, 13
3.
Write these
tools plz thx!
Be a garbage collector
Friday, November 8, 13
Note:

Google
TOOL NAME + LANGUAGE
You should find the tools
referenced in this talk
Friday, November 8, 13
Kinds of Tools
Friday, November 8, 13
Deployment / Ops
Documentation
Testing
Visualization

High Level

Debugging
Linting
Static Analysis

Low Level

Friday, November 8, 13
Visualization
Friday, November 8, 13
Some of
the most
important tools
are visualization tools
Friday, November 8, 13
Know what
your code
is doing
Friday, November 8, 13
Thread in a sealed box.
Is it dead or alive?

Friday, November 8, 13
Visual Studio

Friday, November 8, 13
Visual Studio

Friday, November 8, 13
XCode

Friday, November 8, 13
VisualVM

Friday, November 8, 13
Discoverability

Friday, November 8, 13
Implementors

Call references

Friday, November 8, 13

ECLIPSE
Not just
IDEs
Friday, November 8, 13
I’ll prove it...

Friday, November 8, 13
Firebug

Friday, November 8, 13
Do you remember
web development
before Firebug?
Friday, November 8, 13
Before: no visibility.

Friday, November 8, 13
Ember Inspector

Friday, November 8, 13
Smalltalk
Friday, November 8, 13
Friday, November 8, 13
Inherently
Visual
Friday, November 8, 13
Where is
Ruby viz?
Friday, November 8, 13
RubyMine

Friday, November 8, 13
Profilers?
Friday, November 8, 13
memprof
Joe Damato
github/ice799/memprof
Friday, November 8, 13
perftools.rb

Friday, November 8, 13
NetBeans / JRuby

Friday, November 8, 13
Use the
JVM
Friday, November 8, 13
Lintng
Friday, November 8, 13
Lint
divide by zero: check
initialized vars: check
...
style: check (last!)
Friday, November 8, 13
Ruby?
Friday, November 8, 13
Reek/Flog/Flay
Does: detect code smells
Does not: find common errors

Friday, November 8, 13
Assumption:
Pretty code is
correct code

Friday, November 8, 13
Friday, November 8, 13
Ugly.
Not “correct”.
Friday, November 8, 13
github.com/lsegal/my_fake_project

Friday, November 8, 13
PS. I ♡
Code
Climate
Friday, November 8, 13
Understand
your tools
Friday, November 8, 13
Code Climate
does not
replace
testing
Friday, November 8, 13
ruby-lint
Yorick Peterse
but it’s new
Friday, November 8, 13
Nothing
comes
standard
Friday, November 8, 13
Other
languages?
Friday, November 8, 13
JSHint (JavaScript)
pylint (Python)
FindBugs (Java)
FxCop (C#)
Friday, November 8, 13
Widely used.
Friday, November 8, 13
Why not
Ruby?
Friday, November 8, 13
Friday, November 8, 13
Static
Analysis
lint++
Friday, November 8, 13
is a
huge field

Friday, November 8, 13
Friday, November 8, 13
Types of “static analysis”
-

Defect Finding

-

Memory Checking / Fuzz Testing

-

Extended Static Checking

-

Model Checking / Data Flow Analysis

-

Symbolic Execution

Friday, November 8, 13
Defect
Finding
Friday, November 8, 13
is basically lint,

Friday, November 8, 13
but with less
emphasis on syntax.

Friday, November 8, 13
The Usual
Suspects
Friday, November 8, 13
Brakeman
Justin Collins
brakemanscanner.org
(Ruby on Rails)
Friday, November 8, 13
Finds common flaws
in Rails code
XSS, SQL injection, mass
assignment
Friday, November 8, 13
Friday, November 8, 13
Static detection of security vulnerabilities
in scripting languages
https://www.usenix.org/legacy/event/sec06/tech/full_papers/xie/xie_html/

Friday, November 8, 13
Fuzz
Testing
Friday, November 8, 13
garbage in...

Friday, November 8, 13
Lots of tools.
C, Java, JS, Python, etc.

Friday, November 8, 13
Lots of papers.

Friday, November 8, 13
“Automated Whitebox
Fuzz Testing”
Microsoft Research

(used in SAGE)
http://research.microsoft.com/en-us/um/people/
pg/public_psfiles/ndss2008.pdf

Friday, November 8, 13
What about us?

Friday, November 8, 13
Heckle
Ryan Davis, Kevin Clark
Friday, November 8, 13
Friday, November 8, 13
Mutant
Markus Schirp

github/mbj/mutant
Friday, November 8, 13
We could use a real fuzz testing tool.

Friday, November 8, 13
FuzzBert?
Martin Bosslet

github/krypt/FuzzBert
Friday, November 8, 13
lots of papers out there
with algorithms to implement

Friday, November 8, 13
LET’S GET

Friday, November 8, 13
Symbolic
Execution
Friday, November 8, 13
Run your code
with no immediate values

Friday, November 8, 13
Similar to
Extended Static Checking
but...

Friday, November 8, 13
Contracts not required
and
Can tell you which inputs
generated valid or invalid state
Friday, November 8, 13
Think:
Automatic Test Case
Generation

Friday, November 8, 13
// @example pow(2, 8) == 256
int pow(int x, int n) {
int v[32] = {x}, result = 0;
for (int i = 1; i < n; i++) {
v[i] = x * v[i-1];
}
return v[n-1];
}

Friday, November 8, 13
SymExe report:
x=1,n=5,result=1
x=2,n=8,result=256
x=1,n=0,error: array out of bounds ←
x=1,n=33,error: array out of bounds ←

Friday, November 8, 13
// @example pow(2, 8) == 256
// @requires n > 0
// @requires n < 32
int pow(int x, int n) {
int v[32] = {x}, result = 0;
for (int i = 1; i < n; i++) {
v[i] = x * v[i-1];
}
return v[n-1];
}

Friday, November 8, 13
Tools?
Friday, November 8, 13
KLEE (LLVM)
Kudzu (JavaScript)
Kiasan (Java, SPARK)

Friday, November 8, 13
Nothing for Ruby*

“Automatic Program Verification and
Test Case Generation of Ruby Programs”
(*)

Friday, November 8, 13
Ruby doesn’t really have a
scientific community.

Friday, November 8, 13
Chicken and egg.

Friday, November 8, 13
Python vs Ruby?
Big boy language?

Friday, November 8, 13
RECAP

Friday, November 8, 13
We are great
at testing,
deployment,
web frameworks
Friday, November 8, 13
Not so good at
visualization,
linting,
static analysis
Friday, November 8, 13
We attract
web developers
because we have good
web tools

Friday, November 8, 13
Could we
build tools
for other
communities?
science, engineering, math
Friday, November 8, 13
Take responsibility.

Friday, November 8, 13
Great tool ideas are
waiting to be implemented

Friday, November 8, 13
Tons of research papers
in fields I mentioned
scholar.google.com
Friday, November 8, 13
I had a whole section on my
favourite research papers.

Friday, November 8, 13
Come find me if you want titles.

Friday, November 8, 13
Thank you.
Slides will be linked on Twitter

@lsegal

Friday, November 8, 13

Weitere ähnliche Inhalte

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 

Empfohlen

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Empfohlen (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

Towards Tooling; A Look at What is Missing From the Ruby Toolbox