捕获测试用例的系统日志

Posted

技术标签:

【中文标题】捕获测试用例的系统日志【英文标题】:Capture syslog for test cases 【发布时间】:2016-06-16 18:58:34 【问题描述】:

我正在用 C++ 编写一个命令行工具,它 - 取决于 --logfile 参数 - 记录到 syslog 或给定文件。我想测试这个功能(使用googletest)。

为了测试文件部分,我运行带有和不带有 --logfile 参数的 MyApp::main() 函数并测试日志消息是否出现在文件中。

有没有办法对syslog 进行相同的测试?我可以阅读/var/log/syslog 并希望获得最好的结果,但这不是很便携,因为许多系统将syslog 保留在其他地方。

我正在使用不提供模拟的logging library,所以这不是一个选项。他们在内部使用对 syslog 守护进程 (man(3) syslog) 的调用。有没有一种可移植的方式从这个守护进程获取syslog?还是来自其他地方?

【问题讨论】:

【参考方案1】:

您可以使用库预加载 (LD_PRELOAD) 使您的程序在您提供的库中调用 syslog,而不是系统 syslog。然后,您的实现可以记录到您控制的文件中,您可以随后检查该文件。

【讨论】:

【参考方案2】:

我正在使用不提供模拟的日志库,

所以在某些时候你正在调用正在写入系统日志的库函数。这就是你要嘲讽的地方。在 X 条件下,使用以下参数调用库函数一次... ext。

一般我在测试中发现当你有A -> B -> C的情况,其中A是你正在编写的代码,B是第三方库,C是输出,你只能测试您正在与 B 进行适当的交互并且无法测试 C。

当使用第三方代码块时,您基本上相信它会按照它所说的去做(除非它是开源的并且您为他们的代码库编写测试)。

【讨论】:

以上是关于捕获测试用例的系统日志的主要内容,如果未能解决你的问题,请参考以下文章

软件测试测试用例的设计

软件测试测试用例的设计

软件测试测试用例的设计

编写Python用例脚本遇到的问题

软件测试的分类&测试用例的设计&如何编写测试用例

测试用例的编写原则