Computing and Information Systems - Theses

Permanent URI for this collection

Search Results

Now showing 1 - 2 of 2
  • Item
    Thumbnail Image
    Dynamic Symbolic Execution with Descriptive and Prescriptive Relations
    Alatawi, Eman Mohammed ( 2019)
    Static analysis and systematic software testing are two fundamental techniques that aim to ensure software quality. Recently, there has been an obvious interest in exploiting the strengths of these two techniques to work together to attain their goals effectively. Dynamic Symbolic Execution (DSE) is an example of a unique collaboration between these two techniques. It is a non-standard execution mechanism which, loosely, executes a program symbolically and, simultaneously, on concrete input. Thus, DSE simultaneously and symbolically follows all possible executable paths in the program with a goal of achieving high coverage for some chosen definition of coverage. In practice, the massive number of program paths to be explored and the number of constraints to be solved hinder scalability of DSE. This problem is referred to as path explosion. Path explosion can be caused by nested calls, loops and conditionals, and particularly loops whose termination depend on program inputs. The problem is made worse in the presence of indirect relations between symbolic and non-symbolic variables in the program under tests. This can significantly affect DSE efficiency. In addition, automated testing is not widely adopted in practice due to the lack of test oracles. Hence, DSE is mainly applied as a fuzzing technique, in which a large number of test inputs are generated to detect some generic errors (e.g., buffer overflows or security violations). The approach does not reveal faults that are domain specific, thus; its fault detection effectiveness in functional testing is not clear. In this thesis, we propose that understanding available static and dynamic analysis techniques, and leveraging their strength to complement each other is an effective approach to mitigate path explosion problem in DSE. We propose a conceptual framework for a comparative analysis of program analysis techniques, and we use it to define proposed techniques in this thesis to support DSE. Having considered this view, our research aims at improving DSE efficiency and fault detection effectiveness by exploiting program relational information about the values that variables take at run-time. This information is obtained from available static and dynamic analysis techniques at two levels. First, we employ “descriptive relations” about program internal behaviour to support DSE in order to tackle path explosion caused mainly by loops. We obtain these relations from static analysis by abstract interpretation; we use its ability to approximate program run-time states to compute interesting properties including relations between program variables that could be missed in DSE. Second, we suggest enhancing fault detection effectiveness of DSE, in the context of functional testing, by using domain specific relations that prescribe how inputs and outputs should be related. These “prescriptive relations” leverage constraints of the underlying domain to identify faults in the program under test as a form of partial oracles. To achieve this goal, we integrate DSE with metamorphic testing, a technique that employ domain specific relations to alleviate the absence of a test oracle.
  • Item
    Thumbnail Image
    Validating context-driven features of mobile applications using laboratory testing
    Luo, Chu ( 2019)
    Mobile devices such as smartphones and tablets now embed a variety of sensors that can provide context-driven services to increasingly large user bases. Driven by the richness of heterogeneous data and machine learning algorithms, context-driven mobile applications are becoming increasingly popular across a variety of domains, including location-based services, urban sensing and e-health. Although developers and researchers have proposed a significant number of mobile context development frameworks and testing tools to simplify the development and testing of context-driven mobile applications, it remains a challenge to efficiently and systematically validate the context-driven features of mobile applications. Real-world tests are often impractical, time-consuming and involve high cost. In this thesis, we propose three approaches to alleviate these problems by enabling efficient and systematic validation of the context-driven features of mobile applications in low-cost laboratory settings. First, we present TestAWARE, a laboratory-based testing tool that facilitates efficient and systematic validation of context-driven mobile applications on Android. We demonstrate that TestAWARE can help testers validate functional properties and non-functional properties of mobile applications. Second, we propose a validation approach for the real-time sensing performance of context-driven mobile applications. We show that the performance properties of real-time sensing applications can be efficiently and systematically measured in the laboratory. Third, we present a validation approach that considers a variety of aspects of machine learning design in context-driven mobile applications. We demonstrate that testers can efficiently and systematically validate multiple machine learning design choices in the laboratory. In addition, we discuss the strengths and weaknesses of laboratory testing techniques in general. We also provide some deliberations about the impacts of laboratory testing techniques on the software development process. Our approaches are supported by theoretical investigation, empirical evaluation and peer-reviewed publications. Overall, this thesis has significantly enhanced existing methodologies to validate the context-driven features of mobile applications.