Mfc Win32应用程序中的代码覆盖率

Mfc Win32应用程序中的代码覆盖率,mfc,winapi,code-coverage,Mfc,Winapi,Code Coverage,我们正要开始一个新项目。该项目的概念验证(PoC)仅使用Win32完成。该计划旨在充实PoC,清理更丑陋的部分,并满足项目业主设定的要求 实际项目的一个要求是100%的代码覆盖率,但我可以看到前面的问题:如何使用Win32实现100%的代码覆盖率-消息泵将非常难以有效测试?!我可以编译成DLL,但主应用程序中不会有不在覆盖范围内的代码吗 我正在考虑放弃Win32代码,转而使用MFC——至少在那个时候,很多锅炉板的东西都会被隐藏起来,看不见(所以也看不见) 对这个问题有什么想法吗 我的意思是Wnd

我们正要开始一个新项目。该项目的概念验证(PoC)仅使用Win32完成。该计划旨在充实PoC,清理更丑陋的部分,并满足项目业主设定的要求

实际项目的一个要求是100%的代码覆盖率,但我可以看到前面的问题:如何使用Win32实现100%的代码覆盖率-消息泵将非常难以有效测试?!我可以编译成DLL,但主应用程序中不会有不在覆盖范围内的代码吗

我正在考虑放弃Win32代码,转而使用MFC——至少在那个时候,很多锅炉板的东西都会被隐藏起来,看不见(所以也看不见)

对这个问题有什么想法吗


我的意思是WndProc,但WinMain也是如此。您如何对其进行单元测试

我做测试,但不做单元测试:我做系统/集成测试

如果您在调试器/探查器/代码覆盖率分析器下运行(整个)应用程序,那么您当然会发现(并且覆盖率分析器将显示)WinMain等正在运行(正在被覆盖)

接下来的问题可能是,如何自动化整个应用程序的系统/集成测试?您可能有一个自动驱动GUI的测试框架;我自己也不知道,但举个例子。或者,如果验收测试套件是一系列非自动/手动测试,则(客户)可以接受

另见


我的意思是WndProc,但WinMain也是如此。您如何对其进行单元测试

我做测试,但不做单元测试:我做系统/集成测试

如果您在调试器/探查器/代码覆盖率分析器下运行(整个)应用程序,那么您当然会发现(并且覆盖率分析器将显示)WinMain等正在运行(正在被覆盖)

接下来的问题可能是,如何自动化整个应用程序的系统/集成测试?您可能有一个自动驱动GUI的测试框架;我自己也不知道,但举个例子。或者,如果验收测试套件是一系列非自动/手动测试,则(客户)可以接受


另请参见

您所说的消息泵是什么意思,为什么不介绍它:您是指GetMessage循环吗?我是指WndProc,但WinMain也是如此。您如何对其进行单元测试?我向客户提出了一个问题,但当我最初询问时,他们坚持100%,但我还没有完全考虑清楚。还有系统托盘图标吗?烤面包机式弹出警告?所有这些都很难获得代码覆盖率。你说的消息泵是什么意思,为什么不包括它:你是说GetMessage循环吗?我是说WndProc,但WinMain也是如此。您如何对其进行单元测试?我向客户提出了一个问题,但当我最初询问时,他们坚持100%,但我还没有完全考虑清楚。还有系统托盘图标吗?烤面包机式弹出警告?所有这些都很难获得代码覆盖率。我曾经在一个使用Mercury WinRunner进行自动化测试的地方工作,但现在不在这里。此外,我还需要检查DevPartner是否仍将在开发环境之外收集信息。@graham.reeds——自动化测试的另一种方法可能是“插入”(向应用程序添加额外代码):以便它记录输入事件(鼠标和键盘),并随后“回放”捕获的内容(重新注入记录的输入事件).来自内部的游戏称之为“Le Chimp”。同样,由于我们不拥有代码,客户机将需要100%的覆盖率。由于这是一个短短的8周周期,我们没有真正的luxery.@graham.reeds——感谢您的参考:我忘记了使用半随机输入进行测试的想法。我曾经在一个使用Mercury WinRunner进行自动测试的地方工作,但不在这里。此外,我还需要检查DevPartner是否仍将在开发环境之外收集信息。@graham.reeds——自动化测试的另一种方法可能是“插入”(向应用程序添加额外代码):以便它记录输入事件(鼠标和键盘),并随后“回放”捕获的内容(重新注入记录的输入事件).来自内部的游戏称之为“Le Chimp”。同样,由于我们不拥有代码,客户机将需要100%的覆盖率。由于这是一个短短的8周周期,我们实际上没有luxery.@graham.reeds——感谢您的参考:我忘记了使用半随机输入进行测试的想法。