测试中的C++应用程序将少量的TCP连接到其他进程,并从另一个进程接收UDP数据报。它还将一些数据写入串行TTY(通常是外部RS485适配器)。你知道吗
对于测试,我需要检查一些东西,将AuT视为一个黑盒,并尽可能消除对RPi、串行设备、外部进程等的依赖:
我目前的想法是使用Python(例如pytest
)来实现测试:
socat
?),AuT也可以我不太确定的是WiringPi“mock”共享对象。我知道它可以用LD_PRELOAD
注入AuT进程,但是我不知道如何与来自Python测试应用程序的模拟对象通信。我是否需要使用共享内存或某种IPC来允许AuT中的库实例与Python测试应用程序通信?Python测试应用程序是否可以运行TCP服务器,WiringPi mock是否可以“在幕后”连接以将数据/控制中继到测试应用程序?mock对象能否以某种Python友好的方式与Python集成?你知道吗
模拟的共享对象能否通过UNIX套接字或管道与测试应用程序通信?你知道吗
<>我有C++的AUT的全部源,所以我可以用C++来实现大部分或全部,而不是Python,但是一些方面(例如简单的TCP服务器)在Python中写起来会更快更简单。我也很喜欢它。你知道吗我想知道是否已经有了这种测试工具的解决方案。它不需要基于Python,但我已经习惯了。有什么想法吗?你知道吗
编辑:另一种思想是提取AUT的核心,并使用C++语言绑定,依赖注入和C++模拟。但是,一个重要的要求是测试构建的应用程序,而不是对应用程序进行源代码级的修改,因为出于安全和审计的原因,在所提供的相同二进制文件上运行这些测试是很重要的。你知道吗
这是一个怎样做的建议。这只是一个想法-我还没有尝试过。你知道吗
首先,Python手册中描述了Python和C之间的交互:https://docs.python.org/3/extending/extending.html。您可以在Python中编写测试环境,然后从Python中的一些测试用例调用,在C++中实现AUT。而且,从这个C++代码中,你可以再调用一些Python代码。你知道吗
因此,可能接近您要查找的内容的是以下调用链:
在
python-test-case
中,您可以配置相应的python-test-callbacks
,使其按照这个特定测试用例的需要进行操作。在这个设置之后,python-test-case
将调用AuT
,后者依次调用一个或多个wiringPi-sim
函数,每个函数都调用其相应的python-test-callback
。你知道吗问题是,目前wiringpisim实现接口的方式非常简单,不支持注入特定行为。例如,
digitalRead
函数的存根如下:为了使它更有用,您必须扩展它的功能,这样您就可以为
digitalRead
函数调用一些Python回调,而不是执行return 1
,该函数可以从Python测试用例中配置。这将需要修改wiringPi sim或编写自己的。然而,据我所知,wiringpisim只是一小部分代码,所以为您这样做可能是可行的。你知道吗相关问题 更多 >
编程相关推荐