Visual Studio 和 TFS 11 中的超前分析
[原文发表地址] Preemptive Analytics in Visual Studio and TFS 11
[原文发表时间] 2012-04-11 7:19 AM
在过去的几年中,开发和操作之间的联系变得越来越紧密。开发团队把应用程序完全交给操作者的旧时代正在消失,同样地,开发人员把应用程序完全交给测试小组的时代也正在消失。无论你是在谈论持续部署、 DevOps 还是"建造、衡量,学习",这些都是开发团队在与客户和产品的应用各个方面中用到的越来越多的短语。
在过去几年中,我庆幸我们将TFS带入到我们的生活中。以不同的方式来看世界对我来说真的是一个挑战。在接下来的几个月中,我将试着写一系列的文章来分享在这种方式下我学到的一些东西。其中的一件事是你要对产品有很好的可见性。没有它,你将拥有低质量的、 昂贵的、 非预期的服务。有了它,你可以在你的客户意识到问题之前解决问题,根据人们的实际应用来设置优先级,测试一些变更来看如何影响用户行为,让成本(硬件和软件)降到最低,等等。
在过去的一年左右的时间里,我们已经作出一些重大的投资来帮助实现这些功能。首先是我们大约一年前宣布的TFS和系统中心集成,这使产品"升级"到包含了所有诊断信息的TFS。另一个是在 VS 11发布中的产品的智能化 ,它允许你从产品的环境中获取详细的诊断数据。我们跟着也宣布了一些产品智能化的改进 ,今年秋天你将会看到这些改进。
我们一直以来工作的另一个领域是产品的遥测。我们基于基础的遥测与Preemptive(Dotfuscator 的制造商)合作,包括与TFS/Visual Studio 11,这被称为PreEmptive Analytics 。这种内置的功能可以检测你的应用程序,并接收用户所体验的崩溃的报告。这些报告被分析,然后与其他相关的报告提炼为一组事件产生的原因基本是相同的"产品事故"。这些将会在你的TFS数据库中以工作项显示出来。你还可以购买 Pro 版和获取额外功能,比如像分析你的应用程序经常用到的功能,等等。
许多年来,这种遥测一直是 Visual Studio 开发进程中的重要组成部分。我们把它作为理解客户的真正体验,解决客户的问题,衡量我们的进程的关键一部分。我们创建了很多报告,为每个产品的发布设置目标。例如,这里是在VS 11 beta 版中真实用户在遥测时发现导致产品崩溃的前10个bug和这些 bug 的当前状态。
Bug Info:Info |
Watson |
||||||||
Rank |
TFS ID |
Resolution |
PU |
Hits |
CABs |
Details |
|||
#1 |
Fixed |
VS: Pro |
1010 |
6.0% |
45 |
MSENV.DLL!== [Crash32_Normal: 0xC0000005] |
|||
#2 |
(Active) |
VS: Ultimate |
454 |
2.7% |
9 |
VSDEBUG.DLL!CAddressPosition::UpdateMarker [Crash32_Normal: 0xC0000005] |
|||
#3 |
(Active) |
NDP: WPF |
326 |
1.9% |
42 |
NVD3DUM.DLL!unknown [Crash32_Normal: 0xC0000005] |
|||
#4 |
(Active) |
VS: Pro |
313 |
1.9% |
21 |
UNKNOWN.DLL!Microsoft.VisualStudio.Editor.Implementation.Find.FindTarget.CalculateWrapping [Clr20r3: system.nullreferenceexception] |
|||
#5 |
Fixed |
VS: Ultimate |
226 |
1.3% |
8 |
VSDEBUGENG.SCRIPT.DLL!ScriptDM::CProviderEventCallback::AttachToProgramImpl [Crash32_Normal: 0xC0000005] |
|||
#6 |
Fixed (excluded) |
VS: Pro |
181 |
1.1% |
18 |
MSENV.DLL!EnableBrowserSecurityFeatures [Crash32_Normal: 0xC0000420] [Exclude reason: internal only] |
|||
#7 |
External (excluded) |
VS: Ultimate |
161 |
1.0% |
9 |
MICROSOFT.VISUALSTUDIO.ARCHITECTURETOOLS.PROGRESSIVEREVEALPROV!Microsoft.VisualStudio.ArchitectureTools.ProgressiveReveal.ProgressiveRevealProvider.Finalize [Clr20r3: system.missingfieldexception] [Exclude reason: unsupported install] |
|||
#8 |
(Active) |
VS: Pro |
123 |
0.7% |
12 |
MSENV.DLL!CDelayProjectLoadManager::LoadProject [Crash32_Normal: 0xC0000005] |
|||
#9 |
Fixed |
Expression: VS Integ |
116 |
0.7% |
28 |
SYSTEM.RUNTIME.REMOTING.NI.DLL!System.Runtime.Remoting.Channels.Ipc.IpcPort.Read [AppHangB1: 0] |
|||
#10 |
(Active) |
VS: WinC++ |
113 |
0.7% |
30 |
MFC110U.DLL!CView::~CView [Crash32_Normal: 0xC0000374 |
|||
我们还创建可视化效果来显示我们的整体操作。这里是一个条形图 — — 一栏代表一个 bug,高度代表了报告的数量,颜色是该 bug 的当前状态。
所以, 使用VS 11 & TFS 11,你可以获得你的应用程序的相同种类的遥测。在社区版的服务器端和客户端组件存在于工具栏中。服务器端的安装已集成到 TFS 管理控制台中,客户端在 VS 工具菜单上可用。
简而言之,你安装服务器端,然后你将检测你的应用程序 (包括公开的服务器端收集器的 url)。当客户运行你的应用程序和系统崩溃时,它将自动发送数据,其中包括到你的服务器上的堆栈跟踪,聚合服务将形成一个文件或更新你的 TFS 服务上的一些bug。
一旦配置好了所有,并接收到一个应用程序故障报告后,你就会看到TFS中的产品事件,就像这样:
然后你可以查看像这些内置的报告。这里是应用程序的事件的概述,包括事件的状态。
或事件随着时间推移的趋势。
结论
遥测和分析功能在软件开发过程方面变得越来越重要。它们使你能够"关闭循环",并确保你为你的客户提供完美的体验。无论你构建一台关键的服务器还是在你的组织或个人电脑和手机上运行的客户端,它们都是很重要的。过去几年来,我们一直在让Visual Studio,成为开发人员深入了解应用程序行为的卓越工具,在未来几年中你将会看到更多功能。
你所需要的一切都包含在了我们上月发布的 VS 11 和 TFS 11 beta中,。我们还在努力精简和改进一些体验。我鼓励你将其签出。
你可以访问这些网站来了解更多:
Brian