0

最终目标是确定特定功能/任务的崩溃或稳定程度。

我一直在从一个流行的 Android 和 iOS 应用程序的崩溃报告工具中收集崩溃报告。幸运的是,崩溃报告包括发生崩溃的类名和方法名。

但是,假设我现在想以某种方式将崩溃(基于类/方法)映射到特定任务或功能。即 -> 对于类Analytics.java、方法onLog(),我可以安全地将其映射到“分析功能”,因为如果我跟踪代码(并基于命名),我发现此崩溃与尝试记录分析事件的代码相关.

问题是:

  1. 对于所有崩溃,我如何以编程方式执行此操作?如果没有人工智能,这甚至可能吗?
  2. 当我执行特定任务/功能时,是否有某种工具可以用来生成涉及的类?(即在 Android 应用程序中,当我点击一个按钮登录然后输入我的电子邮件时,该工具应该会显示所有触及的代码路径)
  3. 这是告诉软件稳定性的有效方法吗?(如果没有,有什么建议吗?)
4

1 回答 1

1

1)取决于您想要的详细程度以及您的架构。如果你太详细,你需要强大的人工智能,而我们没有。当然,你的代码越像意大利面条,它就越不可能工作。但是,如果您让人工将不同的类和功能分类为不同的功能,您只需查找它崩溃的功能即可。但是,它会有一些假阴性和假阳性率,因为代码永远不会 100% 以这种方式分解。

2)是的,有很多工具可以进行调用链分析并输出漂亮的 XML,任何分析器都必须这样做才能进行分析。当事情引起事件时,困难就来了。例如,按下按钮可能会导致启动线程以启动网络 IO。除非您拥有真正了解 Java 和 Android 的非常好的工具,否则不会记录该线程

3)定义稳定性。至少您需要为此添加频率分析 - 一个从未运行过的功能可能每月崩溃一次,但这可能是 50% 的崩溃率。一直使用的功能可能每月崩溃 10 次,崩溃率仅为 1%,实际上更稳定。但我不是软件开发指标的忠实拥护者——它们太容易玩了,并且专注于它将开发人员的工作从质量转变为使用指标玩游戏。规则应该是将所有崩溃都作为错误进行跟踪并进行修复,以至少不会崩溃并向用户提供良好的错误反馈。

于 2014-06-10T01:50:31.163 回答