0

最終的な目標は、特定の機能/タスクがどの程度クラッシュまたは安定しているかを判断することです。

広く使用されている Android および iOS アプリのクラッシュ レポート ツールからクラッシュ レポートを収集しています。幸いなことに、クラッシュ レポートには、クラッシュが発生したクラス名とメソッド名が含まれています。

ただし、(クラス/メソッドに基づいて) クラッシュを特定のタスクまたは機能に何らかの形でマッピングしたいとします。つまり、 -> class Analytics.java、 methodonLog()の場合、これを「分析機能」に安全にマップできます。これは、コードを (そして命名に基づいて) トレースすると、このクラッシュが分析イベントをログに記録しようとしているコードと相関していることがわかるからです。 .

質問は:

  1. すべてのクラッシュに対して、プログラムでこれを行うにはどうすればよいですか? これはAIなしでも可能ですか?
  2. 特定のタスク/機能を実行するときに触れたクラスを生成するために使用できるツールはありますか? (つまり、Android アプリでボタンをタップしてログインし、電子メールを入力すると、このツールは触れたすべてのコード パスを表示するはずです)
  3. これはソフトウェアの安定性を伝える効果的な方法ですか?? (そうでない場合、何か提案はありますか?)
4

1 に答える 1

1

1)必要な詳細度とアーキテクチャによって異なります。詳細に行きすぎると、強力な AI が必要になりますが、それは私たちにはありません。Aそしてもちろん、コードがスパゲッティに似ているほど、機能する可能性は低くなります。しかし、人間にさまざまなクラスと機能をさまざまな機能に分類させた場合、機能するためにクラッシュした機能を検索するだけで済みます。ただし、コードがそのように 100% 故障することは決してないため、偽陰性と偽陽性の割合があります。

2) はい、コール チェーン分析を実行してきれいな XML を吐き出すことができるツールはたくさんあります。困難は、物事が出来事を引き起こすときに起こります。たとえば、ボタンを押すと、ネットワーク IO を開始するためにスレッドが起動される場合があります。Java と Android を本当に理解している本当に優れたツールがない限り、そのスレッドはログに記録されません。

3) 安定性を定義します。少なくとも、これに頻度分析を追加する必要があります。一度も実行されていない機能は月に 1 回クラッシュする可能性がありますが、50% のクラッシュ率になる可能性があります。常に使用される機能は、1% のクラッシュ率で月に 10 回クラッシュする可能性があり、実際にはより安定しています。しかし、私はソフトウェア開発のメトリクスはあまり好きではありません。メトリクスはゲームが簡単すぎるため、それに集中すると、開発者の仕事が品質からメトリクスを使ったゲームプレイに変わります。ルールは、すべてのクラッシュがバグとして追跡され、修正され、少なくともクラッシュせず、適切なエラー フィードバックがユーザーに提供されるようにする必要があります。

于 2014-06-10T01:50:31.163 に答える