如何在没有设备的情况下测试程序与特定设备的兼容性?

6
我想知道是否有解决方案可以针对特定设备对硬件相关软件进行测试。例如,考虑一个依赖于蓝牙或打印机的程序,使用操作系统API进行操作。如果用户报告称它在特定的笔记本型号上无法正常工作,而调试信息又不足够,开发人员该如何处理这种情况?
另一个例子是,我们如何知道特定打印机支持哪些纸张大小,而不需要购买一台并在其上运行程序来枚举支持的大小。
是否有模拟该设备/驱动程序或提供测试该设备能力的任何服务的方法?

请让用户将笔记本电脑寄给您。或者,开始将自己的笔记本电脑、调试工具、测试设备、电缆等装入箱子,并开始制定旅行计划 :) - Martin James
@MartinJames 如果是大众市场的低价或免费软件,用户根本不在乎/不想参与其中。 - Mehrzad Chehraz
1
踩我的人可以解释一下吗?在StackOverflow贡献了几年后,我只问了很少的问题,大多数时候都没有得到答案或者是可怜的踩。 - Mehrzad Chehraz
4个回答

4
一些东西可以“模拟”,而其他东西则需要您至少拥有基本硬件,以便稍后可以运行一组测试,同时尝试遵循标准、RFC等编码。例如,在打印机的情况下:https://www.rfc-editor.org/rfc/rfc7472cups-pdf可能会有所帮助,但这只涵盖了基础知识。
在某些情况下,硬件是购买并共同放置在数据中心的机架内,开发人员稍后通过使用KVM over IP(也称为“spider”)远程访问它。
如果需要在特定系统中测试特定功能/错误,则有公司可以租用硬件(Mac / PC /手机/平板电脑等),从而节省成本。
除此之外,发送“调试/报告”工具在许多情况下可以帮助更好地诊断运行系统或捕获/报告问题(如果有)。
要测试移动设备,例如,您可以使用AWS Device Farm

有些公司可以租赁硬件设备,但是您知道有哪些公司提供这样的服务吗?我找到了一家移动设备测试套件租赁公司 one,但并没有找到其他 PC、笔记本电脑或其他硬件设备的租赁商。 - Mehrzad Chehraz
@MehrzadChehraz 搜索“在线租赁Mac”的示例,有多个供应商,我更新了手机设备的另一个链接,希望它可以帮助。 - nbari
我对PC笔记本感兴趣,而不是Mac。Mac只有几个型号,而PC笔记本有很多型号,这就是问题所在。通过谷歌搜索找不到任何结果,大多数结果都是关于租用物理设备而不是远程设备。 - Mehrzad Chehraz

0

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

第二种方法是编写模拟器作为虚拟驱动程序-可能比购买设备更昂贵,但我们曾经在硬件和软件的共同开发中这样做过,而硬件实际上并不存在工作形式。


0

首先,这是一个相当普遍的问题,您可以针对一类设备获得更好的答案。

我的观点是,这是可能的,它将需要更多或更少的工作,具体取决于设备类别、设备和您想要探测的功能。某些设备类别具有共享功能和特定功能。我理解您想要获取通用信息,即共享信息。

首先要记住的是,驱动程序是操作系统(例如内核)和硬件之间的接口。因此,存在共享的 接口。驱动程序可能非常复杂(例如图形驱动程序),并且可能具有自己的 GUI 和内部逻辑,我认为如果您不涉及此部分,您可以编写一个程序,以获得您想要获取的设备类别的答案。

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

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

在FreeBSD上,我们可以从驱动程序的Windows二进制文件构建一个freebsd驱动程序 (设置网络接口卡)。有一个从FreeBSD调用Windows调用的翻译。阅读源代码可以帮助您了解它是如何完成的。

最后,您确实可以去硬件农场(正如nbari提到的AWS移动农场),或者只需询问供应商有关其硬件的表格,或者驱动程序测试API模拟硬件,以便您可以直接查询驱动程序。


0

是否有模拟器可用?

如果有,使用它们;如果没有,使用类似的模拟器,首先寻找同一制造商的模拟器,然后是任何打印机模拟器。如果没有,除非客户可以被说服需要购买他们将在现场使用的特定硬件,否则该要求无法测试。有时候你必须成为坏消息的传递者,但他们以一种不能归咎于你的方式强迫你采取行动。

后者是风险最小的做法。如果您使用其他建议中的任何一个,您必须告诉客户,风险会随着测试距离硬件越远而增加。然后他们必须做出决定,采取哪种行动,并因此承担风险。

顺便问一下,如果您在现场使用打印机,不能安排借用一台打印机来进行测试吗?

除非我误解了问题,否则这就是我会采取的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接