Abstract
AbstractDifferential software testing is important for software quality assurance as it aims to automatically generate test inputs that reveal behavioral differences in software. Detecting regression bugs in software evolution, analyzing side-channels in programs, maximizing the execution cost of a program over multiple executions, and evaluating the robustness of neural networks are instances of differential software analysis to generate diverging executions of program paths. The key challenge thereby is to simultaneously reason about multiple program paths, often across program variants, in an efficient way. Existing work in differential testing is often not (specifically) directed to reveal a different behavior or is limited to a subset of the search space. This work proposes the concept of Hybrid Differential Software Testing (HyDiff) as a hybrid analysis technique to generate difference revealing inputs. HyDiff consists of two components that operate in a parallel setup: (1) a search-based technique that inexpensively generates inputs and (2) a systematic exploration technique to also exercise deeper program behaviors. HyDiff’s search-based component uses differential fuzzing directed by differential heuristics. HyDiff’s systematic exploration component is based on differential dynamic symbolic execution that allows to incorporate concrete inputs in its analysis. HyDiff is evaluated experimentally with applications specific for differential testing. The results show that HyDiff is effective in all considered categories and outperforms its components in isolation.
Funder
Gesellschaft für Informatik e.V.
Publisher
Springer International Publishing
Reference49 articles.
1. Noller, Y.: Hybrid differential software testing. Ph.D. Thesis, Humboldt-Universität zu Berlin, Mathematisch-Naturwissenschaftliche Fakultät (2020). https://doi.org/10.18452/21968
2. Nilizadeh, S., Noller, Y., Păsăreanu, C.S.: Diffuzz: differential fuzzing for side-channel analysis. In: Proceedings of the 41st International Conference on Software Engineering, ICSE ’19, pp. 176–187. IEEE Press, Piscataway (2019). https://doi.org/10.1109/ICSE.2019.00034
3. Noller, Y.: Differential program analysis with fuzzing and symbolic execution. In: Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, ASE 2018, pp. 944–947. ACM, New York (2018). https://doi.org/10.1145/3238147.3241537
4. Noller, Y., Kersten, R., Păsăreanu, C.S.: Badger: complexity analysis with fuzzing and symbolic execution. In: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, ISSTA 2018, pp. 322–332. ACM, New York (2018). https://doi.org/10.1145/3213846.3213868
5. Noller, Y., Nguyen, H.L., Tang, M., Kehrer, T.: Shadow symbolic execution with java pathfinder. SIGSOFT Softw. Eng. Notes 42(4), 1–5 (2018). https://doi.org/10.1145/3149485.3149492