If you're rooted, Titanium Backup is the best in my opinion. All backups are stored in a folder. Then just copy the folder to the new phone, install Titanium Backup from the Play Store, and restore all missing apps/settings. It backs up app settings too.
You can also backup to cloud storage and restore from that if you don't want to transfer files.
Intel i7-5820K ∙ Asus X99-A ∙ Crucial 4x4GB DDR4-2400 ∙ EVGA GTX1080 ∙ Samsung 840 EVO 250GB ∙ ASUS PG279Q + Dell U2713HM ∙ Corsair HX850 ∙ Win10/Ubuntu16 | Xbox One
Lenovo T470p ∙ Intel i7-7700HQ ∙ Nvidia 940MX ∙ 2x8GB DDR4-2400 ∙ Samsung 850 EVO 500GB/ZTC M.2 2242 256GB ∙ 1440p IPS ∙ Win10/Ubuntu16