- Software Testing and Debugging Techniques
- Software Engineering Research
- Software Reliability and Analysis Research
- Software System Performance and Reliability
- Evolutionary Algorithms and Applications
- Advanced Malware Detection Techniques
- Metaheuristic Optimization Algorithms Research
- Scientific Computing and Data Management
- Teaching and Learning Programming
- Web Data Mining and Analysis
- Advanced Database Systems and Queries
- Semantic Web and Ontologies
- Adversarial Robustness in Machine Learning
- Viral Infectious Diseases and Gene Expression in Insects
- Reinforcement Learning in Robotics
- Machine Learning and Data Classification
- Online Learning and Analytics
- Anomaly Detection Techniques and Applications
- Topic Modeling
- Technology Adoption and User Behaviour
- Mobile and Web Applications
- Green IT and Sustainability
- CRISPR and Genetic Engineering
- Advanced Data Storage Technologies
- Experimental Learning in Engineering
University of Auckland
2021-2025
Hong Kong University of Science and Technology
2015-2023
University of Hong Kong
2015-2023
Southern University of Science and Technology
2023
McGill University
2023
Mondragon University
2023
Engineering Software Research and Development (United States)
2023
Università della Svizzera italiana
2017-2021
University of Pennsylvania
2020
Wake locks are widely used in Android apps to protect critical computations from being disrupted by device sleeping. Inappropriate use of wake often seriously impacts user experience. However, little is known on how real-world and the impact their misuses. To bridge gap, we conducted a large-scale empirical study 44,736 commercial 31 open-source apps. By automated program analysis manual investigation, observed (1) common points where acquired released, (2) 13 types computational tasks that...
Today millions of mobile apps are downloaded and used all over the world. Mobile distributed via different app stores, such as Google Play Store, Apple App Windows Phone Store. One most intriguing challenges in development is its fragmentation with respect to platforms (e.g., Android, iOS, Phone). Recently, companies like IBM Adobe a growing community developers advocate hybrid possible solution fragmentation. Hybrid consistent across built on Web standards. In this paper, we present an...
Metamorphic testing is a popular approach that aims to alleviate the oracle problem in software testing. At core of this are Relations (MRs), specifying properties hold among multiple test inputs and corresponding outputs. Deriving MRs mostly manual activity, since their automated generation challenging largely unexplored problem. This paper presents <sc xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">GenMorph</small> , technique automatically...
Metamorphic Testing (MT) alleviates the oracle problem by defining oracles based on metamorphic relations (MRs) that govern multiple related inputs and their outputs. However, designing MRs is challenging, as it requires domain-specific knowledge. This hinders widespread adoption of MT. We observe developer-written test cases can embed domain knowledge encodes MRs. Such encoded could be synthesized for testing not only original programs but also other share similar functionalities. In this...
A paradigm shift is underway in Software Engineering, with AI systems such as LLMs playing an increasingly important role boosting software development productivity. This trend anticipated to persist. In the next years, we expect a growing symbiotic partnership between human developers and AI. The Engineering research community cannot afford overlook this trend; must address key challenges posed by integration of into process. paper, present our vision future AI-driven world explore that...
One of the most intriguing challenges in mobile apps development is its fragmentation with respect to platforms (e.g., Android, Apple iOS, Windows Phone). Large companies like IBM and Adobe a growing community developers advocate hybrid as possible solution fragmentation. Hybrid are consistent across built on web standards. How performing production settings still highly debated, limited objective evidence.In this paper, we present first realistic investigation into through solid empirical...
Popular Q&A sites like StackOverflow have collected numerous code snippets. However, many of them do not complete type information, making uncompilable and inapplicable to various software engineering tasks. This paper analyzes this problem, proposes a technique CSNIPPEX automatically convert snippets into compilable Java source files by resolving external dependencies, generating import declarations, fixing syntactic errors. We implemented as plug-in for Eclipse evaluated it with 242,175...
One of the major challenges in verification complex industrial Cyber-Physical Systems is difficulty determining whether a particular system output or behaviour correct not, so-called test oracle problem. Metamorphic testing alleviates problem by reasoning on relations that are expected to hold among multiple executions under test, which known as Relations (MRs). However, development effective MRs often challenging and requires involvement domain experts. In this paper, we present case study...
Assertion oracles are executable boolean expressions placed inside the program that should pass (return true) for all correct executions and fail false) incorrect executions. Because designing perfect assertion is difficult, assertions often to distinguish between In other words, they prone false positives negatives. this paper, we propose GAssert (Genetic ASSERTion improvement), first technique automatically improve oracles. Given an oracle evidence of negatives, implements a novel...
GUI testing is an important but expensive activity. Recently, research on test reuse approaches for Android applications produced interesting results. Test automatically migrate human-designed tests from a source app to target that shares similar functionalities. They achieve this by exploiting semantic similarity among textual information of widgets. Semantic matching events plays crucial role in these approaches. In paper, we present the first empirical study events. Our involves 253...
This paper details the eleventh edition of Java Unit Testing Competition, covering its setup, challenges, and findings. The competition featured five test case generation tools: EVOSUITE, KEX-CONCOLIC, KEX-SYMBOLIC, UTBOT-CONCOLIC, UTBOT-FUZZER, all which were evaluated on a benchmark 100 classes taken from 5 open-source Projects. We assessed generated cases based code mutation coverage, as well human understandability-a metric introduced in this competition.
Every programming language has its own style conventions and best practices, which help developers to write readable maintainable code. Learning code is an essential skill that every professional software engineer should master. As such, students develop good habits for early on, when they start learning how program. Unfortunately, manually assessing students' with timely detailed feedback often infeasible, static analysis tools are unsuitable educational contexts. This paper presents...
Concurrent programs proliferate as multi-core technologies advance. The regression testing of concurrent often requires running a failing test for weeks before catching faulty interleaving, due to the myriad possible interleavings memory accesses arising from program executions. As result, conventional approach that selects sub-set cases without considering is insufficient. In this paper we present RECONTEST address problem by selecting new arise code changes. These must be explored in order...
One of the most intriguing challenges in mobile apps development is its fragmentation with respect to platforms (e.g., Android, Apple iOS, Windows Phone). Large companies like IBM and Adobe a growing community developers advocate hybrid as possible solution fragmentation. Hybrid are consistent across built on web standards. How performing production settings still highly debated, limited objective evidence.In this paper, we present first realistic investigation into through solid empirical...
Previous techniques on concurrency testing have mainly focused exploring the interleaving space of manually written test code to expose faulty interleavings shared memory accesses. These assume availability failure-inducing tests. In this paper, we present AutoConTest, a coverage-driven approach generate effective concurrent that achieve high coverage. AutoConTest consists three components. First, it computes coverage requirements dynamically and iteratively during sequential generation,...
Comprehending the degree to which software components support testing is important accurately schedule activities, train developers, and plan effective refactoring actions. Software testability estimates such property by relating code characteristics test effort. The main studies of reported in literature investigate relation between class metrics effort terms size complexity associated suites. They report a moderate correlation some test-effort metrics, but suffer from two limitations: (i)...
Intermittent test failures (test flakiness) is common during continuous integration as modern software systems have become inherently non-deterministic. Understanding the root cause of flakiness crucial intermittent might be result real non-deterministic defects in production code, rather than mere errors code. Given a flaky test, existing techniques for causing compare runtime behavior its passing and failing executions. They achieve this by repetitively executing on an instrumented version...
Modern software applications rely heavily on the usage of libraries, which provide reusable functionality, to accelerate development process. As libraries evolve and release new versions, systems that depend those (the clients) should update their dependencies use these versions as could, for example, include critical fixes security vulnerabilities. However, updating is not always a smooth process, it can result in failures clients if version includes breaking changes. Yet, there little...
A paradigm shift is underway in Software Engineering, with AI systems such as LLMs gaining increasing importance for improving software development productivity. This trend anticipated to persist. In the next five years, we will likely see an symbiotic partnership between human developers and AI. The Engineering research community cannot afford overlook this trend; must address key challenges posed by integration of into process. paper, present our vision future AI-Driven world explore that...
Libraries play a significant role in software development as they provide reusable functionality, which helps expedite the process. As libraries evolve, release new versions with optimisations like bug fixes, and patches for known security vulnerabilities. To obtain these optimisations, client applications that depend on must update to use latest version. However, this can cause failures clients if includes breaking changes. These changes be divided into syntactic semantic (behavioral) While...
Automated assessment is commonly used across the spectrum of computing courses offered by Tertiary institutions. Such frequently intended to address scalability feedback that essential for learning, and accreditation purposes. Although many reviews automated have been reported, voices teachers are not present. In this paper we present a variety cases illustrate some varied motivations experiences teaching using assessment.
Reproducing field failures is the first essential step for understanding, localizing and removing faults. concurrency hard due to need of synthesizing a test code jointly with thread interleaving that induce failure in presence limited information from field. Current techniques reproducing focus on identifying failure-inducing interleavings, leaving largely open problem manifests such interleavings. In this paper, we present ConCrash, technique automatically generate codes reproduce violate...
Automatic generators of GUI tests often fail to generate semantically relevant test cases, and thus miss important scenarios. To address this issue, adaptation techniques can be used automatically meaningful from cases applications with similar functionalities.In paper, we present ADAPTDROID, a technique that approaches the problem as search-problem, uses evolutionary testing adapt (including oracles) across Android apps. In our evaluation 32 popular apps, ADAPTDROID successfully adapted in...
Developing correct and efficient concurrent programs is difficult error-prone, due to the complexity of thread synchronization. Often, developers alleviate such problem by relying on thread-safe classes, which encapsulate most synchronization-related challenges. Thus, testing classes crucial ensure reliability concurrency aspects programs. Some recent techniques corresponding tools tackle automatically generating tests. In this paper, we present a comprehensive study state-of-the-art an...