SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Human-Tool, Tool-Tool, and Human-Human
   Cooperations to Get the Job Done

                  Tao Xie

       North Carolina State University
             Raleigh, NC, USA
IBM's Deep Blue defeated chess champion
Garry Kasparov in 1997



                                          IBM Watson defeated top human Jeopardy!
                                          players in 2011
Category U.S. CITIES: “Its largest airport was named for a World War II
hero; its second largest, for a World War II battle”
Responses of Rutter and Jennings: “What is Chicago?”
Response of Watson: "What is Toronto?????"
"Completely Automated
Public Turing test to tell
Computers and Humans
Apart"
iPad




Movie: Minority Report



                         CNN News
…
http://www.dagstuhl.de/programm/kalender/semhp/?semnr=1011
                   2010 Dagstuhl Seminar 10111
Practical Software Testing: Tool Automation and Human Factors
Human Factors


  http://www.dagstuhl.de/programm/kalender/semhp/?semnr=1011
                   2010 Dagstuhl Seminar 10111
Practical Software Testing: Tool Automation and Human Factors
   Recent advanced technique: Dynamic
        Symbolic Execution/Concolic Testing
         Instrument code to explore feasible paths

       Example tool: Pex from Microsoft
        Research (for .NET programs)

Patrice Godefroid, Nils Klarlund, and Koushik Sen. DART: directed automated random
testing. In Proc. PLDI 2005
Koushik Sen, Darko Marinov, and Gul Agha. CUTE: a concolic unit testing engine for C. In Proc.
ESEC/FSE 2005
Nikolai Tillmann and Jonathan de Halleux. Pex - White Box Test Generation for .NET. In Proc.
TAP 2008                                                                                     10
Choose next path
Code to generate inputs for:                               Solve            Execute&Monitor
void CoverMe(int[] a)
                                        Constraints to solve       Data     Observed constraints
{
  if (a == null) return;                                           null     a==null
  if (a.Length > 0)
    if (a[0] == 1234567890)             a!=null                    {}       a!=null &&
                                                                            !(a.Length>0)
      throw new Exception("bug");
                                        a!=null &&                 {0}      a!=null &&
}                                       a.Length>0             Negated condition
                                                                            a.Length>0 &&
                                                                            a[0]!=1 3 5 7 9
                                                                                   24680


                F     a==null           a!=null &&                 {2…
                                                                    13}     a!=null &&
                                    T   a.Length>0 &&                       a.Length>0 &&
                                        a[0]==1 3 5 7 9
                                               24680                        a[0]==1 3 5 7 9
                                                                                   24680
  F     a.Length>0      T
                                                                    Done: There is no path left.

                       a[0]==123…
                F                       T
