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...

Full description

Saved in:
Bibliographic Details
Main Authors: SCHUMI, Richard, SUN, Jun
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