Les gens détestent les plantages d'applications, surtout lorsque l'application ralentit ou se fige pendant quelques secondes. Selon une enquête réalisée par Dimensional Research, 61 % des utilisateurs s'attendent à ce que les programmes soient lancés dans les 4 secondes et 49 % s'attendent à ce que les entrées répondent dans les 2 secondes. Si l'application plante, se bloque ou signale une erreur, 53 % des utilisateurs désinstalleront l'application.
Que vous cibliez les consommateurs ou les entreprises, les problèmes de crash peuvent complètement les décevoir. J'ai parlé à certains développeurs mobiles et leur ai demandé quels étaient les problèmes de crash les plus courants qu'ils ont rencontrés, et ils ont trouvé six causes courantes :
1. Gestion de la mémoire
Toutes les personnes à qui j'ai demandé ont parlé En matière de gestion de la mémoire, la plupart des applications le feront démarrez de nombreux threads pour occuper la mémoire du système. Sachin Agarwal, vice-président du marketing chez OpsClarity, a déclaré que les programmeurs peuvent écrire du code comme si l'application qu'ils écrivent était la seule dans l'application. En même temps, il a suggéré que lorsqu'ils écrivent des programmes, ils devraient considérer être de « bons citoyens ». dans l'écosystème applicatif." .
Les problèmes de mémoire ne sont pas les mêmes pour tous les développeurs. "Sous iOS, vous pouvez exploiter Objective-C pour gérer des problèmes de mémoire volumineux", a déclaré Andrew Whiting, vice-président du développement commercial chez Solstice Mobile. Mais il faut peser le pour et le contre. "Sur Android, vous avez besoin d'un contrôle plus approfondi sur [la mémoire] et vous pouvez lui faire faire exactement ce que vous voulez, mais cela ajoute de la complexité."
"En cas de manque de mémoire en Java, nous constatons que cela est généralement lié à des choses comme charger des images volumineuses ou traiter des bitmaps", a déclaré Jonathan Karon, responsable principal de l'ingénierie logicielle chez New Relic. Les causes courantes des problèmes sont compilées dans le rapport sur les performances techniques du SDK mobile. "Il existe en fait un nombre surprenant de problèmes d'éditeur de liens sur Android, où la classe est introuvable, ou il existe une exception appelée lien non classifié." Les applications iOS, en revanche, sont souvent affectées par les exceptions NSInternalInconsistency. c'est parce que lorsqu'un développeur modifie un tableau ou une collection de données à un endroit, tandis que quelque chose d'autre y lit la liste des éléments.
2. Cycle de vie du logiciel
Le processus itératif de développement d'applications et la publication fréquente de versions ouvrent la porte à un produit minimum viable pour entrer sur le marché et ensuite l'améliorer au fil du temps, ce qui est très populaire de nos jours. Cependant, le cycle de vie traditionnel des logiciels est devenu plus compliqué en raison de leur dépendance au système d'exploitation et aux API tierces.
« Si vous regardez les dernières mises à jour d'Android, il y a beaucoup de plantages d'applications », a déclaré Agarwal. "Le système d'exploitation lui-même est instable ou le système d'exploitation a été mis à jour, mais l'application n'a pas été mise à jour" ou les utilisateurs ne téléchargent pas de nouvelles versions. "Vous n'avez aucun contrôle sur celles-ci. Cela illustre un processus de développement de base." développement de l'informatique mobile et du cloud computing L'utilisation accrue de services tiers et de leurs API associées permet de gagner du temps et de commercialiser plus rapidement les applications, mais elles comportent leur propre ensemble de problèmes.
« De nombreuses bibliothèques ont un problème commun », a déclaré Whiting. "Ils essaient de résoudre les problèmes de chacun plutôt que de fournir la meilleure solution à chacun." Par exemple, une API donnée peut avoir des limitations de performances pour une application spécifique.
Les API peuvent également utiliser des techniques délicates telles que les ajustements de la méthode iOS. Lorsque le code d'origine (comme l'API d'Apple) n'est pas disponible, les développeurs apportent des modifications basées sur le code d'origine (comme l'API d'Apple). "On pourrait appeler cela l'un des 'arts sombres' du développement d'applications iOS", a déclaré Raman Bhatia, responsable du mobile chez Fareportal, une agence de voyages en ligne. "[Mais] si le code de votre application est écrit d'une certaine manière, cela peut provoquer des plantages."
Les API peuvent également causer d'autres problèmes. "La latence de l'API, les taux d'erreur, la bande passante des données, la version de l'API et le nombre de requêtes d'API peuvent tous entraîner de gros problèmes à partir de petits problèmes", a déclaré Agarwal. Ensuite, il y a l'API elle-même, qui nécessite des outils spécialisés pour tout suivre.
L'API peut également provoquer d'autres problèmes tels que des erreurs de mémoire. "Si vous créez un objet qui a été supprimé de la mémoire avant de créer d'autres objets, cela ne pose généralement aucun problème, mais sachez que vous ne savez pas si les objets suivants devront faire référence à l'objet supprimé "Surtout lorsque vous l'introduisez." "Avec les frameworks tiers, des problèmes surviennent. Vous ne pouvez jamais être sûr de ce qu'ils nettoient et de ce qu'ils créent", a déclaré le co-fondateur et développeur Long Le.
3. Tests insuffisants
Tests Le besoin est évident, mais obtenir Une couverture adéquate, en particulier avec le grand nombre de versions et d’appareils Android, peut s’avérer difficile. Bien qu'il existe des émulateurs, les limitations de performances du logiciel exécuté sur le serveur peuvent être différentes de celles de la machine réelle.
Par exemple, si un thread d'une application lit une base de données tandis qu'un deuxième thread tente de modifier la même base de données, "c'est une question de timing", a déclaré Wayne Carter, architecte en chef du mobile chez Couchbase. "S'ils n'étaient pas entrés en collision au même moment, le problème ne se serait pas produit et aurait pu être masqué par la description du journal." Les simulateurs ne se comportent souvent pas de la même manière que les vrais.
Exécuter différents systèmes sur différents appareils est une solution réalisable, mais cette méthode est plus coûteuse que les émulateurs. Cela nécessite un équilibre entre budget et besoins
Les tests doivent intégrer des références aux normes de l'industrie et aux attentes des utilisateurs pour garantir que le contenu est acceptable pour les développeurs et les utilisateurs. Les tests devraient également être continus. Surveillez les performances et recherchez les commentaires des utilisateurs, puis résolvez les problèmes le plus rapidement possible.
4. Gestion du réseau
Alors que les applications deviennent de plus en plus dépendantes du réseau, que ce soit pour les données ou les services tiers, la gestion du réseau est devenue une source de problèmes.
La principale raison des plantages est lorsque vous êtes sur le point d'obtenir des données, de soumettre quelque chose et d'attendre la récupération et que l'application répond ou se bloque. Pravin Vazirani, vice-président des opérations, a déclaré que les développeurs ont peut-être rendu la connexion Wi-Fi très fonctionnelle, mais des problèmes surviendront lorsque les utilisateurs se trouvent dans des zones de réseau défectueuses.
Une bonne façon de résoudre les problèmes de réseau est d'informer les utilisateurs de la connexion. interruption et, si possible, offre la possibilité d'effectuer d'autres opérations susceptibles de présenter un intérêt. Si les gens comprennent la cause des conditions temporaires qui échappent au contrôle de l’application, ils sont plus susceptibles de rester calmes et de ne pas être ennuyés par le logiciel.
5. Conditions d'erreur et gestion des exceptions
En raison de la complexité du développement mobile, certaines erreurs sont inévitables, qu'il s'agisse de modifications inattendues de l'API, d'évitements de problèmes de mémoire détectés précédemment, de conditions de connexion réseau, ou même du simple transfert de fichiers volumineux (tels que sous forme d'images ou de vidéos)
Dans ce cas, le meilleur moyen est de donner une bonne gestion des erreurs et des exceptions. Par exemple, si l'utilisateur saisit des données incorrectes ou fournit du texte dans la zone de texte alors qu'une valeur doit être fournie, l'application ne tentera pas accidentellement de signaler une erreur.
Dans chacune de ces situations, une application correctement codée remarquera l'inattendu et mettra fin gracieusement au processus ou à l'activité tout en informant l'utilisateur de l'erreur. Si vous parvenez à maintenir les lignes de communication ouvertes, vous aurez de meilleures chances de fidéliser les utilisateurs.
6. Trop de code
Le meilleur conseil est de garder votre application simple. Trouvez un plug-in dans un but précis, utilisez le plug-in et écrivez le code nécessaire. "Le code le meilleur et le plus exempt de bugs est celui que vous n'écrivez pas vous-même", déclare Felipe Laso-Marsetti, ingénieur système senior chez Lextech Global Services, une société de développement mobile d'entreprise
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!