Event-driven user interface applications typically have a single thread
of execution that processes event handlers in response to input events
triggered by the user, the network, or other applications. Programmers
must ensure that event handlers terminate after a short amount of time
because otherwise, the application may become unresponsive. This paper
presents EventBreak, a performance-guided test generation technique to
identify and analyze event handlers whose execution time may gradually
increase while using the application. The key idea is to systematically
search for pairs of events where triggering one event increases the
execution time of the other event. For example, this situation may
happen because one event accumulates data that is processed by the other
event. We implement the approach for JavaScript-based web applications
and apply it to three real-world applications. EventBreak discovers
events with an execution time that gradually increases in an unbounded
way, which makes the application unresponsive, and events that, if
triggered repeatedly, reveal a severe scalability problem, which makes
the application unusable. The approach reveals two known bugs and four
previously unknown responsiveness problems. Furthermore, we show that
EventBreak helps in testing that event handlers avoid such problems by
bounding a handler’s execution time.
Publications
Tags
2D
Accelerators
Algorithms
Architectures
Arrays
Big Data
Bootstrapping
C++
Cache Partitioning
Cancer
Careers
Chisel
Communication
Computer Architecture
CTF
DIABLO
Efficiency
Energy
FPGA
GAP
Gaussian Elimination
Genomics
GPU
Hardware
HLS
Lower Bounds
LU
Matrix Multiplication
Memory
Multicore
Oblivious
Open Space
OS
Parallelism
Parallel Reduction
Performance
PHANTOM
Processors
Python
Research Centers
RISC-V
SEJITS
Tall-Skinny QR
Technical Report
Test generation