SlideShare a Scribd company logo
Transferring Software Testing
Tools to Practice
ACM SIGSOFT Webinar
Nikolai Tillmann
Microsoft
Judith Bishop
Microsoft Research
Pratap Lakshman
Microsoft
Tao Xie
University of Illinois,
Urbana-Champaign
(Automated) Test Generation
• Human
• Expensive, incomplete, …
• Brute Force
• Pairwise, predefined data, etc…
• Tool Automation!!
…
Dynamic Symbolic Execution
Code to generate inputs for:
Constraints to solve
a!=null
a!=null &&
a.Length>0
a!=null &&
a.Length>0 &&
a[0]==1234567890
void CoverMe(int[] a)
{
if (a == null) return;
if (a.Length > 0)
if (a[0] == 1234567890)
throw new Exception("bug");
}
Observed constraints
a==null
a!=null &&
!(a.Length>0)
a!=null &&
a.Length>0 &&
a[0]!=1234567890
a!=null &&
a.Length>0 &&
a[0]==1234567890
Data
null
{}
{0}
{123…}a==null
a.Length>0
a[0]==123…
T
TF
T
F
F
Execute&MonitorSolve
Choose next path
Done: There is no path left.
Negated condition
[DART: Godefroid et al. PLDI’05]
Microsoft Research Automated Test
Generation Tool: Pex & Relatives
• Pex (released in May 2008)
http://research.microsoft.com/pex/
Microsoft Research Automated Test
Generation Tool: Pex & Relatives
• Pex (released in May 2008)
• 30K downloads after 20 months
• Active user community: 1.4K forum posts during ~3 years
• Shipped with Visual Studio 2015 as IntelliTest
• Moles (released in Sept 2009)
• Shipped with Visual Studio 2012 as Fakes
• “Provide Microsoft Fakes w/ all Visual Studio editions” got
1.5K community votes
http://research.microsoft.com/pex/
What went on
behind the scenes to
build a user base?
Lesson 1. Evolving Vision
void TestAdd(ArrayList a, object o) {
Assume.IsTrue(a!=null);
int i = a.Count;
a.Add(o);
Assert.IsTrue(a[i] == o);
}
Parameterized Unit Tests Supported by Pex
Moles/Fakes
IntelliTest
Pex4Fun/Code Hunt
• Surrounding (Moles/Fakes)
• Retargeting (Pex4Fun/Code Hunt)
• Simplifying (IntelliTest)
Lesson 2. Landing the First Customer
• Developer/manager: “Who took a dependency on your tool?”
• Pex team: “Do you want to be the first?”
• Developer/manager: “I love your tool but no.”
Tool Adoption by (Mass) Target Users
Tool Shipping with Visual Studio
Macro Perspective
Micro Perspective
Lesson 2. Landing the First Customer
• Tackle real-world challenges
• Demo Pex on real-world cases (e.g., ResourceReader) beyond textbook examples
• Demo Moles to well address important scenarios (e.g., unit testing SharePoint code)
• Address technical/non-technical barriers for tech adoption in industry
• Offer tool license not prohibiting commercial use
• Incremental shipping
• Ship experimental reduced versions and gather feedback
• Find early adopters
• Provide quantitative info (reflecting tool’s importance or benefit extent)
• Not all downloads are equal! (e.g., those from Fortune 500)
cont.
Lesson 3. Human Factors –
Generated Data Consumed by Human
• Developer: “Code digger generates a lot of “0” strings as input. I can’t find a
way to create such a string via my own C# code. Could any one show me a C#
snippet? I meant zero terminated string.”
• Pex team: “In C#, a 0 in a string does not mean zero-termination. It’s just
yet another character in the string (a very simple character where all bits are
zero), and you can create as Pex shows the value: “0”.”
• Developer: “Your tool generated “0””
• Pex team: “What did you expect?”
• Developer: “Marc.”
…
Lesson 3. Human Factors –
Generated Name Consumed by Human
• Developer: “Your tool generated a test called Capitalize01. I don’t like it.”
• Pex team: “What did you expect?”
• Developer:“Capitalize_Should_Fail_When_Value_Is_Null.”
Lesson 3. Human Factors –
Generated Results Consumed by Human
Object Creation messages suppressed
(e.g., Covana by Xiao et al. [ICSE’11])
Exception Tree View
Exploration Tree View
Exploration Results View
Lesson 4. Misconceptions
• Someone advertises: “Simply one mouse click and then everything would work
just perfectly”
• Often need environment isolation w/ Moles/Fakes
• “One mouse click, a test generation tool would detect all or most kinds of faults
in the code under test”
• Developer: “Your tool only finds null references.”
• Pex team: “Did you write any assertions?”
• Developer: “Assertion???”
• “I do not need test generation; I already practice unit testing (and/or TDD). Test
generation does not fit into the TDD process”
Lesson 5. Embracing Feedback
Gathered feedback from target tool users:
• Directly, e.g., via
• MSDN Pex forum, tech support, outreach to MS engineers and .NET user groups,
outreach to external early adopters
• Indirectly, e.g., via
• interactions with the Visual Studio team (a tool vendor to its huge user base)
• Lack of basic test isolation in practice => Moles
• Our suggestion of refactoring code for testability faced strong resistance in practice
• Observation at Agile 2008 conference
• Large focus on mock objects and tool support for mock objects
Pex to IntelliTest - Product Group Point of View
Productizing
• Articulate product alignment and value proposition
• (Re)Establish value with the broader community
• Gather feedback and experiences from early practitioners
• Dev Labs extensions on Visual Studio 2013
• Ship layered experiences
• Explore, Persist, Assist, Specify
• Refine the user interface
• Conform with Visual Studio look-n-feel
• Explain/reconcile how the generated code looks like
Feedback
Early drops on VS Code Gallery of the Pex
Extension, and the Code Digger extensions for
Visual Studio 2013
Visual Studio MVP Community
Internal dogfooding by
teams within Microsoft
Uservoice feedback (> 20 ideas)
Stackoverflow
Active forum with questions tagged
with "Pex" or "IntelliTest“
Facebook
https://www.facebook.com/PexMoles/
Twitter
https://twitter.com/pexandmoles
Item Votes
Add support for NUnit and xUnit.net 304
Add Support for VB.NET 336
Make it available with Visual Studio Professional 319
Enable IntelliTest for 64 bit projects 72
Gathering Feedback
Pex to IntelliTest - Adds and Cuts
• Additions
• Externalizing Test Framework support
• Cuts
• Visual Basic Support
• CommandLine Support
• FixIt
• Code Contract integration
• Pex Explorer
• Reporting
From http://bbcode.codeplex.com/
NUnit Extension – 13024 downloads
xUnit.net Extension - 8589 downloads
Pex to IntelliTest - Shipped!
Collaboration with Academia
• Win-win collaboration model
• Win (Industry Lab): longer-term research innovation, man power,
research impacts, …
• Win (University): powerful infrastructure, relevant/important
problems in practice, both research and industry impacts, …
• Hosting academic visitors
• Faculty visits
e.g., Fitnex [Xie et al. DSN’09], Pex4Fun [Tillmann et a. ICSE’13 SEE]
• Student internships
e.g., FloPSy [Lakhotia et al. ICTSS’10], DyGen [Thummalapenta et al. TAP’10]
http://research.microsoft.com/pex/community.aspx#publications
Engaging Broader Academic Communities
• Academic research inspiring internal technology development
• Reggae [Li et al. ASE’09]  Rex [Veanes et al. ICST’10]
• MSeqGen [Thummalapenta et al. FSE’09]  DyGen [Thummalapenta et al. TAP’10]
• …
• Academic research exploring longer-term research frontiers
• DySy [Csallner et al. ICSE’08]
• Seeker [Thummalapenta et al., OOPSLA’11]
• Covana [Xiao et al. ICSE’11]
• SEViz [Honfi et al. ICST’15]
• Pex + Code Contracts [Christakis et al. ICSE’16]
• …
http://research.microsoft.com/pex/community.aspx#publications
Going from Pex to Coding Duels
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Player Implementation
class Player {
public static int Puzzle(int x) {
return x;
}
}
class Test {
public static void Driver(int x) {
if (Secret.Puzzle(x) != Player.Puzzle(x))
throw new Exception(“Mismatch”);
}
}
behavior
Secret Impl == Player Impl
20
About Code Hunt
Blogs and Sites
April 29, 2015
May 15, 2014
www.codehunt.com
research.microsoft.com/codehunt
research.microsoft.com/codehuntcommunity
Data site on Github
Powerful and versatile platform for coding as a game
Built on the symbolic execution of Pex
Addressing different audiences – students, developers, researchers
Data available in the cloud
Unique in working from unit tests not specifications
Open sourced data available for analysis
38 contests, 40,000 users
Aim: Involve Students
Enjoyment adds to long term retention on a task
Discovery is a powerful driver, contrasting with direct instructions
Gaming joins these two, and is hugely popular
Can we add these elements to coding?
Code Hunt can!
www.codehunt.com
It’s a game!
1. iterative gameplay
2. adaptive
3. personalized
4. no cheating
5. clear winning criterion
Score is based on
• how many puzzles solved,
• how well solved, and
• when solved
code
test cases
Code Hunt
• Is a serious programming game
• Works in C# and Java (Python coming)
• Appeals to coders wishing to hone their programming skills
• And also to students learning to code
• Code Hunt has had over 450,000 users in a year
with around 1,000 users a day
• Stickiness (loyalty) is very high
The ah-ha moment
Code Hunt can identify
top coders
Lesson 6: Following the Data
• Java is provided by a source-to-source translator
• We watched which features players used and what errors they made to
concentrate translation efforts for maximum effect
• The bank of over 400 puzzles records difficulty levels
• These are updated by crowdsourcing users attempts
• The vast number of attempts at solving puzzles gives reliable data as to
where programmers have difficulty – see open sourced data
For ImCupSept
257 users x 24 puzzles x approx. 10 tries =
about 13,000 programs`
Summary
• Pex  practice impact by surrounding, retargeting, simplifying
• Moles/Fakes, Pex4Fun/Code Hunt, IntelliTest
• Lessons in transferring tools to practice
1. Evolving vision
2. Landing your first customer
3. Human factors
4. Misconceptions
5. Embracing feedback
• Collaboration/engagement with academia
• Educational impact and lesson learned
6. Following the data
http://research.microsoft.com/pex/
http://www.codehunt.com/
Appendix
Websites
Game
Project
Community
Data Release
Blogs
Office Mix
www.codehunt.com
research.microsoft.com/codehunt
research.microsoft.com/codehuntcommunity
github.com/microsoft/code-hunt
Linked on the Project page
mix.office.com
Results and rewards
Detailed results are presented
Ranking is always based on score, not on time or attempts
Score is based on
• how many puzzles solved,
• how well solved, and
• when solved
Special rewards for contests
Comparing Code Hunt
Code Hunt
A serious online coding game
Built on symbolic execution
Addressing various audiences
Data available in the cloud
IPCC
Annual programming contest
Scored by unit testing
Addressing university students
Questions available on the web

More Related Content

What's hot

Planning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchPlanning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful Research
Tao Xie
 
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven ResearchISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
Tao Xie
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and Security
Tao Xie
 
Software Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that MattersSoftware Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that Matters
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software EngineeringIntelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Transferring Software Testing Tools to Practice (AST 2017 Keynote)Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Tao Xie
 
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
Tao Xie
 
Common Technical Writing Issues
Common Technical Writing IssuesCommon Technical Writing Issues
Common Technical Writing Issues
Tao Xie
 
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
CISPA Helmholtz Center for Information Security
 
Mining Software Repositories
Mining Software RepositoriesMining Software Repositories
Mining Software Repositories
Israel Herraiz
 
About Dewey Hong
About Dewey HongAbout Dewey Hong
About Dewey Hong
Dewey Hong
 
On Impact in Software Engineering Research
On Impact in Software Engineering ResearchOn Impact in Software Engineering Research
On Impact in Software Engineering Research
CISPA Helmholtz Center for Information Security
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
My life as a cyborg
My life as a cyborg My life as a cyborg
My life as a cyborg
Alexander Serebrenik
 
May: Automated Developer Testing: Achievements and Challenges
May: Automated Developer Testing: Achievements and ChallengesMay: Automated Developer Testing: Achievements and Challenges
May: Automated Developer Testing: Achievements and Challenges
TriTAUG
 
Writing acceptable patches: an empirical study of open source project patches
Writing acceptable patches: an empirical study of open source project patchesWriting acceptable patches: an empirical study of open source project patches
Writing acceptable patches: an empirical study of open source project patches
Yida Tao
 
A first look at the integration of machine learning models in complex autonom...
A first look at the integration of machine learning models in complex autonom...A first look at the integration of machine learning models in complex autonom...
A first look at the integration of machine learning models in complex autonom...
Concordia University
 
It Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
It Does What You Say, Not What You Mean: Lessons From A Decade of Program RepairIt Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
It Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
Claire Le Goues
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test Automation
TechWell
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test Automation
TechWell
 

What's hot (20)

Planning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchPlanning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful Research
 
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven ResearchISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and Security
 
Software Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that MattersSoftware Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that Matters
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software EngineeringIntelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software Engineering
 
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Transferring Software Testing Tools to Practice (AST 2017 Keynote)Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
 
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
 
Common Technical Writing Issues
Common Technical Writing IssuesCommon Technical Writing Issues
Common Technical Writing Issues
 
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
 
Mining Software Repositories
Mining Software RepositoriesMining Software Repositories
Mining Software Repositories
 
About Dewey Hong
About Dewey HongAbout Dewey Hong
About Dewey Hong
 
On Impact in Software Engineering Research
On Impact in Software Engineering ResearchOn Impact in Software Engineering Research
On Impact in Software Engineering Research
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)
 
My life as a cyborg
My life as a cyborg My life as a cyborg
My life as a cyborg
 
May: Automated Developer Testing: Achievements and Challenges
May: Automated Developer Testing: Achievements and ChallengesMay: Automated Developer Testing: Achievements and Challenges
May: Automated Developer Testing: Achievements and Challenges
 
Writing acceptable patches: an empirical study of open source project patches
Writing acceptable patches: an empirical study of open source project patchesWriting acceptable patches: an empirical study of open source project patches
Writing acceptable patches: an empirical study of open source project patches
 
A first look at the integration of machine learning models in complex autonom...
A first look at the integration of machine learning models in complex autonom...A first look at the integration of machine learning models in complex autonom...
A first look at the integration of machine learning models in complex autonom...
 
It Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
It Does What You Say, Not What You Mean: Lessons From A Decade of Program RepairIt Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
It Does What You Say, Not What You Mean: Lessons From A Decade of Program Repair
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test Automation
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test Automation
 

Viewers also liked

Advances in Unit Testing: Theory and Practice
Advances in Unit Testing: Theory and PracticeAdvances in Unit Testing: Theory and Practice
Advances in Unit Testing: Theory and Practice
Tao Xie
 
Teaching and Learning Programming and Software Engineering via Interactive Ga...
Teaching and Learning Programming and Software Engineering via Interactive Ga...Teaching and Learning Programming and Software Engineering via Interactive Ga...
Teaching and Learning Programming and Software Engineering via Interactive Ga...
Tao Xie
 
Transferring Software Testing and Analytics Tools to Practice
Transferring Software Testing and Analytics Tools to PracticeTransferring Software Testing and Analytics Tools to Practice
Transferring Software Testing and Analytics Tools to Practice
Tao Xie
 
Awareness Support in Global Software Development: A Systematic Review Based o...
Awareness Support in Global Software Development: A Systematic Review Based o...Awareness Support in Global Software Development: A Systematic Review Based o...
Awareness Support in Global Software Development: A Systematic Review Based o...Marco Aurelio Gerosa
 
What can Bioinformaticians learn from YouTube?
What can Bioinformaticians learn from YouTube?What can Bioinformaticians learn from YouTube?
What can Bioinformaticians learn from YouTube?
Matt Wood
 
Collaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumentiCollaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumenti
Filippo Lanubile
 
DOs and DONT&rsquo;s of Social Analytics
DOs and DONT&rsquo;s of Social AnalyticsDOs and DONT&rsquo;s of Social Analytics
DOs and DONT&rsquo;s of Social AnalyticsChristophe Lauer
 
Kaggle's WISE 2014 challenge
Kaggle's WISE 2014 challenge Kaggle's WISE 2014 challenge
Kaggle's WISE 2014 challenge
Eleftherios Spyromitros-Xioufis
 
Big Data and Social Media Mining in Crisis and Emergency Management
Big Data and Social Media Mining in Crisis and Emergency ManagementBig Data and Social Media Mining in Crisis and Emergency Management
Big Data and Social Media Mining in Crisis and Emergency Management
BYTE Project
 
Towards Discovering the Role of Emotions in Stack Overflow
Towards Discovering the Role of Emotions in Stack OverflowTowards Discovering the Role of Emotions in Stack Overflow
Towards Discovering the Role of Emotions in Stack Overflow
Nicole Novielli
 
Improving Low Quality Stack Overflow Post Detection
Improving Low Quality Stack Overflow Post DetectionImproving Low Quality Stack Overflow Post Detection
Improving Low Quality Stack Overflow Post Detection
Luca Ponzanelli
 
Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3
Ayush Tak
 
StackOverflow Architectural Overview
StackOverflow Architectural OverviewStackOverflow Architectural Overview
StackOverflow Architectural Overview
Folio3 Software
 
Naïve multi label classification of you tube comments using
Naïve multi label classification of you tube comments usingNaïve multi label classification of you tube comments using
Naïve multi label classification of you tube comments using
Nidhi Baranwal
 
Benevol 2012 Keynote: The Social Software (R)evolution
Benevol 2012 Keynote: The Social Software (R)evolutionBenevol 2012 Keynote: The Social Software (R)evolution
Benevol 2012 Keynote: The Social Software (R)evolution
Margaret-Anne Storey
 
The (R)evolution of Social Media in Software Engineering
The (R)evolution of Social Media in Software EngineeringThe (R)evolution of Social Media in Software Engineering
The (R)evolution of Social Media in Software Engineering
Margaret-Anne Storey
 
FSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering ResearchFSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering Research
Margaret-Anne Storey
 
Research industry panel review
Research industry panel reviewResearch industry panel review
Research industry panel review
Margaret-Anne Storey
 
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
Margaret-Anne Storey
 

Viewers also liked (19)

Advances in Unit Testing: Theory and Practice
Advances in Unit Testing: Theory and PracticeAdvances in Unit Testing: Theory and Practice
Advances in Unit Testing: Theory and Practice
 
Teaching and Learning Programming and Software Engineering via Interactive Ga...
Teaching and Learning Programming and Software Engineering via Interactive Ga...Teaching and Learning Programming and Software Engineering via Interactive Ga...
Teaching and Learning Programming and Software Engineering via Interactive Ga...
 
Transferring Software Testing and Analytics Tools to Practice
Transferring Software Testing and Analytics Tools to PracticeTransferring Software Testing and Analytics Tools to Practice
Transferring Software Testing and Analytics Tools to Practice
 
Awareness Support in Global Software Development: A Systematic Review Based o...
Awareness Support in Global Software Development: A Systematic Review Based o...Awareness Support in Global Software Development: A Systematic Review Based o...
Awareness Support in Global Software Development: A Systematic Review Based o...
 
What can Bioinformaticians learn from YouTube?
What can Bioinformaticians learn from YouTube?What can Bioinformaticians learn from YouTube?
What can Bioinformaticians learn from YouTube?
 
Collaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumentiCollaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumenti
 
DOs and DONT&rsquo;s of Social Analytics
DOs and DONT&rsquo;s of Social AnalyticsDOs and DONT&rsquo;s of Social Analytics
DOs and DONT&rsquo;s of Social Analytics
 
Kaggle's WISE 2014 challenge
Kaggle's WISE 2014 challenge Kaggle's WISE 2014 challenge
Kaggle's WISE 2014 challenge
 
Big Data and Social Media Mining in Crisis and Emergency Management
Big Data and Social Media Mining in Crisis and Emergency ManagementBig Data and Social Media Mining in Crisis and Emergency Management
Big Data and Social Media Mining in Crisis and Emergency Management
 
Towards Discovering the Role of Emotions in Stack Overflow
Towards Discovering the Role of Emotions in Stack OverflowTowards Discovering the Role of Emotions in Stack Overflow
Towards Discovering the Role of Emotions in Stack Overflow
 
Improving Low Quality Stack Overflow Post Detection
Improving Low Quality Stack Overflow Post DetectionImproving Low Quality Stack Overflow Post Detection
Improving Low Quality Stack Overflow Post Detection
 
Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3
 
StackOverflow Architectural Overview
StackOverflow Architectural OverviewStackOverflow Architectural Overview
StackOverflow Architectural Overview
 
Naïve multi label classification of you tube comments using
Naïve multi label classification of you tube comments usingNaïve multi label classification of you tube comments using
Naïve multi label classification of you tube comments using
 
Benevol 2012 Keynote: The Social Software (R)evolution
Benevol 2012 Keynote: The Social Software (R)evolutionBenevol 2012 Keynote: The Social Software (R)evolution
Benevol 2012 Keynote: The Social Software (R)evolution
 
The (R)evolution of Social Media in Software Engineering
The (R)evolution of Social Media in Software EngineeringThe (R)evolution of Social Media in Software Engineering
The (R)evolution of Social Media in Software Engineering
 
FSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering ResearchFSE 2016 Panel: The State of Software Engineering Research
FSE 2016 Panel: The State of Software Engineering Research
 
Research industry panel review
Research industry panel reviewResearch industry panel review
Research industry panel review
 
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
SLE 2012 Keynote: Cognitive and Social Challenges of Ontology Use in the Biom...
 

Similar to Transferring Software Testing Tools to Practice

Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
Alexandru Bolboaca
 
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...Matthew Skelton
 
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24
 
How To Start Your InfoSec Career
How To Start Your InfoSec CareerHow To Start Your InfoSec Career
How To Start Your InfoSec Career
Andrew McNicol
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Dinis Cruz
 
How to choose tools for DevOps and Continuous Delivery - #doxlon
How to choose tools for DevOps and Continuous Delivery - #doxlonHow to choose tools for DevOps and Continuous Delivery - #doxlon
How to choose tools for DevOps and Continuous Delivery - #doxlon
Matthew Skelton
 
Matthew Skelton - How to choose tools for DevOps - collaboration over automation
Matthew Skelton - How to choose tools for DevOps - collaboration over automationMatthew Skelton - How to choose tools for DevOps - collaboration over automation
Matthew Skelton - How to choose tools for DevOps - collaboration over automation
Outlyer
 
Case study
Case studyCase study
Case study
karan saini
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedLB Denker
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
Nacho Cougil
 
Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016
Vladislav Fedorischev
 
BDD Primer
BDD PrimerBDD Primer
BDD Primer
Attila Bertók
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and Challenges
Tao Xie
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
Trivadis
 
First steps in testing analytics: Does test code quality matter?
First steps in testing analytics: Does test code quality matter?First steps in testing analytics: Does test code quality matter?
First steps in testing analytics: Does test code quality matter?
Andy Zaidman
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
Nacho Cougil
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
Nacho Cougil
 
TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1
Eelco Visser
 

Similar to Transferring Software Testing Tools to Practice (20)

Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
 
01.intro
01.intro01.intro
01.intro
 
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...
How to choose tools for DevOps and Continuous Delivery - DevOps Manchester me...
 
Outpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOpsOutpost24 webinar: Turning DevOps and security into DevSecOps
Outpost24 webinar: Turning DevOps and security into DevSecOps
 
How To Start Your InfoSec Career
How To Start Your InfoSec CareerHow To Start Your InfoSec Career
How To Start Your InfoSec Career
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
 
How to choose tools for DevOps and Continuous Delivery - #doxlon
How to choose tools for DevOps and Continuous Delivery - #doxlonHow to choose tools for DevOps and Continuous Delivery - #doxlon
How to choose tools for DevOps and Continuous Delivery - #doxlon
 
Matthew Skelton - How to choose tools for DevOps - collaboration over automation
Matthew Skelton - How to choose tools for DevOps - collaboration over automationMatthew Skelton - How to choose tools for DevOps - collaboration over automation
Matthew Skelton - How to choose tools for DevOps - collaboration over automation
 
Case study
Case studyCase study
Case study
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016
 
BDD Primer
BDD PrimerBDD Primer
BDD Primer
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and Challenges
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
 
First steps in testing analytics: Does test code quality matter?
First steps in testing analytics: Does test code quality matter?First steps in testing analytics: Does test code quality matter?
First steps in testing analytics: Does test code quality matter?
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
 
TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1
 

More from Tao Xie

MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software EngineeringIntelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
Diversity and Computing/Engineering: Perspectives from Allies
Diversity and Computing/Engineering: Perspectives from AlliesDiversity and Computing/Engineering: Perspectives from Allies
Diversity and Computing/Engineering: Perspectives from Allies
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Tao Xie
 
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
Tao Xie
 
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
Tao Xie
 
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
Tao Xie
 
Next Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized TestingNext Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized Testing
Tao Xie
 
Csise15 codehunt
Csise15 codehuntCsise15 codehunt
Csise15 codehuntTao Xie
 
Text Analytics for Security
Text Analytics for SecurityText Analytics for Security
Text Analytics for Security
Tao Xie
 
Gamifying Teaching and Learning of Software Engineering and Programming
Gamifying Teaching and Learning of Software Engineering and ProgrammingGamifying Teaching and Learning of Software Engineering and Programming
Gamifying Teaching and Learning of Software Engineering and Programming
Tao Xie
 
Tutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTutorial: Text Analytics for Security
Tutorial: Text Analytics for Security
Tao Xie
 
Software Analytics: Towards Software Mining that Matters (2014)
Software Analytics:Towards Software Mining that Matters (2014)Software Analytics:Towards Software Mining that Matters (2014)
Software Analytics: Towards Software Mining that Matters (2014)
Tao Xie
 

More from Tao Xie (13)

MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software EngineeringIntelligent Software Engineering: Synergy between AI and Software Engineering
Intelligent Software Engineering: Synergy between AI and Software Engineering
 
Diversity and Computing/Engineering: Perspectives from Allies
Diversity and Computing/Engineering: Perspectives from AlliesDiversity and Computing/Engineering: Perspectives from Allies
Diversity and Computing/Engineering: Perspectives from Allies
 
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...
 
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
 
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
 
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
 
Next Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized TestingNext Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized Testing
 
Csise15 codehunt
Csise15 codehuntCsise15 codehunt
Csise15 codehunt
 
Text Analytics for Security
Text Analytics for SecurityText Analytics for Security
Text Analytics for Security
 
Gamifying Teaching and Learning of Software Engineering and Programming
Gamifying Teaching and Learning of Software Engineering and ProgrammingGamifying Teaching and Learning of Software Engineering and Programming
Gamifying Teaching and Learning of Software Engineering and Programming
 
Tutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTutorial: Text Analytics for Security
Tutorial: Text Analytics for Security
 
Software Analytics: Towards Software Mining that Matters (2014)
Software Analytics:Towards Software Mining that Matters (2014)Software Analytics:Towards Software Mining that Matters (2014)
Software Analytics: Towards Software Mining that Matters (2014)
 

Recently uploaded

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

Transferring Software Testing Tools to Practice

  • 1. Transferring Software Testing Tools to Practice ACM SIGSOFT Webinar Nikolai Tillmann Microsoft Judith Bishop Microsoft Research Pratap Lakshman Microsoft Tao Xie University of Illinois, Urbana-Champaign
  • 2. (Automated) Test Generation • Human • Expensive, incomplete, … • Brute Force • Pairwise, predefined data, etc… • Tool Automation!! …
  • 3. Dynamic Symbolic Execution Code to generate inputs for: Constraints to solve a!=null a!=null && a.Length>0 a!=null && a.Length>0 && a[0]==1234567890 void CoverMe(int[] a) { if (a == null) return; if (a.Length > 0) if (a[0] == 1234567890) throw new Exception("bug"); } Observed constraints a==null a!=null && !(a.Length>0) a!=null && a.Length>0 && a[0]!=1234567890 a!=null && a.Length>0 && a[0]==1234567890 Data null {} {0} {123…}a==null a.Length>0 a[0]==123… T TF T F F Execute&MonitorSolve Choose next path Done: There is no path left. Negated condition [DART: Godefroid et al. PLDI’05]
  • 4. Microsoft Research Automated Test Generation Tool: Pex & Relatives • Pex (released in May 2008) http://research.microsoft.com/pex/
  • 5. Microsoft Research Automated Test Generation Tool: Pex & Relatives • Pex (released in May 2008) • 30K downloads after 20 months • Active user community: 1.4K forum posts during ~3 years • Shipped with Visual Studio 2015 as IntelliTest • Moles (released in Sept 2009) • Shipped with Visual Studio 2012 as Fakes • “Provide Microsoft Fakes w/ all Visual Studio editions” got 1.5K community votes http://research.microsoft.com/pex/ What went on behind the scenes to build a user base?
  • 6. Lesson 1. Evolving Vision void TestAdd(ArrayList a, object o) { Assume.IsTrue(a!=null); int i = a.Count; a.Add(o); Assert.IsTrue(a[i] == o); } Parameterized Unit Tests Supported by Pex Moles/Fakes IntelliTest Pex4Fun/Code Hunt • Surrounding (Moles/Fakes) • Retargeting (Pex4Fun/Code Hunt) • Simplifying (IntelliTest)
  • 7. Lesson 2. Landing the First Customer • Developer/manager: “Who took a dependency on your tool?” • Pex team: “Do you want to be the first?” • Developer/manager: “I love your tool but no.” Tool Adoption by (Mass) Target Users Tool Shipping with Visual Studio Macro Perspective Micro Perspective
  • 8. Lesson 2. Landing the First Customer • Tackle real-world challenges • Demo Pex on real-world cases (e.g., ResourceReader) beyond textbook examples • Demo Moles to well address important scenarios (e.g., unit testing SharePoint code) • Address technical/non-technical barriers for tech adoption in industry • Offer tool license not prohibiting commercial use • Incremental shipping • Ship experimental reduced versions and gather feedback • Find early adopters • Provide quantitative info (reflecting tool’s importance or benefit extent) • Not all downloads are equal! (e.g., those from Fortune 500) cont.
  • 9. Lesson 3. Human Factors – Generated Data Consumed by Human • Developer: “Code digger generates a lot of “0” strings as input. I can’t find a way to create such a string via my own C# code. Could any one show me a C# snippet? I meant zero terminated string.” • Pex team: “In C#, a 0 in a string does not mean zero-termination. It’s just yet another character in the string (a very simple character where all bits are zero), and you can create as Pex shows the value: “0”.” • Developer: “Your tool generated “0”” • Pex team: “What did you expect?” • Developer: “Marc.” …
  • 10. Lesson 3. Human Factors – Generated Name Consumed by Human • Developer: “Your tool generated a test called Capitalize01. I don’t like it.” • Pex team: “What did you expect?” • Developer:“Capitalize_Should_Fail_When_Value_Is_Null.”
  • 11. Lesson 3. Human Factors – Generated Results Consumed by Human Object Creation messages suppressed (e.g., Covana by Xiao et al. [ICSE’11]) Exception Tree View Exploration Tree View Exploration Results View
  • 12. Lesson 4. Misconceptions • Someone advertises: “Simply one mouse click and then everything would work just perfectly” • Often need environment isolation w/ Moles/Fakes • “One mouse click, a test generation tool would detect all or most kinds of faults in the code under test” • Developer: “Your tool only finds null references.” • Pex team: “Did you write any assertions?” • Developer: “Assertion???” • “I do not need test generation; I already practice unit testing (and/or TDD). Test generation does not fit into the TDD process”
  • 13. Lesson 5. Embracing Feedback Gathered feedback from target tool users: • Directly, e.g., via • MSDN Pex forum, tech support, outreach to MS engineers and .NET user groups, outreach to external early adopters • Indirectly, e.g., via • interactions with the Visual Studio team (a tool vendor to its huge user base) • Lack of basic test isolation in practice => Moles • Our suggestion of refactoring code for testability faced strong resistance in practice • Observation at Agile 2008 conference • Large focus on mock objects and tool support for mock objects
  • 14. Pex to IntelliTest - Product Group Point of View Productizing • Articulate product alignment and value proposition • (Re)Establish value with the broader community • Gather feedback and experiences from early practitioners • Dev Labs extensions on Visual Studio 2013 • Ship layered experiences • Explore, Persist, Assist, Specify • Refine the user interface • Conform with Visual Studio look-n-feel • Explain/reconcile how the generated code looks like
  • 15. Feedback Early drops on VS Code Gallery of the Pex Extension, and the Code Digger extensions for Visual Studio 2013 Visual Studio MVP Community Internal dogfooding by teams within Microsoft Uservoice feedback (> 20 ideas) Stackoverflow Active forum with questions tagged with "Pex" or "IntelliTest“ Facebook https://www.facebook.com/PexMoles/ Twitter https://twitter.com/pexandmoles Item Votes Add support for NUnit and xUnit.net 304 Add Support for VB.NET 336 Make it available with Visual Studio Professional 319 Enable IntelliTest for 64 bit projects 72 Gathering Feedback
  • 16. Pex to IntelliTest - Adds and Cuts • Additions • Externalizing Test Framework support • Cuts • Visual Basic Support • CommandLine Support • FixIt • Code Contract integration • Pex Explorer • Reporting
  • 17. From http://bbcode.codeplex.com/ NUnit Extension – 13024 downloads xUnit.net Extension - 8589 downloads Pex to IntelliTest - Shipped!
  • 18. Collaboration with Academia • Win-win collaboration model • Win (Industry Lab): longer-term research innovation, man power, research impacts, … • Win (University): powerful infrastructure, relevant/important problems in practice, both research and industry impacts, … • Hosting academic visitors • Faculty visits e.g., Fitnex [Xie et al. DSN’09], Pex4Fun [Tillmann et a. ICSE’13 SEE] • Student internships e.g., FloPSy [Lakhotia et al. ICTSS’10], DyGen [Thummalapenta et al. TAP’10] http://research.microsoft.com/pex/community.aspx#publications
  • 19. Engaging Broader Academic Communities • Academic research inspiring internal technology development • Reggae [Li et al. ASE’09]  Rex [Veanes et al. ICST’10] • MSeqGen [Thummalapenta et al. FSE’09]  DyGen [Thummalapenta et al. TAP’10] • … • Academic research exploring longer-term research frontiers • DySy [Csallner et al. ICSE’08] • Seeker [Thummalapenta et al., OOPSLA’11] • Covana [Xiao et al. ICSE’11] • SEViz [Honfi et al. ICST’15] • Pex + Code Contracts [Christakis et al. ICSE’16] • … http://research.microsoft.com/pex/community.aspx#publications
  • 20. Going from Pex to Coding Duels Secret Implementation class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Player Implementation class Player { public static int Puzzle(int x) { return x; } } class Test { public static void Driver(int x) { if (Secret.Puzzle(x) != Player.Puzzle(x)) throw new Exception(“Mismatch”); } } behavior Secret Impl == Player Impl 20
  • 21. About Code Hunt Blogs and Sites April 29, 2015 May 15, 2014 www.codehunt.com research.microsoft.com/codehunt research.microsoft.com/codehuntcommunity Data site on Github Powerful and versatile platform for coding as a game Built on the symbolic execution of Pex Addressing different audiences – students, developers, researchers Data available in the cloud Unique in working from unit tests not specifications Open sourced data available for analysis 38 contests, 40,000 users
  • 22. Aim: Involve Students Enjoyment adds to long term retention on a task Discovery is a powerful driver, contrasting with direct instructions Gaming joins these two, and is hugely popular Can we add these elements to coding? Code Hunt can! www.codehunt.com
  • 23. It’s a game! 1. iterative gameplay 2. adaptive 3. personalized 4. no cheating 5. clear winning criterion Score is based on • how many puzzles solved, • how well solved, and • when solved code test cases
  • 24. Code Hunt • Is a serious programming game • Works in C# and Java (Python coming) • Appeals to coders wishing to hone their programming skills • And also to students learning to code • Code Hunt has had over 450,000 users in a year with around 1,000 users a day • Stickiness (loyalty) is very high
  • 25.
  • 26.
  • 27.
  • 28. The ah-ha moment Code Hunt can identify top coders
  • 29. Lesson 6: Following the Data • Java is provided by a source-to-source translator • We watched which features players used and what errors they made to concentrate translation efforts for maximum effect • The bank of over 400 puzzles records difficulty levels • These are updated by crowdsourcing users attempts • The vast number of attempts at solving puzzles gives reliable data as to where programmers have difficulty – see open sourced data For ImCupSept 257 users x 24 puzzles x approx. 10 tries = about 13,000 programs`
  • 30. Summary • Pex  practice impact by surrounding, retargeting, simplifying • Moles/Fakes, Pex4Fun/Code Hunt, IntelliTest • Lessons in transferring tools to practice 1. Evolving vision 2. Landing your first customer 3. Human factors 4. Misconceptions 5. Embracing feedback • Collaboration/engagement with academia • Educational impact and lesson learned 6. Following the data http://research.microsoft.com/pex/ http://www.codehunt.com/
  • 33. Results and rewards Detailed results are presented Ranking is always based on score, not on time or attempts Score is based on • how many puzzles solved, • how well solved, and • when solved Special rewards for contests
  • 34. Comparing Code Hunt Code Hunt A serious online coding game Built on symbolic execution Addressing various audiences Data available in the cloud IPCC Annual programming contest Scored by unit testing Addressing university students Questions available on the web