【问题标题】:How to test a program against a particular device without having the device?如何在没有设备的情况下针对特定设备测试程序?
【发布时间】:2018-04-22 17:06:02
【问题描述】:

我想知道是否有任何解决方案可以针对特定设备测试依赖于硬件的软件。

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

再举一个例子,我们如何知道特定打印机支持哪些纸张尺寸,而无需购买一台并在其上运行程序来枚举支持的尺寸。

是否有任何方法可以模拟该设备/驱动程序或任何能够针对该设备进行测试的服务?

【问题讨论】:

  • 让用户将笔记本电脑发送给您。或者,开始将您自己的笔记本电脑、调试工具、测试设备、电缆等装入一个箱子并开始制定旅行计划:)
  • @MartinJames 如果是大众市场低价或免费软件,用户根本不关心/不想参与。
  • 投反对票的人可能想解释为什么?在为 stackoverflow 贡献了几年之后,我只问了几个问题,大多数时候没有答案或可悲的反对票就是我所得到的。

标签: testing operating-system virtual-machine driver


【解决方案1】:

有些东西可以“模拟”,有些东西会迫使您至少拥有基本硬件,以便以后您可以运行一组测试,除了尝试编写遵循标准、RFC 等的代码。例如在打印机的情况下: https://www.rfc-editor.org/rfc/rfc7472cups-pdf,可能会有所帮助,但这仅涵盖基础知识。

在某些情况下,购买硬件并将其放置在数据中心的机架内,之后开发人员可以使用KVM over IP 也称为(“蜘蛛”)远程访问它。

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

除了提供“调试/报告”工具之外,在许多情况下还可以帮助更好地诊断正在运行的系统或捕获/报告问题(如果有)。

对于测试移动设备,您可以使用例如AWS Device Farm

【讨论】:

  • “有可以出租硬件的公司”有哪些公司?我发现 one 用于移动设备,但没有用于 PC、笔记本电脑或其他硬件。
  • @MehrzadChehraz 搜索例如“rent online mac”有多个供应商,我用移动设备的另一个链接更新了答案,希望它可以帮助
  • 我对 PC 笔记本电脑而不是 Mac 感兴趣。 Mac 的型号很少,而 PC 笔记本电脑的型号很多,这就是问题所在。通过谷歌搜索找不到任何设备,大多数结果都是关于物理租用设备而不是远程租用。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    首先,这是一个很笼统的问题,对于一类设备,你可以得到更好的答案。

    我认为这是可能的,它需要或多或少的大量工作,具体取决于您要探测的设备类、设备和功能。某类设备具有共享功能,具有特定功能。我了解您想要获取通用信息,共享信息。

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

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

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

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

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

    【讨论】:

      【解决方案4】:

      有模拟器吗?

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

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

      出于兴趣,如果您在现场使用打印机,能否在测试期间不安排借用一台打印机?

      除非我误解了这个问题,否则我会这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-03
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多