Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Qing Xie 0003

dblp:98/2931-3 · DBLP profile ↗
← Back
29ranked-venue papers
8as first author
0since 2021 · last 2016
—ORCID · conflict

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 28 · 8 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
14 papers
Software testing · 50% Software maintenance and evolution · 48% Empirical software engineering · 2%
Databases, data mining, and information retrieval
2 papers
Information retrieval · 100%

Topics — the 20 heaviest of 22, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software maintenance and evolution
code search
0.642013
Portfolio: Searching for relevant functions and their usages in millions of lines of code · ACM Trans. Softw. Eng. Methodol. 2013
Exemplar: A Source Code Search Engine for Finding Highly Relevant Applications · IEEE Trans. Software Eng. 2012
Portfolio: a search engine for finding functions and their usages · ICSE 2011
Software maintenance and evolution
software reuse
0.542011
Portfolio: a search engine for finding functions and their usages · ICSE 2011
Portfolio: finding relevant functions and their usage · ICSE 2011
Exemplar: EXEcutable exaMPLes ARchive · ICSE (2) 2010
Software testing
GUI testing
0.232009
Maintaining and evolving GUI-directed test scripts · ICSE 2009
Using a pilot study to derive a GUI model for automated testing · ACM Trans. Softw. Eng. Methodol. 2008
Studying the Fault-Detection Effectiveness of GUI Test Cases for Rapidly Evolving Software · IEEE Trans. Software Eng. 2005
Information retrieval › document retrieval › domain-specific retrieval › enterprise search
application search
0.222010
Exemplar: EXEcutable exaMPLes ARchive · ICSE (2) 2010
A search engine for finding highly relevant applications · ICSE (1) 2010
Information retrieval › document retrieval › domain-specific retrieval
code search
0.222010
Exemplar: EXEcutable exaMPLes ARchive · ICSE (2) 2010
A search engine for finding highly relevant applications · ICSE (1) 2010
Software testing
test adequacy
0.222008
Using a pilot study to derive a GUI model for automated testing · ACM Trans. Softw. Eng. Methodol. 2008
Designing and comparing automated test oracles for GUI-based software applications · ACM Trans. Softw. Eng. Methodol. 2007
Software maintenance and evolution › API usage
API usage analysis
0.112012
Exemplar: A Source Code Search Engine for Finding Highly Relevant Applications · IEEE Trans. Software Eng. 2012
Software testing
performance testing
0.112012
Automatically finding performance problems with feedback-directed learning software testing · ICSE 2012
Software testing › test coverage › code coverage
statement coverage
0.112012
CarFast: achieving higher statement coverage faster · SIGSOFT FSE 2012
Software testing
test coverage
0.112012
CarFast: achieving higher statement coverage faster · SIGSOFT FSE 2012
Software testing › test process › test design
test input selection
0.112012
Automatically finding performance problems with feedback-directed learning software testing · ICSE 2012
Software testing
test oracle
0.132007
Designing and comparing automated test oracles for GUI-based software applications · ACM Trans. Softw. Eng. Methodol. 2007
Using Transient/Persistent Errors to Develop Automated Test Oracles for Event-Driven Software · ASE 2004
Studying the Fault-Detection Effectiveness of GUI Test Cases for Rapidly Evolving Software · IEEE Trans. Software Eng. 2005
Software testing › test adequacy
test adequacy criteria
0.112008
Using a pilot study to derive a GUI model for automated testing · ACM Trans. Softw. Eng. Methodol. 2008
Software testing
regression testing
0.112005
Studying the Fault-Detection Effectiveness of GUI Test Cases for Rapidly Evolving Software · IEEE Trans. Software Eng. 2005
Empirical software engineering
developer studies
0.012013
Portfolio: Searching for relevant functions and their usages in millions of lines of code · ACM Trans. Softw. Eng. Methodol. 2013
User interface design and tools
graphical user interface
0.022008
Using a pilot study to derive a GUI model for automated testing · ACM Trans. Softw. Eng. Methodol. 2008
Designing and comparing automated test oracles for GUI-based software applications · ACM Trans. Softw. Eng. Methodol. 2007
Software testing
test generation
0.012012
CarFast: achieving higher statement coverage faster · SIGSOFT FSE 2012
Software maintenance and evolution › program comprehension
software visualization
0.012011
Portfolio: a search engine for finding functions and their usages · ICSE 2011
Services computing and microservices
web services
0.012007
Smart: a tool for application reference testing · ASE 2007
Software testing › test generation
automated test generation
0.012004
Using Transient/Persistent Errors to Develop Automated Test Oracles for Event-Driven Software · ASE 2004

