单元测试,科学和数学


前言


单元测试是常用的。似乎没有人没有他,每个人都会编写测试,而在任何严肃的项目中缺席,至少会造成误解。但是,许多人认为测试是一种仪式,目的是不激怒“编程之神”。就像,这是必要的为什么?因为


我会说些恐怖的话。


拿什么作为测试单位都没有关系。测试如何分组无关紧要。它们是在代码之前还是之后编写都无所谓。TDD还是TDD?没关系。所占份额?别该死。毕竟,可能根本没有任何测试。所有这些都是完全不相关的。满足软件要求很重要。


单元测试不是一种仪式,而是一种很好的工作工具,使您可以更接近满足这些要求。并且该工具需要能够正确使用。


等一下,科学与数学在哪里进来?


内容



  1. 保修和概率
  2. 编程理论
  3. 测试作为定理的证明
  4. 重要和不重要
  5. 我需要测试吗


保修和概率


我将不会第100次讨论为什么需要测试,测试有多少帮助,记录,简化开发和重构过程,关闭回归等。


我想写的是如何在测试中做出一些超出一系列义务,技术细微差别和管理要求的事情。因此,测试不是拯救摇摇欲坠的结构免遭立即破坏的支柱,而是我们的计划坚定而自信地立足的基础。


, — . — . — . , , , , .


. . : , , 100%, .


.




"". , , , , . , , . "" "". , . , , "" , , . , "", , , .


, , , . , — , .


, , .




. "", "". "" "" "".


"" , , . "" — , , ( , ).


"" , , , , — . "" "" , , "".


"" , "" "", "" "", .


. , std::vector, clear. , "", .

? , (capacity). , "":
  1. clear() , size() ;
  2. clear() , empty() true;
  3. clear() , capacity() , clear().
  4. clear() , , , .


"" "":
test_case("   `clear()`    ")
{
    std::vector<int> v{1, 2, 3, 4};

    v.clear();

    check(v.size() == 0);
}


, "", ? .

, , . — , "". , "" "" , size(). "".

, "", std::vector<int> v{1, 2, 3, 4}. . , "", ? , , . ? , , ( , ).

"" , , : "", , , . , "".

"", size() , . : , . "", .

"" "".

, "", ( , ) .



,


, , , (, , - — — ). , "" "". — .


, , : , ( TDD ). — "". , , "", TDD, .


, . , , . , , .


, , , .




— , . , , . , . , .


因此,我们的隐喻“科学”(即代码)和“客观现实”(即测试)彼此接近,从未达到理想状态,而是增加了期望的概率。


All Articles