@NCSU ASE

   Method sequences
     MSeqGen/Seeker [Thummalapenta et al. OOSPLA 11, ESEC/FSE 09],
      Covana [Xiao et al. ICSE 2011], OCAT [Jaygarl et al. ISSTA 10],
      Evacon [Inkumsah et al. ASE 08], Symclat [d'Amorim et al. ASE 06]
   Environments           e.g., db, file systems, network, …
     DBApp Testing [Taneja et al. ESEC/FSE 11], [Pan et al. ASE 11]
     CloudApp Testing [Zhang et al. IEEE Soft 12]
   Loops
     Fitnex [Xie et al. DSN 09]
   Code evolution
     eXpress [Taneja et al. ISSTA 11]
Download counts (20 months)
                           (Feb. 2008 - Oct. 2009 )
                               Academic: 17,366
                               Devlabs: 13,022
                               Total:   30,388




http://research.microsoft.com/projects/pex/
http://pexase.codeplex.com/
 Publications: http://research.microsoft.com/en-us/projects/pex/community.aspx#publications
Running Symbolic PathFinder ...
…
=====================================
      ================= results
no errors detected
=====================================
      ================= statistics
elapsed time:    0:00:02
states:
      end=2
search:
              new=4, visited=0, backtracked=4,
               maxDepth=3, constraints=0
choice generators: thread=1, data=2
                                                 …
heap:          gc=3, new=271, free=22
instructions:   2875
max memory:        81MB
loaded code:      classes=71, methods=884


                                                     15
   Example: Dynamic Symbolic Execution/Concolic Testing
     Instrument code to explore feasible paths
     Challenge: path explosion




    Total block coverage achieved is 50%, lowest coverage 16%.

    object-creation problems (OCP) - 65%
    external-method call problems (EMCP) – 27%
                                                                 16
00: class Graph : IVEListGraph { …
03:     public void AddVertex (IVertex v) {                 [Thummalapenta et al. OOPSLA 11]
04:         vertices.Add(v); // B1 }
06:     public Edge AddEdge (IVertex v1, IVertex v2) {
07:         if (!vertices.Contains(v1))
                                                           A graph example from
08:               throw new VNotFoundException("");         QuickGraph library
09:          // B2
10:          if (!vertices.Contains(v2))
11:               throw new VNotFoundException("");        Includes two classes
12:          // B3                                           Graph
14:          Edge e = new Edge(v1, v2);
15:          edges.Add(e); } }
                                                             DFSAlgorithm

//DFS:DepthFirstSearch
18: class DFSAlgorithm { …
                                                           Graph
23:     public void Compute (IVertex s) { ...                AddVertex
24:         if (graph.GetEdges().Size() > 0) { // B4
25:              isComputed = true;
                                                             AddEdge: requires
26:              foreach (Edge e in graph.GetEdges()) {        both vertices to be
27:                  ... // B5                                 in graph
28:              }
29: } } }                                                                            17
                                                                                      17
 Test target: Cover true
00: class Graph : IVEListGraph { …                           branch (B4) of Line 24
03:     public void AddVertex (IVertex v) {                   [Thummalapenta et al. OOPSLA 11]
04:         vertices.Add(v); // B1 }
06:     public Edge AddEdge (IVertex v1, IVertex v2) {
07:         if (!vertices.Contains(v1))
                                                           Desired object
08:               throw new VNotFoundException("");         state: graph should
09:          // B2                                          include at least one
10:          if (!vertices.Contains(v2))                    edge
11:               throw new VNotFoundException("");
12:          // B3                                         Target sequence:
14:          Edge e = new Edge(v1, v2);
15:          edges.Add(e); } }                               Graph ag = new Graph();
                                                             Vertex v1 = new Vertex(0);
//DFS:DepthFirstSearch                                       Vertex v2 = new Vertex(1);
18: class DFSAlgorithm { …                                   ag.AddVertex(v1);
23:     public void Compute (IVertex s) { ...                ag.AddVertex(v2);
24:         if (graph.GetEdges().Size() > 0) { // B4         ag.AddEdge(v1, v2);
25:              isComputed = true;                          DFSAlgorithm algo = new
26:              foreach (Edge e in graph.GetEdges()) {          DFSAlgorithm(ag);
27:                  ... // B5                               algo.Compute(v1);
28:              }
29: } } }                                                                              18
                                                                                        18
   Example: Dynamic Symbolic Execution/Concolic (Pex)
     Instrument code to explore feasible paths
     Challenge: path explosion




    Total block coverage achieved is 50%, lowest coverage 16%.

    object-creation problems (OCP) - 65%
    external-method call problems (EMCP) – 27%
                                                                 19
       Example 1:
          File.Exists has data dependencies
           on program input
          Subsequent branch at Line 1 using   1
           the return value of File.Exists.

       Example 2:
          Path.GetFullPath has data
           dependencies on program input
          Path.GetFullPath throws
                                               2
           exceptions.


       Example 3:    String.Format do
        not cause any problem

                                               3
                                                   20
Tackle object-creation problems with Factory Methods




                                                       21
Tackle external-method call problems with Mock Methods or
Method Instrumentation
Mocking System.IO.File.ReadAllText




                                                      22
Tools Typically Don’t
                                  Communicate Challenges
                                  Faced by Them to Enable
Running Symbolic PathFinder ...   Cooperation between Tools
…
=====================================
      ================= results
no errors detected
                                  and Users
=====================================
      ================= statistics
elapsed time:    0:00:02
states:
      end=2
search:
              new=4, visited=0, backtracked=4,
               maxDepth=3, constraints=0
choice generators: thread=1, data=2
                                                              …
heap:         gc=3, new=271, free=22
instructions:  2875
max memory:       81MB
loaded code:     classes=71, methods=884


                                                                  23
   Machine is better at task set A
     Mechanical, tedious, repetitive tasks, …
     Ex. solving constraints along a long path


   Human is better at task set B
     Intelligence, human intent, abstraction, domain
      knowledge, …
     Ex. local reasoning after a loop, recognizing naming
      semantics

                            =A U B                           24
   Human-Assisted Computing
     Driver: tool Helper: human
     Ex. Covana [Xiao et al. ICSE 2011]


   Human-Centric Computing
     Driver: human  Helper: tool
     Ex. Coding duels @Pex for Fun


Interfaces are important. Contents are important too!
                                                   25
   Motivation
     Tools are often not powerful enough
     Human is good at some aspects that tools are not



     What difficulties does the tool face?
     How to communicate info to the user to get help?

                                 Iterations to form Feedback Loop

     How does the user help the tool based on the info?
                                                               26
   Motivation
     Tools are often not powerful enough
     Human is good at some aspects that tools are not



     What difficulties does the tool face?
     How to communicate info to the user to get help?

                                Iterations to form Feedback Loop

     How does the user help the tool based on the info?
                                                              27
external-method call problems (EMCP)

                  object-creation problems (OCP)




                                                   28
   Existing solution
     identify all executed external-method calls
     report all object types of program inputs and fields


   Limitations
     the number is often high
     some identified problem are irrelevant for achieving
     higher structural coverage

                                                             29
Reported EMCPs: 44
Reported OCPs: 18
   vs.
Real EMCPs: 0
Real OCPs: 5
                     30
[Xiao et al. ICSE 11]

       Goal: Precisely identify problems faced by tools
        when achieving structural coverage


       Insight: Partially-Covered Statements have
        data dependency on real problem candidates



Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux. Precise Identification of
Problems for Structural Test Generation. In Proc. ICSE 2011                                   31
Runtime                Problem
                          Events               Candidate
 Program                                     Identification



Generated             Forward
Test Inputs          Symbolic                  Problem
                     Execution                Candidates



                                 Runtime
              Coverage
                               Information



                       Data
 Identified         Dependence
 Problems            Analysis                                 32
 External-method calls whose arguments have data
 dependencies on program inputs


                                    Data Dependencies




                                                        33
Symbolic Expression:
return(File.Exists) == true




Element of
EMCP Candidate:
return(File.Exists)


                                       Partially-covered branch
Branch Statement Line 1 has data       statements have data
dependency on File.Exists at Line 1    dependencies on EMCP
                                       candidates for return values
                                                                      34
   Subjects:
     xUnit: unit testing framework for .NET
      ▪ 223 classes and interfaces with 11.4 KLOC
     QuickGraph: C# graph library
      ▪ 165 classes and interfaces with 8.3 KLOC

   Evaluation setup:
     Apply Pex to generate tests for program under test
     Feed the program and generated tests to Covana
     Compare existing solution and Covana
                                                           35
   RQ1: How effective is Covana in identifying
    the two main types of problems, EMCPs and
    OCPs?

   RQ2: How effective is Covana in pruning
    irrelevant problem candidates of EMCPs and
    OCPs?



                                                  36
Covana identifies
• 43 EMCPs with only 1 false positive and 2 false negatives
• 155 OCPs with 20 false positives and 30 false negatives.    37
Covana prunes
• 97% (1567 in 1610) EMCP candidates with 1 false positive and 2 false negatives
• 66% (296 in 451) OCP candidates with 20 false positives and 30 false negatives
                                                                                   38
[Xiao et al. ICSE 2011]
   Task: What need to automate?
     Test-input generation
   What difficulties does the tool face?
     Doesn’t know which methods to instrument and explore
     Doesn’t know how to generate effective method sequences
   How to communicate info to the user to get her help?
     Report encountered problems
   How does the user help the tool based on the info?
     Instruct which external methods to instrument/write mock objects
     Write factory methods for generating objects
   Iterations to form feedback loop?
     Yes, till the user is happy with coverage or impatient
   Human-Assisted Computing
     Driver: tool Helper: human
     Ex. Covana [Xiao et al. ICSE 2011]


   Human-Centric Computing
     Driver: human  Helper: tool
     Ex. Coding duels @Pex for Fun


Interfaces are important. Contents are important too!
                                                   40
www.pexforfun.com



            1,083,640 clicked 'Ask Pex!'

                      The contributed concept of
                      Coding Duel games as major
                      game type of Pex for Fun since
                      Summer 2010
                                               41
behavior
                             Secret Impl ==    Player Impl           Player Implementation

           Secret Implementation                        class Player {
                                                           public static int Puzzle(int x) {
class Secret {                                                 return x;
   public static int Puzzle(int x) {
                                                           }
     if (x <= 0) return 1;
                                                        }
     return x * Puzzle(x-1);
   }
}



class Test {
public static void Driver(int x) {
  if (Secret.Puzzle(x) != Player.Puzzle(x))
     throw new Exception(“Mismatch”);
  }
}                                                                                          42
   Coding duels at http://www.pexforfun.com/
   Task for Human: write behavior-equiv code         class Player {
                                                         public static int Puzzle(int x) {
                                                             return x;
   Human  Tool                                      }
                                                         }


     Does my new code behave differently? How exactly?

   Human  Tool
     Could you fix your code to handle failed/passed tests?

   Iterations to form feedback loop?
     Yes, till tool generates no failed tests/player is impatient
   Coding duels at http://www.pexforfun.com/
     Brain exercising/learning while having fun
     Fun: iterative, adaptive/personalized, w/ win criterion
     Abstraction/generalization, debugging, problem solving

                                                   Brain exercising
Especially valuable in Massive Open Online Courses (MOOC)
   Everyone can
                                  contribute
       Internet                    Coding duels
                                   Duel solutions

class Secret {
   public static int Puzzle(int x) {
    if (x <= 0) return 1;
    return x * Puzzle(x-1); } }                      47
Puzzle Games Made from
                                             Internet
                                                              Difficult Constraints or Object-
                                                              Creation Problems



Ning Chen and Sunghun Kim. Puzzle-based Automatic Testing: bringing humans into the loop by
solving puzzles. In Proc. ASE 2012                                      Supported by MSR SEIF Award
http://www.cs.washington.edu/verigames/
StackMine [Han et al. ICSE 12]



                                   Pattern Matching


                                                                                 Bug update


       Internet                       Problematic                       Bug Database
                                   Pattern Repository
                                                                                 Bug
                                                                                 filing


             Trace collection        Trace Storage
                                                                        Trace analysis
Shi Han, Yingnong Dang, Song Ge, Dongmei Zhang, and Tao Xie. Performance Debugging in the Large
via Mining Millions of Stack Traces. In Proc. ICSE 2012                                           50
“We believe that the MSRA tool is highly valuable and
                 much more efficient for mass trace (100+ traces) analysis.
                 For 1000 traces, we believe the tool saves us 4-6 weeks of
                 time to create new signatures, which is quite a significant
                 productivity boost.”
                                              - from Development Manager in Windows

    Highly effective new issue discovery on
                              Windows mini-hang

                          Continuous impact on future Windows versions


Shi Han, Yingnong Dang, Song Ge, Dongmei Zhang, and Tao Xie. Performance Debugging in the Large
via Mining Millions of Stack Traces. In Proc. ICSE 2012
   Static analysis + dynamic analysis
           Static checking + Test generation
           …
         Dynamic analysis + static analysis
           Fix generation + fix validation
           …
         Static analysis + static analysis
           …
         Dynamic analysis + dynamic analysis
           …
Example: Xiaoyin Wang, Lu Zhang, Tao Xie, Yingfei Xiong, and Hong Mei. Automating Presentation
Changes in Dynamic Web Applications via Collaborative Hybrid Analysis. In Proc. FSE 2012         52
   Human-Assisted Computing
     Covana


   Human-Centric Computing
     Pex for Fun


   Human-Human Cooperation
     StackMine
   Wonderful current/former students@NCSU ASE




   Collaborators, especially those from Microsoft
    Research Redmond/Asia, Peking University
   Colleagues who gave feedback and inspired me
NSF grants CCF-0845272, CCF-0915400, CNS-0958235, ARO grant W911NF-08-1-0443, an
NSA Science of Security, Lablet grant, a NIST grant, a 2011 Microsoft Research SEIF Award
Questions ?




https://sites.google.com/site/asergrp/

Weitere ähnliche Inhalte

Was ist angesagt?

Mini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPBMini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPBRaphael Marques
 
The Ring programming language version 1.7 book - Part 40 of 196
The Ring programming language version 1.7 book - Part 40 of 196The Ring programming language version 1.7 book - Part 40 of 196
The Ring programming language version 1.7 book - Part 40 of 196Mahmoud Samir Fayed
 
Bartosz Milewski, “Re-discovering Monads in C++”
Bartosz Milewski, “Re-discovering Monads in C++”Bartosz Milewski, “Re-discovering Monads in C++”
Bartosz Milewski, “Re-discovering Monads in C++”Platonov Sergey
 
Computer graphics lab assignment
Computer graphics lab assignmentComputer graphics lab assignment
Computer graphics lab assignmentAbdullah Al Shiam
 
The Ring programming language version 1.9 book - Part 38 of 210
The Ring programming language version 1.9 book - Part 38 of 210The Ring programming language version 1.9 book - Part 38 of 210
The Ring programming language version 1.9 book - Part 38 of 210Mahmoud Samir Fayed
 
openFrameworks 007 - utils
openFrameworks 007 - utilsopenFrameworks 007 - utils
openFrameworks 007 - utilsroxlu
 
Dzanan_Bajgoric_C2CUDA_MscThesis_Present
Dzanan_Bajgoric_C2CUDA_MscThesis_PresentDzanan_Bajgoric_C2CUDA_MscThesis_Present
Dzanan_Bajgoric_C2CUDA_MscThesis_PresentDžanan Bajgorić
 
Open cv tutorial
Open cv tutorialOpen cv tutorial
Open cv tutorialEric Larson
 
Computer Graphics Lab File C Programs
Computer Graphics Lab File C ProgramsComputer Graphics Lab File C Programs
Computer Graphics Lab File C ProgramsKandarp Tiwari
 
Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and AnalysisWiwat Ruengmee
 
Functional Design Explained (David Sankel CppCon 2015)
Functional Design Explained (David Sankel CppCon 2015)Functional Design Explained (David Sankel CppCon 2015)
Functional Design Explained (David Sankel CppCon 2015)sankeld
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3Droxlu
 
C c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoC c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoKim Phillips
 
Container and algorithms(C++)
Container and algorithms(C++)Container and algorithms(C++)
Container and algorithms(C++)JerryHe
 

Was ist angesagt? (20)

Mini-curso JavaFX Aula2
Mini-curso JavaFX Aula2Mini-curso JavaFX Aula2
Mini-curso JavaFX Aula2
 
Mini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPBMini-curso JavaFX Aula3 UFPB
Mini-curso JavaFX Aula3 UFPB
 
The Ring programming language version 1.7 book - Part 40 of 196
The Ring programming language version 1.7 book - Part 40 of 196The Ring programming language version 1.7 book - Part 40 of 196
The Ring programming language version 1.7 book - Part 40 of 196
 
Bartosz Milewski, “Re-discovering Monads in C++”
Bartosz Milewski, “Re-discovering Monads in C++”Bartosz Milewski, “Re-discovering Monads in C++”
Bartosz Milewski, “Re-discovering Monads in C++”
 
Computer graphics lab assignment
Computer graphics lab assignmentComputer graphics lab assignment
Computer graphics lab assignment
 
662305 10
662305 10662305 10
662305 10
 
Scala.io
Scala.ioScala.io
Scala.io
 
The Ring programming language version 1.9 book - Part 38 of 210
The Ring programming language version 1.9 book - Part 38 of 210The Ring programming language version 1.9 book - Part 38 of 210
The Ring programming language version 1.9 book - Part 38 of 210
 
openFrameworks 007 - utils
openFrameworks 007 - utilsopenFrameworks 007 - utils
openFrameworks 007 - utils
 
Dzanan_Bajgoric_C2CUDA_MscThesis_Present
Dzanan_Bajgoric_C2CUDA_MscThesis_PresentDzanan_Bajgoric_C2CUDA_MscThesis_Present
Dzanan_Bajgoric_C2CUDA_MscThesis_Present
 
JavaFX
JavaFXJavaFX
JavaFX
 
Open cv tutorial
Open cv tutorialOpen cv tutorial
Open cv tutorial
 
Computer Graphics Lab File C Programs
Computer Graphics Lab File C ProgramsComputer Graphics Lab File C Programs
Computer Graphics Lab File C Programs
 
Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and Analysis
 
Functional Design Explained (David Sankel CppCon 2015)
Functional Design Explained (David Sankel CppCon 2015)Functional Design Explained (David Sankel CppCon 2015)
Functional Design Explained (David Sankel CppCon 2015)
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3D
 
C c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoC c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdo
 
Container and algorithms(C++)
Container and algorithms(C++)Container and algorithms(C++)
Container and algorithms(C++)
 
Vectorization in ATLAS
Vectorization in ATLASVectorization in ATLAS
Vectorization in ATLAS
 
Interaksi obyek
Interaksi obyekInteraksi obyek
Interaksi obyek
 

Andere mochten auch

Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)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
 
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
 
Impact-Driven Research on Software Engineering Tooling
Impact-Driven Research on Software Engineering ToolingImpact-Driven Research on Software Engineering Tooling
Impact-Driven Research on Software Engineering ToolingTao Xie
 
Advancing Foundation and Practice of Software Analytics
Advancing Foundation and Practice of Software AnalyticsAdvancing Foundation and Practice of Software Analytics
Advancing Foundation and Practice of Software AnalyticsTao 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
 
SBQS 2013 Keynote: Cooperative Testing and Analysis
SBQS 2013 Keynote: Cooperative Testing and AnalysisSBQS 2013 Keynote: Cooperative Testing and Analysis
SBQS 2013 Keynote: Cooperative Testing and AnalysisTao 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
 
Testing for Educational Gaming and Educational Gaming for Testing
Testing for Educational Gaming and Educational Gaming for TestingTesting for Educational Gaming and Educational Gaming for Testing
Testing for Educational Gaming and Educational Gaming for TestingTao Xie
 
Csise15 codehunt
Csise15 codehuntCsise15 codehunt
Csise15 codehuntTao Xie
 
A Preliminary Field Study of Game Programming on Mobile Devices
A Preliminary Field Study of Game Programming on Mobile DevicesA Preliminary Field Study of Game Programming on Mobile Devices
A Preliminary Field Study of Game Programming on Mobile DevicesTao 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
 
Synergy of Human and Artificial Intelligence in Software Engineering
Synergy of Human and Artificial Intelligence in Software EngineeringSynergy of Human and Artificial Intelligence in Software Engineering
Synergy of Human and Artificial Intelligence in Software EngineeringTao Xie
 
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao XieSCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao XieTao 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
 
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William EnckHotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William EnckTao Xie
 
Common Technical Writing Issues
Common Technical Writing IssuesCommon Technical Writing Issues
Common Technical Writing IssuesTao Xie
 
Improving Software Reliability via Mining Software Engineering Data
Improving Software Reliability via Mining Software Engineering DataImproving Software Reliability via Mining Software Engineering Data
Improving Software Reliability via Mining Software Engineering DataTao Xie
 
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
 
Software Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesTao Xie
 

Andere mochten auch (20)

Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
 
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
 
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...
 
Impact-Driven Research on Software Engineering Tooling
Impact-Driven Research on Software Engineering ToolingImpact-Driven Research on Software Engineering Tooling
Impact-Driven Research on Software Engineering Tooling
 
Advancing Foundation and Practice of Software Analytics
Advancing Foundation and Practice of Software AnalyticsAdvancing Foundation and Practice of Software Analytics
Advancing Foundation and Practice of Software Analytics
 
Next Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized TestingNext Generation Developer Testing: Parameterized Testing
Next Generation Developer Testing: Parameterized Testing
 
SBQS 2013 Keynote: Cooperative Testing and Analysis
SBQS 2013 Keynote: Cooperative Testing and AnalysisSBQS 2013 Keynote: Cooperative Testing and Analysis
SBQS 2013 Keynote: Cooperative Testing and Analysis
 
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
 
Testing for Educational Gaming and Educational Gaming for Testing
Testing for Educational Gaming and Educational Gaming for TestingTesting for Educational Gaming and Educational Gaming for Testing
Testing for Educational Gaming and Educational Gaming for Testing
 
Csise15 codehunt
Csise15 codehuntCsise15 codehunt
Csise15 codehunt
 
A Preliminary Field Study of Game Programming on Mobile Devices
A Preliminary Field Study of Game Programming on Mobile DevicesA Preliminary Field Study of Game Programming on Mobile Devices
A Preliminary Field Study of Game Programming on Mobile Devices
 
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
 
Synergy of Human and Artificial Intelligence in Software Engineering
Synergy of Human and Artificial Intelligence in Software EngineeringSynergy of Human and Artificial Intelligence in Software Engineering
Synergy of Human and Artificial Intelligence in Software Engineering
 
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao XieSCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by 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)
 
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William EnckHotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
 
Common Technical Writing Issues
Common Technical Writing IssuesCommon Technical Writing Issues
Common Technical Writing Issues
 
Improving Software Reliability via Mining Software Engineering Data
Improving Software Reliability via Mining Software Engineering DataImproving Software Reliability via Mining Software Engineering Data
Improving Software Reliability via Mining Software Engineering Data
 
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
 
Software Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and Challenges
 

Ähnlich wie ACM Distinguished Program: Cooperative Testing and Analysis: Human-Tool, Tool-Tool, and Human-Human Cooperations to Get the Job Done

Technical aptitude test 2 CSE
Technical aptitude test 2 CSETechnical aptitude test 2 CSE
Technical aptitude test 2 CSESujata Regoti
 
C multiple choice questions and answers pdf
C multiple choice questions and answers pdfC multiple choice questions and answers pdf
C multiple choice questions and answers pdfchoconyeuquy
 
1z0 851 exam-java standard edition 6 programmer certified professional
1z0 851 exam-java standard edition 6 programmer certified professional1z0 851 exam-java standard edition 6 programmer certified professional
1z0 851 exam-java standard edition 6 programmer certified professionalIsabella789
 
C __paper.docx_final
C __paper.docx_finalC __paper.docx_final
C __paper.docx_finalSumit Sar
 
important C questions and_answers praveensomesh
important C questions and_answers praveensomeshimportant C questions and_answers praveensomesh
important C questions and_answers praveensomeshpraveensomesh
 
Improving Java performance at JBCNConf 2015
Improving Java performance at JBCNConf 2015Improving Java performance at JBCNConf 2015
Improving Java performance at JBCNConf 2015Raimon Ràfols
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray EnginePVS-Studio
 
MATLAB Questions and Answers.pdf
MATLAB Questions and Answers.pdfMATLAB Questions and Answers.pdf
MATLAB Questions and Answers.pdfahmed8651
 
Comp 328 final guide
Comp 328 final guideComp 328 final guide
Comp 328 final guidekrtioplal
 
Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer developmentAndrey Karpov
 
Java Performance Puzzlers
Java Performance PuzzlersJava Performance Puzzlers
Java Performance PuzzlersDoug Hawkins
 
How to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITHow to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITEgor Bogatov
 
C++11 - A Change in Style - v2.0
C++11 - A Change in Style - v2.0C++11 - A Change in Style - v2.0
C++11 - A Change in Style - v2.0Yaser Zhian
 
Improving Android Performance at Droidcon UK 2014
Improving Android Performance at Droidcon UK 2014Improving Android Performance at Droidcon UK 2014
Improving Android Performance at Droidcon UK 2014Raimon Ràfols
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
 
C++ Certified Associate Programmer CPA
C++ Certified Associate Programmer CPAC++ Certified Associate Programmer CPA
C++ Certified Associate Programmer CPAIsabella789
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingMark Kilgard
 

Ähnlich wie ACM Distinguished Program: Cooperative Testing and Analysis: Human-Tool, Tool-Tool, and Human-Human Cooperations to Get the Job Done (20)

Technical aptitude test 2 CSE
Technical aptitude test 2 CSETechnical aptitude test 2 CSE
Technical aptitude test 2 CSE
 
C multiple choice questions and answers pdf
C multiple choice questions and answers pdfC multiple choice questions and answers pdf
C multiple choice questions and answers pdf
 
Error handling
Error handlingError handling
Error handling
 
1z0 851 exam-java standard edition 6 programmer certified professional
1z0 851 exam-java standard edition 6 programmer certified professional1z0 851 exam-java standard edition 6 programmer certified professional
1z0 851 exam-java standard edition 6 programmer certified professional
 
C __paper.docx_final
C __paper.docx_finalC __paper.docx_final
C __paper.docx_final
 
important C questions and_answers praveensomesh
important C questions and_answers praveensomeshimportant C questions and_answers praveensomesh
important C questions and_answers praveensomesh
 
Improving Java performance at JBCNConf 2015
Improving Java performance at JBCNConf 2015Improving Java performance at JBCNConf 2015
Improving Java performance at JBCNConf 2015
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
 
MATLAB Questions and Answers.pdf
MATLAB Questions and Answers.pdfMATLAB Questions and Answers.pdf
MATLAB Questions and Answers.pdf
 
Comp 328 final guide
Comp 328 final guideComp 328 final guide
Comp 328 final guide
 
Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer development
 
Java Performance Puzzlers
Java Performance PuzzlersJava Performance Puzzlers
Java Performance Puzzlers
 
How to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITHow to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJIT
 
C++11 - A Change in Style - v2.0
C++11 - A Change in Style - v2.0C++11 - A Change in Style - v2.0
C++11 - A Change in Style - v2.0
 
Improving Android Performance at Droidcon UK 2014
Improving Android Performance at Droidcon UK 2014Improving Android Performance at Droidcon UK 2014
Improving Android Performance at Droidcon UK 2014
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
C++ Certified Associate Programmer CPA
C++ Certified Associate Programmer CPAC++ Certified Associate Programmer CPA
C++ Certified Associate Programmer CPA
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
Lecture6
Lecture6Lecture6
Lecture6
 

Mehr von 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
 
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
 
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 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
 
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
 
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
 
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
 
Planning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchPlanning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchTao Xie
 
Software Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software EngineeringSoftware Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for 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
 
Transferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTransferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTao Xie
 
User Expectations in Mobile App Security
User Expectations in Mobile App SecurityUser Expectations in Mobile App Security
User Expectations in Mobile App SecurityTao Xie
 
Software Mining and Software Datasets
Software Mining and Software DatasetsSoftware Mining and Software Datasets
Software Mining and Software DatasetsTao Xie
 
Text Analytics for Security
Text Analytics for SecurityText Analytics for Security
Text Analytics for SecurityTao Xie
 
Towards Mining Software Repositories Research that Matters
Towards Mining Software Repositories Research that MattersTowards Mining Software Repositories Research that Matters
Towards Mining Software Repositories Research that MattersTao Xie
 
Tutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTao Xie
 

Mehr von Tao Xie (20)

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...
 
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...
 
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 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
 
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...
 
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
 
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
 
Planning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful ResearchPlanning and Executing Practice-Impactful Research
Planning and Executing Practice-Impactful Research
 
Software Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software EngineeringSoftware Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for 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)
 
Transferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTransferring Software Testing Tools to Practice
Transferring Software Testing Tools to Practice
 
User Expectations in Mobile App Security
User Expectations in Mobile App SecurityUser Expectations in Mobile App Security
User Expectations in Mobile App Security
 
Software Mining and Software Datasets
Software Mining and Software DatasetsSoftware Mining and Software Datasets
Software Mining and Software Datasets
 
Text Analytics for Security
Text Analytics for SecurityText Analytics for Security
Text Analytics for Security
 
Towards Mining Software Repositories Research that Matters
Towards Mining Software Repositories Research that MattersTowards Mining Software Repositories Research that Matters
Towards Mining Software Repositories Research that Matters
 
Tutorial: Text Analytics for Security
Tutorial: Text Analytics for SecurityTutorial: Text Analytics for Security
Tutorial: Text Analytics for Security
 

Kürzlich hochgeladen

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Kürzlich hochgeladen (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

ACM Distinguished Program: Cooperative Testing and Analysis: Human-Tool, Tool-Tool, and Human-Human Cooperations to Get the Job Done

  • 1. Human-Tool, Tool-Tool, and Human-Human Cooperations to Get the Job Done Tao Xie North Carolina State University Raleigh, NC, USA
  • 2.
  • 3. IBM's Deep Blue defeated chess champion Garry Kasparov in 1997 IBM Watson defeated top human Jeopardy! players in 2011
  • 4. Category U.S. CITIES: “Its largest airport was named for a World War II hero; its second largest, for a World War II battle” Responses of Rutter and Jennings: “What is Chicago?” Response of Watson: "What is Toronto?????"
  • 5. "Completely Automated Public Turing test to tell Computers and Humans Apart"
  • 7.
  • 8. http://www.dagstuhl.de/programm/kalender/semhp/?semnr=1011 2010 Dagstuhl Seminar 10111 Practical Software Testing: Tool Automation and Human Factors
  • 9. Human Factors http://www.dagstuhl.de/programm/kalender/semhp/?semnr=1011 2010 Dagstuhl Seminar 10111 Practical Software Testing: Tool Automation and Human Factors
  • 10. Recent advanced technique: Dynamic Symbolic Execution/Concolic Testing  Instrument code to explore feasible paths  Example tool: Pex from Microsoft Research (for .NET programs) Patrice Godefroid, Nils Klarlund, and Koushik Sen. DART: directed automated random testing. In Proc. PLDI 2005 Koushik Sen, Darko Marinov, and Gul Agha. CUTE: a concolic unit testing engine for C. In Proc. ESEC/FSE 2005 Nikolai Tillmann and Jonathan de Halleux. Pex - White Box Test Generation for .NET. In Proc. TAP 2008 10
  • 11. Choose next path Code to generate inputs for: Solve Execute&Monitor void CoverMe(int[] a) Constraints to solve Data Observed constraints { if (a == null) return; null a==null if (a.Length > 0) if (a[0] == 1234567890) a!=null {} a!=null && !(a.Length>0) throw new Exception("bug"); a!=null && {0} a!=null && } a.Length>0 Negated condition a.Length>0 && a[0]!=1 3 5 7 9 24680 F a==null a!=null && {2… 13} a!=null && T a.Length>0 && a.Length>0 && a[0]==1 3 5 7 9 24680 a[0]==1 3 5 7 9 24680 F a.Length>0 T Done: There is no path left. a[0]==123… F T
  • 12. @NCSU ASE  Method sequences  MSeqGen/Seeker [Thummalapenta et al. OOSPLA 11, ESEC/FSE 09], Covana [Xiao et al. ICSE 2011], OCAT [Jaygarl et al. ISSTA 10], Evacon [Inkumsah et al. ASE 08], Symclat [d'Amorim et al. ASE 06]  Environments e.g., db, file systems, network, …  DBApp Testing [Taneja et al. ESEC/FSE 11], [Pan et al. ASE 11]  CloudApp Testing [Zhang et al. IEEE Soft 12]  Loops  Fitnex [Xie et al. DSN 09]  Code evolution  eXpress [Taneja et al. ISSTA 11]
  • 13. Download counts (20 months) (Feb. 2008 - Oct. 2009 ) Academic: 17,366 Devlabs: 13,022 Total: 30,388 http://research.microsoft.com/projects/pex/
  • 15. Running Symbolic PathFinder ... … ===================================== ================= results no errors detected ===================================== ================= statistics elapsed time: 0:00:02 states: end=2 search: new=4, visited=0, backtracked=4, maxDepth=3, constraints=0 choice generators: thread=1, data=2 … heap: gc=3, new=271, free=22 instructions: 2875 max memory: 81MB loaded code: classes=71, methods=884 15
  • 16. Example: Dynamic Symbolic Execution/Concolic Testing  Instrument code to explore feasible paths  Challenge: path explosion Total block coverage achieved is 50%, lowest coverage 16%.  object-creation problems (OCP) - 65%  external-method call problems (EMCP) – 27% 16
  • 17. 00: class Graph : IVEListGraph { … 03: public void AddVertex (IVertex v) { [Thummalapenta et al. OOPSLA 11] 04: vertices.Add(v); // B1 } 06: public Edge AddEdge (IVertex v1, IVertex v2) { 07: if (!vertices.Contains(v1))  A graph example from 08: throw new VNotFoundException(""); QuickGraph library 09: // B2 10: if (!vertices.Contains(v2)) 11: throw new VNotFoundException("");  Includes two classes 12: // B3 Graph 14: Edge e = new Edge(v1, v2); 15: edges.Add(e); } } DFSAlgorithm //DFS:DepthFirstSearch 18: class DFSAlgorithm { …  Graph 23: public void Compute (IVertex s) { ... AddVertex 24: if (graph.GetEdges().Size() > 0) { // B4 25: isComputed = true; AddEdge: requires 26: foreach (Edge e in graph.GetEdges()) { both vertices to be 27: ... // B5 in graph 28: } 29: } } } 17 17
  • 18.  Test target: Cover true 00: class Graph : IVEListGraph { … branch (B4) of Line 24 03: public void AddVertex (IVertex v) { [Thummalapenta et al. OOPSLA 11] 04: vertices.Add(v); // B1 } 06: public Edge AddEdge (IVertex v1, IVertex v2) { 07: if (!vertices.Contains(v1))  Desired object 08: throw new VNotFoundException(""); state: graph should 09: // B2 include at least one 10: if (!vertices.Contains(v2)) edge 11: throw new VNotFoundException(""); 12: // B3  Target sequence: 14: Edge e = new Edge(v1, v2); 15: edges.Add(e); } } Graph ag = new Graph(); Vertex v1 = new Vertex(0); //DFS:DepthFirstSearch Vertex v2 = new Vertex(1); 18: class DFSAlgorithm { … ag.AddVertex(v1); 23: public void Compute (IVertex s) { ... ag.AddVertex(v2); 24: if (graph.GetEdges().Size() > 0) { // B4 ag.AddEdge(v1, v2); 25: isComputed = true; DFSAlgorithm algo = new 26: foreach (Edge e in graph.GetEdges()) { DFSAlgorithm(ag); 27: ... // B5 algo.Compute(v1); 28: } 29: } } } 18 18
  • 19. Example: Dynamic Symbolic Execution/Concolic (Pex)  Instrument code to explore feasible paths  Challenge: path explosion Total block coverage achieved is 50%, lowest coverage 16%.  object-creation problems (OCP) - 65%  external-method call problems (EMCP) – 27% 19
  • 20. Example 1:  File.Exists has data dependencies on program input  Subsequent branch at Line 1 using 1 the return value of File.Exists.  Example 2:  Path.GetFullPath has data dependencies on program input  Path.GetFullPath throws 2 exceptions.  Example 3: String.Format do not cause any problem 3 20
  • 21. Tackle object-creation problems with Factory Methods 21
  • 22. Tackle external-method call problems with Mock Methods or Method Instrumentation Mocking System.IO.File.ReadAllText 22
  • 23. Tools Typically Don’t Communicate Challenges Faced by Them to Enable Running Symbolic PathFinder ... Cooperation between Tools … ===================================== ================= results no errors detected and Users ===================================== ================= statistics elapsed time: 0:00:02 states: end=2 search: new=4, visited=0, backtracked=4, maxDepth=3, constraints=0 choice generators: thread=1, data=2 … heap: gc=3, new=271, free=22 instructions: 2875 max memory: 81MB loaded code: classes=71, methods=884 23
  • 24. Machine is better at task set A  Mechanical, tedious, repetitive tasks, …  Ex. solving constraints along a long path  Human is better at task set B  Intelligence, human intent, abstraction, domain knowledge, …  Ex. local reasoning after a loop, recognizing naming semantics =A U B 24
  • 25. Human-Assisted Computing  Driver: tool Helper: human  Ex. Covana [Xiao et al. ICSE 2011]  Human-Centric Computing  Driver: human  Helper: tool  Ex. Coding duels @Pex for Fun Interfaces are important. Contents are important too! 25
  • 26. Motivation  Tools are often not powerful enough  Human is good at some aspects that tools are not  What difficulties does the tool face?  How to communicate info to the user to get help? Iterations to form Feedback Loop  How does the user help the tool based on the info? 26
  • 27. Motivation  Tools are often not powerful enough  Human is good at some aspects that tools are not  What difficulties does the tool face?  How to communicate info to the user to get help? Iterations to form Feedback Loop  How does the user help the tool based on the info? 27
  • 28. external-method call problems (EMCP) object-creation problems (OCP) 28
  • 29. Existing solution  identify all executed external-method calls  report all object types of program inputs and fields  Limitations  the number is often high  some identified problem are irrelevant for achieving higher structural coverage 29
  • 30. Reported EMCPs: 44 Reported OCPs: 18 vs. Real EMCPs: 0 Real OCPs: 5 30
  • 31. [Xiao et al. ICSE 11]  Goal: Precisely identify problems faced by tools when achieving structural coverage  Insight: Partially-Covered Statements have data dependency on real problem candidates Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux. Precise Identification of Problems for Structural Test Generation. In Proc. ICSE 2011 31
  • 32. Runtime Problem Events Candidate Program Identification Generated Forward Test Inputs Symbolic Problem Execution Candidates Runtime Coverage Information Data Identified Dependence Problems Analysis 32
  • 33.  External-method calls whose arguments have data dependencies on program inputs Data Dependencies 33
  • 34. Symbolic Expression: return(File.Exists) == true Element of EMCP Candidate: return(File.Exists)  Partially-covered branch Branch Statement Line 1 has data statements have data dependency on File.Exists at Line 1 dependencies on EMCP candidates for return values 34
  • 35. Subjects:  xUnit: unit testing framework for .NET ▪ 223 classes and interfaces with 11.4 KLOC  QuickGraph: C# graph library ▪ 165 classes and interfaces with 8.3 KLOC  Evaluation setup:  Apply Pex to generate tests for program under test  Feed the program and generated tests to Covana  Compare existing solution and Covana 35
  • 36. RQ1: How effective is Covana in identifying the two main types of problems, EMCPs and OCPs?  RQ2: How effective is Covana in pruning irrelevant problem candidates of EMCPs and OCPs? 36
  • 37. Covana identifies • 43 EMCPs with only 1 false positive and 2 false negatives • 155 OCPs with 20 false positives and 30 false negatives. 37
  • 38. Covana prunes • 97% (1567 in 1610) EMCP candidates with 1 false positive and 2 false negatives • 66% (296 in 451) OCP candidates with 20 false positives and 30 false negatives 38
  • 39. [Xiao et al. ICSE 2011]  Task: What need to automate?  Test-input generation  What difficulties does the tool face?  Doesn’t know which methods to instrument and explore  Doesn’t know how to generate effective method sequences  How to communicate info to the user to get her help?  Report encountered problems  How does the user help the tool based on the info?  Instruct which external methods to instrument/write mock objects  Write factory methods for generating objects  Iterations to form feedback loop?  Yes, till the user is happy with coverage or impatient
  • 40. Human-Assisted Computing  Driver: tool Helper: human  Ex. Covana [Xiao et al. ICSE 2011]  Human-Centric Computing  Driver: human  Helper: tool  Ex. Coding duels @Pex for Fun Interfaces are important. Contents are important too! 40
  • 41. www.pexforfun.com 1,083,640 clicked 'Ask Pex!' The contributed concept of Coding Duel games as major game type of Pex for Fun since Summer 2010 41
  • 42. behavior Secret Impl == Player Impl Player Implementation Secret Implementation class Player { public static int Puzzle(int x) { class Secret { return x; public static int Puzzle(int x) { } if (x <= 0) return 1; } return x * Puzzle(x-1); } } class Test { public static void Driver(int x) { if (Secret.Puzzle(x) != Player.Puzzle(x)) throw new Exception(“Mismatch”); } } 42
  • 43. Coding duels at http://www.pexforfun.com/  Task for Human: write behavior-equiv code class Player { public static int Puzzle(int x) { return x;  Human  Tool } }  Does my new code behave differently? How exactly?  Human  Tool  Could you fix your code to handle failed/passed tests?  Iterations to form feedback loop?  Yes, till tool generates no failed tests/player is impatient
  • 44. Coding duels at http://www.pexforfun.com/  Brain exercising/learning while having fun  Fun: iterative, adaptive/personalized, w/ win criterion  Abstraction/generalization, debugging, problem solving Brain exercising
  • 45.
  • 46. Especially valuable in Massive Open Online Courses (MOOC)
  • 47. Everyone can contribute Internet  Coding duels  Duel solutions class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } 47
  • 48. Puzzle Games Made from Internet Difficult Constraints or Object- Creation Problems Ning Chen and Sunghun Kim. Puzzle-based Automatic Testing: bringing humans into the loop by solving puzzles. In Proc. ASE 2012 Supported by MSR SEIF Award
  • 50. StackMine [Han et al. ICSE 12] Pattern Matching Bug update Internet Problematic Bug Database Pattern Repository Bug filing Trace collection Trace Storage Trace analysis Shi Han, Yingnong Dang, Song Ge, Dongmei Zhang, and Tao Xie. Performance Debugging in the Large via Mining Millions of Stack Traces. In Proc. ICSE 2012 50
  • 51. “We believe that the MSRA tool is highly valuable and much more efficient for mass trace (100+ traces) analysis. For 1000 traces, we believe the tool saves us 4-6 weeks of time to create new signatures, which is quite a significant productivity boost.” - from Development Manager in Windows Highly effective new issue discovery on Windows mini-hang Continuous impact on future Windows versions Shi Han, Yingnong Dang, Song Ge, Dongmei Zhang, and Tao Xie. Performance Debugging in the Large via Mining Millions of Stack Traces. In Proc. ICSE 2012
  • 52. Static analysis + dynamic analysis  Static checking + Test generation  …  Dynamic analysis + static analysis  Fix generation + fix validation  …  Static analysis + static analysis  …  Dynamic analysis + dynamic analysis  … Example: Xiaoyin Wang, Lu Zhang, Tao Xie, Yingfei Xiong, and Hong Mei. Automating Presentation Changes in Dynamic Web Applications via Collaborative Hybrid Analysis. In Proc. FSE 2012 52
  • 53. Human-Assisted Computing  Covana  Human-Centric Computing  Pex for Fun  Human-Human Cooperation  StackMine
  • 54. Wonderful current/former students@NCSU ASE  Collaborators, especially those from Microsoft Research Redmond/Asia, Peking University  Colleagues who gave feedback and inspired me NSF grants CCF-0845272, CCF-0915400, CNS-0958235, ARO grant W911NF-08-1-0443, an NSA Science of Security, Lablet grant, a NIST grant, a 2011 Microsoft Research SEIF Award

Hinweis der Redaktion

  1. To study what problems
  2. To study what problems
  3. To study what problems
  4. To study what problems
  5. To study what problems
  6. http://developers.de/blogs/damir_dobric/archive/2009/04/13/using-of-factory-in-pex.aspx
  7. http://geekswithblogs.net/thomasweller/archive/2010/04/28/mocking-the-unmockable-using-microsoft-moles-with-gallio.aspx
  8. (1) the external-methodcallproblem (EMCP), where tools cannot deal with methodcalls to external libraries; (2) the object-creation problem(OCP), where tools fails to generate method-call sequencesto produce desirable object states.
  9. External-method calls whose arguments have data dependencies on program inputs (e.g., NOT method calls that print constant strings or put a thread to sleep for some time)
  10. Computing data dependencies of branch statements containing not-covered branches (partially-covered branch statements) on problem candidatesFor each collected symbolic expression sym found in the predicates of a branch statement b, Covana extracts elements of the problem candidates elem from sym.From elem, Covana extracts the corresponding problem candidates P and considers b has data dependency on P. Using the collected structural coverage, Covana further computes data dependencies of partially-covered branch statement on problem candidates.
  11. http://www.mysvc.it/myapps/constraints/
  12. http://www.mysvc.it/myapps/constraints/