自动化Win32驱动程序测试

时间:2009-10-16 08:47:32

标签: windows testing driver device-driver kmdf

有没有人知道部分或完全自动化驱动程序测试安装的方法?

我是驱动程序开发的新手,并且习惯于在更高级别的语言中使用更多的测试驱动方法,因此转向我无法轻松测试的环境对我来说是一个进步。我在我的测试环境中使用Virtual PC,目前必须重置它,打开设备管理器,选择设备,点击一堆“你真的确定你不会安装其中一个系统驱动程序“键入对话框,然后在测试环境启动时,在主机重启WinDbg的同时最终重置测试环境...... argh。

重复这个过程很多次之后,肯定有一个更好的方法吗?商业驱动程序开发人员在测试环境中使用哪些工具/方法/技巧来运行其驱动程序?

注意,这不是关于单元测试驱动程序,我还没有到达那个阶段或者知道它是否可能。这只是为了启动附加WinDbg的测试环境,以确保我可能做的一些小改变正在做我期望的事情。

5 个答案:

答案 0 :(得分:8)

在我看来,虚拟化软件+“mock objects”(分层)方法(由Aaron Digulla建议)+脚本(由Sergius建议)可以简化设备驱动程序的开发。

但是如果您使用Visual Studio开发用户级应用程序,您也可以使用它来进行内核设备驱动程序开发VisualDDK(+ VirtualKD来调试命名管道,这比通过虚拟COM端口),具体解决您提到的烦恼;从它的主页:

  

...这个项目带来了简单和   Windows应用程序的便利性   发展到司机发展   世界。不再需要手动创建   构建脚本,复制驱动程序   文件,从INF安装驱动程序,   在WinDbg和。之间切换   源编辑或等待秒   由于超慢,每一步之后   虚拟COM端口。只需创建一个驱动程序   项目使用方便的驱动程序   向导,选择一个虚拟机,然后   喜欢直接调试您的驱动程序   来自Visual Studio。 想要测试一下   更改?通常按Shift-F5,   修改你的驱动程序,重建它   再次发布。 VisualDDK将卸载   旧驱动程序,安装新驱动程序   并自动快速加载。   厌倦了WinDbg加载符号文件   几分钟,查找符号   秒?让VisualDDK优化   这适合你使用自己的DIA   符号引擎。在C ++中使用C ++ / STLPort   你的司机? VisualDDK将原生于此   可视化所有STL容器和   字符串,和Visual Studio一样好   用于用户模式的应用程序。 ...

答案 1 :(得分:6)

您可以编写一些shell脚本(使用sc.exe和devcon.exe)来自动执行部署任务(无需打开设备管理器,单击按钮等)。并使系统的快照准备好进行调试(无需等待系统启动)。

不要忘记使用DriverVerifier检查您的驱动程序!

我自己的脚本示例:)

sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys
sc start FsFilter
pause
sc stop FsFilter
sc delete FsFilter

答案 2 :(得分:4)

按照我给出的建议here。基本上,尽可能少地使用真实系统进行测试。

在您的情况下,我还有另一个提示:Virtual PC正在使用虚拟硬盘(可能是您真实硬盘上的文件)。

您无需安装驱动程序,只需更换虚拟硬盘中的新文件即可。这在运行系统中通常是不可能的,但在虚拟系统中,您可以打开虚拟磁盘文件并进行更改(因为Windows未将文件锁定在其中)。

我不确定Virtual PC,但其他模拟器附带了处理虚拟磁盘映像的工具。如果VPC无法做到,请查看VirtualBox

答案 3 :(得分:3)

这完全取决于你正在写什么样的驱动程序。但在许多情况下,编写适当的makefile(或类似的东西)来处理驱动程序的安装,启动/停止和启动测试工具已经足够了。

我还将所有测试机器配置为自动登录(AutoAdminLogon),映射网络驱动器,并在启动后启动适当的命令提示符。然后,运行特定测试只需输入一个命令即可。

关于VirtualPC的一句话:VirtualPC对于内核模式开发非常方便,但不要忘记它只模拟单处理器机器 - 所以一定要定期在多处理器机器上测试代码。也就是说,VHD技巧可能看起来很方便,但它在某种程度上将你与Virtual PC联系在一起 - 编写适当的脚本,这些脚本在VirtualPC上同样适用于真机,因此对我来说似乎是一种更好的方法。

最后,认为它是一个无耻的插件,但如果您正在寻找Windows内核模式代码的单元测试框架,我写了一个:cfix

答案 4 :(得分:2)

我认为DevCon实用程序(在this OSR Online article中描述)会对您有所帮助。您应该能够设置只需单击即可完成工作的批处理文件。

可以免费注册osronline.com,您可能需要注册才能获得该文章。如果您正在编写驱动程序,则需要注册。这些人已经做了很长时间了,这个网站上有很多非常好的信息。

相关问题