Testing is simply trying out the different steps of your application, debugging means observing a non expected behavior and understand the root cause, before solving it. While each case is by definition different, there are a few principles that can guide you in this process.
As your application has two versions, it is always recommended to test and debug on the development version of your app. Firstly, that's the application that you can modify, which will make the testing process of testing, modifying the app and validating the change must faster. Secondly, and more importantly, as soon as you are testing database-related workflows, the application's database is going to be modified. If you are not sure of your changes, it is much safer to modify the development version of your data, while live data will very likely impact real users.
However, it can happen that an issue only happens in live mode, especially it it is reported by a user. In such case, we recommend two things:
- Try to deploy the latest version of your app if it's safe to do so. If an issue is happening in live mode but not in development mode, the bug may have already been fixed in development, and you should see if deploying fixes the issue.
- If an issue is hit by a particular user, it may be because of the specific data that is saved in live mode. Bubble lets you copy your database across versions. In such a case, we recommend copying from live to development. Doing so, your development version will have the same data as in live mode, which will make debugging closer to production.
To copy your database across version, head to the Data Tab and click on 'App Data'. The 'Copy and restore database' button is where you can copy your database across versions or restore it to a previous point in time (the restoration process will be covered in the Maintaining an Application chapter).
You can decide to only copy one type of data (for instance the app Users, etc.). However, keep in mind that only copying one type may lead to some inconsistencies, if a user is pointing to another thing that wasn't copied. In general, for debugging process, we recommend copying the whole database from live to development if it's safe to do so.
When you hit an issue and when your app does not have the expected behavior, the best way to tackle this issue is by having a reliable, deterministic way to reproduce the issue. This may not be possible 100% of the times, but it should be the first step when debugging your app.
Ideally, you'll want to find a successions of actions/interactions within your app that are as simple, as short as possible, while always reproducing the issue.
A good approach is also to try to reproduce the issue with a fresh set of data. For instance, a fresh user, or a fresh order object (thing), etc. An issue can happen because of a legacy situation in your data, and if you cannot reproduce the issue with a fresh set of data, this is a strong hint that this is the case. The approach here is then different, instead of changing the whole workflow, a fix could be to extract the things that meet the requirements to lead to an issue, and modify these things (see Bulk Operations for more details about how to modify more than one thing at once, in the editor).
Bubble offers two main ways to debug issues, depending on the situation. The most common is the debugger, that lets you run workflows action-by-action and inspect elements and understand where the fields' values are coming from. The second tool that is very useful to diagnose past issues is the Server Logs, that lets you analyze a posteriori what happened in your workflows.
Lastly, don't forget to use the Run as another user option if a user is reporting an issue that you cannot reproduce with your own account or a test account.
The Bubble development team spends a lot of time on testing and uses automated tests extensively to avoid bugs. However, if you think you're hitting an issue that is not caused by the way you built your app and workflows, but a non-expected behavior of a Bubble core feature, please reach out and we'll look into this. This doesn't apply to plugins that aren't built by the Bubble Team, for these issues we recommend reaching out to the plugin author.
Reporting bugs to the Bubble team should always be done via the Bug Reporting tool, that prompts you to fill up the different necessary information for the team to look into it. Before you file a bug, please do a few things to ensure this is a real bug.
- Before you submit the report, make sure your connection is fully-functional, and that you're on the latest version of your browser.
- Test the issue in Incognito mode (or 'private browsing') first, as ad blockers and browser extensions can interfere with web applications.
- Remove custom code you've added to your app in HTML elements, headers, etc.
As you're filing a report, please keep a few things in mind to ensure a rapid resolution.
- Try to be as specific as possible when you describe the issue. "It doesn't work, I think it is be a bug." is not specific enough. Instead, saying "based on the condition, this element should be red, but instead I see it green" is much more actionable.
- Similarly to what was described above for your own debugging process, the more isolated the issue is, the faster we can look into it.
- Please make sure your instructions can be understood by someone that has no knowledge about your app. The best descriptions are 'click on button A', 'type xx in the input', 'click on button B', 'see the problem'.
- Try to share screenshots, as prompted in the form.
- Videos can be useful, but shouldn't replace the written from. It should only be a complement (and is usually not necessary).
We understand bugs can be frustrating and can slow down your development work. However, with the right reporting, you can help us identify issues quickly and fix them, and when the team fix an issue for you, it is fixed for the entire Community.