A defect is a variation or deviation from the original business requirements, If a developer finds an issue and corrects it by himself in the development phase then it’s called a defect.
If testers find any mismatch in the application/system in the testing phase then they call it Bug.
Once the product is deployed and customers find any issues then they call the product a failure product. After release, if an end-user finds an issue then that particular issue is called a failure.
You can use a platform like QAppAssure I recently came across, which allows you to test on-cloud and on-field devices, across 100+ device, make and models, Integrate with Jira, CI/CD tools, and also use Appium, Calabash, Espresso, UI Automator, XCUITest. You can run unlimited parallel tests with the free trial pack. It enables continuous mobile app testing to deliver a seamless connected experience. This tool helps Automate your testing process using an industry-unique integrated platform to ensure every application release is bug-free. I personally use this tool for testing and to date, it has given me really good results.