单元测试的建议

时间:2010-09-14 12:48:36

标签: unit-testing fortran

你好另一个关于调试的问题:当我知道参数集时自动生成测试用例。并且一次完成所有这一切,而不是在开发期间(可以踢自己)

我有一套我希望测试的软件参数。 (仅限~12个参数)。然而,当然这些参数通常是整数,因此对于每个参数,我可以有4个有意义的值(0,非常大,通常很大,通常很小)。

有没有办法可以自动生成我的测试用例?会节省我很多时间。我已经手动检查每个测试用例,不是吗?很多我的程序产生输出到控制台,所以正常的断言可能不会工作,我也在大多数时间在自制数据结构上工作,所以我不能使用简单的断言。

我的梦想选择是一种反向正则表达式,我设置规则并为自己生成一些可用作输入的文件(我的软件具有粗略的脚本语言)。这样我就可以组装所有输入文件并逐个测试它们。

期待听取您的善意建议。

欢呼声

3 个答案:

答案 0 :(得分:2)

我建议您阅读有关数据驱动单元测试的内容。

有很多框架可以帮助你。

您可以从这里开始:http://www.slideshare.net/dnastacio/datadriven-unit-testing-for-java-1933154

答案 1 :(得分:2)

在您的方案中有很多方法可以生成测试用例 - 尽管您对程序和单元的输入需要采用何种形式有点模糊。对于我的一个Fortran程序,我使用模板输入参数文件,bash脚本和make文件。 make文件,当在测试假目标上调用时:

a)编制程序; b)运行bash脚本,该脚本使用sed替换模板参数文件中的占位符,以创建128(或其他)测试输入文件; c)将所有测试作业提交给我们集群上的作业管理系统。

一旦他们的工作完成,我就会有一些其他的脚本来比较输出与基准,收集统计数据,等等。

如果您需要更具体的建议,请发布更具体的问题。

编辑:在bash脚本中使用sed:

假设参数输入模板文件包含3个要替换的代码:$ FREQ $,$ NUM $和$ TOL $。然后我写一个带有3-deep循环嵌套的bash脚本,如下所示:

for frq in 0.01 0.0 1 10
do
    for np in 1 2 4 8 16
    do
        for tol in 0.001 0.0001 0.00001
            sed ....
        done
    done
done

它并不漂亮,但它可以工作,它可以帮助我解决更复杂的解决方案,如xUnit测试或Python编程。

答案 2 :(得分:1)

我看到你使用FORTRAN,你可能会处理FORTRAN的xUnit版本之一。作为JUnit的用户,我建议parameterized tests - 看看这个概念是否适用于您的情况。