SlideShare uma empresa Scribd logo
1 de 34
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

Mais conteúdo relacionado

Mais procurados

Planning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchPlanning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchTao 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 ResearchTao 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 SecurityTao 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 MattersTao 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 EngineeringTao 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 IssuesTao Xie
 
Mining Software Repositories
Mining Software RepositoriesMining Software Repositories
Mining Software RepositoriesIsrael Herraiz
 
About Dewey Hong
About Dewey HongAbout Dewey Hong
About Dewey HongDewey Hong
 
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 ChallengesTriTAUG
 
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 patchesYida 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 RepairClaire Le Goues
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test AutomationTechWell
 
Blunders in Test Automation
Blunders in Test AutomationBlunders in Test Automation
Blunders in Test AutomationTechWell
 

Mais procurados (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
 

Destaque

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 PracticeTao 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 PracticeTao 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 strumentiFilippo 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
 
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 ManagementBYTE 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 OverflowNicole 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 DetectionLuca Ponzanelli
 
Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3Stackoverflow Data Analysis-Homework3
Stackoverflow Data Analysis-Homework3Ayush Tak
 
StackOverflow Architectural Overview
StackOverflow Architectural OverviewStackOverflow Architectural Overview
StackOverflow Architectural OverviewFolio3 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 usingNidhi 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)evolutionMargaret-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 EngineeringMargaret-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 ResearchMargaret-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
 

Destaque (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...
 

Semelhante a Transferring Software Testing Tools to Practice

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 DevSecOpsOutpost24
 
How To Start Your InfoSec Career
How To Start Your InfoSec CareerHow To Start Your InfoSec Career
How To Start Your InfoSec CareerAndrew 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 - #doxlonMatthew 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 automationOutlyer
 
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
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesTao 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 - TrivadisTrivadis
 
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 WeekNacho Cougil
 
TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1TUD CS4105 | 2015 | Lecture 1
TUD CS4105 | 2015 | Lecture 1Eelco Visser
 

Semelhante a 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
 

Mais de 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 EngineeringTao 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 AlliesTao 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 TestingTao Xie
 
Csise15 codehunt
Csise15 codehuntCsise15 codehunt
Csise15 codehuntTao Xie
 
Text Analytics for Security
Text Analytics for SecurityText Analytics for Security
Text Analytics for SecurityTao 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 ProgrammingTao Xie
 
Tutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTao 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
 

Mais de 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)
 

Último

SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 

Último (20)

SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 

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