学習目的でグラフフレームワークを作成しています。私はTDDアプローチを使用しているので、多くの単体テストを作成しています。しかし、私はまだユニットテストの正しさを証明する方法を考えています
たとえば、私はこのクラスを持っています(実装は含まれていません、そして私はそれを単純化しました)
public class SimpleGraph(){
//Returns true on success
public boolean addEdge(Vertex v1, Vertex v2) { ... }
//Returns true on sucess
public boolean addVertex(Vertex v1) { ... }
}
私もこの単体テストを作成しました
@Test
public void SimpleGraph_addVertex_noSelfLoopsAllowed(){
SimpleGraph g = new SimpleGraph();
Vertex v1 = new Vertex('Vertex 1');
actual = g.addVertex(v1);
boolean expected = false;
boolean actual = g.addEdge(v1,v1);
Assert.assertEquals(expected,actual);
}
さて、それは素晴らしいです。ここで重要なのは1つだけです。この場合にのみ、関数が機能することを証明しました。しかし、私のグラフ理論のコースでは、定理を数学的に証明するだけです(誘導、矛盾など)。
だから私は自分のユニットテストが正しいかどうか数学的に証明できる方法があるのだろうかと思っていました。それで、これには良い習慣があります。そのため、特定の結果についてユニットをテストするのではなく、ユニットの正確性をテストしています。