我正在寻找一些教程,展示如何通过编写Perl程序来自动化测试来测试C程序。
基本上我想学习Perl程序的自动化测试。任何人都可以分享这些教程或你的任何经验,这可以帮助我启动这个过程吗?
答案 0 :(得分:10)
Perl测试通常使用TAP。有几个C libraries for TAP。观看此Perl testing presentation。
答案 1 :(得分:2)
你应该用chromatic和Ian Langworth来看Perl Testing: A Developer's Notebook。
我一直有意购买副本,但到目前为止我只是在perlmongers会议上浏览过它。但它似乎是你想要的东西。
<强>更新强>
嗯,这表明我应该阅读这个问题 - 用Perl测试C程序,而不是用Perl测试Perl程序。
这本书可能仍然有用(因为你可能应该编写测试脚本并使用Test::More
和朋友)但是如果采用这种方法,你需要编写一组Perl函数来控制你的C.基本上
sub run_my_c_program {
my @args=@_;
#Set up test environment according to @args
system "my-c-program";
# Turns restults into a $rv data structure
return $rv;
}
然后以与普通Perl测试相同的方式检查$rv
:
is_deeply(run_my_c_program(...),
{ .. what I think it returns ..},
".. description of what I'm testing ..");
答案 2 :(得分:2)
如果你想开始学习如何使用Perl测试外部程序,首先要学习使用Perl来测试Perl位。 Test::More模块是一个很好的起点。一旦理解了这一点,查看Test::*上的所有其他CPAN模块,看看其中一个模块是否做了你需要做的事情。
如果您有特定问题,请询问相关问题。对于任何人来说,这个问题实在太宽泛,无法提供有用的答案。
答案 3 :(得分:1)
我没有教程,但我曾经是一个测试C ++编译器的测试团队。我们使用的测试工具(自酿)是用perl编写的,它为我们工作了很多年。 Perl非常理想,因为我们可以轻松地使用它来调用工具来构建程序,捕获输出以便以后插入我们的测试日志(使用“反引号”来运行编译器。例如:$ compilerOutput =`cl - ?` ; ),然后,如果构建成功,运行测试程序并捕获它们的输出,再次插入我们的测试日志。
使用Perl获得的其他好处:
-Ron
答案 4 :(得分:0)
我写了一篇关于Testing C with Libtap的文章,该文章使用Perl的Test :: Harness来测试C程序。这是一个示例项目:https://github.com/stig/libggtl/tree/master/t - 可能不再构建,因为深奥的构建系统可能不存在,但您应该能够弄清楚它是如何工作的: - )