Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
An Applicable Family of Data Flow Testing Criteria
IEEE Transactions on Software Engineering
Efficient computation of interprocedural definition-use chains
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments of the effectiveness of dataflow- and controlflow-based test adequacy criteria
ICSE '94 Proceedings of the 16th international conference on Software engineering
Exploiting hardware performance counters with flow and context sensitive profiling
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Software unit test coverage and adequacy
ACM Computing Surveys (CSUR)
All-du-path coverage for parallel programs
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
An Approach to Program Testing
ACM Computing Surveys (CSUR)
System architecture directions for networked sensors
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Static checking of interrupt-driven software
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Coverage criteria for GUI testing
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
An Efficient k-Means Clustering Algorithm: Analysis and Implementation
IEEE Transactions on Pattern Analysis and Machine Intelligence
An Experimental Comparison of the Effectiveness of Branch Testing and Data Flow Testing
IEEE Transactions on Software Engineering
The nesC language: A holistic approach to networked embedded systems
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
TinyGALS: a programming model for event-driven embedded systems
Proceedings of the 2003 ACM symposium on Applied computing
TOSSIM: accurate and scalable simulation of entire TinyOS applications
Proceedings of the 1st international conference on Embedded networked sensor systems
Race checking by context inference
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Testing Context-Sensitive Middleware-Based Software Applications
COMPSAC '04 Proceedings of the 28th Annual International Computer Software and Applications Conference - Volume 01
A dynamic operating system for sensor nodes
Proceedings of the 3rd international conference on Mobile systems, applications, and services
Random testing of interrupt-driven software
Proceedings of the 5th ACM international conference on Embedded software
Avrora: scalable sensor network simulation with precise timing
IPSN '05 Proceedings of the 4th international symposium on Information processing in sensor networks
Simulation-based test adequacy criteria for distributed systems
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Designing and comparing automated test oracles for GUI-based software applications
ACM Transactions on Software Engineering and Methodology (TOSEM)
Process-Aware Interrupt Scheduling and Accounting
RTSS '06 Proceedings of the 27th IEEE International Real-Time Systems Symposium
Interface contracts for TinyOS
Proceedings of the 6th international conference on Information processing in sensor networks
Health monitoring of civil infrastructures using wireless sensor networks
Proceedings of the 6th international conference on Information processing in sensor networks
Reachability Testing of Concurrent Programs
IEEE Transactions on Software Engineering
Using Mutation Analysis for Assessing and Comparing Testing Coverage Criteria
IEEE Transactions on Software Engineering
Automated Generation of Context-Aware Tests
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Program representations for testing wireless sensor network applications
Workshop on Domain specific approaches to software test automation: in conjunction with the 6th ESEC/FSE joint meeting
Efficient memory safety for TinyOS
Proceedings of the 5th international conference on Embedded networked sensor systems
Testing pervasive software in the presence of context inconsistency resolution services
Proceedings of the 30th international conference on Software engineering
Lightweight tracing for wireless sensor networks debugging
Proceedings of the 4th International Workshop on Middleware Tools, Services and Run-Time Support for Sensor Networks
Run time assurance of application-level requirements in wireless sensor networks
Proceedings of the 9th ACM/IEEE International Conference on Information Processing in Sensor Networks
Precise calling context encoding
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Software engineering and wireless sensor networks: happy marriage or consensual divorce?
Proceedings of the FSE/SDP workshop on Future of software engineering research
Lazy preemption to enable path-based analysis of interrupt-driven code
Proceedings of the 2nd Workshop on Software Engineering for Sensor Network Applications
SimTester: a controllable and observable testing framework for embedded systems
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Location pairs: a test coverage metric for shared-memory concurrent programs
Empirical Software Engineering
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Diagnostic tracing for wireless sensor networks
ACM Transactions on Sensor Networks (TOSN)
An approach to testing commercial embedded systems
Journal of Systems and Software
Hi-index | 0.00 |
NesC is a programming language for applications that run on top of networked sensor nodes. Such an application mainly uses an interrupt to trigger a sequence of operations, known as contexts, to perform its actions. However, a high degree of inter-context interleaving in an application can cause it to be error-prone. For instance, a context may mistakenly alter another context's data kept at a shared variable. Existing concurrency testing techniques target testing programs written in general-purpose programming languages, where a small scale of inter-context interleaving between program executions may make these techniques inapplicable. We observe that nesC blocks new context interleaving when handling interrupts, and this feature significantly restricts the scale of inter-context interleaving that may occur in a nesC application. This paper models how operations on different contexts may interleave as inter-context flow graphs. Based on these graphs, it proposes two test adequacy criteria, one on inter-context data-flows and another on inter-context control-flows. It evaluates the proposal by a real-life open-source nesC application. The empirical results show that the new criteria detect significantly more failures than their conventional counterparts.