简单有效的单元测试方法C ++代码无法在纸上解决

时间:2016-01-04 16:41:55

标签: c++ unit-testing

我正在尝试使用Visual Studio 2015内置的单元测试框架来测试一些C ++代码。我写了一些代码,每小时,每天和每小时测试一次。每周模型,通过计算确定系数(R ^ 2)来查看哪一个最可靠地拟合一组现实生活数据。

现实生活中的数据需要从图形中“读取”,我有一个经过测试和验证的例程。

我知道我期待每周模特完美契合,其他两个不会。要在纸上点缀,需要~300个方程计算来获得我正在使用的值,然后计算R ^ 2值。我宁愿不这样做......

如何测试此代码?我是Unit Testing的新手,我仍然理解测试函数时使用的范例。

我的代码:

历史和图表是向量的向量。

float calculateDeviation(int period) {
    int x1 = history.front()[0];
    int x2 = x1 + period;
    int i = 0, minimum, maximum, SSres = 0, SStot = 0, j=0, R2 =0;
    float  average = 0;
    int endTime = history.back()[0];
    while (x2 <= history.back()[0]) {
        average += averageGradient(x1, x2);
        x1 = x2;
        x2 += period;
    }

    x1 = history.front()[0];
    x2 = x1 + period;
    i++;
    while (j < i) {
        SSres += pow((graph[i][0]-((graph[i][2]*graph[i][0])+graph[i][3])), 2);
        SStot += pow(graph[i][0] - average, 2);
        x1 = x2;
        x2 =+ period;
        j++;
    }

    R2 = 1 - (SSres / SStot);
    return history.back()[0];
}

1 个答案:

答案 0 :(得分:1)

我是一名执业测试工程师,根据您提供的内容,您应该能够编写以下基本单元测试:

  1. 准备输入数据。这意味着你的&#34;期间&#34;变量,以及样本图数据。作为图形和逻辑的作者,您应该能够创建一个其他工程师可以理解的简单数据集。
  2. 准备您的回复数据。这意味着&#34;答案&#34;。没有数据集来比较结果,没有测试是完整的。
  3. 在单元测试中,只需传入正确的输入数据,并根据预先验证的值验证结果。
  4. 请记住准备几组输入数据,包括边界(最小值,最大值和应失败的值)。这通常是一个突破点,因此请务必运行需要错误处理的测试。如果您能想出一种破解代码的方法,那么您已成功确定了需要进行一些调整的区域。我的朋友,这就是重点。 :)