Change search
ReferencesLink to record
Permanent link

Direct link
Improving Quality of Avionics Software Using Mutation Testing
Linköping University, Department of Computer and Information Science, Database and information techniques. Linköping University, The Institute of Technology.
2014 (English)Independent thesis Advanced level (degree of Master (Two Years)), 20 credits / 30 HE creditsStudent thesis
Abstract [en]

Mutation testing is a powerful fault-based testing technique that makes syntactic changes to a program under test in order to simulate real faults otherwise caused by a programmer. Similar to structural coverage criteria such as statement coverage, mutation testing is used to assess the quality of a test suite. After a syntactic change has been made, the program is referred to as a mutant that either can survive a test suite, or be killed by one. If a mutant is killed, it means that the test suite has detected the syntactic change and reported it as an error, resulting in an increased mutation score. If a mutant survives, it means that the test suite failed to detect the fault and the mutation score is decreased.

Mutation testing is generally considered the strongest testing technique available in terms of fault detection, but also the most expensive one. However, thanks to recent research and the rapid development of computing hardware, the testing technique is starting to become feasible, motivating the creation of tools utilizing the power of mutation testing.

Saab AB, the Swedish aircraft manufacturer and stakeholder in this thesis, has experimented with mutation testing in the past, resulting in a tool called BAX that creates textual modifications of the original source code. The initial goal of this thesis is to provide a new tool that is faster than BAX, and that is more systematic in the way mutants are generated.

LLVM-P86, the main contribution of this thesis, is a compiler and mutation testing framework intended for the programming language Pascal-86. Unlike BAX, LLVM-P86 is able to encode several mutants into a single program, thus reducing the time spent on compiling source code. In the conducted experiments, LLVM-P86 processed mutants significantly faster than BAX, on average by a factor of 13.6.

Since LLVM-P86 is also a compiler, proper type information is available when mutants are generated. The additional type information allows LLVM-P86 to avoid a significant amount of equivalent mutants, i.e. mutants that behave in the same way as the original program. When mutating relational operators found in approximately 10,000 lines of code, distributed amongst 18 different Pascal-86 modules, LLVM-P86 was able to reduce the total number of living mutants by 25%, or 5.7% of the complete set of mutants.

Place, publisher, year, edition, pages
2014. , 69 p.
Keyword [en]
Software Testing, Mutation Testing, Compiler Construction
National Category
Software Engineering
URN: urn:nbn:se:liu:diva-105456ISRN: LIU-IDA/LITH-EX-A--14/016--SEOAI: diva2:707336
External cooperation
Saab AB
Subject / course
Computer Engineering
Available from: 2014-03-26 Created: 2014-03-24 Last updated: 2014-03-26Bibliographically approved

Open Access in DiVA

fulltext(1565 kB)425 downloads
File information
File name FULLTEXT01.pdfFile size 1565 kBChecksum SHA-512
Type fulltextMimetype application/pdf

Search in DiVA

By author/editor
Törnblom, John
By organisation
Database and information techniquesThe Institute of Technology
Software Engineering

Search outside of DiVA

GoogleGoogle Scholar
Total: 425 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

Total: 1789 hits
ReferencesLink to record
Permanent link

Direct link