Methods — techniques the papers use, named apart from their topics

information retrieval · 0.6program analysis · 0.4user study · 0.2pagerank · 0.2empirical model derivation · 0.2search-based testing · 0.1natural language query processing · 0.1feedback-directed learning · 0.1data flow analysis · 0.1black-box testing · 0.1pilot study · 0.1empirical comparison · 0.1declarative oracle specification · 0.1
YearPublicationVenuePosition
2016 RUGRAT: Evaluating program analysis and testing tools and compilers with large generated random benchmark applications
abstract
Benchmarks are heavily used in different areas of computer science to evaluate algorithms and tools. In program analysis and testing, open-source and commercial programs are routinely used as benchmarks to evaluate different aspects of algorithms and tools. Unfortunately, many of these programs are written by programmers who introduce different biases, not to mention that it is very difficult to find programs that can serve as benchmarks with high reproducibility of results. We propose a novel approach for generating random benchmarks for evaluating program analysis and testing tools and compilers. Our approach uses stochastic parse trees, where language grammar production rules are assigned probabilities that specify the frequencies with which instantiations of these rules will appear in the generated programs. We implemented our tool for Java and applied it to generate a set of large benchmark programs of up to 5M lines of code each with which we evaluated different program analysis and testing tools and compilers. The generated benchmarks let us independently rediscover several issues in the evaluated tools. Copyright © 2014 John Wiley & Sons, Ltd.
Ishtiaque Hussain, Christoph Csallner, Mark Grechanik, Qing Xie 0003, Kunal Taneja, B. M. Mainul Hossain
Softw. Pract. Exp.4
2013 Automatic Fault Diagnosis in Cloud Infrastructure
abstract
With cloud computing, a cycle of fault diagnosis and recovery becomes the norm. There is a large amount of monitoring data and log events available, but it is hard to figure out which events or metrics are critical in fault diagnosis. Other approaches model faults as a deviation from normal behaviors, and thus are less applicable in cloud where changes in the environment may impact what is considered normal. In this work, we propose an adaptive and flexible fault diagnosis framework to automatically identify the key fault indicators and detect fault patterns. Leveraging ideas from social media, we represent the hierarchical relationships among metrics and events as well as how they relate to faults. We apply the EdgeRank algorithm to decide the key events that contribute to a fault. Our approach works across different environments to detect the potential faults. We evaluated our framework using a cloud-based enterprise system using a list of injected faults that vary from environmental (e.g. virtual machine or network) to application degradation. We considered both private and public clouds. Our solution achieves over 90% detection accuracy with modest overhead. A comparison of our approach shows it is more accurate than alternative approaches in the literature.
Qian Zhu 0008, Teresa Tung, Qing Xie 0003
CloudCom (1)3
2013 Portfolio: Searching for relevant functions and their usages in millions of lines of code
abstract
Different studies show that programmers are more interested in finding definitions of functions and their uses than variables, statements, or ordinary code fragments. Therefore, developers require support in finding relevant functions and determining how these functions are used. Unfortunately, existing code search engines do not provide enough of this support to developers, thus reducing the effectiveness of code reuse. We provide this support to programmers in a code search system called Portfolio that retrieves and visualizes relevant functions and their usages. We have built Portfolio using a combination of models that address surfing behavior of programmers and sharing related concepts among functions. We conducted two experiments: first, an experiment with 49 C/C++ programmers to compare Portfolio to Google Code Search and Koders using a standard methodology for evaluating information-retrieval-based engines; and second, an experiment with 19 Java programmers to compare Portfolio to Koders. The results show with strong statistical significance that users find more relevant functions with higher precision with Portfolio than with Google Code Search and Koders. We also show that by using PageRank, Portfolio is able to rank returned relevant functions more efficiently.
Collin McMillan, Denys Poshyvanyk, Mark Grechanik, Qing Xie 0003
ACM Trans. Softw. Eng. Methodol.4
2012 Automatically finding performance problems with feedback-directed learning software testing
abstract
A goal of performance testing is to find situations when applications unexpectedly exhibit worsened characteristics for certain combinations of input values. A fundamental question of performance testing is how to select a manageable subset of the input data faster to find performance problems in applications automatically. We offer a novel solution for finding performance problems in applications automatically using black-box software testing. Our solution is an adaptive, feedback-directed learning testing system that learns rules from execution traces of applications and then uses these rules to select test input data automatically for these applications to find more performance problems when compared with exploratory random testing. We have implemented our solution and applied it to a medium-size application at a major insurance company and to an open-source application. Performance problems were found automatically and confirmed by experienced testers and developers.
Mark Grechanik, Qing Xie 0003
ICSE3
2012 Highly Resilient Systems for Cloud
abstract
Traditional methods for implementing highly resilient systems are costly; and their methods using specialized hardware and high-speed interconnects do not extend to cloud. We demonstrate an architecture that rethinks the traditional approach and uses cloud's agility to provision additional capability as failures occur. This architecture continues serving requests with the best possible response even as the primary service deteriorates and even fails completely. It offloads requests according to their need to access the primary service; first redirecting requests with less need to lower-grade secondary capability that is provisioned on-demand on the cloud in order to reserve primary capacity for requests that need it (e.g., first redirect web-browsing requests to a slightly out-of-date cached dataset, and reserve the primary, most-consistent data service for check-out requests). Our approach 1) triages access to the primary service based on request needs in times when it is overwhelmed, and 2) provisions on-demand cloud capability to offload and continue serving other requests as needed. The result is a highly resilient system architecture that scales via cloud.
Teresa Tung, Shaw Yi Chaw, Qing Xie 0003, Qian Zhu 0008
ICWS3
2012 CarFast: achieving higher statement coverage faster
abstract
Test coverage is an important metric of software quality, since it indicates thoroughness of testing. In industry, test coverage is often measured as statement coverage. A fundamental problem of software testing is how to achieve higher statement coverage faster, and it is a difficult problem since it requires testers to cleverly find input data that can steer execution sooner toward sections of application code that contain more statements.
B. M. Mainul Hossain, Ishtiaque Hussain, Christoph Csallner, Mark Grechanik, Kunal Taneja, Qing Xie 0003
SIGSOFT FSE8
2012 Exemplar: A Source Code Search Engine for Finding Highly Relevant Applications
abstract
A fundamental problem of finding software applications that are highly relevant to development tasks is the mismatch between the high-level intent reflected in the descriptions of these tasks and low-level implementation details of applications. To reduce this mismatch we created an approach called EXEcutable exaMPLes ARchive (Exemplar) for finding highly relevant software projects from large archives of applications. After a programmer enters a natural-language query that contains high-level concepts (e.g., MIME, datasets), Exemplar retrieves applications that implement these concepts. Exemplar ranks applications in three ways. First, we consider the descriptions of applications. Second, we examine the Application Programming Interface (API) calls used by applications. Third, we analyze the dataflow among those API calls. We performed two case studies (with professional and student developers) to evaluate how these three rankings contribute to the quality of the search results from Exemplar. The results of our studies show that the combined ranking of application descriptions and API documents yields the most-relevant search results. We released Exemplar and our case study data to the public.
Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003
IEEE Trans. Software Eng.5
2011 Portfolio: finding relevant functions and their usage
abstract
Different studies show that programmers are more interested in finding definitions of functions and their uses than variables, statements, or arbitrary code fragments [30, 29, 31]. Therefore, programmers require support in finding relevant functions and determining how those functions are used. Unfortunately, existing code search engines do not provide enough of this support to developers, thus reducing the effectiveness of code reuse.
Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003
ICSE4
2011 Portfolio: a search engine for finding functions and their usages
abstract
In this demonstration, we present a code search system called Portfolio that retrieves and visualizes relevant functions and their usages. We will show how chains of relevant functions and their usages can be visualized to users in response to their queries.
Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003
ICSE4
2010 An empirical investigation into a large-scale Java open source code repository
abstract
Getting insight into different aspects of source code artifacts is increasingly important – yet there is little empirical research using large bodies of source code, and subsequently there are not much statistically significant evidence of common patterns and facts of how programmers write source code. We pose 32 research questions, explain rationale behind them, and obtain facts from 2,080 randomly chosen Java applications from Sourceforge. Among these facts we find that most methods have one or zero arguments or they do not return any values, few methods are overridden, most inheritance hierarchies have the depth of one, close to 50 % of classes are not explicitly inherited from any classes, and the number of methods is strongly correlated with the number of fields in a class. Categories and Subject Descriptors
Mark Grechanik, Collin McMillan, Luca DeFerrari, Marco Comi, Stefano Crespi-Reghizzi, Denys Poshyvanyk, Qing Xie 0003, Carlo Ghezzi
ESEM8
2010 A search engine for finding highly relevant applications
abstract
A fundamental problem of finding applications that are highly relevant to development tasks is the mismatch between the high-level intent reflected in the descriptions of these tasks and low-level implementation details of applications. To reduce this mismatch we created an approach called Exemplar (EXEcutable exaMPLes ARchive) for finding highly relevant software projects from large archives of applications. After a programmer enters a natural-language query that contains high-level concepts (e.g., MIME, data sets), Exemplar uses information retrieval and program analysis techniques to retrieve applications that implement these concepts. Our case study with 39 professional Java programmers shows that Exemplar is more effective than Sourceforge in helping programmers to quickly find highly relevant applications.
Mark Grechanik, Qing Xie 0003, Collin McMillan, Denys Poshyvanyk, Chad M. Cumby
ICSE (1)3
2010 Exemplar: EXEcutable exaMPLes ARchive
abstract
Searching for applications that are highly relevant to development tasks is challenging because the high-level intent reflected in the descriptions of these tasks doesn't usually match the low-level implementation details of applications. In this demo we show a novel code search engine called Exemplar (EXEcutable exaMPLes ARchive) to bridge this mismatch. Exemplar takes natural-language query that contains high-level concepts (e.g., MIME, data sets) as input, then uses information retrieval and program analysis techniques to retrieve applications that implement these concepts.
Mark Grechanik, Qing Xie 0003, Collin McMillan, Denys Poshyvanyk, Chad M. Cumby
ICSE (2)3
2010 Is Data Privacy Always Good for Software Testing?
abstract
Database-centric applications (DCAs) are common in enterprise computing, and they use nontrivial databases. Testing of DCAs is increasingly outsourced to test centers in order to achieve lower cost and higher quality. When releasing proprietary DCAs, its databases should also be made available to test engineers, so that they can test using real data. Testing with real data is important, since fake data lacks many of the intricate semantic connections among the original data elements. However, different data privacy laws prevent organizations from sharing these data with test centers because databases contain sensitive information. Currently, testing is performed with fake data that often leads to worse code coverage and fewer uncovered bugs, thereby reducing the quality of DCAs and obliterating benefits of test outsourcing. We show that a popular data anonymization algorithm called k-anonymity seriously degrades test coverage of DCAs. We propose an approach that uses program analysis to guide selective application of k-anonymity. This approach helps protect sensitive data in databases while retaining testing efficacy. Our results show that for small values of k = 7, test coverage drops to less than 30% from the original coverage of more than 70%, thus making it difficult to achieve good quality when testing DCAs while applying data privacy.
Mark Grechanik, Christoph Csallner, Qing Xie 0003
ISSRE4
2009 Maintaining and evolving GUI-directed test scripts
abstract
Since manual black-box testing of GUI-based applications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. An extra effort that test engineers put in writing test scripts is paid off when these scripts are run repeatedly. Unfortunately, releasing new versions of GAPs with modified GUIs breaks their corresponding test scripts thereby obliterating benefits of test automation. We offer a novel approach for maintaining and evolving test scripts so that they can test new versions of their respective GAPs. We built a tool to implement our approach, and we conducted a case study with forty five professional programmers and test engineers to evaluate this tool. The results show with strong statistical significance that users find more failures and report fewer false positives (p < 0.02) in test scripts with our tool than with a flagship industry product and a baseline manual approach. Our tool is lightweight and it takes less than eight seconds to analyze approximately 1KLOC of test scripts.
Mark Grechanik, Qing Xie 0003
ICSE2
2009 Experimental assessment of manual versus tool-based maintenance of GUI-directed test scripts
abstract
Since manual black-box testing of GUI-based APplications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. As GAPs evolve, testers should fix their corresponding test scripts so that they can reuse them to test successive releases of GAPs. Currently, there are two main modes of maintaining test scripts: tool-based and manual. In practice, there is no consensus what approach testers should use to maintain test scripts. Test managers make their decisions ad hoc, based on their personal experience and perceived benefits of the tool-based approach versus the manual. In this paper we describe a case study with forty five professional programmers and test engineers to experimentally assess the tool-based approach for maintaining GUI-directed test scripts versus the manual approach. Based on the results of our case study and considering the high cost of the programmers' time and the lower cost of the time of test engineers, and considering that programmers often modify GAP objects in the process of developing software we recommend organizations to supply programmers with testing tools that enable them to fix test scripts faster so that these scripts can unit test software. The other side of our recommendation is that experienced test engineers are likely to be as productive with the manual approach as with the tool-based approach, and we consequently recommend that organizations do not need to provide each tester with an expensive tool license to fix test scripts.
Mark Grechanik, Qing Xie 0003
ICSM2
2009 Guide: A GUI differentiator
abstract
Applications with Graphical User Interfaces (GUIs) are ubiquitous. Nontrivial GUI-based applications (GAPs) evolve frequently, and understanding how GUIs of different versions of GAPs differ is crucial for various tasks such as testing and project effort estimation. We offer a novel approach for comparing GUIs. We built a tool called GUI DifferEntiator (GUIDE) that allows users to visualize differences between GUIs of running GAPs automatically, so that the identified changes can be served as guidance to test the new release of the GAP or to estimate the effort of a project.
Qing Xie 0003, Mark Grechanik, Chad M. Cumby
ICSM1
2009 Inferring Types of References to GUI Objects in Test Scripts
abstract
Since manual black-box testing of GUI-based applications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. Unlike conventional languages that require programmers to declare types of variables explicitly, test script statements reference GUI objects using their properties (e.g., location, color, size, etc). The absence of type information exacerbates the process of understanding test scripts, making maintenance and evolution of these scripts expensive and prohibitive, thus obliterating benefits of test automation. We offer a novel approach for type inference of GUI object references (TIGOR) in test scripts. TIGOR makes types of GUI objects explicit in the source code of scripts, enabling test engineers to reason more effectively about the interactions between operations in complex test scripts and GUI objects that these operations reference. We describe our implementation and give an algorithm for automatically inferring types of GUI objects. We built a tool and evaluated it on different GAPs. Our experience suggests that TIGOR is practical and efficient, and it yields appropriate types of GUI objects.
Mark Grechanik, Qing Xie 0003
ICST3
2008 REST: A tool for reducing effort in script-based testing
abstract
Since manual black-box testing of GUI-based APplications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. An extra effort that test engineers put in writing test scripts is paid off when these scripts are run repeatedly. Unfortunately, releasing new versions of GAPs breaks their corresponding test scripts thereby obliterating benefits of test automation. We propose a tool called Reducing Effort in Script-based Testing (REST) for guiding test personnel through changes in test scripts so that they can use these modified scripts to test new versions of their respective GAPs. During demonstration of REST we will show how this tool enables test personnel to maintain and evolve test scripts with a high degree of automation and precision.
Qing Xie 0003, Mark Grechanik
ICSM1
2008 Using a pilot study to derive a GUI model for automated testing
abstract
Graphical user interfaces (GUIs) are one of the most commonly used parts of today's software. Despite their ubiquity, testing GUIs for functional correctness remains an understudied area. A typical GUI gives many degrees of freedom to an end-user, leading to an enormous input event interaction space that needs to be tested. GUI test designers generate and execute test cases (modeled as sequences of user events ) to traverse its parts; targeting a subspace in order to maximize fault detection is a nontrivial task. In this vein, in previous work, we used informal GUI code examination and personal intuition to develop an event-interaction graph (EIG). In this article we empirically derive the EIG model via a pilot study, and the resulting EIG validates our intuition used in previous work; the empirical derivation process also allows for model evolution as our understanding of GUI faults improves. Results of the pilot study show that events interact in complex ways; a GUI's response to an event may vary depending on the context established by preceding events and their execution order. The EIG model helps testers to understand the nature of interactions between GUI events when executed in test cases and why certain events detect faults, so that they can better traverse the event space. New test adequacy criteria are defined for the EIG; new algorithms use these criteria and EIG to systematically generate test cases that are shown to be effective on four fielded open-source applications.
Qing Xie 0003, Atif M. Memon
ACM Trans. Softw. Eng. Methodol.1
2007 Automatic Test Generation From GUI Applications For Testing Web Services
abstract
Graphical User Interface (GUI) Applications (GAPs) are ubiquitous and provide various services. Since many GAPs are not designed to exchange information (i.e., intemperate), companies replace legacy GAPs with web services, that are designed to intemperate over the Internet. However, it is laborious and inefficient to create unit test cases to test the web services. We propose a novel approach for generating tests for web services from legacy GAPs. This approach combines accessibility technologies for accessing and controlling GAPs in a uniform way with a visualization mechanism that enables nonprogrammers to generate unit test cases for web services by performing drag-and-drop operations on GUI elements of legacy GAPs. We built a tool based on our approach, and we used this tool to generate unit test cases from different GAPs. We believe that our approach is unique, and our evaluation suggests that our approach is effective and it can be used to generate test cases from nontrivial GAPs.
Kevin M. Conroy, Mark Grechanik, Matthew Hellige, Edy S. Liongosari, Qing Xie 0003
ICSM5
2007 Smart: a tool for application reference testing
abstract
Graphical User Interface (GUI) APplications (GAPs) are ubiquitous and provide various services. Since many GAPs are not designed to exchange information (i.e., interoperate), companies replace legacy GAPs with web services, that are designed to interoperate over the Internet. However, it is laborious and inefficient to create unit test cases to test the web services.
Qing Xie 0003, Mark Grechanik, Matthew Hellige
ASE1
2007 Designing and comparing automated test oracles for GUI-based software applications
abstract
Test designers widely believe that the overall effectiveness and cost of software testing depends largely on the type and number of test cases executed on the software. This article shows that the test oracle , a mechanism that determines whether a software is executed correctly for a test case, also significantly impacts the fault detection effectiveness and cost of a test case. Graphical user interfaces (GUIs), which have become ubiquitous for interacting with today's software, have created new challenges for test oracle development. Test designers manually “assert” the expected values of specific properties of certain GUI widgets in each test case; during test execution, these assertions are used as test oracles to determine whether the GUI executed correctly. Since a test case for a GUI is a sequence of events, a test designer must decide: (1) what to assert; and (2) how frequently to check an assertion, for example, after each event in the test case or after the entire test case has completed execution. Variations of these two factors significantly impact the fault-detection ability and cost of a GUI test case. A technique to declaratively specify different types of automated GUI test oracles is described. Six instances of test oracles are developed and compared in an experiment on four software systems. The results show that test oracles do affect the fault detection ability of test cases in different and interesting ways: (1) Test cases significantly lose their fault detection ability when using “weak” test oracles; (2) in many cases, invoking a “thorough” oracle at the end of test case execution yields the best cost-benefit ratio; (3) certain test cases detect faults only if the oracle is invoked during a small “window of opportunity” during test execution; and (4) using thorough and frequently-executing test oracles can compensate for not having long test cases.
Qing Xie 0003, Atif M. Memon
ACM Trans. Softw. Eng. Methodol.1
2006 Model-Based Testing of Community-Driven Open-Source GUI Applications
abstract
Although the World-Wide-Web (WWW) has significantly enhanced open-source software (OSS) development, it has also created new challenges for quality assurance (QA), especially for OSS with a graphical-user interface (GUI) front-end. Distributed communities of developers, connected by the WWW, work concurrently on loosely-coupled parts of the OSS and the corresponding GUI code. Due to the unprecedented code churn rates enabled by the WWW, developers may not have time to determine whether their recent modifications have caused integration problems with the overall OSS; these problems can often be detected via GUI integration testing. However, the resource-intensive nature of GUI testing prevents the application of existing automated QA techniques used during conventional OSS evolution. In this paper we develop new process support for three nested techniques that leverage developer communities interconnected by the WWW to automate model-based testing of evolving GUI-based OSS. The "innermost" technique (crash testing) operates on each code check-in of the GUI software and performs a quick and fully automatic integration test. The second technique {smoke testing) operates on each day's GUI build and performs functional "reference testing" of the newly integrated version of the GUI. The third (outermost) technique (comprehensive GUI testing) conducts detailed integration testing of a major GUI release. An empirical study involving four popular OSS shows that (1) the overall approach is useful to detect severe faults in GUI-based OSS and (2) the nesting paradigm helps to target feedback and makes effective use of the WWW by implicitly distributing QA
Qing Xie 0003, Atif M. Memon
ICSM1
2006 Studying the Characteristics of a "Good" GUI Test Suite
abstract
The widespread deployment of graphical-user interfaces (GUIs) has increased the overall complexity of testing. A GUI test designer needs to perform the daunting task of adequately testing the GUI, which typically has very large input interaction spaces, while considering tradeoffs between GUI test suite characteristics such as the number of test cases (each modeled as a sequence of events), their lengths, and the event composition of each test case. There are no published empirical studies on GUI testing that a GUI test designer may reference to make decisions about these characteristics. Consequently, in practice, very few GUI testers know how to design their test suites. This paper takes the first step towards assisting in GUI test design by presenting an empirical study that evaluates the effect of these characteristics on testing cost and fault detection effectiveness. The results show that two factors significantly effect the fault-detection effectiveness of a test suite: (1) the diversity of states in which an event executes and (2) the event coverage of the suite. Test designers need to improve the diversity of states in which each event executes by developing a large number of short test cases to detect the majority of "shallow" faults, which are artifacts of modern GUI design. Additional resources should be used to develop a small number of long test cases to detect a small number of "deep" faults
Qing Xie 0003, Atif M. Memon
ISSRE1
2005 Rapid "Crash Testing" for Continuously Evolving GUI-Based Software Applications
abstract
Several rapid-feedback-based quality assurance mechanisms are used to manage the quality of continuously evolving software. Even though graphical user interfaces (GUIs) are one of the most important parts of software, there are currently no mechanisms to quickly retest evolving GUI software. We leverage our previous work on GUI testing to define a new automatic GUI re-testing process called "crash testing" that is integrated with GUI evolution. We describe two levels of crash testing: (1) immediate feedback-based in which a developer indicates that a GUI bug was fixed in response to a previously reported crash; only select crash test cases are rerun and the developer is notified of the results in a matter of seconds, and (2) between code changes in which new crash test cases are generated on-the-fly and executed on the GUI. Since the code may be changed by another developer before all the crash tests have been executed, hence requiring restarting of the process, we use a simple rotation-based scheme to ensure that all crash tests are executed over a series of code changes. We show, via empirical studies, that our crash tests are effective at revealing serious problems in the GUI.
Qing Xie 0003, Atif M. Memon
ICSM1
2005 Automating regression testing for evolving GUI software
abstract
Abstract With the widespread deployment of broadband connections worldwide, software development and maintenance are increasingly being performed by multiple engineers, often working around‐the‐clock to maximize code churn rates. To ensure rapid quality assurance of such software, techniques such as ‘nightly/daily building and smoke testing’ have become widespread since they often reveal bugs early in the software development process. During these builds, a development version of the software is checked out from the source code repository tree, compiled, linked, and (re)tested with the goal of (re)validating its basic functionality. Although successful for conventional software, smoke tests are difficult to develop and automatically re‐run for software that has a graphical user interface (GUI). In this paper, we describe a framework called DART (Daily Automated Regression Tester) that addresses the needs of frequent and automated re‐testing of GUI software. The key to our success is automation: DART automates everything from structural GUI analysis, smoke‐test‐case generation, test‐oracle creation, to code instrumentation, test execution, coverage evaluation, regeneration of test cases, and their re‐execution. Together with the operating system's task scheduler, DART can execute frequently with little input from the developer/tester to re‐test the GUI software. We provide results of experiments showing the time taken and memory required for GUI analysis, test case and test oracle generation, and test execution. We empirically compare the relative costs of employing different levels of detail in the GUI test oracle. We also show the events and statements covered by the smoke test cases. Copyright © 2005 John Wiley & Sons, Ltd.
Atif M. Memon, Adithya Nagarajan, Qing Xie 0003
J. Softw. Maintenance Res. Pract.3
2005 Studying the Fault-Detection Effectiveness of GUI Test Cases for Rapidly Evolving Software
abstract
Software is increasingly being developed/maintained by multiple, often geographically distributed developers working concurrently. Consequently, rapid-feedback-based quality assurance mechanisms such as daily builds and smoke regression tests, which help to detect and eliminate defects early during software development and maintenance, have become important. This paper addresses a major weakness of current smoke regression testing techniques, i.e., their inability to automatically (re)test graphical user interfaces (GUIs). Several contributions are made to the area of GUI smoke testing. First, the requirements for GUI smoke testing are identified and a GUI smoke test is formally defined as a specialized sequence of events. Second, a GUI smoke regression testing process called daily automated regression tester (DART) that automates GUI smoke testing is presented. Third, the interplay between several characteristics of GUI smoke test suites including their size, fault detection ability, and test oracles is empirically studied. The results show that: 1) the entire smoke testing process is feasible in terms of execution time, storage space, and manual effort, 2) smoke tests cannot cover certain parts of the application code, 3) having comprehensive test oracles may make up for not having long smoke test cases, and 4) using certain oracles can make up for not having large smoke test suites.
Atif M. Memon, Qing Xie 0003
IEEE Trans. Software Eng.2
2004 Empirical Evaluation of the Fault-Detection Effectiveness of Smoke Regression Test Cases for GUI-Based Software
abstract
Daily builds and smoke regression tests have become popular quality assurance mechanisms to detect defects early during software development and maintenance. In previous work, we addressed a major weakness of current smoke regression testing techniques, i.e., their lack of ability to automatically (re)test graphical user interface (GUI) event interactions - we presented a GUI smoke regression testing process called daily automated regression tester (DART). We have deployed DART and have found several interesting characteristics of GUI smoke tests that we empirically demonstrate in this paper. We also combine smoke tests with different types of test oracles and present guidelines for practitioners to help them generate and execute the most effective combinations of test-case length and test oracle complexity. Our experimental subjects consist of four GUI-based applications. We generate 5000-8000 smoke tests (enough to be run in one night) for each application. Our results show that: (1) short GUI smoke tests with certain test oracles are effective at detecting a large number of faults; (2) there are classes of faults that our smoke test cannot detect; (3) short smoke tests execute a large percentage of code; and (4) the entire smoke testing process is feasible to do in terms of execution time and storage space.
Atif M. Memon, Qing Xie 0003
ICSM2
2004 Using Transient/Persistent Errors to Develop Automated Test Oracles for Event-Driven Software
Atif M. Memon, Qing Xie 0003
ASE2