大家好,我是Smile Wei,VC编译团队的SDET(QA)。这不仅是我在vcblog上的第一个博客,也是我有史以来的第一个博客。
你可能已经猜到了,我是这里的新面孔,加入微软只有3年½ 几个月前。在这里,我想简单介绍一下VC QA的日常生活,并回答朋友们不断问我的以下两个问题:
我喜欢微软的生活吗,尤其是在风投团队?
我每天通常做什么?
第一个问题,我喜欢在微软工作,尤其是在VC编译器团队做QA。通常人们可能会认为QA可能不像dev那么专业,但在我们的团队中却不是这样。作为VC编译器团队中的QA,测试输入不是简单的数值数据或操作,在大多数情况下它们是C/C++源代码。在编写测试时,您不仅需要担心如何用Perl脚本语言编写测试过程,还需要如何在C/C++中编写测试输入代码,以捕获编译器的正确行为(正测试)和错误行为(负面行为)。在编写回归测试时也是这样。创建一个新的测试通常需要与开发人员进行大量讨论,因为我们需要确保我们的测试能够准确地反映VC编译器解析器中的新特性或更改,甚至是一些细微的更改。
将源代码作为测试输入也会增加bug调查和复制的难度。由于编译器的复杂性,某些编译器错误仅在某些类型的机器体系结构(x86、amd64或ia64)下失败,某些错误仅在特定体系结构的特定运行时环境(native、/clr或/clr pure)下失败,而有些bug只会在特定机器架构的特定运行时环境下,使用特定的cl.exe参数(在数百个参数组合中)失败。通常你会觉得,一旦一个bug被成功识别和复制,一半的工作就完成了。这就是为什么我大部分时间都花在bug调查上的原因。
虽然这个职位很有挑战性,但我非常喜欢它,因为我可以学到很多关于VC编译器的知识。我在这个职位上学到的所有细节都与我以前在大学里学到的高水平计算机知识相辅相成。你能想象我有多自豪在我朋友的代码中轻松找到这个bug,而它已经骚扰了他好几天了吗?所以我喜欢这份工作。 J
关于第二个问题,我的主要职责是:
1. 测试运行中的错误调查。微软每天都会对每一款产品进行测试,包括所有现有的测试套件,不仅在产品出厂前,而且在出厂后。测试运行中的任何故障都将作为1 圣 优先任务并在最早的版本中得到解决。
2. 测试修复和编写回归。这是第一个项目的后续工作。一旦一个VC编译器开发人员修复了一个bug,他会将他的私有构建发布给我,以便进行更全面的测试,即使他已经在自己的机器上执行了嗅探测试。这种双重保证机制进一步降低了错误修复引入新回归错误的风险。一些极其关键的bug修复可能涉及到大量复杂的测试。例如,为了验证最近的修复,我运行了一个4x3x3x2x2x2x2测试矩阵,矩阵中的每个测试运行都涉及到创建和测试一个23mbpch。在Microsoft中,如果以前没有针对该源代码的测试,则必须编写回归来解决修复问题。随着越来越多的回归测试被添加,像visualstudio这样的复杂产品可能会有大量与之相关的测试。例如,我拥有一个名为“编译器套件”的测试套件,其中包含大约20000个测试用例,这只是VC++编译器团队的10个测试套件中的一个。请注意,这些只是针对VC++编译器团队的测试,不包括针对VC++库团队、IDE团队、后端团队和发布团队的测试,更不包括Visual Studio中的其他团队,如VB和C团队。每天在大量测试上运行的测试在某种程度上保证了 微软产品的质量。
3. 验证QFE(快速修复工程)修复。是的,你的理解是正确的,qfe是那些偶尔弹出的修补程序,并自动安装在你的机器上。通常的QFE过程是支持团队收集来自客户的bug报告,发现bug并将其传递给开发团队。在开发团队修复错误之后,他们会通知QA团队,以便我们可以测试它。QA团队需要进行两轮验证。1号 圣 round是在将修复程序发送回发现错误的客户之前,2 钕 round是在客户验证错误修复之后,在正式发布到热修复之前执行最终验证。测试QFE补丁始终是我们的首要任务 圣 解决客户问题的第一要务 圣 地点。
4. 提供跨团队测试支持。有时我需要为其他团队提供测试支持-为其他团队提供不同的测试预期。例如,我最近完成了两个属于这一类的项目,并发现了一些bug。一个项目是为发布团队测试vs2008安装过程,另一个项目是为库团队测试vs2008msdn示例。我相信这种类型的测试可能有助于发现那些原始测试团队可能没有发现的bug,因为他们的测试人员熟悉产品的正确行为和过程。这正符合中国一句名言的精神:“如果你已经在山里面,就不会有山的概貌”。
5. 开发内部测试工具。正如我在前两个职责中提到的,微软每天都会对其所有产品进行测试运行,每次测试运行可能会执行数十万甚至数百万个测试。微软是如何做到这一点的?诀窍在于,整个测试执行、测试结果收集和比较都是在一大套测试工具的支持下完全自动化的。鼓励微软员工开发各种能够提高测试效率的内部测试工具,有些工具可以在整个部门甚至整个公司广泛采用和使用。
6. 为新功能编写测试。目前,VS团队已经开始着手开发visualstudio的下一个版本(vs2008之后的版本)。一个QA将被分配来制定针对每个新特性的一整套测试。测试过程是在产品周期的早期阶段开始的,而不是在所有的编码都完成之后,我相信这会坚持敏捷模型而不是传统的瀑布模型。我们使用敏捷模型的原因是,在产品周期中发现错误的时间越晚,产生的成本就越高。目前,我的大部分职责都集中在前五项任务上,我相信在我的下一个博客中,你可能会看到我在新功能方面的更多工作。
7. 其他工作职责。这包括我工作上的承诺或不是我的承诺的一切。例如,支持校园招聘,为新员工制作培训幻灯片和视频,面试应聘者,以及写博客。 J
希望你不会对我冗长的介绍感到厌烦。 J 如果你碰巧有一些兴趣,评论或建议,为什么不回复这篇博客-我期待着与你互动?如果你对这个富有挑战性的职位更感兴趣,为什么不来加入我们呢? J
非常感谢你们的耐心,希望你们和你们的家人都幸福健康。谢谢。
魏笑笑
VC编译团队