如何在没有设备的情况下针对特定设备测试程序?

时间:2018-04-22 17:06:03

标签: testing operating-system virtual-machine driver

我想知道是否有任何解决方案来测试针对特定设备的硬件相关软件。

例如,考虑一个依赖于蓝牙或打印机的程序,通过OS API使用它。当用户报告在特定笔记本电脑型号上无法正常工作时,如果没有足够的调试信息,开发人员如何处理这种情况。

另一个例子是,我们如何知道特定打印机支持的纸张尺寸,而无需购买并运行程序以枚举支持的尺寸。

有没有办法模拟该设备/驱动程序或能够针对该设备进行测试的任何服务?

4 个答案:

答案 0 :(得分:3)

有些事情可以被模仿"其他人会强迫你至少拥有基本的硬件,以便以后你可以运行一组测试,除了尝试编写以下标准,RFC等等。例如在打印机:https://tools.ietf.org/html/rfc7472cups-pdf,可以提供帮助,但这只会涵盖基础知识。

在某些情况下,硬件是在数据中心的机架中购买和共存的,后来开发人员使用KVM over IP远程访问它,也称为(" spider")

如果需要在特定系统中测试特定功能/错误,有些公司可以租用硬件(Mac / PC /手机/平板电脑/等),从而节省成本。

除了发送"调试/报告"在许多情况下,工具可以帮助更好地诊断正在运行的系统或捕获/报告问题(如果有的话)。

测试移动设备,例如AWS Device Farm

答案 1 :(得分:0)

好吧,如果设备是通过USB连接的,并且存在于您的系统范围内,您可以查看这个项目(http://usbip.sourceforge.net) - 让您在另一个项目上通过IP与实际设备通信服务器,使用USB作为DPI(设备编程接口)。

第二种方法是将模拟器编写为虚拟驱动程序 - 可能比仅购买设备更昂贵,但是当我们共同开发硬件和软件时,我们就这样做了,硬件没有&# 39; t实际上以工作形式存在。

答案 2 :(得分:0)

首先,这是一个非常普遍的问题,你可以为一类设备找到更好的答案。

我认为这是可能的,根据您要探测的设备类,设备和功能,它需要一些或多或少的广泛工作。某类设备具有共享功能,并具有特定功能。我知道你想获得通用信息,共享信息。

首先要记住的是驱动程序是OS(例如内核)和硬件之间的接口。所以有一个共享的接口。驱动程序可能非常复杂(例如图形驱动程序),并且可能有自己的GUI和内部逻辑,我认为如果你不在这个部分,你可以锻炼一个程序,它将为你提供你想要的答案一类设备。

我认为最通用/最通用的方法是实现如何获取有关设备的信息这是为了获取驱动程序,从dll中提取符号({{1} })或dumpbin.exe /exports文件,并找出您可以获得的答案,例如您要求打印机可以使用哪种格式。要获得可能的答案,需要了解驱动程序的逻辑,例如使用IDA pro

对于该任务,您可能还需要使用依赖项。

在FreeBSD上,我们可以从驱动程序的Windows二进制文件(Setting Up Network Interface Cards)构建一个 freebsd驱动程序。有soFreeBSD calls的翻译。阅读资料可能会帮助您了解它是如何完成的。

最后,你确实可以去硬件农场(如nbari提到AWS移动农场),或者只询问供应商表中的硬件,或者模拟硬件的驱动程序测试API,这样你就可以直接查询驱动程序

答案 3 :(得分:0)

是否有可能存在仿真器?

如果是,请使用这些,如果不是,请使用类似的模拟器,首先查找同一制造商的模拟器,然后查找任何打印机模拟器,如果没有,则要求是不可测试的,除非客户可以确信他们需要购买他们将在Live中使用的特定硬件。有时你必须成为坏消息的承载者,但他们却以一种无法放在你家门口的方式强迫你的手。

后者是风险最小的行动方案。如果您正在使用任何其他建议,则必须告诉您的客户风险越大,测试运行的硬件越远。然后,他们必须决定必须采取哪种行动,因此,他们必须承担风险。

出于兴趣,如果您在现场使用打印机,您是否可以在测试期间安排一笔贷款?

除非我误解了这个问题,否则这就是我要去的方式。