最终目标是确定特定功能/任务的崩溃程度或稳定程度。
我一直在收集来自常用Android和iOS应用的崩溃报告工具的崩溃报告。幸运的是,崩溃报告包括发生崩溃的类名和方法名称。
但是,假设我现在想以某种方式将崩溃(基于类/方法)映射到特定任务或特征。即 - >对于类Analytics.java
,方法onLog()
,我可以安全地将其映射到"分析功能",因为如果我跟踪代码(并基于命名),我发现此崩溃与尝试记录anlytics事件的代码相关。
问题是:
答案 0 :(得分:1)
1)取决于您想要的详细程度和您的架构。如果你过于详细,你需要强大的人工智能,而我们没有。当然,像你的代码越多的意大利面就越不可能工作。但是如果你让一个人将不同的类和功能分类为不同的功能,你可以只查找它崩溃的功能。然而,它会有一些假阴性和假阳性率,因为代码永远不会100%分解。
2)是的,有很多工具可以进行调用链分析并吐出漂亮的XML,任何分析器都必须这样做才能进行分析。当事情引发事件时,困难就来了。例如,按下按钮可能会导致启动线程以启动网络IO。除非你有一个真正了解Java和Android的非常好的工具
,否则不会记录该线程3)定义稳定性。至少你需要为此添加频率分析 - 一个从未运行的功能可能每月崩溃一次,但这可能是50%的崩溃率。一直使用的功能可能每月崩溃10次,崩溃率为1%,实际上更稳定。但我并不是软件开发指标的忠实粉丝 - 他们过于容易游戏,而是专注于它将开发人员的工作从质量转变为使用指标玩游戏。该规则应该是所有崩溃都被跟踪为错误并修复,至少不会崩溃并向用户提供良好的错误反馈。