Testing aspect-oriented programs with finite state machines

Dianxiang Xu, Omar El-Ariss, Weifeng Xu, Linzhang Wang

Research output: Contribution to journalArticle

10 Scopus citations

Abstract

Aspect-oriented programming yields new types of programming faults due to the introduction of new constructs for dealing with crosscutting concerns. To reveal aspect faults, this paper presents a framework for testing whether or not aspect-oriented programs conform to their state models. It supports two families of strategies (i.e. structure-oriented and property-oriented) for automated generation of aspect tests from aspect-oriented state models. A structure-oriented testing strategy derives tests and test code from an aspect-oriented state model to meet a given structural coverage criterion, such as state coverage, transition coverage, or round trip. A property-oriented testing strategy generates test code from the counterexamples of model checking. Two such strategies are checking an aspect-oriented state model against trap properties and checking mutants of aspect models against system properties. Mutation analysis of aspect-oriented programs is used to evaluate the effectiveness of these testing strategies. The experiments demonstrate that testing aspect-oriented programs against their state models can detect many aspect faults. The comparative evaluations also reveal that the structure-oriented and property-oriented testing strategies complement each other-some aspect faults were detected by the structure-oriented strategies, but not by the property-oriented strategies and vice versa.

Original languageEnglish (US)
Pages (from-to)267-293
Number of pages27
JournalSoftware Testing Verification and Reliability
Volume22
Issue number4
DOIs
StatePublished - Jun 1 2012

All Science Journal Classification (ASJC) codes

  • Software
  • Safety, Risk, Reliability and Quality

Fingerprint Dive into the research topics of 'Testing aspect-oriented programs with finite state machines'. Together they form a unique fingerprint.

  • Cite this