测试IntelliSense引擎

null

嗨,我是James Wang,VC++编译器前端团队的SDET成员。目前,我正在为新的IntelliSense引擎设计测试架构。我负责设计测试,以确保IntelliSense引擎给出正确的答案,快速信息,成员名单,参数帮助等。

目前,我们有一个测试套件,指导测试智能感知功能。但缺点之一是它只针对非常有限的场景。测试成为一个主要问题。但是由于大量的C/C++结构,测试每一个场景都是不可能的,或者至少是一个非常耗时的任务。同时,我们有100000的测试针对覆盖C/C++结构的编译器/库。为了智能感知引擎测试的目的调整这些测试会更好吗?

为了实现这一点,我编写了一个工具,它将分析任意C/C++代码,并生成智能感知测试站点。该工具还将为每个测试站点生成预期结果。因此,对于任意的C/C++代码,我们可以在快速信息、成员列表、参数帮助等方面生成一组自校验智能感知测试。结果,我们可以重用100000次测试来实现智能测试。

有两件事使这成为可能:

1.更好的中间语言(IL)表示。在解析源代码之后,新的IntelliSense引擎生成了更好的IL,并公开了大量api,允许遍历和查询各种编译器工件。这使我能够弄清楚在哪里创建IntelliSense测试站点以及预期的结果应该是什么。例如:在遍历IL时,如果我看到一个字段运算符(->),我可能希望生成一个成员列表测试。对于预期的结果,我可以查询字段运算符的左操作数的类型,并检索预期的成员列表。

2.智能感知引擎组件化。新的IntelliSense引擎公开了允许引擎级测试的API。所以我可以不用IDE进行智能感知测试。否则,运行大量IntelliSense测试将变得不切实际,因为每次测试都需要启动/关闭IDE所需的时间。

希望这种新方法能够提高新IntelliSense引擎的测试覆盖率并提高其质量。

谢谢,

詹姆斯

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享