EDBT 2026 Demo / reviewers in the wild / expert
Nikolai Tillmann
dblp:81/6785
· DBLP profile ↗
59ranked-venue papers
19as first author
1since 2021 · last 2022
0000-0002-9251-5954ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 47 · 11 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 8 · 7 first-authorSystems, architecture and hardware · 2 · 1 first-authorTheory of computation · 2Applied, interdisciplinary, general and emerging computing · 2 · 1 first-authorArtificial intelligence and machine learning · 1 · 1 first-authorSecurity and privacy · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
28 papers |
Software testing · 68% Program analysis · 16% Programming languages and type systems · 5% | |
| Interdisciplinary, comprehensive, and emerging computing
5 papers |
Computing education · 100% | |
| Network and information security
2 papers |
Systems and software security · 36% Usable security · 36% Web and mobile security · 28% |
Topics — the 30 heaviest of 48, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
test generation |
1.4 | 11 | 2014 | Constructing coding duels in Pex4Fun and code hunt · ISSTA 2014 Characteristic studies of loop problems for structural test generation via symbolic execution · ASE 2013 Teaching and learning programming and software engineering via interactive gaming · ICSE 2013 |
Program analysis › symbolic execution
dynamic symbolic execution |
0.5 | 5 | 2013 | Augmented dynamic symbolic execution · ASE 2012 DyTa: dynamic symbolic execution guided with static verification results · ICSE 2011 Reggae: Automated Test Generation for Programs Using Complex Regular Expressions · ASE 2009 |
Computing education
programming education |
0.4 | 3 | 2015 | Code Hunt: Experience with Coding Contests at Scale · ICSE (2) 2015 Teaching and learning programming and software engineering via interactive gaming · ICSE 2013 Constructing coding duels in Pex4Fun and code hunt · ISSTA 2014 |
Software testing › structural testing
structural test generation |
0.4 | 3 | 2013 | Characteristic studies of loop problems for structural test generation via symbolic execution · ASE 2013 Covana: precise identification of problems in pex · ICSE 2011 Precise identification of problems for structural test generation · ICSE 2011 |
Software testing
unit testing |
0.3 | 4 | 2010 | Parameterized unit testing: theory and practice · ICSE (2) 2010 Mock-object generation with behavior · ASE 2006 Parameterized unit tests · ESEC/SIGSOFT FSE 2005 |
Computing education › pedagogy
game-based learning |
0.3 | 3 | 2014 | Pex4Fun: A web-based environment for educational gaming via automated test generation · ASE 2013 Transferring an automated test generation tool to practice: from pex to fakes and code digger · ASE 2014 Constructing coding duels in Pex4Fun and code hunt · ISSTA 2014 |
Program analysis
symbolic execution |
0.3 | 4 | 2011 | Symbolic execution for software testing in practice: preliminary assessment · ICSE 2011 Parameterized unit tests · ESEC/SIGSOFT FSE 2005 Parameterized unit tests with unit meister · ESEC/SIGSOFT FSE 2005 |
Software testing › test generation
dynamic test generation |
0.2 | 2 | 2011 | DyTa: dynamic symbolic execution guided with static verification results · ICSE 2011 Symbolic execution for software testing in practice: preliminary assessment · ICSE 2011 |
Software testing › test generation
automated test generation |
0.2 | 2 | 2014 | Transferring an automated test generation tool to practice: from pex to fakes and code digger · ASE 2014 Pex4Fun: A web-based environment for educational gaming via automated test generation · ASE 2013 |
Software testing › unit testing
parameterized unit test |
0.2 | 3 | 2010 | Parameterized unit testing: theory and practice · ICSE (2) 2010 Parameterized unit tests · ESEC/SIGSOFT FSE 2005 Parameterized unit tests with unit meister · ESEC/SIGSOFT FSE 2005 |
Empirical software engineering
technology transfer |
0.2 | 1 | 2014 | Transferring an automated test generation tool to practice: from pex to fakes and code digger · ASE 2014 |
Software testing › test generation
white-box test generation |
0.2 | 1 | 2014 | Constructing coding duels in Pex4Fun and code hunt · ISSTA 2014 |
Software testing
automated grading |
0.2 | 1 | 2013 | Teaching and learning programming and software engineering via interactive gaming · ICSE 2013 |
Programming languages and type systems › programming environment
live programming |
0.2 | 1 | 2013 | It's alive! continuous feedback in UI programming · PLDI 2013 |
Software testing › test generation
symbolic testing |
0.2 | 1 | 2013 | Characteristic studies of loop problems for structural test generation via symbolic execution · ASE 2013 |
Debugging and program repair
visual debugging |
0.2 | 1 | 2013 | GROPG: a graphical on-phone debugger · ICSE 2013 |
Systems and software security › information flow control
information flow analysis |
0.1 | 1 | 2012 | User-aware privacy control via extended static-information-flow analysis · ASE 2012 |
Usable security
privacy control |
0.1 | 1 | 2012 | User-aware privacy control via extended static-information-flow analysis · ASE 2012 |
Programming languages and type systems
language design |
0.1 | 1 | 2012 | TouchDevelop: app development on mobile devices · SIGSOFT FSE 2012 |
Software testing › mutation testing
mutation score |
0.1 | 1 | 2012 | Augmented dynamic symbolic execution · ASE 2012 |
Software testing › test generation
test suite generation |
0.1 | 1 | 2012 | Augmented dynamic symbolic execution · ASE 2012 |
Program analysis
dynamic analysis |
0.1 | 2 | 2012 | DySy: dynamic symbolic execution for invariant inference · ICSE 2008 Augmented dynamic symbolic execution · ASE 2012 |
Software testing › automated testing
continuous testing |
0.1 | 1 | 2011 | eXpress: guided path exploration for efficient regression test generation · ISSTA 2011 |
Software testing › test generation › test sequence generation
method sequence generation |
0.1 | 1 | 2011 | Synthesizing method sequences for high-coverage testing · OOPSLA 2011 |
Software testing
regression testing |
0.1 | 1 | 2011 | eXpress: guided path exploration for efficient regression test generation · ISSTA 2011 |
Program verification
static verification |
0.1 | 1 | 2011 | DyTa: dynamic symbolic execution guided with static verification results · ICSE 2011 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.1 | 1 | 2010 | SPUR: a trace-based JIT compiler for CIL · OOPSLA 2010 |
Software testing
model-based testing |
0.1 | 2 | 2005 | Online testing with model programs · ESEC/SIGSOFT FSE 2005 Testing Concurrent Object-Oriented Systems with Spec Explorer · FM 2005 |
Software testing
test input generation |
0.1 | 1 | 2010 | Parameterized unit testing: theory and practice · ICSE (2) 2010 |
Software testing
test oracle |
0.1 | 1 | 2010 | MiTV: multiple-implementation testing of user-input validators for web applications · ASE 2010 |
Methods — techniques the papers use, named apart from their topics
dynamic symbolic execution · 1.2symbolic execution · 0.7pex · 0.4data dependency analysis · 0.2branch coverage analysis · 0.2constraint solving · 0.2literature survey · 0.2heuristics · 0.2empirical study · 0.2continuous feedback · 0.2bounded iteration · 0.2tamper analysis · 0.1static information flow analysis · 0.1differential testing · 0.1edge covering strategy · 0.0bounded reachability game · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2022 | Efficient profile-guided size optimization for native mobile applicationsabstractPositive user experience of mobile apps demands they not only launch fast and run fluidly, but are also small in order to reduce network bandwidth from regular updates. Conventional optimizations often trade off size regressions for performance wins, making them impractical in the mobile space. Indeed, profile-guided optimization (PGO) is successful in server workloads, but is not effective at reducing size and page faults for mobile apps. Also, profiles must be collected from instrumenting builds that are up to 2X larger, so they cannot run normally on real mobile devices. Kyungwoo Lee, Ellis Hoag, Nikolai Tillmann |
CC | 3 |
| 2015 | Code Hunt: Experience with Coding Contests at ScaleabstractMastering a complex skill like programming takes many hours. In order to encourage students to put in these hours, we built Code Hunt, a game that enables players to program against the computer with clues provided as unit tests. The game has become very popular and we are now running worldwide contests where students have a fixed amount of time to solve a set of puzzles. This paper describes Code Hunt and the contest experience it offers. We then show some early results that demonstrate how Code Hunt can accurately discriminate between good and bad coders. The challenges of creating and selecting puzzles for contests are covered. We end up with a short description of our course experience, and some figures that show that Code Hunt is enjoyed by women and men alike. Judith Bishop, R. Nigel Horspool, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
ICSE (2) | 4 |
| 2015 | User-aware privacy control via extended static-information-flow analysis
Xusheng Xiao, Nikolai Tillmann, Manuel Fähndrich, Jonathan de Halleux, Michal Moskal, Tao Xie 0001 |
Autom. Softw. Eng. | 2 |
| 2014 | Addressing JavaScript JIT Engines Performance Quirks: A Crowdsourced Adaptive Compiler
Rafael Auler, Edson Borin, Jonathan de Halleux, Michal Moskal, Nikolai Tillmann |
CC | 5 |
| 2014 | Constructing coding duels in Pex4Fun and code huntabstractPex is an automatic white-box test-generation tool for .NET. We have established that games can be built on top of Pex to open the tool to students and to the general public. In particular, we have released Pex4Fun (www.pexforfun.com) and its successor Code Hunt (www.codehunt.com) as web-based educational gaming environments for teaching and learning programming and software engineering. In Pex4Fun and Code Hunt, the main game type is a coding duel, where a player writes code in a method to achieve the same functionality as the secret method implementation, based on feedback provided by the underlying Pex tool. Players iteratively modify their code to match the functional behavior of the secret method. The scope of duels extends from the simplest one-line method to those including advanced concepts such as writing parameterized unit tests and code contracts. We have also used the game type for competitions with thousands of players, and have found that it differentiates well between beginners and top coders. This tool demonstration shows how coding duels in Pex4Fun and Code Hunt can be constructed and used in teaching and training programming and software engineering. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Judith Bishop |
ISSTA | 1 |
| 2014 | Transferring an automated test generation tool to practice: from pex to fakes and code diggerabstractProducing industry impacts has been an important, yet challenging task for the research community. In this paper, we report experiences on successful technology transfer of Pex and its relatives (tools derived from or associated with Pex) from Microsoft Research and lessons learned from more than eight years of research efforts by the Pex team in collaboration with academia. Moles, a tool associated with Pex, was shipped as Fakes with Visual Studio since August 2012, benefiting a huge user base of Visual Studio around the world. The number of download counts of Pex and its lightweight version called Code Digger has reached tens of thousands within one or two years. Pex4Fun (derived from Pex), an educational gaming website released since June 2010, has achieved high educational impacts, reflected by the number of clicks of the "Ask Pex!" button (indicating the attempts made by users to solve games in Pex4Fun) as over 1.5 million till July 2014. Evolved from Pex4Fun, the Code Hunt website has been used in a very large programming competition. In this paper, we discuss the technology background, tool overview, impacts, project timeline, and lessons learned from the project. We hope that our reported experiences can inspire more high-impact technology-transfer research from the research community. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001 |
ASE | 1 |
| 2014 | Code hunt: gamifying teaching and learning of computer science at scaleabstractCode Hunt (http://www.codehunt.com/) is an educational coding game (that runs in a browser) for teaching and learning computer science at scale. The game consists of a series of worlds and levels, which get increasingly challenging. In each level, the player has to discover a secret code fragment and write code for it. The game has sounds and a leaderboard to keep the player engaged. Code Hunt targets teachers and students from introductory to advanced programming or software engineering courses. In addition, Code Hunt can be used by seasoned developers to hone their programming skills or by companies to evaluate job candidates. At the core of the game experience is an automated program analysis and grading engine based on dynamic symbolic execution. The engine detects any behavioral differences between the player's code and the secret code fragment. The game works in any modern browser, and currently supports C# or Java programs. Code Hunt is a dramatic evolution of our earlier Pex4Fun web platform, from which we have gathered considerable experience (including over 1.4 million programs submitted by users). Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Judith Bishop |
L@S | 1 |
| 2013 | GROPG: a graphical on-phone debuggerabstractDebugging mobile phone applications is hard, as current debugging techniques either require multiple computing devices or do not support graphical debugging. To address this problem we present GROPG, the first graphical on-phone debugger. We implement GROPG for Android and perform a preliminary evaluation on third-party applications. Our experiments suggest that GROPG can lower the overall debugging time of a comparable text-based on-phone debugger by up to 2/3. Christoph Csallner, Nikolai Tillmann |
ICSE | 3 |
| 2013 | Teaching and learning programming and software engineering via interactive gamingabstractMassive Open Online Courses (MOOCs) have recently gained high popularity among various universities and even in global societies. A critical factor for their success in teaching and learning effectiveness is assignment grading. Traditional ways of assignment grading are not scalable and do not give timely or interactive feedback to students. To address these issues, we present an interactive-gaming-based teaching and learning platform called Pex4Fun. Pex4Fun is a browser-based teaching and learning environment targeting teachers and students for introductory to advanced programming or software engineering courses. At the core of the platform is an automated grading engine based on symbolic execution. In Pex4Fun, teachers can create virtual classrooms, customize existing courses, and publish new learning material including learning games. Pex4Fun was released to the public in June 2010 and since then the number of attempts made by users to solve games has reached over one million. Our work on Pex4Fun illustrates that a sophisticated software engineering technique-automated test generation-can be successfully used to underpin automatic grading in an online programming system that can scale to hundreds of thousands of users. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Sumit Gulwani, Judith Bishop |
ICSE | 1 |
| 2013 | Pex4Fun: A web-based environment for educational gaming via automated test generationabstractPex4Fun (http://www.pex4fun.com/) is a web-based educational gaming environment for teaching and learning programming and software engineering. Pex4Fun can be used to teach and learn programming and software engineering at many levels, from high school all the way through graduate courses. With Pex4Fun, a student edits code in any browser - with Intellisense - and Pex4Fun executes it and analyzes it in the cloud. Pex4Fun connects teachers, curriculum authors, and students in a unique social experience, tracking and streaming progress updates in real time. In particular, Pex4Fun finds interesting and unexpected input values (with Pex, an advanced test-generation tool) that help students understand what their code is actually doing. The real fun starts with coding duels where a student writes code to implement a teacher's secret specification (in the form of sample-solution code not visible to the student). Pex4Fun finds any discrepancies in behavior between the student's code and the secret specification. Such discrepancies are given as feedback to the student to guide how to fix the student's code to match the behavior of the secret specification. This tool demonstration shows how Pex4Fun can be used in teaching and learning, such as solving coding duels, exploring course materials in feature courses, creating and teaching a course, creating and publishing coding duels, and learning advanced topics behind Pex4Fun. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Judith Bishop |
ASE | 1 |
| 2013 | Characteristic studies of loop problems for structural test generation via symbolic executionabstractDynamic Symbolic Execution (DSE) is a state-of-the-art test-generation approach that systematically explores program paths to generate high-covering tests. In DSE, the presence of loops (especially unbound loops) can cause an enormous or even infinite number of paths to be explored. There exist techniques (such as bounded iteration, heuristics, and summarization) that assist DSE in addressing loop problems. However, there exists no literature-survey or empirical work that shows the pervasiveness of loop problems or identifies challenges faced by these techniques on real-world open-source applications. To fill this gap, we provide characteristic studies to guide future research on addressing loop problems for DSE. Our proposed study methodology starts with conducting a literature-survey study to investigate how technical problems such as loop problems compromise automated software-engineering tasks such as test generation, and which existing techniques are proposed to deal with such technical problems. Then the study methodology continues with conducting an empirical study of applying the existing techniques on real-world software applications sampled based on the literature-survey results and major open-source project hostings. This empirical study investigates the pervasiveness of the technical problems and how well existing techniques can address such problems among real-world software applications. Based on such study methodology, our two-phase characteristic studies identify that bounded iteration and heuristics are effective in addressing loop problems when used properly. Our studies further identify challenges faced by these techniques and provide guidelines for effectively addressing these challenges. Xusheng Xiao, Tao Xie 0001, Nikolai Tillmann |
ASE | 4 |
| 2013 | It's alive! continuous feedback in UI programmingabstractLive programming allows programmers to edit the code of a running program and immediately see the effect of the code changes. This tightening of the traditional edit-compile-run cycle reduces the cognitive gap between program code and execution, improving the learning experience of beginning programmers while boosting the productivity of seasoned ones. Unfortunately, live programming is difficult to realize in practice as imperative languages lack well-defined abstraction boundaries that make live programming responsive or its feedback comprehensible. Sebastian Burckhardt, Manuel Fähndrich, Jonathan de Halleux, Sean McDirmid, Michal Moskal, Nikolai Tillmann, Jun Kato 0001 |
PLDI | 6 |
| 2013 | A comprehensive field study of end-user programming on mobile devicesabstractTouchDevelop represents a new programming environment that enables users to develop mobile applications directly on mobile devices. TouchDevelop has successfully drawn a huge number of end users, who have published thousands of TouchDevelop scripts online. To enhance end-user programming on mobile devices, we conduct a comprehensive field study of 17322 TouchDevelop scripts and 4275 users. Our study consists of an overall study on the characteristics of scripts (e.g., structural features, code reuse) and users (e.g., expertise), and a longitudinal study on how they evolve over time. Our study results show important characteristics of scripts such as dense external method calls, high code-reuse ratio, and also reveal interesting evolution patterns of users. The findings and implications in our study provide valuable guidelines for improving tool support or services for end users and increasing the popularity of end-user programming on mobile devices. Tao Xie 0001, Nikolai Tillmann |
VL/HCC | 3 |
| 2012 | Pex4Fun: Teaching and Learning Computer Science via Social GamingabstractPex4Fun (http://www.pexforfun.com/) is a web-based serious gaming environment for teaching computer science. Pex4Fun can be used to teach and learn computer programming at many levels, from high school all the way through graduate courses.With Pex4Fun, a student edits code in any browser -- with Intellisense -- and Pex4Fun executes it and analyzes it in the cloud. Pex4Fun connects teachers, curriculum authors, and students in a unique social experience, tracking and streaming progress updates in real time. In particular, Pex4Fun finds interesting and unexpected input values that help students understand what their code is actually doing. The real fun starts with Coding Duels where students write code to implement a teacher's specification. Pex4Fun finds any discrepancies in behavior between the student's code and the specification. This tutorial instructs materials to equip participants with skills and knowledge of using Pex4Fun in teaching and learning, such as solving puzzles, solving Coding Duels, exploring course materials in feature courses, creating and teaching a course, creating and publishing Coding Duels, and learning advanced topics behind Pex4Fun. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Judith Bishop |
CSEE&T | 1 |
| 2012 | Engage Your Students by Teaching Computer Science Using Only Mobile Devices with TouchDevelopabstractWe are experiencing a technology shift: powerful and easy-to-use touchscreen-based mobile devices such as smartphones and tablets are becoming more prevalent than traditional PCs and laptops. Many mobile devices are going to be the first and, in less developed countries, possibly the only computing devices that virtually all people would own and carry with them at all times. We propose to reflect this new reality in how computer science is taught in the classroom. In this tutorial, participants will learn about developing software directly on smartphones without a PC using TouchDevelop on Windows Phone, a novel application-creation environment from Microsoft Research. Its typed, structured programming language is built around the idea of using only a touchscreen as the input device to author code. Easy access to the rich sensor and personal data available on a mobile device results in a fun and engaging programming experience for students. Nikolai Tillmann, Michal Moskal, Jonathan de Halleux, Manuel Fähndrich, Tao Xie 0001 |
CSEE&T | 1 |
| 2012 | Teaching programming on a mobile deviceabstractFrom paper to computers, the way we have been writing down thoughts and performing symbolic computations has been constantly evolving. Teaching methods closely follow this trend, leveraging existing technology to make teaching more effective and preparing students for their later careers with available technologies. At present, we are in the middle of another technology shift: instead of using PCs and laptops, mobile devices are becoming more prevalent for most everyday computing tasks. We propose that computer programming, and thus the teaching of programming, can and should be done directly on the mobile devices themselves, without the need for a separate PC to write code. Programming on mobile devices engages students in new ways, allowing them to access and manipulate programmatically their most personal digital data such as pictures, videos, and music in an easy and intuitive way. Nikolai Tillmann, Judith Bishop |
ITiCSE | 1 |
| 2012 | The future of teaching programming is on mobile devicesabstractFrom paper to computers, the way that we have been writing down thoughts and performing symbolic computations has been constantly evolving. Teaching methods closely follow this trend, leveraging existing technology to make teaching more effective and preparing students for their later careers with the available technology. Right now, in 2012, we are in the middle of another technology shift: instead of using PCs and laptops, mobile devices are becoming more prevalent for most everyday computing tasks. In fact, never before in human history were incredibly powerful and versatile computing devices such as smartphones available and adopted so broadly. We propose that computer programming, and thus the teaching of programming, can and should be done directly on the mobile devices themselves, without the need for a separate PC or laptop to write code. Programming on smartphones that we carry around with us at all times means instant gratification for students, as they can show their games and applications to their friends, and it means that students can do their homework or additional practicing at all times. We describe TouchDevelop, a novel mobile programming environment, and call out challenges that need to be overcome and opportunities that it creates. Nikolai Tillmann, Michal Moskal, Jonathan de Halleux, Manuel Fähndrich, Judith Bishop, Arjmand Samuel, Tao Xie 0001 |
ITiCSE | 1 |
| 2012 | Augmented dynamic symbolic executionabstractDynamic symbolic execution (DSE) can efficiently explore all simple paths through a program, reliably determining whether there are any program crashes or violations of assertions or code contracts. However, if such automated oracles do not exist, the traditional approach is to present the developer a small and representative set of tests in order to let him/her determine their correctness. Customer feedback on Microsoft's Pex tool revealed that users expect different values and also more values than those produced by Pex, which threatens the applicability of DSE in a scenario without automated oracles. Indeed, even though all paths might be covered by DSE, the resulting tests are usually not sensitive enough to make a good regression test suite. In this paper, we present augmented dynamic symbolic execution, which aims to produce representative test sets by augmenting path conditions with additional conditions that enforce target criteria such as boundary or mutation adequacy, or logical coverage criteria. Konrad Jamrozik, Gordon Fraser 0001, Nikolai Tillmann, Jonathan de Halleux |
ASE | 3 |
| 2012 | User-aware privacy control via extended static-information-flow analysisabstractApplications in mobile-marketplaces may leak private user information without notification. Existing mobile platforms provide little information on how applications use private user data, making it difficult for experts to validate applications and for users to grant applications access to their private data. We propose a user-aware privacy control approach, which reveals how private information is used inside applications. We compute static information flows and classify them as safe/unsafe based on a tamper analysis that tracks whether private data is obscured before escaping through output channels. This flow information enables platforms to provide default settings that expose private data only for safe flows, thereby preserving privacy and minimizing decisions required from users. We built our approach into TouchDevelop, an application-creation environment that allows users to write scripts on mobile devices and install scripts published by other users. We evaluate our approach by studying 546 scripts published by 194 users. Xusheng Xiao, Nikolai Tillmann, Manuel Fähndrich, Jonathan de Halleux, Michal Moskal |
ASE | 2 |
| 2012 | Teaching and learning computing via social gaming with Pex4Fun (abstract only)abstractPex4Fun (pexforfun.com) is a web-based serious gaming environment for teaching computing at many levels, from high school all the way through graduate courses. Unique to the Pex4Fun experience is a cloud-based program evaluation engine based on dynamic symbolic execution and SMT-solving, which provides customized feedback to the student and automated grading for the teacher. Thus, Pex4Fun connects teachers, curriculum authors, and students in a social experience, tracking and streaming progress updates in real time. In particular, Pex4Fun finds interesting and unexpected input values that help students understand what their code is actually doing. The real fun starts with coding duels where students write code to implement a teacher's specification. Pex4Fun finds any discrepancies in behavior between the student's code and the specification. Then based on the reported discrepancies, the student improves his or her code towards the specification. Pex4Fun can be used to develop interesting, engaging, and demanding class materials on mathematics, algorithms, programming languages, or problem solving in general. A teacher can use an integrated wiki to author these class materials for students to work through. This workshop involves creating and teaching course materials at Pex4Fun. Participants should bring a laptop computer. The intended audience includes all levels of CS educators who are interested in integrating educational technology in their teaching environments. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001, Judith Bishop |
SIGCSE | 1 |
| 2012 | Engage your students by teaching programming using only mobile devices with TouchDevelop (abstract only)abstractWe are experiencing a technology shift: Powerful and easy-to-use touchscreen-based mobile devices like smartphones and tablets are becoming more prevalent than traditional PCs and laptops. We propose that computer programming, and thus teaching of programming, can and should be done directly on the mobile devices themselves, without the need for a separate PC or laptop to write code. In this workshop, participants will learn about developing software directly on smartphones without a PC using TouchDevelop, a novel application creation environment on Windows Phone 7 from Microsoft Research (http://touchdevelop.com). Its typed, structured programming language is built around the idea of only using a touchscreen as the input device to author code. A semi-structured code editor makes it easy to navigate between different syntax elements. By inferring types and mining previously written programs, the editor provides highly predictive auto-completion suggestions to the user. The language provides built-in primitives that make it easy to access the rich sensor data available on a mobile device. Programming on mobile devices engages students in new ways, allowing them to access and manipulate programmatically their most personal digital data such as pictures, videos, and music. Programming on smartphones which we carry around with us at all times means instant gratification for students, as they can show their games and applications to their friends, and it means that students can do their homework or additional practicing at all times. For this workshop, a laptop is optional; Windows Phone 7 devices will be provided for exercises. Nikolai Tillmann, Michal Moskal, Jonathan de Halleux, Manuel Fähndrich, Tao Xie 0001 |
SIGCSE | 1 |
| 2012 | TouchDevelop: app development on mobile devicesabstractMobile devices are becoming the prevalent computing platform for most people. TouchDevelop is a new mobile development environment that enables anyone with a Windows Phone to create new apps directly on the smartphone, without a PC or a traditional keyboard. At the core is a new mobile programming language and editor that was designed with the touchscreen as the only input device in mind. Programs written in TouchDevelop can leverage all phone sensors such as GPS, cameras, accelerometer, gyroscope, and stored personal data such as contacts, songs, pictures. Thousands of programs have already been written and published with TouchDevelop. Nikolai Tillmann, Michal Moskal, Jonathan de Halleux, Manuel Fähndrich, Sebastian Burckhardt |
SIGSOFT FSE | 1 |
| 2012 | State Coverage: Software Validation Metrics beyond Code Coverage
Dries Vanoverberghe, Jonathan de Halleux, Nikolai Tillmann, Frank Piessens |
SOFSEM | 3 |
| 2011 | Pex4Fun: Teaching and learning computer science via social gamingabstractPex4Fun from Microsoft Research is a web-based serious gaming environment for teaching computer science. Pex4Fun can be used to teach and learn computer programming at many levels, from high school all the way through graduate courses. With Pex4Fun, a student edits code in any browser - with Intellisense - and Pex4Fun executes it and analyzes it in the cloud. Pex4Fun connects teachers, curriculum authors, and students in a unique social experience, tracking and streaming progress updates in real time. In particular, Pex4Fun finds interesting and unexpected input values that help students understand what their code is actually doing. The real fun starts with coding duels where students write code to implement a teacher's specification. Pex4Fun finds any discrepancies in behavior between the student's code and the specification. This tutorial equips participants with skills and knowledge of using Pex4Fun in teaching and learning, such as solving puzzles, solving coding duels, exploring course materials in feature courses, creating and teaching a course, creating and publishing coding duels, and learning advanced topics behind Pex4Fun. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001 |
CSEE&T | 1 |
| 2011 | Retrofitting Unit Tests for Parameterized Unit Testing
Suresh Thummalapenta, Madhuri R. Marri, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
FASE | 4 |
| 2011 | Symbolic execution for software testing in practice: preliminary assessmentabstractWe present results for the "Impact Project Focus Area" on the topic of symbolic execution as used in software testing. Symbolic execution is a program analysis technique introduced in the 70s that has received renewed interest in recent years, due to algorithmic advances and increased availability of computational power and constraint solving technology. We review classical symbolic execution and some modern extensions such as generalized symbolic execution and dynamic test generation. We also give a preliminary assessment of the use in academia, research labs, and industry. Cristian Cadar, Patrice Godefroid, Sarfraz Khurshid, Corina Pasareanu, Koushik Sen, Nikolai Tillmann, Willem Visser |
ICSE | 6 |
| 2011 | DyTa: dynamic symbolic execution guided with static verification resultsabstractSoftware-defect detection is an increasingly important research topic in software engineering. To detect defects in a program, static verification and dynamic test generation are two important proposed techniques. However, both of these techniques face their respective issues. Static verification produces false positives, and on the other hand, dynamic test generation is often time consuming. To address the limitations of static verification and dynamic test generation, we present an automated defect-detection tool, called DyTa, that combines both static verification and dynamic test generation. DyTa consists of a static phase and a dynamic phase. The static phase detects potential defects with a static checker; the dynamic phase generates test inputs through dynamic symbolic execution to confirm these potential defects. DyTa reduces the number of false positives compared to static verification and performs more efficiently compared to dynamic test generation. Xi Ge, Kunal Taneja, Tao Xie 0001, Nikolai Tillmann |
ICSE | 4 |
| 2011 | Precise identification of problems for structural test generationabstractAn important goal of software testing is to achieve at least high structural coverage. To reduce the manual efforts of producing such high-covering test inputs, testers or developers can employ tools built based on automated structural test-generation approaches. Although these tools can easily achieve high structural coverage for simple programs, when they are applied on complex programs in practice, these tools face various problems, such as (1) the external-method-call problem (EMCP), where tools cannot deal with method calls to external libraries; (2) the object-creation problem (OCP), where tools fails to generate method-call sequences to produce desirable object states. Since these tools currently could not be powerful enough to deal with these problems in testing complex programs in practice, we propose cooperative developer testing, where developers provide guidance to help tools achieve higher structural coverage. To reduce the efforts of developers in providing guidance to tools, in this paper, we propose a novel approach, called Covana, which precisely identifies and reports problems that prevent the tools from achieving high structural coverage primarily by determining whether branch statements containing notcovered branches have data dependencies on problem candidates. We provide two techniques to instantiate Covana to identify EMCPs and OCPs. Finally, we conduct evaluations on two open source projects to show the effectiveness of Covana in identifying EMCPs and OCPs. Xusheng Xiao, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
ICSE | 3 |
| 2011 | Covana: precise identification of problems in pexabstractAchieving high structural coverage is an important goal of software testing. Instead of manually producing test inputs that achieve high structural coverage, testers or developers can employ tools built based on automated test-generation approaches, such as Pex, to automatically generate such test inputs. Although these tools can easily generate test inputs that achieve high structural coverage for simple programs, when applied on complex programs in practice, these tools face various problems, such as the problems of dealing with method calls to external libraries or generating method-call sequences to produce desired object states. Since these tools are currently not powerful enough to deal with these various problems in testing complex programs, we propose cooperative developer testing, where developers provide guidance to help tools achieve higher structural coverage. In this demo, we present Covana, a tool that precisely identifies and reports problems that prevent Pex from achieving high structural coverage. Covana identifies problems primarily by determining whether branch statements containing not-covered branches have data dependencies on problem candidates. Xusheng Xiao, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
ICSE | 3 |
| 2011 | eXpress: guided path exploration for efficient regression test generationabstractSoftware programs evolve throughout their lifetime undergoing various changes. While making these changes, software developers may introduce regression faults. It is desirable to detect these faults as quickly as possible to reduce the cost involved in fixing them. One existing solution is continuous testing, which runs an existing test suite to quickly find regression faults as soon as code changes are saved. However, the effectiveness of continuous testing depends on the capability of the existing test suite for finding behavioral differences across versions. Kunal Taneja, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
ISSTA | 3 |
| 2011 | Synthesizing method sequences for high-coverage testingabstractHigh-coverage testing is challenging. Modern object-oriented programs present additional challenges for testing. One key difficulty is the generation of proper method sequences to construct desired objects as method parameters. In this paper, we cast the problem as an instance of program synthesis that automatically generates candidate programs to satisfy a user-specified intent. In our setting, candidate programs are method sequences, and desired object states specify an intent. Automatic generation of desired method sequences is difficult due to its large search space---sequences often involve methods from multiple classes and require specific primitive values. This paper introduces a novel approach, called Seeker, to intelligently navigate the large search space. Seeker synergistically combines static and dynamic analyses: (1) dynamic analysis generates method sequences to cover branches; (2) static analysis uses dynamic analysis information for not-covered branches to generate candidate sequences; and (3) dynamic analysis explores and eliminates statically generated sequences. For evaluation, we have implemented Seeker and demonstrate its effectiveness on four subject applications totalling 28K LOC. We show that Seeker achieves higher branch coverage and def-use coverage than existing state-of-the-art approaches. We also show that Seeker detects 34 new defects missed by existing tools. Suresh Thummalapenta, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Zhendong Su 0001 |
OOPSLA | 3 |
| 2010 | Parameterized unit testing: theory and practiceabstractUnit testing has been widely recognized as an important and valuable means of improving software reliability, as it exposes bugs early in the software development life cycle. However, manual unit testing is often tedious and insufficient. Testing tools can be used to enable economical use of resources by reducing manual effort. Recently parameterized unit testing has emerged as a very promising and effective methodology to allow the separation of two testing concerns or tasks: the specification of external, black-box behavior (i.e., assertions or specifications) by developers and the generation and selection of internal, white-box test inputs (i.e., high-code-covering test inputs) by tools. A parameterized unit test (PUT) is simply a test method that takes parameters, calls the code under test, and states assertions. PUTs have been supported by various testing frameworks. Various open source and industrial testing tools also exist to generate test inputs for PUTs. Nikolai Tillmann, Jonathan de Halleux, Tao Xie 0001 |
ICSE (2) | 1 |
| 2010 | Guided test generation for coverage criteriaabstractTest coverage criteria including boundary-value and logical coverage such as Modified Condition/Decision Coverage (MC/DC) have been increasingly used in safety-critical or mission-critical domains, complementing those more popularly used structural coverage criteria such as block or branch coverage. However, existing automated test-generation approaches often target at block or branch coverage for test generation and selection, and therefore do not support testing against boundary-value coverage or logical coverage. To address this issue, we propose a general approach that uses instrumentation to guide existing test-generation approaches to generate test inputs that achieve boundary-value and logical coverage for the program under test. Our preliminary evaluation shows that our approach effectively helps an approach based on Dynamic Symbolic Execution (DSE) to improve boundary-value and logical coverage of generated test inputs. The evaluation results show 30.5% maximum (23% average) increase in boundary-value coverage and 26% maximum (21.5% average) increase in logical coverage of the subject programs under test using our approach over without using our approach. In addition, our approach improves the fault-detection capability of generated test inputs by 12.5% maximum (11% average) compared to the test inputs generated without using our approach. Rahul Pandita, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
ICSM | 3 |
| 2010 | Test generation via Dynamic Symbolic Execution for mutation testingabstractMutation testing has been used to assess and improve the quality of test inputs. Generating test inputs to achieve high mutant-killing ratios is important in mutation testing. However, existing test-generation techniques do not provide effective support for killing mutants in mutation testing. In this paper, we propose a general test-generation approach, called PexMutator, for mutation testing using Dynamic Symbolic Execution (DSE), a recent effective test-generation technique. Based on a set of transformation rules, PexMutator transforms a program under test to an instrumented meta-program that contains mutant-killing constraints. Then PexMutator uses DSE to generate test inputs for the meta-program. The mutant-killing constraints introduced via instrumentation guide DSE to generate test inputs to kill mutants automatically. We have implemented our approach as an extension for Pex, an automatic structural testing tool developed at Microsoft Research. Our preliminary experimental study shows that our approach is able to strongly kill more than 80% of all the mutants for the five studied subjects. In addition, PexMutator is able to outperform Pex, a state-of-the-art test-generation tool, in terms of strong mutant killing while achieving the same block coverage. Lingming Zhang 0001, Tao Xie 0001, Lu Zhang 0023, Nikolai Tillmann, Jonathan de Halleux, Hong Mei 0001 |
ICSM | 4 |
| 2010 | Rex: Symbolic Regular Expression ExplorerabstractConstraints in form regular expressions over strings are ubiquitous. They occur often in programming languages like Perl and C#, in SQL in form of LIKE expressions, and in web applications. Providing support for regular expression constraints in program analysis and testing has several useful applications. We introduce a method and a tool called Rex, for symbolically expressing and analyzing regular expression constraints. Rex is implemented using the SMT solver Z3, and we provide experimental evaluation of Rex. Margus Veanes, Jonathan de Halleux, Nikolai Tillmann |
ICST | 3 |
| 2010 | MiTV: multiple-implementation testing of user-input validators for web applicationsabstractUser-input validators play an essential role in guarding a web application against application-level attacks. Hence, the security of the web application can be compromised by defective validators. To detect defects in validators, testing is one of the most commonly used methodologies. Testing can be performed by manually writing test inputs and oracles, but this manual process is often labor-intensive and ineffective. On the other hand, automated test generators cannot generate test oracles in the absence of specifications, which are often not available in practice. To address this issue in testing validators, we propose a novel approach, called MiTV, that applies Multiple-implementation Testing for Validators, i.e., comparin gthe behavior of a validator under test with other validators of the same type. These other validators of the same type can be collected from either open or proprietary source code repositories. To show the effectiveness of MiTV, we applied MiTV on 53 different validators (of 6 common types) for web applications. Our results show that MiTV detected real defects in 70% of the validators. Kunal Taneja, Madhuri R. Marri, Tao Xie 0001, Nikolai Tillmann |
ASE | 5 |
| 2010 | SPUR: a trace-based JIT compiler for CILabstractTracing just-in-time compilers (TJITs) determine frequently executed traces (hot paths and loops) in running programs and focus their optimization effort by emitting optimized machine code specialized to these traces. Prior work has established this strategy to be especially beneficial for dynamic languages such as JavaScript, where the TJIT interfaces with the interpreter and produces machine code from the JavaScript trace. Michael Bebenita, Florian Brandner, Manuel Fähndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, Herman Venter |
OOPSLA | 6 |
| 2010 | FloPSy - Search-Based Floating Point Constraint Solving for Symbolic Execution
Kiran Lakhotia, Nikolai Tillmann, Mark Harman, Jonathan de Halleux |
ICTSS | 2 |
| 2009 | Fitness-guided path exploration in dynamic symbolic executionabstractDynamic symbolic execution is a structural testing technique that systematically explores feasible paths of the program under test by running the program with different test inputs to improve code coverage. To address the space-explosion issue in path exploration, we propose a novel approach called Fitnex, a search strategy that uses state-dependent fitness values (computed through a fitness function) to guide path exploration. The fitness function measures how close an already discovered feasible path is to a particular test target (e.g., covering a not-yet-covered branch). Our new fitness-guided search strategy is integrated with other strategies that are effective for exploration problems where the fitness heuristic fails. We implemented the new approach in Pex, an automated structural testing tool developed at Microsoft Research. We evaluated our new approach by comparing it with existing search strategies. The empirical results show that our approach is effective since it consistently achieves high code coverage faster than existing search strategies. Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte |
DSN | 2 |
| 2009 | Symbolic Query Exploration
Margus Veanes, Pavel Grigorenko, Jonathan de Halleux, Nikolai Tillmann |
ICFEM | 4 |
| 2009 | Reggae: Automated Test Generation for Programs Using Complex Regular ExpressionsabstractTest coverage such as branch coverage is commonly measured to assess the sufficiency of test inputs. To reduce tedious manual efforts in generating high-covering test inputs, various automated techniques have been proposed. Some recent effective techniques include Dynamic Symbolic Execution (DSE) based on path exploration. However, these existing DSE techniques cannot generate high-covering test inputs for programs using complex regular expressions due to large exploration space; these complex regular expressions are commonly used for input validation and information extraction. To address this issue, we propose an approach, named Reggae, to reduce the exploration space of DSE in test generation. In our evaluation, we apply Reggae on various input-validation programs that use complex regular expressions. Empirical results show that Reggae helps a test-generation tool generate test inputs to achieve 79% branch coverage of validators, improved from 29% achieved without the help of Reggae. Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte |
ASE | 3 |
| 2009 | MSeqGen: object-oriented unit-test generation via mining source codeabstractAn objective of unit testing is to achieve high structural coverage of the code under test. Achieving high structural overage of object-oriented code requires desirable method-call sequences that create and mutate objects. These sequences help generate target object states such as argument or receiver object states (in short as target states) of a method under test. Automatic generation of sequences for achieving target states is often challenging due to a large search space of possible sequences. On the other hand, code bases using object types (such as receiver or argument object types) include sequences that can be used to assist automatic test-generation approaches in achieving target states. In this paper, we propose a novel approach, called MSeqGen, that mines code bases and extracts sequences related to receiver or argument object types of a method under test. Our approach uses these extracted sequences to enhance two state-of-the-art test-generation approaches: random testing and dynamic symbolic execution. We conduct two evaluations to show the effectiveness of our approach. Using sequences extracted by our approach, we show that a random testing approach achieves 8.7% (with a maximum of 20.0% for one namespace) higher branch coverage and a dynamic-symbolic-execution-based approach achieves 17.4% (with a maximum of 22.5% for one namespace) higher branch coverage than without using our approach. Such an improvement is significant as the branches that are not covered by these state-of-the-art approaches are generally quite difficult to cover. Suresh Thummalapenta, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte |
ESEC/SIGSOFT FSE | 3 |
| 2009 | Path Feasibility Analysis for String-Manipulating Programs
Nikolaj S. Bjørner, Nikolai Tillmann, Andrei Voronkov |
TACAS | 2 |
| 2009 | Test Input Generation for Programs with Pointers
Dries Vanoverberghe, Nikolai Tillmann, Frank Piessens |
TACAS | 2 |
| 2008 | DySy: dynamic symbolic execution for invariant inferenceabstractDynamically discovering likely program invariants from concrete test executions has emerged as a highly promising software engineering technique. Dynamic invariant inference has the advantage of succinctly summarizing both "expected" program inputs and the subset of program behaviors that is normal under those inputs. In this paper, we introduce a technique that can drastically increase the relevance of inferred invariants, or reduce the size of the test suite required to obtain good invariants. Instead of falsifying invariants produced by pre-set patterns, we determine likely program invariants by combining the concrete execution of actual test cases with a simultaneous symbolic execution of the same tests. The symbolic execution produces abstract conditions over program variables that the concrete tests satisfy during their execution. In this way, we obtain the benefits of dynamic inference tools like Daikon: the inferred invariants correspond to the observed program behaviors. At the same time, however, our inferred invariants are much more suited to the program at hand than Daikon's hard-coded invariant patterns. The symbolic invariants are literally derived from the program text itself, with appropriate value substitutions as dictated by symbolic execution. Christoph Csallner, Nikolai Tillmann, Yannis Smaragdakis |
ICSE | 2 |
| 2008 | Demand-Driven Compositional Symbolic Execution
Saswat Anand, Patrice Godefroid, Nikolai Tillmann |
TACAS | 3 |
| 2008 | Parameterized Unit Testing with Pex
Jonathan de Halleux, Nikolai Tillmann |
TAP | 2 |
| 2008 | Pex-White Box Test Generation for .NET
Nikolai Tillmann, Jonathan de Halleux |
TAP | 1 |
| 2006 | Discovering Likely Method Specifications
Nikolai Tillmann, Feng Chen 0006, Wolfram Schulte |
ICFEM | 1 |
| 2006 | Mock-object generation with behaviorabstractUnit testing is a popular way to guide software development and testing. Each unit test should target a single feature, but in practice it is difficult to test features in isolation. Mock objects are a well-known technique to substitute parts of a program which are irrelevant for a particular unit test. Today mock objects are usually written manually supported by tools that generate method stubs or distill behavior from existing programs. We have developed a prototype tool based on symbolic execution of .NET code that generates mock objects including their behavior by analyzing all uses of the mock object in a given unit test. It is not required that an actual implementation of the mocked behavior exists. We are working towards an integration of our tool into Visual Studio Team System Nikolai Tillmann, Wolfram Schulte |
ASE | 1 |
| 2006 | Action Machines: a Framework for Encoding and Composing Partial BehaviorsabstractWe describe action machines, a framework for encoding and composing partial behavioral descriptions. Action machines encode behavior as a variation of labeled transition systems where the labels are observable activities of the described artifact and the states capture full data models. Labels may also have structure, and both labels and states may be partial with a symbolic representation of the unknown parts. Action machines may stem from software models or programs, and can be composed in a variety of ways to synthesize new behaviors. The composition operators described here include synchronized and interleaving parallel composition, sequential composition, and alternating simulation. We use action machines in analysis processes such as model checking and model-based testing. The current main application is in the area of model-based conformance testing, where our approach addresses practical problems users at Microsoft have in applying model-based testing technology. Wolfgang Grieskamp, Nicolas Kicillof, Nikolai Tillmann |
Int. J. Softw. Eng. Knowl. Eng. | 3 |
| 2005 | Testing Concurrent Object-Oriented Systems with Spec Explorer
Colin Campbell, Wolfgang Grieskamp, Lev Nachmanson, Wolfram Schulte, Nikolai Tillmann, Margus Veanes |
FM | 5 |
| 2005 | A Model-to-Implementation Mapping Tool for Automated Model-Based GUI Testing
Ana C. R. Paiva, João C. P. Faria, Nikolai Tillmann, Raul F. A. M. Vidal |
ICFEM | 3 |
| 2005 | Parameterized unit tests with unit meisterabstractParameterized unit tests extend the current industry practice of using closed unit tests defined as parameterless methods. Traditional closed unit tests are re-obtained by instantiating the parameterized unit tests. We have developed the prototype tool Unit Meister, which uses symbolic execution and constraint solving to automatically compute a minimal set of inputs that exercise a parameterized unit test given certain coverage criteria. In addition, the parameterized unit tests can be used as symbolic summaries during symbolic execution, which allows our approach to scale for arbitrary abstraction levels. Unit Meister has a command-line interface, and is also integrated into Visual Studio 2005 Team System. Nikolai Tillmann, Wolfram Schulte |
ESEC/SIGSOFT FSE | 1 |
| 2005 | Parameterized unit testsabstractParameterized unit tests extend the current industry practice of using closed unit tests defined as parameterless methods. Parameterized unit tests separate two concerns: 1) They specify the external behavior of the involved methods for all test arguments. 2) Test cases can be re-obtained as traditional closed unit tests by instantiating the parameterized unit tests. Symbolic execution and constraint solving can be used to automatically choose a minimal set of inputs that exercise a parameterized unit test with respect to possible code paths of the implementation. In addition, parameterized unit tests can be used as symbolic summaries which allows symbolic execution to scale for arbitrary abstraction levels. We have developed a prototype tool which computes test cases from parameterized unit tests. We report on its first use testing parts of the .NET base class library. Nikolai Tillmann, Wolfram Schulte |
ESEC/SIGSOFT FSE | 1 |
| 2005 | Online testing with model programsabstractOnline testing is a technique in which test derivation from a model program and test execution are combined into a single algorithm. We describe a practical online testing algorithm that is implemented in the model-based testing tool developed at Microsoft Research called Spec Explorer. Spec Explorer is being used daily by several Microsoft product groups. Model programs in Spec Explorer are written in the high level specification languages AsmL or Spec\#. We view model programs as implicit definitions of interface automata. The conformance relation between a model and an implementation under test is formalized in terms of refinement between interface automata. Testing then amounts to a game between the test tool and the implementation under test. Margus Veanes, Colin Campbell, Wolfram Schulte, Nikolai Tillmann |
ESEC/SIGSOFT FSE | 4 |
| 2005 | Partial updates
Yuri Gurevich, Nikolai Tillmann |
Theor. Comput. Sci. | 2 |
| 2004 | Optimal strategies for testing nondeterministic systemsabstractThis paper deals with testing of nondeterministic software systems. We assume that a model of the nondeterministic system is given by a directed graph with two kind of vertices: states and choice points. Choice points represent the nondeterministic behaviour of the implementation under test (IUT). Edges represent transitions. They have costs and probabilities. Test case generation in this setting amounts to generation of a game strategy. The two players are the testing tool (TT) and the IUT. The game explores the graph. The TT leads the IUT by selecting an edge at the state vertices. At the choice points the control goes to the IUT. A game strategy decides which edge should be taken by the TT in each state. This paper presents three novel algorithms 1) to determine an optimal strategy for the bounded reachability game, where optimality means maximizing the probability to reach any of the given final states from a given start state while at the same time minimizing the costs of traversal; 2) to determine a winning strategy for the bounded reachability game, which guarantees that given final vertices are reached, regardless how the IUT reacts; 3) to determine a fast converging edge covering strategy, which guarantees that the probability to cover all edges quickly converges to 1 if TT follows the strategy. Lev Nachmanson, Margus Veanes, Wolfram Schulte, Nikolai Tillmann, Wolfgang Grieskamp |
ISSTA | 4 |
| 2004 | Instrumenting scenarios in a model-driven development environment
Wolfgang Grieskamp, Nikolai Tillmann, Margus Veanes |
Inf. Softw. Technol. | 2 |