32,916 research outputs found
ChimpCheck: Property-Based Randomized Test Generation for Interactive Apps
We consider the problem of generating relevant execution traces to test rich
interactive applications. Rich interactive applications, such as apps on mobile
platforms, are complex stateful and often distributed systems where
sufficiently exercising the app with user-interaction (UI) event sequences to
expose defects is both hard and time-consuming. In particular, there is a
fundamental tension between brute-force random UI exercising tools, which are
fully-automated but offer low relevance, and UI test scripts, which are manual
but offer high relevance. In this paper, we consider a middle way---enabling a
seamless fusion of scripted and randomized UI testing. This fusion is
prototyped in a testing tool called ChimpCheck for programming, generating, and
executing property-based randomized test cases for Android apps. Our approach
realizes this fusion by offering a high-level, embedded domain-specific
language for defining custom generators of simulated user-interaction event
sequences. What follows is a combinator library built on industrial strength
frameworks for property-based testing (ScalaCheck) and Android testing (Android
JUnit and Espresso) to implement property-based randomized testing for Android
development. Driven by real, reported issues in open source Android apps, we
show, through case studies, how ChimpCheck enables expressing effective testing
patterns in a compact manner.Comment: 20 pages, 21 figures, Symposium on New ideas, New Paradigms, and
Reflections on Programming and Software (Onward!2017
Eliminating Network Protocol Vulnerabilities Through Abstraction and Systems Language Design
Incorrect implementations of network protocol message specifications affect
the stability, security, and cost of network system development. Most
implementation defects fall into one of three categories of well defined
message constraints. However, the general process of constructing network
protocol stacks and systems does not capture these categorical con- straints.
We introduce a systems programming language with new abstractions that capture
these constraints. Safe and efficient implementations of standard message
handling operations are synthesized by our compiler, and whole-program analysis
is used to ensure constraints are never violated. We present language examples
using the OpenFlow protocol
- …