SpecTest: Specification-based compiler testing
Compilers are error-prone due to their high complexity. They are relevant for not only general purpose programming languages, but also for many domain specific languages. Bugs in compilers can potentially render all programs at risk. It is thus crucial that compilers are systematically tested, if no...
Saved in:
Main Authors: | , |
---|---|
Format: | text |
Language: | English |
Published: |
Institutional Knowledge at Singapore Management University
2021
|
Subjects: | |
Online Access: | https://ink.library.smu.edu.sg/sis_research/6192 https://ink.library.smu.edu.sg/context/sis_research/article/7195/viewcontent/Schumi_Sun2021_Chapter_SpecTestSpecification_BasedCom.pdf |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Institution: | Singapore Management University |
Language: | English |
id |
sg-smu-ink.sis_research-7195 |
---|---|
record_format |
dspace |
spelling |
sg-smu-ink.sis_research-71952022-05-18T05:51:49Z SpecTest: Specification-based compiler testing SCHUMI, Richard SUN, Jun Compilers are error-prone due to their high complexity. They are relevant for not only general purpose programming languages, but also for many domain specific languages. Bugs in compilers can potentially render all programs at risk. It is thus crucial that compilers are systematically tested, if not verified. Recently, a number of efforts have been made to formalise and standardise programming language semantics, which can be applied to verify the correctness of the respective compilers. In this work, we present a novel specification-based testing method named SpecTest to better utilise these semantics for testing. By applying an executable semantics as test oracle, SpecTest can discover deep semantic errors in compilers. Compared to existing approaches, SpecTest is built upon a novel test coverage criterion called semantic coverage which brings together mutation testing and fuzzing to specifically target less tested language features. We apply SpecTest to systematically test two compilers, i.e., the Java compiler and the Solidity compiler. SpecTest improves the semantic coverage of both compilers considerably and reveals multiple previously unknown bugs. 2021-04-01T07:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/6192 info:doi/10.1007/978-3-030-71500-7_14 https://ink.library.smu.edu.sg/context/sis_research/article/7195/viewcontent/Schumi_Sun2021_Chapter_SpecTestSpecification_BasedCom.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Mutation testing Compiler testing K framework Formal semantics Rare language features Software Engineering |
institution |
Singapore Management University |
building |
SMU Libraries |
continent |
Asia |
country |
Singapore Singapore |
content_provider |
SMU Libraries |
collection |
InK@SMU |
language |
English |
topic |
Mutation testing Compiler testing K framework Formal semantics Rare language features Software Engineering |
spellingShingle |
Mutation testing Compiler testing K framework Formal semantics Rare language features Software Engineering SCHUMI, Richard SUN, Jun SpecTest: Specification-based compiler testing |
description |
Compilers are error-prone due to their high complexity. They are relevant for not only general purpose programming languages, but also for many domain specific languages. Bugs in compilers can potentially render all programs at risk. It is thus crucial that compilers are systematically tested, if not verified. Recently, a number of efforts have been made to formalise and standardise programming language semantics, which can be applied to verify the correctness of the respective compilers. In this work, we present a novel specification-based testing method named SpecTest to better utilise these semantics for testing. By applying an executable semantics as test oracle, SpecTest can discover deep semantic errors in compilers. Compared to existing approaches, SpecTest is built upon a novel test coverage criterion called semantic coverage which brings together mutation testing and fuzzing to specifically target less tested language features. We apply SpecTest to systematically test two compilers, i.e., the Java compiler and the Solidity compiler. SpecTest improves the semantic coverage of both compilers considerably and reveals multiple previously unknown bugs. |
format |
text |
author |
SCHUMI, Richard SUN, Jun |
author_facet |
SCHUMI, Richard SUN, Jun |
author_sort |
SCHUMI, Richard |
title |
SpecTest: Specification-based compiler testing |
title_short |
SpecTest: Specification-based compiler testing |
title_full |
SpecTest: Specification-based compiler testing |
title_fullStr |
SpecTest: Specification-based compiler testing |
title_full_unstemmed |
SpecTest: Specification-based compiler testing |
title_sort |
spectest: specification-based compiler testing |
publisher |
Institutional Knowledge at Singapore Management University |
publishDate |
2021 |
url |
https://ink.library.smu.edu.sg/sis_research/6192 https://ink.library.smu.edu.sg/context/sis_research/article/7195/viewcontent/Schumi_Sun2021_Chapter_SpecTestSpecification_BasedCom.pdf |
_version_ |
1770575845329469440 |