Automated Random Testing in Multiple Dispatch Languages
2017 (English)In: Proceedings - 10th IEEE International Conference on Software Testing, Verification and Validation, ICST 2017, IEEE Computer Society, 2017, p. 333-344Conference paper, Published paper (Refereed)
Abstract [en]
In programming languages that use multiple dispatch, a single function can have multiple implementations, each of which may specialise the function's operation. Which one of these implementations to execute is determined by the data types of all the arguments to the function. Effective testing of functions that use multiple dispatch therefore requires diverse test inputs in terms of the data types of the input's arguments as well as their values. In this paper we describe an approach for generating test inputs where both the values and types are chosen probabilistically. The approach uses reflection to automatically determine how to create inputs with the desired types, and dynamically updates the probability distribution from which types are sampled in order to improve both the test efficiency and efficacy. We evaluate the technique on 247 methods across 9 built-in functions of Julia, a technical computing language that applies multiple dispatch at runtime. In the process, we identify three real faults in these widely-used functions. © 2017 IEEE.
Place, publisher, year, edition, pages
IEEE Computer Society, 2017. p. 333-344
Keywords [en]
Probability distributions, Verification, Built-in functions, Data type, Effective testing, Random testing, Runtimes, Technical computing, Test efficiency, Test inputs, Software testing
National Category
Software Engineering
Identifiers
URN: urn:nbn:se:bth-14899DOI: 10.1109/ICST.2017.37ISI: 000403393600030Scopus ID: 2-s2.0-85020711461ISBN: 9781509060313 (print)OAI: oai:DiVA.org:bth-14899DiVA, id: diva2:1120328
Conference
10th IEEE International Conference on Software Testing, Verification and Validation, ICST,Tokyo
2017-07-062017-07-062023-06-30Bibliographically approved