Abstract
The prevalence of web applications is on the rise, with examples ranging from collaborative text editors to drawing applications. Full-stack JavaScript web applications, where both the client and server are implemented in JavaScript, present unique challenges for automated testing. While various testing approaches exist for sequential, non-distributed applications, adapting these to full-stack JavaScript introduces complexities due to the event-driven nature of both client and server processes.
In this context, we propose an approach to concolic testing specifically designed for full-stack JavaScript web applications. This approach addresses challenges such as crafting elaborate event sequences to explore different parts of the program and accounting for the interconnected nature of client-server processes. Our proposed approach focuses on inter-process testing, which tests all instances of client and server processes while observing their communication. This preserves information flow between processes, enhancing precision and preventing false positive errors.
The concolic tester we implement for this purpose is named StackFul. StackFul considers the event-driven nature of full-stack JavaScript web applications and addresses the state explosion problem inherent in event-driven code. State merging, a novel technique introduced in StackFul, reduces the number of states by merging similar ones.
To evaluate StackFul, we apply it to eight real-world applications. Our evaluation assesses StackFul's ability to cover execution paths, identify errors on the server, and distinguish between high-priority and low-priority server errors. We also explore the impact of incorporating state merging and demonstrate that state merging significantly reduces the number of test runs needed to achieve higher code coverage.
In this context, we propose an approach to concolic testing specifically designed for full-stack JavaScript web applications. This approach addresses challenges such as crafting elaborate event sequences to explore different parts of the program and accounting for the interconnected nature of client-server processes. Our proposed approach focuses on inter-process testing, which tests all instances of client and server processes while observing their communication. This preserves information flow between processes, enhancing precision and preventing false positive errors.
The concolic tester we implement for this purpose is named StackFul. StackFul considers the event-driven nature of full-stack JavaScript web applications and addresses the state explosion problem inherent in event-driven code. State merging, a novel technique introduced in StackFul, reduces the number of states by merging similar ones.
To evaluate StackFul, we apply it to eight real-world applications. Our evaluation assesses StackFul's ability to cover execution paths, identify errors on the server, and distinguish between high-priority and low-priority server errors. We also explore the impact of incorporating state merging and demonstrate that state merging significantly reduces the number of test runs needed to achieve higher code coverage.
Original language | English |
---|---|
Awarding Institution |
|
Supervisors/Advisors |
|
Award date | 13 Oct 2023 |
Publisher | |
Print ISBNs | 9789464443806 |
Publication status | Published - 2023 |