sea-lab-wm / burt

BURT: A task-oriented dialogue system for bug reporting
Apache License 2.0
8 stars 5 forks source link
android-app bug-report bug-reporting bugs chatbot quality-check

BURT: A task-oriented dialogue system for bug reporting

License

Overview

NOTE: the tag of the replication package for the FSE’22 artifact review is: BURT 1.1.0

This repository contains the replication package of our ESEC/FSE'22 paper:

Y. Song, J. Mahmud, Y. Zhou, O. Chaparro, K. Moran, A. Marcus, and D. Poshyvanyk, “Toward Interactive Bug Reporting for (Android App) End-Users,” in Proceedings of the 30th ACM Joint Meeting on the Foundations of Software Engineering (ESEC/FSE'22), 2022, to appear

This README will walk you through installing and using BURT.

This README also describes the content of our ESEC/FSE'22 replication package.

What is BURT?

BURT is a web-based task-oriented chatbot for interactive BUg ReporTing (BURT), which offers a variety of features such as the ability to:

You can watch a video demonstration of BURT here.

BURT is implemented as a web application with two major software components: the backend server and the frontend (GUI). The backend server is implemented with Spring Boot (Java) and the frontend is implemented with the React Chatbot Kit (Javascript, Node.js). The frontend comunicates with the backend server via REST messages.

This figure shows an overview of BURT's workflow:

Building and deploying BURT

To build and run BURT on your computer, you need to:

  1. set up the build/runtime environment,
  2. build/run BURT's backend server, and
  3. build/run BURT's frontend application.

NOTE: We provide instructions for installing BURT on Windows 10 and Mac OS Big Sur. Similar steps can be performed for other operating systems and other more recent versions of Windows and Mac.

1. Environment set-up

To set up BURT's build/runtime environment, complete the following steps:

NOTEs: make sure to install the version of the tools/frameworks as specified. Also make sure these can be executed in the terminal.

  1. Install the Java Development Kit (JDK) 12:
    1. You can download OpenJDK 12.0.2 (build 12.0.2+10) from this website. Follow the instructions below, according to your operating system.
    2. Windows: download the Windows 64-bit zip file, unzip it, and move the decompressed folder (jdk-12.0.2) to an appropriate directory, e.g., C:\Program Files\Java\jdk-12.0.2. Then, add the JDK bin folder to the PATH environment variable (e.g., C:\Program Files\Java\jdk-12.0.2\bin). Finally, set the JAVA_HOME environment variable as described here (e.g., set it to C:\Program Files\Java\jdk-12.0.2).
    3. Mac OS: download the Mac 64-bit tar.gz file, extract the file and move the decompressed folder (jdk-12.jdk) to /Library/Java/JavaVirtualMachines. Run export JAVA_HOME=`/usr/libexec/java_home -v 12.0.2` to set the JAVA_HOME environment variable.
    4. If you have multiple JDK versions installed on your machine, make sure you use JDK 12.
    5. Verify the JDK installation by running java -version on the terminal. You should see the specific JDK 12 version you just installed.
  2. Install the Maven 3.6.3 build tool. One way to do so is by downloading Maven from this website, decompressing the package, and adding the bin directory to the PATH environment variable. These tutorials explain other ways to install Maven: Windows or Mac OS.

    Verify the correct installation of Maven by runnnig mvn --version on the terminal.

  3. Install the Node.js 15.8.0 runtime environment and its package manager npm 7.5.1:

    1. Windows: install the node version manager (nvm) by downloading its installer from here and then running the installer on your machine. Next, open a terminal with administrative rights, and run the following commands: nvm install 15.8.0 and nvm use 15.8.0. This website provides extra information about Node's installation on Windows.
    2. Mac OS: download Node's installer (node-v15.8.0.pkg) from here. Open the installer and follow the instructions on the screen.

    Verify the node/npm installation by running the commands: node -v and npm -v. You should see the version of the tools.

  4. Install the Yarn 1.22.5 package manager:

    1. Windows: on a terminal with administrative rights, run: npm i --global yarn@1.22.5
    2. Mac OS: run sudo npm i --global yarn@1.22.5 on the terminal.

    You can check Yarn is installed correctly by running yarn --version. You should see the version of Yarn.

  5. Install Git (any version should work). A tutorial to install Git is found here.
  6. By default BURT's backend server will run at the 8081 port and BURT's frontend will be accessible at http://localhost:3000. Make sure the ports 8081 and 3000 are available on your machine.

2. Building/running BURT's backend server

Complete the following steps:

  1. Create an empty directory called fse-burt-project on your personal directory.
  2. Download the installation script and save it in the fse-burt-project directory: Windows or Mac OS.
  3. Open a terminal, go to the fse-burt-project, and run the build script:

    1. Windows: run run_server.bat.
    2. Mac OS: give permissions to the script (chmod +x run_server.sh) and then run the script (./run_server.sh).

    This step might take a while because the script will download all the dependencies needed to build BURT.

  4. Once the script finishes, you should see on the terminal multiple messages from SpringBoot. The last message should look like this: "... Started ConversationController in 14.845 seconds...".

3. Building/running BURT's frontend

Complete the following steps:

  1. Open a new terminal and go to the fse-burt-project/burt/burt-gui directory.
  2. Run the script that builds/executes BURT's frontend:

    1. Windows: run the run_app.bat script.
    2. Mac Os: give permissions to the script (chmod +x run_app.sh) and then run it (./run_app.sh).

    This step may take a while because the script will download all the dependencies required by BURT's frontend.

  3. At this point, the script should have executed successfully and your web browser should have opened showing BURT's graphical user interface (GUI). If the browser was not opened, open it and go to http://localhost:3000.

Reporting a bug using BURT

After you build/deploy BURT successfully, you can now report one or more bugs with BURT.

NOTE: We recommend you to watch a short demostration video that explains how to use BURT via an example; the video can be found here. Feel free to read our user guide to learn about BURT's GUI and how to use it.

To report a bug, you can enter P20 as participant ID, then select an app, and then report a bug using BURT's GUI. We provide 12 bugs from six Android apps (see more details in our original paper), the bug videos can be found here. Feel free to watch one bug video and report it using BURT.

ESEC/FSE'22 Replication Package

Our ESEC/FSE'22 replication package contains three main parts: BURT's source code, BURT's app execution data, and BURT's evaluation artifacts. These parts are composed of multiple directories/folders that we describe next.

BURT's source code

BURT's source code is found in multiple sub-folders (i.e., Maven packages) and mainly consists of three parts:

BURT's Front End

BURT's Back End

Tools for Generating App Execution Data

The following tools were used/implemented to generate the app execution data needed by BURT to build its app execution model.

BURT's App Execution Data

The data directory contains the data used by BURT to build the app execution model. We describe the three main types of data stored in this directory:

BURT's Evaluation Data and Code

Our package provides the data that we used and collected for BURT's evaluation. It also provides the source code used to process this data and generate the evaluation results that we provide in our ESEC/FSE'22 paper.

Evaluation Data

Evaluation Code